tag:blogger.com,1999:blog-87567537521601666552024-02-07T17:58:22.375-05:00EdgewatersTechnology, activities, etc.ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.comBlogger192125tag:blogger.com,1999:blog-8756753752160166655.post-82209659583020892742022-01-11T15:37:00.001-05:002022-01-11T15:37:30.990-05:00Check Domain User Account<p> I just learned this really helpful trick. You can check the status of a domain account using: <br /><br /><span style="background-color: black; color: #cacaca; font-family: monospace, serif; font-size: 14px;">net user USERNAME /domain</span></p><p><br /></p><p>https://www.webservertalk.com/check-password-expires-in-active-directory/#:~:text=Check%20User%20Password%20Expiration%20Date%20with%20Net%20User,command%20in%20the%20PowerShell%3A%20net%20user%20hitesh%20%2Fdomain</p>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-84789099068026837412020-11-19T16:29:00.002-05:002020-11-19T16:29:27.727-05:00Dynamics 365 Debug Custom Workflow Activity in a Real Time Workflow<p> You CAN'T.</p><p>If you are having trouble following <a href="https://carldesouza.com/debugging-a-custom-workflow-activity-in-dynamics-365-and-powerapps/" target="_blank">the steps to debug your custom workflow activity</a> because the steps are not appearing, it's probably because you cannot attach to "Real Time" workflows. If possible, make your workflow asynchronous (run in background) to debug your custom WF activity.</p>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-92192097379566737922020-04-14T17:15:00.003-04:002020-04-14T17:15:53.983-04:00Email Templates for Custom EntitiesI have used the trick of inserting the "magic" sequence of characters that allow you to insert custom entity fields into email templates, but there's an extra special trick if you insert a lookup field <b><i>/@name</i></b>. Big thanks to <a href="https://insightdynamics.wordpress.com/2017/01/27/email-templates-for-custom-entities-in-crm/" target="_blank">Insight Dynamics blog post </a>for the tip. Here's an example for an entity called "Custom Entity":<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">{!new_customentity:ownerid/@name;}</span>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-85154970702464701822020-03-06T15:36:00.000-05:002020-03-06T15:36:01.671-05:00UCI Email PartyList error - Entity type "queue" is invalidI just ran into an error where some clever code check's the user's business unit and defaults the FROM addresss of an outgoing email to a particular Queue. The code started throwing this error once we moved it to a Model-driven App.<br />
<br />
It turns out the error was occurring because we had not included the Queue entity in our Model-driven App. Once we added the Queue, the code worked just fine.ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-89620332633950397362016-03-04T09:01:00.000-05:002016-03-04T09:05:42.166-05:00ComboBoxes in Dynamics CRM 2013Have you tried the new ComboBox control in CRM 2013? Wait...what did you just say?!? Here, click on the screenshot and <a href="http://screencast.com/t/dP2JkC64vj4A" target="_blank">watch this</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://screencast.com/t/dP2JkC64vj4A" target="_blank"><img border="0" height="57" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPuz0qoBCdgVTlyRu7QDtrDc_hMotVbhErmphuUa8u1NELoAEHeacErAqikiZglw98yEN8MZoVEyuMc0djTMNTjqxiUiRvh4mu5HXzQht9uIvkaEw0wSerAP5d0PUP70zfoMyif991YA/s320/ComboBox.png" width="320" /></a></div>
<br />
<br />
Actually, I'm a little early for April Fools' Day, but I really did build a pair of ComboBoxes that are backed by two entities that have an N:N relationship. With an added checkbox, you can override the filtering and display all the available records in the child. The key to making it so performant was utilizing an external WebAPI caching application. That makes it a snap to bind the <a href="http://jqueryui.com/autocomplete/">jQuery Autocomplete</a> to the JSON output.<br />
<br />
If you need help with a ComboBox, or anything else in Dynamics CRM, don't hesitate to reach out.ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com1tag:blogger.com,1999:blog-8756753752160166655.post-14916036152072432852015-10-14T15:31:00.003-04:002016-03-04T09:42:06.309-05:00Helpful links and information for CRM DevelopersMy collection of essential links and information for Dynamics CRM Developers<br />
<br />
MSDN References<br />
<a href="https://msdn.microsoft.com/en-us/library/gg509017.aspx" target="_blank">Linq query examples</a><br />
<a href="https://msdn.microsoft.com/en-us/library/gg328255.aspx" target="_blank">MSDN Client-side programming reference</a><br />
<a href="https://msdn.microsoft.com/en-us/library/gg328097.aspx" target="_blank">Developers guide to reports for CRM</a><br />
<br />
Communities<br />
<a href="https://social.msdn.microsoft.com/Forums/en-US/home?category=dynamics&filter=alltypes&sort=lastpostdesc" target="_blank">MSDN CRM Forums</a><br />
<div>
<a href="http://stackoverflow.com/questions/tagged/dynamics-crm" target="_blank">StackOverflow CRM Questions</a></div>
<br />
Tools<br />
<a href="https://github.com/seanmcne/Microsoft.Xrm.Data.PowerShell" target="_blank">PowerShell Tools</a><br />
<a href="http://www.xrmtoolbox.com/" target="_blank">MscrmTools / XrmToolBox</a><br />
<br />
CRMSvcUtil XrmServiceContext example:<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">CrmSvcUtil.exe /codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration" /out:Xrm\Xrm.cs /url:https://myord.api.crm.dynamics.com/XRMServices/2011/Organization.svc /username:admin@myorg.onmicrosoft.com /password:pass@word1 /namespace:Xrm /serviceContextName:XrmServiceContext</span><br />
<div>
<br /></div>
<div>
<br /></div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-22723406795740716012015-09-26T09:55:00.000-04:002015-09-26T09:55:17.679-04:00Setting up RAID 1 on M5A78L Windows 7My current Win7 Media Center PC has been running 24x7 for 3 plus years and the cruft on the OS was starting to really slow things down. I figured it was time to re-install, but this time I wanted redundancy, so I bought two WD 160 drives to setup a RAID 1. Here's the trick to setting this up in the ASUS Bios:<div>
<br /></div>
<div>
<ol>
<li>On the SATA Configuration tab, select Ports 1-4 and change their mode to RAID (note this also changed 5-6 to RAID, so I needed to switch that back to IDE for my optical).</li>
<li>Save and Reboot. Wait for the RAID Bios screen to appear and hit CTRL + F</li>
<li>In the RAID configuration, select the LD config and select LD 1 on the next screen</li>
<li>In the LD details page, use SPACE to change value of RAID to 1 and select your drives. </li>
<li>CTRL + Y saves changes and then reboot and you're done!</li>
</ol>
</div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-73478584857162064872015-07-29T15:15:00.003-04:002015-07-29T15:15:55.637-04:00Getting CrmSvcUtil to generate the CrmOrganizationServiceContext <div class="MsoNormal">
It had been awhile since I generated the Early-bound classes
used by a command-line setup program (<a href="https://msdn.microsoft.com/en-us/library/gg695803.aspx#Generate">MSFT
walkthrough</a>). I had forgotten about
the crmsvcutil.exe parameter that generates the CrmOrganizationServiceContext:</div>
<div class="MsoNormal">
<span style="font-family: "Courier New";">/codeCustomization:"Microsoft.Xrm.Client.CodeGeneration.CodeCustomization,
Microsoft.Xrm.Client.CodeGeneration"<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After adding the Microsoft.Xrm.Client.CodeGeneration.dll and
Microsoft.Xrm.Client.dll to the directory, the App.config constructor was available
again:<o:p></o:p></div>
<div class="MsoNormal">
<span style="font-family: 'Courier New';">using
(XrmServiceContext xrm = new XrmServiceContext("Xrm"))</span><br />
<span style="font-family: 'Courier New';"><br /></span>
<span style="font-family: 'Courier New';"><br /></span></div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-15976265036737861922015-06-09T08:22:00.003-04:002015-06-09T08:22:57.122-04:00Dynamics CRM Publish External ReportDynamics CRM on-prem has the ability to publish reports "externally" so that non-CRM users can view them. Corresponding reports are created by CRM in the "root" folder (<i>tenant name</i>_MSCRM) By default though, the SSRS data connection (MSCRM_DataSource) in the folder is not configured during installation, so a required step is to login to SSRS Report Manager and setup the data source. Note, you have to click <i>Details View</i> (upper right corner of menu) in order to see the data source.<br />
<br />
Typically, you'll want to use a service account that has the least privileges necessary to query the data from CRM. The connection string follows the format:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Data Source=<i>sql server</i>;Initial Catalog=<i>tenant</i>_MSCRM</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: inherit;">If you use a service account, you may get an error when you Test Connection in SSRS Report Manager:</span><br />
<span class="msrs-failedConnectionMessage" id="ctl531_TestConnectionResultMessage"><span style="color: red; font-family: Courier New, Courier, monospace;">Log on failed. Ensure the user name and
password are correct.</span></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">In that case, the error may be caused because the account does not have "Log on locally". </span><br />
<span style="font-family: inherit;"><br /></span>
<div style="line-height: 13.65pt; margin-bottom: 11.25pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;">
<span style="color: #2a2a2a;"><span style="font-family: inherit;">To grant this permission, do the following:<o:p></o:p></span></span></div>
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">1.<span style="font-stretch: normal;"> </span></span><!--[endif]--><span style="color: #2a2a2a;">On the
report server computer, in<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Administrative Tools</span></strong>, open<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Local
Security Policy</span></strong>.<o:p></o:p></span></span></div>
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">2.<span style="font-stretch: normal;"> </span></span><!--[endif]--><span style="color: #2a2a2a;">Under<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Security
Settings</span></strong>, expand<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Local Policies</span></strong>, and then click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">User
Rights Assignment</span></strong>.<o:p></o:p></span></span></div>
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">3.<span style="font-stretch: normal;"> </span></span><!--[endif]--><span style="color: #2a2a2a;">In the
details pane, right-click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Allow log on locally</span></strong><span class="apple-converted-space"> </span>and then right-click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Properties</span></strong>.<o:p></o:p></span></span></div>
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">4.<span style="font-stretch: normal;"> </span></span><!--[endif]--><span style="color: #2a2a2a;">Click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Add
User or Group</span></strong>.<o:p></o:p></span></span></div>
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">5.<span style="font-stretch: normal;"> </span></span><!--[endif]--><span style="color: #2a2a2a;">Click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Locations</span></strong>,
specify a domain or other location that you want to search, and then click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">OK</span></strong>.<o:p></o:p></span></span></div>
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">6.<span style="font-stretch: normal;"> </span></span><!--[endif]--><span style="color: #2a2a2a;">Enter the
Windows account for which you want to allow interactive login, and then click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">OK</span></strong>.<o:p></o:p></span></span></div>
<br />
<div style="font-style: inherit; font-weight: inherit; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .25in; margin-right: 0in; margin-top: 0in; mso-list: l0 level1 lfo1; outline: 0px; text-indent: -.25in;">
<!--[if !supportLists]--><span style="font-family: inherit;"><span style="color: #2a2a2a;">7.<span style="font-stretch: normal;"> </span></span><!--[endif]--></span><span style="color: #2a2a2a;"><span style="font-family: inherit;">In the<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">Allow
log on locally Properties</span></strong><span class="apple-converted-space"> </span>dialog
box, click<span class="apple-converted-space"> </span><strong><span style="border: 1pt none windowtext; padding: 0in;">OK</span></strong>.</span><span style="font-size: 10pt;"><o:p></o:p></span></span></div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-36721990173104554682015-02-11T10:11:00.000-05:002016-03-03T09:35:28.679-05:00Find All References to a Custom Workflow Activity in Dynamics CRM 2013If you ever need to find all the workflows that have references to a custom workflow assembly, you can query the Xaml column on the Workflow entity. Using OData is the fastest way:<br />
<br />
<span style="color: blue; font-family: "courier new"; font-size: x-small;">HTTP:</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">//</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">MyCrmServer</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">/</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">MyTenant</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">/</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">xrmservices</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">/</span><span style="font-family: "courier new"; font-size: x-small;">2011</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">/</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">organizationdata</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">.</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">svc</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">/</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">workflowset</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">?$</span><span style="color: blue; font-family: "courier new"; font-size: x-small;">SELECT</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">=</span><span style="color: blue; font-family: "courier new"; font-size: x-small;">NAME</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">&$</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">filter</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">=</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">substringof</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">(</span><span style="color: red; font-family: "courier new"; font-size: x-small;">'MyCustomWorkflowActivityClassName'</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">,</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">xaml</span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">)</span><br />
<span style="color: maroon; font-family: "courier new"; font-size: x-small;"><br /></span>
If you are on-prem, then you can also do this via SQL:<br />
<br />
<span style="color: blue; font-family: "courier new"; font-size: x-small;">SELECT</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: blue; font-family: "courier new"; font-size: x-small;">DISTINCT</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">wf</span><span style="color: silver; font-family: "courier new"; font-size: x-small;">.</span><span style="color: blue; font-family: "courier new"; font-size: x-small;">NAME</span><span style="font-family: "courier new"; font-size: x-small;"> </span><br />
<span style="color: blue; font-family: "courier new"; font-size: x-small;">FROM</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">workflow</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">wf</span><span style="font-family: "courier new"; font-size: x-small;"> </span><br />
<span style="color: blue; font-family: "courier new"; font-size: x-small;">WHERE</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: maroon; font-family: "courier new"; font-size: x-small;">xaml</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: blue; font-family: "courier new"; font-size: x-small;">LIKE</span><span style="font-family: "courier new"; font-size: x-small;"> </span><span style="color: red; font-family: "courier new"; font-size: x-small;">'%MyCustomWorkflowActivityClassName%'</span><span style="font-family: "courier new"; font-size: x-small;"> </span>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-67969367113258144542015-02-10T15:51:00.002-05:002015-02-10T15:51:38.369-05:00Stuck Dynamics CRM ImportJob importing a SolutionDid you know that you can view the progress of your import by using Advanced Find to query <b>Import Jobs</b>? If you ever "lost touch" with the progress bar window, this can be very useful. I have a saved view that displays the imports from the last 7 days in descending order.<br />
<br />
Unfortunately, jobs can get stuck during import and prevent you from importing your solution again. In that situation, you need to manually delete the stuck job. Fortunately this is super easy with the Advanced Find you created above. There is a special Delete button on this view.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbyq2Nb4QX59wOkMh5tEX7p6r7JupC2iX7Nm3xelld_btQcWIh_TCd3_cjht0y4P04dQ7cL_1S5mcN-ih73bUgr2Zt7F8BI0lvf7hxtUIVkjcllmGMBsybm99jmq133NcNQL4GNniP2tk/s1600/DeleteJobs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbyq2Nb4QX59wOkMh5tEX7p6r7JupC2iX7Nm3xelld_btQcWIh_TCd3_cjht0y4P04dQ7cL_1S5mcN-ih73bUgr2Zt7F8BI0lvf7hxtUIVkjcllmGMBsybm99jmq133NcNQL4GNniP2tk/s1600/DeleteJobs.png" height="82" width="320" /></a></div>
<br />
You can also do it programmatically with the early-bound classes and a Linq query in the Service Context:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">var xrm = new XrmServiceContext("Xrm");</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">var deadJobs = xrm.ImportJobSet.Where(x => x.CompletedOn.Equals(null));</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">foreach (var job in deadJobs)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Console.WriteLine("Deleting Job Created On: " +job.CreatedOn);</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> xrm.Delete(ImportJob.EntityLogicalName, job.Id);</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> xrm.SaveChanges();</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-36892211302525460682014-11-17T10:29:00.000-05:002014-11-17T10:29:23.596-05:00CRM 2013 Invalid Argument FetchXML Report Errors on PremiseI love it when my former-self comes to the rescue of my present self. I have been wrestling with an SSRS error that I knew I had seen before. In searching for an answer, I ran across <a href="http://www.icfithinking.com/2013/08/crm-2011-fetchxml-report-errors-on-premise.html" target="_blank">this blog post I wrote a couple years back</a>. I'm going to copy it here, just in case my former employer decides to take it down:<br />
<br />
<br />
<br />
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
Even though the Report Wizard has some inherent limitations, it is still a useful tool for end-users that want ad-hoc reporting, or if you want to see beyond the 10,000 record limit when exporting to Excel. You may find however that reports created by the Report Wizard return an "Invalid Argument" error. </div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
This happened to me recently so I followed <a href="http://edgewaters.blogspot.com/2011/01/troubleshooting-crm-ssrs-errors.html" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_blank">my usual debugging steps</a> but that did not help because the browser didn't return an error. I checked the <a class="zem_slink" href="http://en.wikipedia.org/wiki/Customer_relationship_management" rel="wikipedia" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_blank" title="Customer relationship management">CRM</a> and SSRS event logs, but there wasn't any helpful information in the errors that were logged. Next I <a href="http://technet.microsoft.com/en-us/library/bb630443.aspx" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_blank">checked the SSRS HTTP Log</a> and found some interesting information. Note, the default location for the log is:</div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
\Microsoft SQL Server\<sql instance="" server="">\Reporting Services\LogFiles</sql></div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
In the log I saw that I was getting a security error:</div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
System.ServiceModel.Security.SecurityNegotiationException: A call to SSPI failed</div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
When I looked up this error, I ran across <a href="http://support.microsoft.com/kb/2590774/en-us" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_blank">KB2590774</a> which described the exact issue I was facing...unfortunately it involved SPNs; probably my least favorite administrative topic.</div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
The instructions are a little contradictory. It says that all you need to do is setup an SPN for the CRMAppPool...unless you are running <a href="http://dynamics-crm2011.blogspot.com/2011/06/understanding-iis-kerberos-kernel-mode.html" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_blank">IIS in Kernel Mode</a> (generally the recommended configuration). If running Kernel mode, you are supposed to review the information in <a href="http://blogs.msdn.com/b/webtopics/archive/2009/01/19/service-principal-name-spn-checklist-for-kerberos-authentication-with-iis-7-0.aspx" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_self">the article about SPNs and IIS 7 Kernel Mode.</a></div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
I read and confirmed that for my configuration (Scenario 2b - Custom app-pool and host header)the recommendation was to register an SPN for my custom URL on the NetBios name (aka, the computer name). Unfortunately this did not resolve my issue, even after adding "trust for delegation" in <a class="zem_slink" href="http://en.wikipedia.org/wiki/Anno_Domini" rel="wikipedia" style="border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-top-left-radius: 12px; border-top-right-radius: 12px; color: #0054a6; text-decoration: none;" target="_blank" title="Anno Domini">AD</a>. So I tried the KB's recommendation which was an SPN for NetBios name on the CRMAppPool account:</div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
setspn -s HTTP/my_server_name my_domain\my_CRM_app_pool_identity</div>
<div style="background-color: white; clear: none; color: #444444; font-family: Lato, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 21.6000003814697px; margin-bottom: 11px;">
After that SPN was applied (always using -S to check for duplicates) the FetchXML reports instantly started working!</div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-60950507503592774292014-11-14T17:13:00.001-05:002014-11-14T17:13:41.508-05:00Easy way to enable DevErrors for Dynamics CRM using IIS Manager<div class="WordSection1"> <p class="MsoNormal">Windows Access Control prevents you from directly editing the Web.Config file for IIS site, so rather than copy/paste, you can use IIS Manager to edit keys via GUI. To turn the DevErrors key to On you need to change the Section selector to a<i>ppSettings</i> and click the <b>“…”</b> button in the <i>(Collection)</i> property. Make sure you click the <b>Apply</b> button (Action menu on right) after making a change:<o:p></o:p></p> <p class="MsoNormal"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlMzahRYmmLO4s6sQn5pYbRk3H8XEPyu4eFVWXUxLNf-RJhkKJ0OVe8dVnTDtHl3FgMDThviyvWsVaqYdcgw3-4nCBUD0OGlgT1ka02YY_jlBRWHtC8YHC-PACJcVtY1R9lqf8eCVi5jQ/s1600/image003-721509.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlMzahRYmmLO4s6sQn5pYbRk3H8XEPyu4eFVWXUxLNf-RJhkKJ0OVe8dVnTDtHl3FgMDThviyvWsVaqYdcgw3-4nCBUD0OGlgT1ka02YY_jlBRWHtC8YHC-PACJcVtY1R9lqf8eCVi5jQ/s320/image003-721509.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_6081687525606473922" /></a><o:p></o:p></p> </div> ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-7164421888558011962014-11-12T14:02:00.001-05:002014-11-12T14:04:10.222-05:00How to Hide Alerts in CRM 2013 Sitemap Menu<div class="WordSection1">
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkur5pdjXHYte-Cvxa8lhPpSISXKrpo8-Cio9uNJJm4EhKQffd2om2rh_8iO87_oIKAeRW2omASmlZH07etJ6sCNbqGQq49eb8qx80IArkhplSI1qPaBXA6MjQQdoKXTqu5Zi0o4fJus0/s1600/image005-778614.jpg"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkur5pdjXHYte-Cvxa8lhPpSISXKrpo8-Cio9uNJJm4EhKQffd2om2rh_8iO87_oIKAeRW2omASmlZH07etJ6sCNbqGQq49eb8qx80IArkhplSI1qPaBXA6MjQQdoKXTqu5Zi0o4fJus0/s320/image005-778614.jpg" id="BLOGGER_PHOTO_ID_6080896213947123634" /></a><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Alerts appeared in 2013 to display server-side synchronization. The information in the alerts can get pretty technical so they may not be appropriate for end-users. In order to hide them from the menu, you can remove read permissions on the Trace entity (under Core Records).<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir8wmDMZ2BX__wR2SDjCUyOCFSl5MNPTtXi6evr4rxw3WfR82ZPecNtlxO4ncVoGcfiyvH7r0rFmQKkkxoQUX5EM-MYg2h0V52Dx0B1O2SIzoFgcV9fmsd5KXs3g6Hi0SvAvax-Gh09nQ/s1600/image006-780624.jpg"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir8wmDMZ2BX__wR2SDjCUyOCFSl5MNPTtXi6evr4rxw3WfR82ZPecNtlxO4ncVoGcfiyvH7r0rFmQKkkxoQUX5EM-MYg2h0V52Dx0B1O2SIzoFgcV9fmsd5KXs3g6Hi0SvAvax-Gh09nQ/s320/image006-780624.jpg" id="BLOGGER_PHOTO_ID_6080896220048711810" /></a><o:p></o:p></div>
</div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-57434183699469551242014-11-11T16:46:00.002-05:002014-11-11T16:47:10.249-05:00Tricks for working with SetState and SetStateDynamic pluginsThere are a couple of tricks to working with SetState and SetState Dynamic plugins. To get the State that the record is "becoming" you can check the InputParameter "State":<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">var state = (OptionSetValue) context.InputParameters["State"];</span><br />
<span style="font-family: Courier New, Courier, monospace;">localContext.Trace("Contact State: " + state.Value);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">if (state.Value == (int)ContactState.Inactive) return;</span><br />
<br />
To get the Guid of the record, check the PrimaryEntityId property:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Guid targetId = </span><span style="font-family: 'Courier New', Courier, monospace;">context</span><span style="font-family: Courier New, Courier, monospace;">.PrimaryEntityId;</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-43238766723076256902014-11-03T11:37:00.002-05:002014-11-03T11:37:57.007-05:00Using PowerShell Get-ADPrincipalGroupMembership to find a user's groupsI needed to find a good AD group to grant organization wide permissions to an SSRS report and found the Get-ADPrincipalGroupMembership was really useful for querying AD. The server needs to have <a href="http://stackoverflow.com/questions/19182497/import-module-the-specified-module-activedirectory-was-not-loaded-because-no" target="_blank">the "Active Directory modul for Window PowerShell" feature enabled</a> to allow <b>import-module activedirectory</b> to work:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">import-module activedirectory</span><br />
<span style="font-family: Courier New, Courier, monospace;">Get-ADPrincipalGroupMembership [username without domain prefeix] | Get-ADGroup -Properties * | select name, description</span><br />
<span style="font-family: Courier New, Courier, monospace;">Get-ADGroup [group name]</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-19516308352244663982014-08-28T11:53:00.000-04:002014-08-28T11:53:03.477-04:00Saving a CRM form with missing required fieldsI ran across an interesting problem in that I needed to allow a CRM user to save the progress of a form that has required fields. The required fields are not truly required until the user initiates a separate submission step. I was able to "temporarily" remove the required from the fields and then put it back on after the save using this script:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">function onSave() {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> var i = 0;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Xrm.Page.ui.controls.forEach(function (control, index) {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> if (typeof control.getAttribute == 'function' && typeof control.getAttribute().getRequiredLevel == 'function' && control.getAttribute().getRequiredLevel() == "required") {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> reqControls[i] = control;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> control.getAttribute().setRequiredLevel("none");</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> i++;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> });</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Xrm.Page.data.save().then(onSaveComplete, onSaveFailed);</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">function onSaveComplete() {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> reqControls.forEach(function (control) {</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> control.getAttribute().setRequiredLevel("required");</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> }); </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">}</span>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com1tag:blogger.com,1999:blog-8756753752160166655.post-30889995898268615492014-02-25T09:05:00.003-05:002014-02-25T09:05:42.313-05:00The lock value must exist error when resetting ADX auto-number If you try to manually reset the "Last Number Used" field in ADXStudio's Productivity Pack, you will receive an error that says, "The lock value must exist." This is actually a good thing, because it means the locking code is working properly. Here are the steps for resetting the Last Number Used field:<br />
<br />
<br />
<ol>
<li>Enter "1" in <i>Lock Value</i> field and <b>Save</b></li>
<li>Enter "1" in <i>Lock Verification</i> field. Now you can change <i>Last Number Issued</i> to any value you'd like (e.g. "1000") and <b>Save</b></li>
<li><b>Clear</b> the <i>Lock Value</i> field (blank) and enter "1" in <i>Lock Verification</i> field and <b>Save</b></li>
</ol>
<div>
You are all done!</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVbqXB8YSZ_HRVCB3l83ujSrROvKO2e6N0METUOSbLJazciALt4N6UeygKTA2BVUztgx5ZRbdCATPTXV2ywXrM7NpVXC2MbGIC3F75BcZ8xJZplQ3S-x6_dEWRSbNxx8jeT2yWWkXbIsg/s1600/adx.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVbqXB8YSZ_HRVCB3l83ujSrROvKO2e6N0METUOSbLJazciALt4N6UeygKTA2BVUztgx5ZRbdCATPTXV2ywXrM7NpVXC2MbGIC3F75BcZ8xJZplQ3S-x6_dEWRSbNxx8jeT2yWWkXbIsg/s1600/adx.png" height="187" width="400" /></a></div>
<div>
<br /></div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-70183618782764551952013-12-17T09:46:00.004-05:002013-12-17T09:47:26.659-05:00Dynamics CRM 2013 Spreadsheet Import Tricks<div class="MsoNormal">
This is part 2 demonstrating how to upload a spreadsheet of
bounced emails addresses to modify contacts.
In <a href="http://edgewaters.blogspot.com/2013/12/dynamics-crm-2013-handle-bounced-emails.html" target="_blank">part 1</a>, we created an Email Bounce entity and a Real-Time Workflow.<o:p></o:p></div>
<div class="MsoNormal">
The first step is to download the Import template. This step is optional and depending on the
scenario. <i>may</i> make it easier (or more
difficult). In this case, it’s going to
make creating the map easier, so let’s get started. Navigate to your entity and click the Import
Data – Download Template for Import and save the XML file. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKQocf4Vn96I12bsWnX5Qkinaz_UcuM_eiYMV4TJVRClcOaoJEA9sC6yD5DXbf6rheUDrBignlFvXcQ2aDSK4Jwm3izk6QoyZBCnsHL75DHNiUVdPFvS1gQn5Qj_P93mH6xtM7IQzA5Q/s1600/eb6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="99" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDKQocf4Vn96I12bsWnX5Qkinaz_UcuM_eiYMV4TJVRClcOaoJEA9sC6yD5DXbf6rheUDrBignlFvXcQ2aDSK4Jwm3izk6QoyZBCnsHL75DHNiUVdPFvS1gQn5Qj_P93mH6xtM7IQzA5Q/s320/eb6.png" width="320" /></a></div>
<div class="MsoNormal">
Most of the time your computer will not realize this is an
Excel file, so to open the XML file, start Excel and use File – Open. Now you can paste your list of email address
into BOTH columns. Save your changes to
a new file (so you can reuse the template next week) and exit Excel.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilCTUUUIaSNiVe0bnPjtVo0D5-AA_8BAaHoY7Hb7Zl8RbSCV1KqvhF5FLvC_5EFcLBK7xWnssy17FBHqa07-gK6hm__3b3s2DtROT-jv7EOmYkmzu86sz5Jdp7LFttQ66gM3AbLmCkAbI/s1600/eb7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilCTUUUIaSNiVe0bnPjtVo0D5-AA_8BAaHoY7Hb7Zl8RbSCV1KqvhF5FLvC_5EFcLBK7xWnssy17FBHqa07-gK6hm__3b3s2DtROT-jv7EOmYkmzu86sz5Jdp7LFttQ66gM3AbLmCkAbI/s1600/eb7.png" /></a></div>
<div class="MsoNormal">
Start the Import dialog and select your XML file in the
first screen. CRM will recognize that
you want to upload Email Bounce records, but we need to edit the mapping, so
click Edit.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixQC9zVHm4111EdsoCjQRsl9XLs5tp-2IAqa6n6jvQv1dtDuRO6AKvIo65hbV5-PMxHfJvO0VGC1nQU9I8yHke70Dc8y-dpAFpcWW6qLfoBVkE3uJGhgYkT8j57HuhbkQbTK2iebq92lA/s1600/eb8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixQC9zVHm4111EdsoCjQRsl9XLs5tp-2IAqa6n6jvQv1dtDuRO6AKvIo65hbV5-PMxHfJvO0VGC1nQU9I8yHke70Dc8y-dpAFpcWW6qLfoBVkE3uJGhgYkT8j57HuhbkQbTK2iebq92lA/s320/eb8.png" width="320" /></a></div>
<div class="MsoNormal">
We need CRM to lookup our Contacts using the email address,
but it doesn’t do that be default, so we have to add it to the Lookup reference. Click on the little icon next to the Contact
field and select the Email field from the list of Contact fields.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwbD9uv-VNkLVriwGDhVBWH7bDtlqvEyr7DURFpw55lwaGyjv5MRMfgHcwcAIR6oEmZIfIcP_DFdu2RAP5LzEztKRY_Mt-m3zCYBH59wAEN75nCXo7bdrQB_mFQ6ElnEKuYYso12FShSQ/s1600/eb9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwbD9uv-VNkLVriwGDhVBWH7bDtlqvEyr7DURFpw55lwaGyjv5MRMfgHcwcAIR6oEmZIfIcP_DFdu2RAP5LzEztKRY_Mt-m3zCYBH59wAEN75nCXo7bdrQB_mFQ6ElnEKuYYso12FShSQ/s320/eb9.png" width="320" /></a></div>
<div class="MsoNormal">
Click Next until you get to the Finish screen. Tip: give this Mapping a name, so you can
reuse it next time. Click on the “Imports”
link to watch the process unfold. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6C6ozFK7PUag8hMuda0yGfOA9Zb_bYIfXk4048p4-O3DE79ZPztQIu717P0V5gkVR5TIL9qAyajGtqlgZul_bz6kQf4tObDbaVz-5Cb-7cWa_mqK8tagijQQ94elJRWj7WIwDK8BDCb4/s1600/eb9_5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="61" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6C6ozFK7PUag8hMuda0yGfOA9Zb_bYIfXk4048p4-O3DE79ZPztQIu717P0V5gkVR5TIL9qAyajGtqlgZul_bz6kQf4tObDbaVz-5Cb-7cWa_mqK8tagijQQ94elJRWj7WIwDK8BDCb4/s400/eb9_5.png" width="400" /></a></div>
<div class="MsoNormal">
If you have any errors then you can export the failed rows
and manually process them.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJTdYvAsRtFHcdVQQagC0JQeSQSbqZgLKiF6csxaQrbttw07KAQwEgjbulEtnsD5XNj93hJYW0fiqpZZjPMsTU3M-75eC_IT-mqK-ldPGkTOsmGIIl4Zd42Tb7HqnZD8XsedLTwxLJoiE/s1600/eb10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="71" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJTdYvAsRtFHcdVQQagC0JQeSQSbqZgLKiF6csxaQrbttw07KAQwEgjbulEtnsD5XNj93hJYW0fiqpZZjPMsTU3M-75eC_IT-mqK-ldPGkTOsmGIIl4Zd42Tb7HqnZD8XsedLTwxLJoiE/s320/eb10.png" width="320" /></a></div>
<div class="MsoNormal">
Remember that Mapping we saved, well reusing it is not as
easy as you’d think…when uploading XML files, there’s a strange trick to it. You still have to click the Edit button after
uploading the XML file, but when you get to the Map Record Types dialog, click
Back and you are magically transported to the Select Data Map dialog. </div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7hGgW8qbJnhLwFGj70pGC631KhD_SiaZkDtsBV-Gq1UBmwaKx3VXby4V_RA05lKfRPIv2BQmTgitZn5kRY8PRRFj7Co7-dgUbsXcEm5UKd3DPL8x24cCDywrW25DoxWnUeP5XlxSBVH0/s1600/eb11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="151" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7hGgW8qbJnhLwFGj70pGC631KhD_SiaZkDtsBV-Gq1UBmwaKx3VXby4V_RA05lKfRPIv2BQmTgitZn5kRY8PRRFj7Co7-dgUbsXcEm5UKd3DPL8x24cCDywrW25DoxWnUeP5XlxSBVH0/s400/eb11.png" width="400" /></a></div>
<div class="MsoNormal">
<br /></div>
<br />
<div class="MsoNormal">
After that, you just click Next, Next, Next…as quick as you
can and you’re finished.<o:p></o:p></div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-86011517156196591782013-12-17T09:26:00.004-05:002013-12-17T10:29:02.930-05:00Dynamics CRM 2013 – Handle Bounced Emails<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal">
If you have a lists of email addresses that returned as
bounced, how can you update your Dynamics CRM contacts? Easy!
Create a new entity and put the power of Dynamics Workflows to use.<o:p></o:p></div>
<div class="MsoNormal">
The first thing we’re going to need is a new Entity – let’s
call it “Email Bounce”. Let’s keep this
entity super-simple and turn off all of the Communication and Collaboration
options.<o:p></o:p></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizWhPv8TLQOK_KIoFAGVwXFeSiaV1Lg_wOb9pZQOHvlxmVDjr21_Rrr566wVlJL_IckpfGf2Jr-R-u4xYDAM4Br_wzEli5HwFqSiOKclxvpeFcxB8lF_IIBc_9lgbrO6CHmoEE_f01ytc/s1600/eb1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="173" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizWhPv8TLQOK_KIoFAGVwXFeSiaV1Lg_wOb9pZQOHvlxmVDjr21_Rrr566wVlJL_IckpfGf2Jr-R-u4xYDAM4Br_wzEli5HwFqSiOKclxvpeFcxB8lF_IIBc_9lgbrO6CHmoEE_f01ytc/s200/eb1.png" width="200" /></a></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<br /></div>
Before we hit Save, let’s change the Primary Field so we can
use it to store a text version of the email address. Rename it to Email and set the length to 200.<o:p></o:p><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAFsLuKzM5cBE11ZVt8om7ULPWGdP4GFPEFV-H6Y_w7PddZeav0-vUhVtd4ovRaLzjn8_l7cHY10UBnk4wp_t3RbnQGc9URHP8vCS4XWGlMLpLaMIyW8Qx8_iho_vZuYb9PM1KDR_HyI/s1600/eb2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="85" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuAFsLuKzM5cBE11ZVt8om7ULPWGdP4GFPEFV-H6Y_w7PddZeav0-vUhVtd4ovRaLzjn8_l7cHY10UBnk4wp_t3RbnQGc9URHP8vCS4XWGlMLpLaMIyW8Qx8_iho_vZuYb9PM1KDR_HyI/s320/eb2.png" width="320" /></a></div>
<div class="MsoNormal">
After you save your entity, open the Form and add a new
Lookup field for Contact. Save and
Publish your entity. Now on to the
workflow.<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzdmYOfN9JJrw5462PjdyKPIua4e09IMkNPuqjvIp7gCZs2ehNdvO-wPeGuv9uTElqQJ4YKG33Bw3wdPHXbioM8He30OYBP0e_7UURg6jHae6P5wAPkcMgLSii_Ircp0te6QxfjXXTJ80/s1600/eb3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzdmYOfN9JJrw5462PjdyKPIua4e09IMkNPuqjvIp7gCZs2ehNdvO-wPeGuv9uTElqQJ4YKG33Bw3wdPHXbioM8He30OYBP0e_7UURg6jHae6P5wAPkcMgLSii_Ircp0te6QxfjXXTJ80/s320/eb3.png" width="320" /></a></div>
<div class="MsoNormal">
Create a new Process - either in your Solution, or in the
Processes subarea of the Settings menu.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHw7Gq4_plFigSjnM6UMj9a2P8BNFu9SdiTVxQkGR7iGs7SqmkDQOmdOFynNL0-iTH2d5inRnk9ZegUfJsqebNnhZ873u3kJKrzosIk7gds3iSGQn2hRkG0bCfhdbiRfNNJQ2PylDXzVI/s1600/EB4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="89" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHw7Gq4_plFigSjnM6UMj9a2P8BNFu9SdiTVxQkGR7iGs7SqmkDQOmdOFynNL0-iTH2d5inRnk9ZegUfJsqebNnhZ873u3kJKrzosIk7gds3iSGQn2hRkG0bCfhdbiRfNNJQ2PylDXzVI/s320/EB4.png" width="320" /></a></div>
<div class="MsoNormal">
Now you have a decision to make…well, that is if you are
using CRM 2013. I chose to create a
Real-Time Workflow because I am planning to Deactivate my Email Bounce records
once a matching Contact is found. I will
be uploading these emails using a spreadsheet, and I know there will be times
when my email address does not find an exact match. If two contacts are found, or none, I’d like
the Email Bounce record to “hang around” so we can manually investigate. With a Real-Time Workflow, when the Contact
Lookup is populated, the screen will refresh and my Email Bounce will be
Inactive, signaling success. If I used a
regular workflow, the record would be inactive, but the user wouldn’t see it
unless they manually refresh their view.
Score one for CRM 2013! Here’s
how I setup my workflow. Note, mine runs
on Create and Update (of the Contact field)</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP2sFu3fqikg8z6rhZjdyUnZoaGR2Ti-cFcYXm-SHk5BeR_P_Svm7DQenDoinKIvPBe7SNqSFMrHoUg1gJrnVSPUcs1hcA6BpWosdaZvVsMpTogf0J1ezvI1p1krFVu1G-05Z-u8bSpdY/s1600/eb5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgP2sFu3fqikg8z6rhZjdyUnZoaGR2Ti-cFcYXm-SHk5BeR_P_Svm7DQenDoinKIvPBe7SNqSFMrHoUg1gJrnVSPUcs1hcA6BpWosdaZvVsMpTogf0J1ezvI1p1krFVu1G-05Z-u8bSpdY/s320/eb5.png" width="320" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Now, if you’ve never used CRM’s Import features, you are in
for a real treat! Check out <a href="http://edgewaters.blogspot.com/2013/12/dynamics-crm-2013-spreadsheet-import.html" target="_blank">Part 2 –Data Import Tricks</a>.<o:p></o:p></div>
<br />ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-63405676409316879652013-11-11T15:51:00.000-05:002013-11-11T16:19:06.187-05:00Microsoft Dynamics CRM 2013 - New Workflow Features<h3>
Synchronous Workflows</h3>
There are a bunch of great new features in CRM 2013. One particularly powerful one is synchronous workflows. It used to be that workflows could only run asynchronously, which made them an inappropriate choice for many automation scenarios. For example, if you needed to calculate a value that would be displayed to the user, workflows were a bad choice since they might take two seconds or 20 seconds, but either way, you were not going to see the results until the user refreshed the page sometime after the workflow completed.<br />
<br />
If we turn our attention to another new feature in 2013, the Process Flow, we notice that the Lookups do not allow us to set any “filtering” like we can on the form. For example, it’s typical to setup a filter between an Account field and a Contact field. That way, you only have to search through a list of Contacts related to the selected Account.<br />
<br />
Let’s create a handy Contact Abbreviation field to demonstrate synchronous workflows and make it easier to find a particular contact in the Opportunity Process field.<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d42a46970d-pi" style="float: right;"></a><img alt="Sync1" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d42a46970d" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d42a46970d-800wi" style="margin: 0px 0px 5px 5px;" title="Sync1" /><br />
<br />
We’ll be using the <a href="http://manipulationlibrary.codeplex.com/" target="_blank">Manipulation Library</a> written by Carlton Colter and available for <a href="http://manipulationlibrary.codeplex.com/releases" target="_blank">download on CodePlex</a>. This will add a number of useful String and calculation steps to your workflow Add Step menu:<br />
<img alt="Snyc2" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d42dee970d" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d42dee970d-800wi" style="margin: 0px 0px 5px 5px;" title="Snyc2" /><br />
Add a field to the Contact to hold the Abbreviation (optionally add it to the Form)<br />
<img alt="Sync3" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d42efa970d" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d42efa970d-800wi" style="margin: 0px 0px 5px 5px;" title="Sync3" /><br />
Now let’s use the Manipulation Library’s Substring step to calculate the Account abbreviation. Follow these Steps:<br />
<ol>
<li>Before we get into the fun stuff, let’s make sure our Workflow does get confused. Add a “short-circuit” to only run if we actually have an Account to work with (remember, Company Name is of type Customer which could also be a Contact!):<br /><img alt="Sync4" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3ca50970c" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3ca50970c-800wi" style="margin: 0px 0px 5px 5px;" title="Sync4" /><br /><em>Interesting discovery – if you stop the workflow with status of Cancelled it will throw and error back to the user. </em></li>
<li>Now Click <strong>Add Step</strong> and find the “<em>Strings Utilities</em>” – you may need to scroll (note difference in spelling seems to be a bug in the library) and select <em>Substring</em><br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3e2b3970b-pi" style="display: inline;"><img alt="Sync5" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3e2b3970b" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3e2b3970b-800wi" title="Sync5" /></a> </li>
<li>Give the step a good “variable sounding name” since we’ll be using this later in a formula. I called mine <em>Account Abbreviation</em>.</li>
<li>Click <strong>Set Properties</strong> and then click in the Text value box. Then select Related Entities – Company Name (Account) in the right menu. Select Account Name and click <strong>Add</strong>. Lastly click <strong>OK</strong>.
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3dbff970c-pi" style="display: inline;"><img alt="Sync6" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3dbff970c image-full" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3dbff970c-800wi" title="Sync6" /></a></li>
</ol>
Repeat this process for First Name and Last Name but change the Length to <strong>1</strong><br />
Now that we have all of our abbreviations, we just need to update the Contact, so click <strong>Add Step</strong> and <em>Update Record.</em> Give the step a name (e.g. “Update Zip Finder”) and click <em>Set Properties</em><br />
Now we need to add the result of the three substring steps above into our Contact’s field. Unless you added the new field to the Contact form, you will need to scroll down and find it among the field “Additional Fields” section:<br />
<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3dcff970c-pi" style="display: inline;"><img alt="Sync7" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3dcff970c image-full" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3dcff970c-800wi" title="Sync7" /></a><br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3dcff970c-pi" style="display: inline;"></a>Now for the fiddly part. Select the Zip Finder field and then in the Look For, select <em>Account Abbreviaion</em> – Result and click the <strong>Add/OK</strong> like above. To add the other characters you will need to click in the Zip Finder field again, AFTER the highlighted slug and remove the extra whitespace. Now repeat the step for First and Last name. Your formula should look like this:
<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d44716970d-pi" style="display: inline;"><img alt="Sync8" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d44716970d" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d44716970d-800wi" title="Sync8" /></a><br />
Now just click <strong>Activate</strong> and again in the confirmation dialog:
<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3f351970b-pi" style="display: inline;"><img alt="Sync9" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3f351970b image-full" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3f351970b-800wi" title="Sync9" /></a><br />
<br />
<br />
Let’s give this a try. Update a few contacts so you have some Zip Finders to test with. I added a contact named Johnathan Smith to Blue Yonder Airline. Hey, when I search for “blu” I don’t see anything! That’s because we need to add our new field to the entity’s Quick Find View. The super-fast way to edit the system views is to return to the Contacts list and click the ellipses in the ribbon (…) and System Views:<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3f412970b-pi" style="display: inline;"><img alt="Sync10" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3f412970b image-full" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3f412970b-800wi" title="Sync10" /></a><br />
Just click the Add Find Columns in the right menu and select your new column. Make sure you click Publish on the Contact entity (or Publish All Customizations) to make the change effective.
<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d449ed970d-pi" style="display: inline;"><img alt="Sync11" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d449ed970d" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d449ed970d-800wi" title="Sync11" /></a><br />
<br />
Now when you type “Blu” you get a list of all contacts that have a “Blu” anywhere in their name, company, email, etc.
<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d44fc6970d-pi" style="display: inline;"><img alt="Sync12" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d44fc6970d image-full" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d44fc6970d-800wi" title="Sync12" /></a><br />
In many systems that will return too many records to find the one we want. But, if I type “blujs” (or even “bluj”) I’m searching for a very distinctive string and will work in other locations like Lookups!
<br />
<a class="asset-img-link" href="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3fb3f970b-pi" style="display: inline;"><img alt="Sync13" border="0" class="asset asset-image at-xid-6a012875706f1b970c019b00d3fb3f970b image-full" src="http://ironworksblog.typepad.com/.a/6a012875706f1b970c019b00d3fb3f970b-800wi" title="Sync13" /></a><br />
Now this abbreviation scheme may not work in every situation, but the algorithm is very tweak-able for your particular application.<br />
<h3>
Synchronous Workflows vs. Plugins</h3>
There will definitely be debate about when to use a synchronous workflow over a plugin so here are some guidelines about when to choose real-time workflows:<br />
<ul>
<li>Logic is relatively simple (if-then-else)</li>
<li>The business rules may change frequently</li>
<li>The data needed is contained in the primary entity or entities with N:1 relationships</li>
<li>The process needs to create or send a template-based email</li>
</ul>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-87987202794208224312013-10-10T08:41:00.000-04:002013-10-10T08:41:33.045-04:00Inspired by greatnessGreatness comes in many forms, but it is not hard to recognize when you encounter it. I am grateful to providential timing that I was able to get in under the wire of this one:<br />
<a href="http://www.stevewiens.com/2013/09/20/rim-to-rim-what-i-learned-in-the-womb/">http://www.stevewiens.com/2013/09/20/rim-to-rim-what-i-learned-in-the-womb/</a>ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-43272824861356338232013-09-19T08:30:00.002-04:002013-09-19T08:30:53.498-04:00Fix Virtual Box No Internet problem with Domain ControllerI struggled for days trying to get my Windows Server 2012 VM running on Virtual Box to connect to the internet. In the end, it turned out to be a DNS issue because I was running a DNS server on my Domain Controller. Here's how I fixed it:<br />
<br />
<div class="MsoNormal">
Open Command Prompt and type: <b>ping www.google.com</b><br />
<br />
<o:p></o:p></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfGptCBti2frkMF2mPdeLmAgxGjy0-I8GVOTtbJVwpaJ5gEMeI46DuO3oKSGMGJgJQXsuvIMmuQ18_0G9gttvqUoflzWDu3_aHBVU9oIKiyRCy4LNjBjZZm1XhsFQZZeH-jIVMwo38Wo/s1600/vb-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="113" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwfGptCBti2frkMF2mPdeLmAgxGjy0-I8GVOTtbJVwpaJ5gEMeI46DuO3oKSGMGJgJQXsuvIMmuQ18_0G9gttvqUoflzWDu3_aHBVU9oIKiyRCy4LNjBjZZm1XhsFQZZeH-jIVMwo38Wo/s320/vb-1.png" width="320" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="http://www.blogger.com/blogger.g?blogID=8756753752160166655" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="http://www.blogger.com/blogger.g?blogID=8756753752160166655" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a>What you will probably see is “could not resolve host”. If you do, then confirm that your DNS is
pointing to the wrong place by typing: <b>ipconfig
/all</b></div>
<div class="MsoNormal">
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHJx2W8NnlcA_ulLK1VIvS6W57IdC-WZglrWFiw__hlFEBJYLQhiqP9eSrErQsJjy5edK7ZNymgP286s_H9R8ULFeBIo1DgMsk5H9Nq0N0JfanDZnFFj0vDESCH9yR3rY_5r7c9V4BEwk/s1600/vb-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="42" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHJx2W8NnlcA_ulLK1VIvS6W57IdC-WZglrWFiw__hlFEBJYLQhiqP9eSrErQsJjy5edK7ZNymgP286s_H9R8ULFeBIo1DgMsk5H9Nq0N0JfanDZnFFj0vDESCH9yR3rY_5r7c9V4BEwk/s320/vb-2.png" width="320" /></a></div>
<br /></div>
<div class="MsoNormal">
Down at the bottom you will see the DNS Server(s) you are
using. If it is set to <b>127.0.0.1</b> then you need to find a “real”
DNS server.<o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
<u>On the HOST</u> operating system open a command prompt
and type: <b>ipconfig /all</b> and note the
DNS server.<o:p></o:p><br />
<br /></div>
<div class="MsoNormal">
Back on the guest VM, open up the <b>TCP/IP properties</b> by going to <b>Network
Sharing Center</b> and clicking the connection.
On the <b>Ethernet Status</b> dialog
click <b>Properties</b>. On the <b>Ethernet
Properties </b>dialog click <b>Internet
Protocol Version 4 (TCP/IPv4)</b> and click <b>Properties</b>:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0uchXkiMgt0YMR__imTt0s-4iyGMEfQQNEXhKbfjKkWwWJRdjn4ft1iDKnzJDeNq5QOOvi_1N1SczSumeBUivWrTTik1d6J_K9E1epG6T3AUYNFdX4FTd7zxMyeNp44WgzHZHPW5OFl0/s1600/vb-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="263" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0uchXkiMgt0YMR__imTt0s-4iyGMEfQQNEXhKbfjKkWwWJRdjn4ft1iDKnzJDeNq5QOOvi_1N1SczSumeBUivWrTTik1d6J_K9E1epG6T3AUYNFdX4FTd7zxMyeNp44WgzHZHPW5OFl0/s400/vb-3.png" width="400" /></a></div>
<br />
<!--[if gte vml 1]><v:shape id="Picture_x0020_3"
o:spid="_x0000_i1026" type="#_x0000_t75" style='width:468pt;height:309.75pt;
visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\csnyder\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><o:p></o:p></div>
<div class="MsoNormal">
On the TCP/IP Properties dialog, enter the address of your <u>HOST</u>’s
DNS server and click <b>OK</b><br />
<!--[if gte vml 1]><v:shape id="Picture_x0020_4"
o:spid="_x0000_i1025" type="#_x0000_t75" style='width:303pt;height:334.5pt;
visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\csnyder\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]--><b><o:p></o:p></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9dMQSVRVQs3SbNlGAnWunEQW2o52_m14aiEZYOuAE-R0YdsxrZfgb7rhf5bnY2zqUVhWRme9BjloDQoO-eIRQUueJS2yPeSPpEGHHXsqhGsO3rAKi9hHDJNTSM9IqTwvryouseBSupjU/s1600/vb-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9dMQSVRVQs3SbNlGAnWunEQW2o52_m14aiEZYOuAE-R0YdsxrZfgb7rhf5bnY2zqUVhWRme9BjloDQoO-eIRQUueJS2yPeSPpEGHHXsqhGsO3rAKi9hHDJNTSM9IqTwvryouseBSupjU/s320/vb-4.png" width="289" /></a></div>
<br />
<div class="MsoNormal">
Go back to your command prompt and you should now be able to
ping www.google.com<u><o:p></o:p></u></div>
ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-29906674202710118872013-04-11T16:50:00.001-04:002013-04-12T08:15:45.308-04:00Check you Plugin Stats!<div class="WordSection1"> <p class="MsoNormal">Ever wonder how many times your plug-ins have executed and/or failed. Run an advanced find on PluginTypeStatistic and find out!<o:p></o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal"><a href="http://mpwiki.viacode.com/default.aspx?g=posts&t=105447">http://mpwiki.viacode.com/default.aspx?g=posts&t=105447</a><o:p></o:p></p> <p class="MsoNormal" style="mso-margin-top-alt:12.0pt;margin-right:0in;margin-bottom:3.0pt;margin-left:0in;background:white"> <span style="font-size:19.0pt;font-family:"Tahoma","sans-serif";color:#0D5480">Alert Details<o:p></o:p></span></p> <table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="background:white;border-collapse:collapse;border:none"> <tbody> <tr> <td style="border-top:solid #B4C2D7 1.0pt;border-left:solid #B4C2D7 1.0pt;border-bottom:none;border-right:dotted #B4C2D7 1.0pt;background:#0364A0;padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:8.0pt;font-family:"Verdana","sans-serif";color:white">Message<o:p></o:p></span></b></p> </td> <td style="border-top:solid #B4C2D7 1.0pt;border-left:none;border-bottom:none;border-right:dotted #B4C2D7 1.0pt;background:#0364A0;padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:8.0pt;font-family:"Verdana","sans-serif";color:white">Priority<o:p></o:p></span></b></p> </td> <td style="border-top:solid #B4C2D7 1.0pt;border-left:none;border-bottom:none;border-right:dotted #B4C2D7 1.0pt;background:#0364A0;padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:8.0pt;font-family:"Verdana","sans-serif";color:white">Severity<o:p></o:p></span></b></p> </td> </tr> <tr> <td style="border:solid #B4C2D7 1.0pt;border-right:dotted #B4C2D7 1.0pt;padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">The Sandbox Host service has terminated a Sandbox Worker process.<o:p></o:p></span></p> </td> <td style="border-top:solid #B4C2D7 1.0pt;border-left:none;border-bottom:solid #B4C2D7 1.0pt;border-right:dotted #B4C2D7 1.0pt;padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">Medium<o:p></o:p></span></p> </td> <td style="border-top:solid #B4C2D7 1.0pt;border-left:none;border-bottom:solid #B4C2D7 1.0pt;border-right:dotted #B4C2D7 1.0pt;padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">Warning<o:p></o:p></span></p> </td> </tr> </tbody> </table> <p class="MsoNormal" style="mso-margin-top-alt:12.0pt;margin-right:0in;margin-bottom:3.0pt;margin-left:0in;background:white"> <span style="font-size:19.0pt;font-family:"Tahoma","sans-serif";color:#0D5480">Rule Knowledgebase<o:p></o:p></span></p> <table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" style="background:white;border-collapse:collapse"> <tbody> <tr> <td style="border-top:solid #DEDBEC 1.0pt;border-left:none;border-bottom:dotted #DEDBEC 1.0pt;border-right:none;background:#EAE8F3;padding:0in 3.75pt 0in 5.25pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#0D5480">Summary<o:p></o:p></span></b></p> </td> </tr> <tr> <td style="padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt"> <span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">The Sandbox Host service has terminated a Sandbox Worker process.<o:p></o:p></span></p> </td> </tr> <tr> <td style="border-top:solid #DEDBEC 1.0pt;border-left:none;border-bottom:dotted #DEDBEC 1.0pt;border-right:none;background:#EAE8F3;padding:0in 3.75pt 0in 5.25pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#0D5480">Causes<o:p></o:p></span></b></p> </td> </tr> <tr> <td style="padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt"> <span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">A Worker process can be terminated for multiple reasons:<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt"> <span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">1. A plug-in used resources (CPU, memory, handles) excessively.<o:p></o:p></span></p> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt"> <span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">2. A Worker process was unresponsive to the Sandbox Host service.<o:p></o:p></span></p> </td> </tr> <tr> <td style="border-top:solid #DEDBEC 1.0pt;border-left:none;border-bottom:dotted #DEDBEC 1.0pt;border-right:none;background:#EAE8F3;padding:0in 3.75pt 0in 5.25pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#0D5480">Resolutions<o:p></o:p></span></b></p> </td> </tr> <tr> <td style="padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;line-height:13.5pt"> <span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">No action is required unless there is a consistent failure. Using Advanced Find, review the </span><u><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:red">PluginTypeStatistic</span></u><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:red"> </span><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">for plug-ins registered in the system, which will provide information about plug-ins that have contributed to process terminations.<o:p></o:p></span></p> </td> </tr> <tr> <td style="border-top:solid #DEDBEC 1.0pt;border-left:none;border-bottom:dotted #DEDBEC 1.0pt;border-right:none;background:#EAE8F3;padding:0in 3.75pt 0in 5.25pt"> <p class="MsoNormal" style="line-height:13.5pt"><b><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#0D5480">External References<o:p></o:p></span></b></p> </td> </tr> <tr> <td style="padding:0in 3.75pt 0in 3.75pt"> <p class="MsoNormal" style="line-height:13.5pt"><span style="font-size:9.0pt;font-family:"Verdana","sans-serif";color:#404040">This rule does not contain any external references.<o:p></o:p></span></p> </td> </tr> </tbody> </table> <p class="MsoNormal"><o:p> </o:p></p> </div> ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0tag:blogger.com,1999:blog-8756753752160166655.post-20387454340150742712013-04-11T07:46:00.001-04:002013-04-12T08:15:45.307-04:00Creating ActivityParty for a custom Activity in Scribe<div class="WordSection1"> <p class="MsoNormal"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq4iMM3XTTSog7dRnOYNwoq69QMvRTjOKjo1TCMyFJrqoXv4mL1v5zmMqXD8He6J-tsVYZDwc7tXSm81oSB7sGC5LKU_W-98AhAf1TPIh1UX5NawFLjA3GVyJXdH7iC0jd8ciNh1vzwaY/s1600/image003-787761.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq4iMM3XTTSog7dRnOYNwoq69QMvRTjOKjo1TCMyFJrqoXv4mL1v5zmMqXD8He6J-tsVYZDwc7tXSm81oSB7sGC5LKU_W-98AhAf1TPIh1UX5NawFLjA3GVyJXdH7iC0jd8ciNh1vzwaY/s320/image003-787761.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5865554325090548962" /></a><o:p></o:p></p> <p class="MsoNormal">Scribe validates the activitytypecode that you supply against a list in the configuration file DynamicsCRMAdapter2011Metadata.xml. If you try to insert a new ActivityParty for a custom activity, Scribe will not allow it until you add your entityname and activitytype to the the configuration file. To fix this, close Scribe Workbench and edit the file XML file. Note: The entity name MUST match the logical entity name (e.g. new_mycustomactivity) or you will get a different error. <o:p></o:p></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVo2-L2XEpSnC3MESLqBwVxVivwnTvasxPunRM6_1TiQqUB5gKKHfK9MrLqzlMAHgzV-VrEEQ2BSElZXRCqPgNXytQ1TsOtHiNliZuawUfF4JRZke3mJ2-d1gX0ENHPF41pvJKRVt6eEE/s1600/image002-788935.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVo2-L2XEpSnC3MESLqBwVxVivwnTvasxPunRM6_1TiQqUB5gKKHfK9MrLqzlMAHgzV-VrEEQ2BSElZXRCqPgNXytQ1TsOtHiNliZuawUfF4JRZke3mJ2-d1gX0ENHPF41pvJKRVt6eEE/s320/image002-788935.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5865554323804496530" /></a><o:p></o:p></p> </div> ChrisShttp://www.blogger.com/profile/13328188604078246840noreply@blogger.com0