<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mitch Milam&#039;s Dynamics CRM and xRM Discussions &#187; Dynamics CRM</title>
	<atom:link href="http://blogs.infinite-x.net/category/dynamics-crm/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.infinite-x.net</link>
	<description>Sharing information with Dynamics CRM users and xRM developers</description>
	<lastBuildDate>Tue, 07 Feb 2012 08:01:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>CRM Export JavaScript Updated</title>
		<link>http://blogs.infinite-x.net/2012/02/07/crm-export-javascript-updated/</link>
		<comments>http://blogs.infinite-x.net/2012/02/07/crm-export-javascript-updated/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 08:01:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1214</guid>
		<description><![CDATA[I updated the utility exports to disk the JavaScript found in a solution in Dynamics CRM 2011. To read more about it, see the original announcement, found here. This updated fixes some issues where the JavaScript would not be exported depending upon the solution you selected and the solution you chose to export. ( it [...]]]></description>
			<content:encoded><![CDATA[<p>I updated the utility exports to disk the JavaScript found in a solution in Dynamics CRM 2011. To read more about it, see the original announcement, found <a href="http://blogs.infinite-x.net/2011/07/04/export-javascript-utility-updated/" target="_blank">here</a>.</p>
<p>This updated fixes some issues where the JavaScript would not be exported depending upon the solution you selected and the solution you chose to export. ( it was basically a design-flaw on my part. )</p>
<p>If you are running IFD using ADFS to access your CRM system, then you may be unable to connect to CRM. If you receive a 401 error, then please let me know.&#160; I am currently working with Microsoft to determine a course of action around this issue.</p>
<p>Otherwise, if you find any issues, then please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/02/07/crm-export-javascript-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CRM Find Privilege Utility Updated</title>
		<link>http://blogs.infinite-x.net/2012/02/06/crm-find-privilege-utility-updated/</link>
		<comments>http://blogs.infinite-x.net/2012/02/06/crm-find-privilege-utility-updated/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 16:07:01 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1212</guid>
		<description><![CDATA[I&#039;ve corrected some issues I found with the utility that allows you to look up User and Privilege information by ID: You my find it on my Free Utilities page.]]></description>
			<content:encoded><![CDATA[<p>I&#039;ve corrected some issues I found with the utility that allows you to look up User and Privilege information by ID:</p>
<p>You my find it on my <a href="http://blogs.infinite-x.net/free-utilities/" target="_blank">Free Utilities</a> page.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/02/06/crm-find-privilege-utility-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamics CRM News: CRM Anywhere</title>
		<link>http://blogs.infinite-x.net/2012/02/06/dynamics-crm-news-crm-anywhere/</link>
		<comments>http://blogs.infinite-x.net/2012/02/06/dynamics-crm-news-crm-anywhere/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 15:29:27 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1209</guid>
		<description><![CDATA[Dennis Michalis, Microsoft Dynamics General Manager, released the roadmap for the upcoming Q2 2012 release of Dynamics CRM 2011, which they are calling R8. Read more about it here. The actual roadmap document can be found here. Looks like we&#039;re in for some exciting times this year!]]></description>
			<content:encoded><![CDATA[<p><a href="https://community.dynamics.com/members/Dennis-Michalis/default.aspx">Dennis Michalis</a>, Microsoft Dynamics General Manager, released the roadmap for the upcoming Q2 2012 release of Dynamics CRM 2011, which they are calling R8. Read more about it <a href="https://community.dynamics.com/product/crm/crmnontechnical/b/crmconnection/archive/2012/02/06/crm-anywhere.aspx" target="_blank">here</a>.</p>
<p>The actual roadmap document can be found <a href="http://crmpublish.blob.core.windows.net/docs/ReleasePreviewGuide.pdf" target="_blank">here</a>.</p>
<p>Looks like we&#039;re in for some exciting times this year!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/02/06/dynamics-crm-news-crm-anywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CRM Migration Assistant 1.3.3 Released</title>
		<link>http://blogs.infinite-x.net/2012/02/01/crm-migration-assistant-1-3-3-released/</link>
		<comments>http://blogs.infinite-x.net/2012/02/01/crm-migration-assistant-1-3-3-released/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 17:47:02 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[CRM2011]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSCRM2011]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1205</guid>
		<description><![CDATA[We have released a small update to the CRM Migration Assistant which includes the following updates: Added 0 and 1 as supported Submit Options Fixed issues with converting .AddOption to .addOption method. Conversion alerts were added for the following JavaScript properties: .title .vAlign .contentEditable .innerText Any .style property that is not either display or visible [...]]]></description>
			<content:encoded><![CDATA[<p>We have released a small update to the CRM Migration Assistant which includes the following updates:</p>
<ol>
<li>Added 0 and 1 as supported Submit Options</li>
<li>Fixed issues with converting .AddOption to .addOption method.</li>
<li>Conversion alerts were added for the following JavaScript properties:</li>
</ol>
<ul>
<li>.title</li>
<li>.vAlign</li>
<li>.contentEditable</li>
<li>.innerText</li>
</ul>
<ol>
<li>Any .style property that is not either <strong>display</strong> or <strong>visible</strong> is now marked as a conversion issue. This is to help identify instances where people have created unsupported code which will probably not work within the CRM 2011 environment.</li>
<li>The use of document.all.mnuBar1 now produces a conversion alert.</li>
<li>Instances of the DOM element <strong>&#039;Notifications&#039;</strong> will cause a conversion alert will be generated. This is a special CRM form element at the top of each data entry form that shows alerts to the user. For more information on using this technique, see this <a href="http://community.dynamics.com/product/crm/crmtechnical/b/crmmarcoamoedoeng/archive/2009/06/09/show-custom-warning-messages-on-microsoft-dynamics-crm.aspx" target="_blank">article</a>.</li>
</ol>
<p>&nbsp;</p>
<p>You may download the new package <a href="http://www.crmaccelerators.net/products/crm-migration-assistant-2/crm-migration-assistant-demo-request/" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/02/01/crm-migration-assistant-1-3-3-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CRM 2011 Cross-Browser Support Poll</title>
		<link>http://blogs.infinite-x.net/2012/01/30/crm-2011-cross-browser-support-poll/</link>
		<comments>http://blogs.infinite-x.net/2012/01/30/crm-2011-cross-browser-support-poll/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 17:27:29 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[CRM2011]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSCRM2011]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1200</guid>
		<description><![CDATA[HI Everyone, If you have not heard, Dynamics CRM 2011 will very shortly support browsers other than Internet Explorer. I am absolutely unsure if this is a big deal for customers or not.&#160; So, I thought I&#039;d ask. I&#039;ve created a poll on my site that allows you to select which browsers you will be [...]]]></description>
			<content:encoded><![CDATA[<p>HI Everyone,</p>
<p>If you have not heard, Dynamics CRM 2011 will very shortly support browsers other than Internet Explorer.</p>
<p>I am absolutely unsure if this is a big deal for customers or not.&#160; So, I thought I&#039;d ask.</p>
<p>I&#039;ve created a poll on my site that allows you to select which browsers you will be using. If you have some time, I&#039;d appreciate the feedback.</p>
<p>You can also leave a comment on this post.</p>
<p>Thanks, Mitch</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/01/30/crm-2011-cross-browser-support-poll/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Sandboxed Plugin Development: HtmlDecode Tidbit</title>
		<link>http://blogs.infinite-x.net/2012/01/27/sandboxed-plugin-development-htmldecode-tidbit/</link>
		<comments>http://blogs.infinite-x.net/2012/01/27/sandboxed-plugin-development-htmldecode-tidbit/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 22:48:03 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSCRM2011]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1197</guid>
		<description><![CDATA[When working with things like Email, it is sometimes necessary to decode a string of text that has been HTML-encoded. This is the process where special characters are replaced with their numerical equivalents to prevent misinterpretation of the HTML text. You use it like this: string xmlPacket = HttpUtility.HtmlDecode(input); This method is found inside of [...]]]></description>
			<content:encoded><![CDATA[<p>When working with things like Email, it is sometimes necessary to decode a string of text that has been HTML-encoded. This is the process where special characters are replaced with their numerical equivalents to prevent misinterpretation of the HTML text.</p>
<p>You use it like this:</p>
<blockquote><p>string xmlPacket = HttpUtility.HtmlDecode(input);</p>
</blockquote>
<p>This method is found inside of System.Web, which seems to require full trust to run properly.</p>
<p>Since I&#039;m running in the sandbox, I can only use partial trust assemblies.</p>
<p>Thankfully, the System.Net assembly has: WebUtility.HtmlDecode, which works exactly the same AND doesn&#039;t cause us security issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/01/27/sandboxed-plugin-development-htmldecode-tidbit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Converting to CRM 2011 JavaScript: Form Elements</title>
		<link>http://blogs.infinite-x.net/2012/01/27/converting-to-crm-2011-javascript-form-elements/</link>
		<comments>http://blogs.infinite-x.net/2012/01/27/converting-to-crm-2011-javascript-form-elements/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 08:06:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[CRM2011]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSCRM2011]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1195</guid>
		<description><![CDATA[One of the most fascinating things I found during the creation of the CRM Migration Assistant is the different methods developers use to access CRM form fields, and other form elements. Normally, people access a form field using the following style of JavaScript: crmForm.all.name This is the normal and perfectly acceptable (and supported) method for [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most fascinating things I found during the creation of the CRM Migration Assistant is the different methods developers use to access CRM form fields, and other form elements.</p>
<p>Normally, people access a form field using the following style of JavaScript:</p>
<blockquote><p>crmForm.all.name</p>
</blockquote>
<p>This is the normal and perfectly acceptable (and supported) method for referencing CRM form fields.</p>
<p>But, for various reasons, I&#039;ve also seen fields reference using these crmForm methods:</p>
<blockquote><p>crmForm.name     <br />crmForm.elements[&quot;name&quot;]      <br />crmForm.all[&quot;name&quot;]      <br />crmForm[&quot;name&quot;]</p>
</blockquote>
<p>This is perfectly acceptable JavaScript and the CRM 4.0 object model had no objection to this practice, so all of these methods seemed to work.</p>
<p>In fact, accessing CRM form fields using the JavaScript <strong>document</strong> object using these methods worked as well:</p>
<blockquote><p>document.all(&quot;name_c&quot;)     <br />document.all[&quot;name&quot;]      <br />document.getElementById(&quot;name_c&quot;)</p>
</blockquote>
<p>The real question is: Will these methods continue to work when the organization is upgraded to CRM 2011?</p>
<p>The answer is: If you have used standard and supported methods within your JavaScript, then yes, the code will be supported. </p>
<p>This means referencing all of your form fields using the standard access model:</p>
<blockquote><p>crmForm.all.name</p>
</blockquote>
<p>Other options may or may not work correctly. Your experience my vary depending on which of the above methods were used.</p>
<p>Fortunately, the CRM Migration Assistant converts all of these &quot;unsupported&quot; form field access types into fully-supported CRM 2011 code using Xrm.Page.getAttribute and Xrm.Page.getControl, depending on how the field was being used.</p>
<p>If you haven&#039;t already, download the trial version of the <a href="http://www.crmaccelerators.net/products/crm-migration-assistant-2/" target="_blank">CRM Migration Assistant</a> and convert some of your questionable JavaScript through the conversion process.</p>
<p>If you run into any conversion issues, send me a code sample so that I can update the conversion process.   </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/01/27/converting-to-crm-2011-javascript-form-elements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging Sandboxed Plugins</title>
		<link>http://blogs.infinite-x.net/2012/01/23/debugging-sandboxed-plugins/</link>
		<comments>http://blogs.infinite-x.net/2012/01/23/debugging-sandboxed-plugins/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 08:12:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[CRM2011]]></category>
		<category><![CDATA[MSCRM2011]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1193</guid>
		<description><![CDATA[I learned some interesting things about working with Sandboxed plugins last week that I thought I&#039;d share. Attaching to Processes Sandboxed plugins are run by Microsoft.Crm.Sandbox.WorkerProcess.exe so that is the process that you will need to attach to in order to debug your plugin.&#160; If there are more than one, then attach to all of [...]]]></description>
			<content:encoded><![CDATA[<p>I learned some interesting things about working with Sandboxed plugins last week that I thought I&#039;d share.</p>
<h2>Attaching to Processes</h2>
<p>Sandboxed plugins are run by <strong>Microsoft.Crm.Sandbox.WorkerProcess.exe</strong> so that is the process that you will need to attach to in order to debug your plugin.&#160; If there are more than one, then attach to all of them.</p>
<p>If there are none active in memory, perform whatever process that activates your plugin and the Sandbox HostService will activate at least one. Then you can attach to them.</p>
<p>If you are running a sandboxed plugin with an asynchronous step, you will also need to attach to <strong>CrmAsyncService.exe</strong> since this process is involved as well. More on that in a minute.</p>
<p>&#160;</p>
<h2>Using the Debugger</h2>
<p>The Sandbox HostService only allows the WorkerProcess to process for 30 seconds. If it runs longer, it is terminated. This is a real problem when you&#039;re trying to look at data within the debugger and your code and data disappears in front of your eyes.</p>
<p>Add a DWORD key called <strong>SandboxDebugPlugins</strong> with a value of 1 to the MSCRM registry to prevent the process from being abnormally terminated.</p>
<p>&#160;</p>
<h2>Asynchronous Plugin Steps</h2>
<p>A very interesting factoid is that if you have an asynchronous step inside of the sandbox plug, the processing of the step is different:</p>
<p>The CrmAsyncService.exe process will run your asynchronous step as it would any other async process but since it is from a sandboxed plugin, it will actually hand your plugin to the Sandbox process for execution.</p>
<p>This is why you must attach to <strong>both</strong> the <strong>Microsoft.Crm.Sandbox.WorkerProcess.exe </strong>and <strong>CrmAsyncService.exe</strong> in order to get the Visual Studio debugger to launch.</p>
<p>&#160;</p>
<h2>More Information</h2>
<p>See this <a href="http://msdn.microsoft.com/en-us/library/gg328574.aspx" target="_blank">topic</a> in the CRM SDK for more information.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/01/23/debugging-sandboxed-plugins/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CRM 4.0: Moving customizations between organizations</title>
		<link>http://blogs.infinite-x.net/2012/01/20/crm-4-0-moving-customizations-between-organizations/</link>
		<comments>http://blogs.infinite-x.net/2012/01/20/crm-4-0-moving-customizations-between-organizations/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:59:26 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1191</guid>
		<description><![CDATA[One of the things that gets CRM 4.0 developers into trouble is moving customizations between organizations. Here is a tip that will prevent a lot of grief trying to troubleshoot some of the more confusing errors: Always, Always, Always export all of your customizations from the source environment. You can always import only the items [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that gets CRM 4.0 developers into trouble is moving customizations between organizations. Here is a tip that will prevent a lot of grief trying to troubleshoot some of the more confusing errors:</p>
<p><strong>Always</strong>, <strong><font size="4">Always</font></strong>, <font size="5"><strong>Always</strong> export <strong><u>all</u></strong> of your customizations from the source environment.</font></p>
<p>You can always import <strong><u>only</u></strong> the items that you are working on. The Import Customizations page allows you to select the items being imported.</p>
<p>Using this technique gives CRM all of the information about your customizations and schema so it it needs some secret little part of something, it is available.</p>
<p>Sometimes it will miss data or other relevant information and while not producing an error, may not fully recreate the customizations as you defined them within the source environment.</p>
<p>I have seen this appear as lost icons, invalid relationship connections, and just plain strange stuff that takes hours to find and fix.</p>
<h4>An Example:</h4>
<p>Last year, I ran into such a situation where we could not Publish All Customizations.</p>
<p>It took me about 6 hours to find and fix but the problem was related to a custom entity that was, well, broken.&#160; I had to manually insert a record into the database to fix it. ( and yes, that scared the crap out of me. )</p>
<p>It is my firm belief that this occurred because the person who installed the customizations only moved the four entities required from one organization to the other.</p>
<p>My initial solution was to export all customizations from the original source organization, import only those four entities into the development environment, then finish the remainder of the database cleanup manually.</p>
<p>This process had to be duplicated to the test and production organizations as well.</p>
<p>All in all, not a fun time and one that stretched my personal and professional expertise to the limit.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/01/20/crm-4-0-moving-customizations-between-organizations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CRM SDK Deep Dive: Error Codes</title>
		<link>http://blogs.infinite-x.net/2012/01/18/crm-sdk-deep-dive-error-codes/</link>
		<comments>http://blogs.infinite-x.net/2012/01/18/crm-sdk-deep-dive-error-codes/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 10:36:48 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[CRM 2011]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[CRM2011]]></category>
		<category><![CDATA[MSCRM]]></category>
		<category><![CDATA[MSCRM2011]]></category>
		<category><![CDATA[MSDYNCRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/?p=1189</guid>
		<description><![CDATA[As I was reviewing notes from the recently released CRM SDK 5.0.9, I noticed a section on Error Codes.&#160; &#34;This looks interesting,&#34; I thought. After you have installed the CRM SDK, navigate to the following folder: sdk\samplecode\cs\helpercode In that folder you will find, among other things, three files related to error codes, each in a [...]]]></description>
			<content:encoded><![CDATA[<p>As I was reviewing notes from the recently released CRM SDK 5.0.9, I noticed a section on Error Codes.&#160; &quot;This looks interesting,&quot; I thought.</p>
<p>After you have installed the CRM SDK, navigate to the following folder:</p>
<blockquote><p>sdk\samplecode\cs\helpercode</p>
</blockquote>
<p>In that folder you will find, among other things, three files related to error codes, each in a different format. It appears that there are around 2,015 error codes.&#160; Wow, that&#039;s a lot of documentation!</p>
<h2>crmerrors.xlsx</h2>
<p>Is a Microsoft Excel worksheet formatted like this:</p>
<p><a href="http://blogs.infinite-x.net/wp-content/uploads/2012/01/image12.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/wp-content/uploads/2012/01/image_thumb12.png" width="504" height="123" /></a></p>
<h2>errorcodes.cs</h2>
<p>Is a C# class that has the error codes inside of a class that you can incorporate into your applications. The code starts off like this:</p>
<p><span style="color: blue">private static </span><span style="color: #2b91af">Hashtable </span>ErrorMessages = <span style="color: blue">new </span><span style="color: #2b91af">Hashtable</span>();    </p>
<p><span style="color: blue">static </span>ErrorCodes()    <br />{    <br />&#160;&#160;&#160; ErrorMessages.Add(InvalidAuth,     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;Organization Authentication does not match the current discovery service Role.&quot;</span>);    <br />&#160;&#160;&#160; ErrorMessages.Add(CannotUpdateOrgDBOrgSettingWhenOffline,     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;Organization Settings stored in Organization Database cannot be set when offline.&quot;</span>);    <br />&#160;&#160;&#160; ErrorMessages.Add(InvalidOrgDBOrgSetting,     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;Invalid Organization Setting passed in. Please check the datatype and pass in an appropriate value.&quot;</span>);    <br />&#160;&#160;&#160; ErrorMessages.Add(UnknownInvalidTransformationParameterGeneric,    <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;One or more input transformation parameter values are invalid: {0}.&quot;</span>);    <br />&#160;&#160;&#160; ErrorMessages.Add(InvalidTransformationParameterOutsideRangeGeneric,     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #a31515">&quot;One or more input transformation parameter values are outside the permissible range: {0}.&quot;</span>);    </p>
<h2>crmerrors.xml</h2>
<p>The final version of the file is an XML which is formatted like this:</p>
<pre class="code"><span style="color: blue">
<pre class="code"><span style="color: blue">&lt;?</span><span style="color: #a31515">xml </span><span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">1.0</span>&quot; <span style="color: red">encoding</span><span style="color: blue">=</span>&quot;<span style="color: blue">UTF-8</span>&quot; <span style="color: red">standalone</span><span style="color: blue">=</span>&quot;<span style="color: blue">yes</span>&quot;<span style="color: blue">?&gt;
&lt;</span><span style="color: #a31515">crmerrors </span><span style="color: red">xmlns:xsi</span><span style="color: blue">=</span>&quot;<span style="color: blue">http://www.w3.org/2001/XMLSchema-instance</span>&quot;<span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">crmerror</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ErrorId</span><span style="color: blue">&gt;
      </span>80048516
    <span style="color: blue">&lt;/</span><span style="color: #a31515">ErrorId</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ManagedErrorName</span><span style="color: blue">&gt;
      </span>InvalidAuth
    <span style="color: blue">&lt;/</span><span style="color: #a31515">ManagedErrorName</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ErrorMessage</span><span style="color: blue">&gt;
      </span>Organization Authentication does not match the current discovery service Role.
    <span style="color: blue">&lt;/</span><span style="color: #a31515">ErrorMessage</span><span style="color: blue">&gt;
  &lt;/</span><span style="color: #a31515">crmerror</span><span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">crmerror</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ErrorId</span><span style="color: blue">&gt;
      </span>80048515
    <span style="color: blue">&lt;/</span><span style="color: #a31515">ErrorId</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ManagedErrorName</span><span style="color: blue">&gt;
      </span>CannotUpdateOrgDBOrgSettingWhenOffline
    <span style="color: blue">&lt;/</span><span style="color: #a31515">ManagedErrorName</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">ErrorMessage</span><span style="color: blue">&gt;
      </span>Organization Settings stored in Organization Database cannot be set when offline.
    <span style="color: blue">&lt;/</span><span style="color: #a31515">ErrorMessage</span><span style="color: blue">&gt;
  &lt;/</span><span style="color: #a31515">crmerror</span><span style="color: blue">&gt;

</span></pre>
<p></span></pre>
<pre class="code"><span style="color: blue"></span></pre>
<p>Regardless of how you use it, these files are a great resource for any CRM developer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2012/01/18/crm-sdk-deep-dive-error-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

