<?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 Discussions &#187; Administration</title>
	<atom:link href="http://blogs.infinite-x.net/category/dynamics-crm/administration/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.infinite-x.net</link>
	<description>Knowledge found and lost while working with Microsoft Dynamics CRM</description>
	<lastBuildDate>Wed, 11 Aug 2010 11:52:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Changing Column Width of a Section using JavaScript</title>
		<link>http://blogs.infinite-x.net/2010/07/22/changing-column-width-of-a-section-using-javascript/</link>
		<comments>http://blogs.infinite-x.net/2010/07/22/changing-column-width-of-a-section-using-javascript/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 07:00:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Unsupported]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2010/07/22/changing-column-width-of-a-section-using-javascript/</guid>
		<description><![CDATA[Hi everyone.&#160; Well it’s been a long time since I showed you how to do something horribly unsupported so let’s do something like that today. Background Ad you may know, CRM allows you to pick the layout style for a section within a CRM form.&#160; For the most part, their settings work just fine. In [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone.&#160; Well it’s been a long time since I showed you how to do something horribly unsupported so let’s do something like that today.</p>
<h2>Background</h2>
<p>Ad you may know, CRM allows you to pick the layout style for a section within a CRM form.&#160; For the most part, their settings work just fine.</p>
<p>In January I did a short <a href="http://www.xrmvirtual.com/events/uitipsandtricks" target="_blank">presentation</a> on CRM User Interface tips and tricks for the XRM Virtual User’s group where I reminded everyone that even once you have picked a format for a Section, you can still change the width of the fields labels within the section.</p>
<p>It’s highlighted below:</p>
<p><a href="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_thumb.png" width="404" height="695" /></a> </p>
<p>Unfortunately, it has a maximum value of 250 pixels, which is usually fine, but what if I have a really, really, long label?</p>
<h2>The Scenario</h2>
<p>Let us pretend that I am creating a questionnaire inside CRM to gather some type of relevant data.&#160; I either create a Questionnaire Entity or just add some question attributes to an existing Entity.&#160; Either way, I have a lot of question text and not much room to show it and it might look something like this:</p>
<p><a href="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_3.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_thumb_3.png" width="504" height="131" /></a> </p>
<blockquote><p>Note: This is using the default column layout for a Section.</p>
</blockquote>
<p>Notice that my answers are also really small – basically Yes or No, or a short amount of textual information – and they are taking up over 50% of the Section area.</p>
<p>We need to fix that.</p>
<h2>The Solution</h2>
<p>Ok, we’re going to change the column width of both columns within the Section using JavaScript.&#160; But let’s start with a look at the HTML that makes up our Form:</p>
<p><a href="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_thumb_4.png" width="504" height="194" /></a> </p>
<p>CRM uses something called a Column Group ( colgoup ) to help define how the columns of the table are to be sized.&#160; As you can see from the picture above, the column that contains the label is 250 pixels wide and the column that contains our data entry field is 270 pixels wide.</p>
<p>Using the following JavaScript, we can modify those values to be more representative of both the data and the label requirements:</p>
<pre class="code"><span style="color: blue">var </span>tableObj = crmForm.all.new_q1_c.parentNode.parentNode.parentNode;
<span style="color: blue">var </span>col0 = tableObj.getElementsByTagName(<span style="color: maroon">&quot;col&quot;</span>)[0];
<span style="color: blue">var </span>col2 = tableObj.getElementsByTagName(<span style="color: maroon">&quot;col&quot;</span>)[2];

col0.width = <span style="color: maroon">&quot;60%&quot;</span>;
col2.width = <span style="color: maroon">&quot;40%&quot;</span>;</pre>
<h2>How This Works</h2>
<h3>&#160;</h3>
<h3>Step 1: </h3>
<p>First we need to get a handle to our form field’s parent table, which we do with the first line of JavaScript.&#160; <strong>crmForm.all.new_q1_c</strong> is actually the table cell that contains the label of our first form field ( which is the attribute <strong>new_q1</strong>, by the way ).</p>
<p>&#160;</p>
<h3>Step 2:</h3>
<p>Next we need to get the handle to the first and third <strong>col</strong> objects that belong to the parent table which we accomplish by using the getElementsByTagName function.</p>
<p>&#160;</p>
<h3>Step 3:</h3>
<p>Once we have that information, we can set the width of the first column to 60% of the container’s space ( the table ), and set the third column width to 40%.</p>
<p>Your new section layout should look like this:</p>
<p><a href="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/ChangingColumnWidthofaSectionusingJavaSc_CED2/image_thumb_5.png" width="554" height="91" /></a> </p>
<p>You can change the values for each column to meet your requirements. </p>
<blockquote>
<p>Note: I actually have a question at the bottom of this list that occupies much of the form but it contains customer-specific information so I can’t show it.</p>
</blockquote>
<p>&#160;</p>
<h2>Conclusion</h2>
<p>As I mentioned, this is very unsupported and I can’t guarantee it will work in every circumstance, but it seems to fit the need I had. </p>
<p>Also, If you’re good with jQuery, you can probably do something very similar with less code.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2010/07/22/changing-column-width-of-a-section-using-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating a query to find all users with a specified security role</title>
		<link>http://blogs.infinite-x.net/2010/07/20/creating-a-query-to-find-all-users-with-a-specified-security-role/</link>
		<comments>http://blogs.infinite-x.net/2010/07/20/creating-a-query-to-find-all-users-with-a-specified-security-role/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 14:46:02 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2010/07/20/creating-a-query-to-find-all-users-with-a-specified-security-role/</guid>
		<description><![CDATA[I ran into an interesting requirement this morning that let’s me show off one of my favorite CRM add-on utilities: Stunnware Tools.&#160; Let’s cover both. The Requirement I needed to create a list of users that were members of a specific security role.&#160; Rather than writing an application or designing a SQL query, I opened [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into an interesting requirement this morning that let’s me show off one of my favorite CRM add-on utilities: Stunnware Tools.&#160; Let’s cover both.</p>
<h2>The Requirement</h2>
<p>I needed to create a list of users that were members of a specific security role.&#160; Rather than writing an application or designing a SQL query, I opened <a href="http://www.stunnware.com/" target="_blank">Stunnware Tools for Microsoft Dynamics CRM</a> so that I could create a query in the FetchXML Wizard.</p>
<p>
<h2>Using the FetchXML Wizard</h2>
</p>
<p>The FetchXML Wizard allows you to query CRM by building a FetchXML query.&#160; Here is a screen shot of the Designer:</p>
<p><a href="http://blogs.infinite-x.net/images/UsingStunnwareToolstofindalluserswithasp_7E62/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/UsingStunnwareToolstofindalluserswithasp_7E62/image_thumb.png" width="504" height="414" /></a> </p>
<h3>&#160;</h3>
<h3>Designing the Query</h3>
<p>The following steps were required to created the desired query:</p>
<p><strong>Step 1:</strong></p>
<p>Query the SystemUser entity and return the Full Name of the user.</p>
<p><strong>Step 2:</strong></p>
<p>Include a Linked Entity that links the SystemUser Entity to the SystemUserRoles Entity</p>
<p><strong>Step 3:</strong></p>
<p>Add another Linked Entity from SystemUserRoles to Role.&#160; This link will have a filter applied where the Name of the Role is equal to <u>salesperson</u>.</p>
<p>Here is the resulting FetchXML query:</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">fetch </span><span style="color: red">mapping</span><span style="color: blue">=</span>&quot;<span style="color: blue">logical</span>&quot; <span style="color: red">count</span><span style="color: blue">=</span>&quot;<span style="color: blue">50</span>&quot; <span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">1.0</span>&quot;<span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">entity </span><span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">systemuser</span>&quot;<span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">attribute </span><span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">fullname</span>&quot; <span style="color: blue">/&gt;
    &lt;</span><span style="color: #a31515">link-entity </span><span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">systemuserroles</span>&quot; <span style="color: red">from</span><span style="color: blue">=</span>&quot;<span style="color: blue">systemuserid</span>&quot; <span style="color: red">to</span><span style="color: blue">=</span>&quot;<span style="color: blue">systemuserid</span>&quot;<span style="color: blue">&gt;
      &lt;</span><span style="color: #a31515">link-entity </span><span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">role</span>&quot; <span style="color: red">from</span><span style="color: blue">=</span>&quot;<span style="color: blue">roleid</span>&quot; <span style="color: red">to</span><span style="color: blue">=</span>&quot;<span style="color: blue">roleid</span>&quot;<span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">filter</span><span style="color: blue">&gt;
          &lt;</span><span style="color: #a31515">condition </span><span style="color: red">attribute</span><span style="color: blue">=</span>&quot;<span style="color: blue">name</span>&quot; <span style="color: red">operator</span><span style="color: blue">=</span>&quot;<span style="color: blue">eq</span>&quot; <span style="color: red">value</span><span style="color: blue">=</span>&quot;<span style="color: blue">salesperson</span>&quot; <span style="color: blue">/&gt;
        &lt;/</span><span style="color: #a31515">filter</span><span style="color: blue">&gt;
      &lt;/</span><span style="color: #a31515">link-entity</span><span style="color: blue">&gt;
    &lt;/</span><span style="color: #a31515">link-entity</span><span style="color: blue">&gt;
  &lt;/</span><span style="color: #a31515">entity</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">fetch</span><span style="color: blue">&gt;
</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>Which produces the following result set:</p>
<p><a href="http://blogs.infinite-x.net/images/UsingStunnwareToolstofindalluserswithasp_7E62/image_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/UsingStunnwareToolstofindalluserswithasp_7E62/image_thumb_3.png" width="404" height="486" /></a> </p>
<p>&#160;</p>
<p>This whole process took me less than 5 minutes because the FetchXML Wizard Query Designer understands the links between CRM Entities and allowed me to quickly select those links and specify the necessary filter to produce the dataset I needed.</p>
<p>The Export to Excel module included in Stunnware Tools allows me to export the above result set to an Excel worksheet.</p>
<h2>More About Stunnware Tools</h2>
<p>There are two editions: </p>
<ul>
<li>The <strong>Community Edition</strong>: It&#039;s free and contains the Metadata Viewer, FetchXml Wizard and Excel Export. </li>
<li>The <strong>Professional Edition</strong>: A subscription-based version with access to all tools of the Community Edition plus the Code Generator for C# and VB.NET, the CRM Help File Generator, additional features of the FetchXml wizard and the Customization Comparer. </li>
</ul>
<p>Stunnware Tools is probably the most valuable Dynamics CRM add-on that I have.&#160; I use it on a weekly, if not daily basis and which makes me a much more productive developer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2010/07/20/creating-a-query-to-find-all-users-with-a-specified-security-role/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Utility Released: Bulk Delete CRM Attributes</title>
		<link>http://blogs.infinite-x.net/2010/07/19/free-utility-released-bulk-delete-crm-attributes/</link>
		<comments>http://blogs.infinite-x.net/2010/07/19/free-utility-released-bulk-delete-crm-attributes/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 07:00:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2010/07/19/free-utility-released-bulk-delete-crm-attributes/</guid>
		<description><![CDATA[I’ve released a new free utility for CRM users that allows you to bulk-delete CRM Entity Attributes. The user interface is fairly straightforward, as you can see below: How It Works The operation is pretty simple: 1) Select if your organization is OnPremise or CRM Online. 2) Enter the name of your server and the [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve released a new free utility for CRM users that allows you to bulk-delete CRM Entity Attributes.</p>
<p>The user interface is fairly straightforward, as you can see below:</p>
<p><a href="http://blogs.infinite-x.net/images/FreeUtilityReleasedBulkDeleteCRMAttribut_F0FA/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/FreeUtilityReleasedBulkDeleteCRMAttribut_F0FA/image_thumb.png" width="564" height="275" /></a> </p>
<h3>How It Works</h3>
<p>The operation is pretty simple:</p>
<p>1) Select if your organization is OnPremise or CRM Online.</p>
<p>2) Enter the name of your server and the credentials required to connect properly.</p>
<p>3) Select the organization you wish to connect to.</p>
<p>4) Select the Entity you wish to delete attributes from.</p>
<p>5) Select the attributes to delete.</p>
<p>6) Click the delete button.</p>
<p>&#160;</p>
<h3>Behind the Scenes</h3>
<p>This utility uses standard CRM SDK methods to delete the attributes you specify.&#160; A log file is written to the location where the application is stored.&#160; All actions will be logged and if errors are encountered, the log file will be displayed at the end of the processing cycle so you can see what happened.</p>
<blockquote><p>Remember: The same rules that would apply if you were to delete an attribute through the CRM user interface apply here.&#160; For example: if the attribute is used on a form, a view, or within a workflow, the deletion will fail and you will be given a list of locations where the attribute is in use.&#160; You must remove the attribute from those locations before you can continue.</p>
</blockquote>
<p>&#160;</p>
<h3>Download</h3>
<p>You may download it <a href="http://blogs.infinite-x.net/?download=DeleteAttributes">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2010/07/19/free-utility-released-bulk-delete-crm-attributes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Verifying CRM 4.0 Installation File Dates the Easy Way</title>
		<link>http://blogs.infinite-x.net/2010/07/15/verifying-crm-4-0-installation-file-dates-the-easy-way/</link>
		<comments>http://blogs.infinite-x.net/2010/07/15/verifying-crm-4-0-installation-file-dates-the-easy-way/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 12:15:33 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2010/07/15/verifying-crm-4-0-installation-file-dates-the-easy-way/</guid>
		<description><![CDATA[This morning I was verifying the version of a CRM 4.0 installation when I realized that instead of opening individual files and checking their properties, I could just ask the Windows Explorer to show me the information. Perform the following steps: 1) Navigate to your CRM 4.0 installation folder, ( c:\program files\Microsoft Dynamics CRM ). [...]]]></description>
			<content:encoded><![CDATA[<p>This morning I was verifying the version of a CRM 4.0 installation when I realized that instead of opening individual files and checking their properties, I could just ask the Windows Explorer to show me the information.</p>
<p>Perform the following steps:</p>
<p>1) Navigate to your CRM 4.0 installation folder, ( c:\program files\Microsoft Dynamics CRM ).</p>
<p>2) Open the Setup folder.</p>
<p>3) Set the View of the folder to be <u>Details</u>.</p>
<p>4) Right click on the file list grid to display the pop-up menu:</p>
<p><a href="http://blogs.infinite-x.net/images/0fbbbee7ab38_651D/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/0fbbbee7ab38_651D/image_thumb.png" width="304" height="404" /></a> </p>
<p>5) Click the <u>More…</u> menu.</p>
<p>6) Scroll down the <u>Details</u> list until you find <strong>File Version</strong> and check the box beside it:</p>
<p><a href="http://blogs.infinite-x.net/images/0fbbbee7ab38_651D/image_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/0fbbbee7ab38_651D/image_thumb_3.png" width="354" height="473" /></a> </p>
<p>7) Click OK and your file list will update to show something like this:</p>
<p><a href="http://blogs.infinite-x.net/images/0fbbbee7ab38_651D/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/0fbbbee7ab38_651D/image_thumb_4.png" width="504" height="252" /></a> </p>
<p>&#160;</p>
<p>Fairly simply, I know, but it just occurred to me that this feature was available and it is surely easier than checking files individually.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2010/07/15/verifying-crm-4-0-installation-file-dates-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Non-Interactive Users and CRM Online</title>
		<link>http://blogs.infinite-x.net/2010/06/14/non-interactive-users-and-crm-online/</link>
		<comments>http://blogs.infinite-x.net/2010/06/14/non-interactive-users-and-crm-online/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 11:00:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[CRM Online]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2010/06/14/non-interactive-users-and-crm-online/</guid>
		<description><![CDATA[About a year ago Jon White’s article concerning a CRM Online Non-Interactive user type was posted on the CRM Team blog. I thought I’d add some additional information I found last week. But first, a bit of background from Jon’s article: A non-interactive user is a user account in Microsoft Dynamics CRM Online that can [...]]]></description>
			<content:encoded><![CDATA[<p>About a year ago Jon White’s <a href="http://blogs.msdn.com/b/crm/archive/2009/06/12/service-accounts-non-interactive-users.aspx" target="_blank">article</a> concerning a CRM Online <strong>Non-Interactive</strong> user type was posted on the CRM Team blog. I thought I’d add some additional information I found last week.</p>
<p>But first, a bit of background from Jon’s article:</p>
<blockquote><p>A non-interactive user is a user account in Microsoft Dynamics CRM Online that can access the system but only via the web service layer. Essentially, that user can not use the user interface. Service accounts are used to access CRM Online using the service to service model. A service account is a non-interactive user account with the proxy role assigned to it. Microsoft Dynamics Online allows 5 free non-interactive user accounts. To make the user account a non-interactive account, you need to change the access mode. The access attribute is not visible in the UI by default.&#160; The attribute is “access mode”, you can either customize the form to show it, or manipulate it by an SDK call.&#160; Setting the access mode to non-interactive simultaneously frees up a license and prevents that identity from logging in interactively.</p>
</blockquote>
<p>He goes on to tell you how to add the Access Mode field to the System User Entity form so that this field can be changed by the administrator.</p>
<p>You may also find it useful to put the Access Mode on the Active Users View, so that it displays when you are reviewing your user list:</p>
<p><a href="http://blogs.infinite-x.net/images/NonInteractiveUsersandCRMOnline_10FF5/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.infinite-x.net/images/NonInteractiveUsersandCRMOnline_10FF5/image_thumb.png" width="154" height="222" /></a> </p>
<h3>&#160;</h3>
<h2>Interesting Observation</h2>
<p>Last week I was discussing non-interactive users with a colleague when I noticed a rather interesting situation:&#160; If you are out of user licenses for CRM Online you can’t create a non-interactive user through the CRM user interface. Curious, but understandable. </p>
<p>In a nutshell, the New User wizard will inform you that you are out of licenses and not allow you to continue.</p>
<p>You can circumvent the issue by performing these steps:</p>
<ol>
<li>Temporarily disable a user</li>
<li>Create a new user and change their Access Mode setting to Non-Interactive</li>
<li>Re-enable the user disabled in step 1.</li>
</ol>
<p>That should do it.</p>
<p>&#160;</p>
<h2>Programmatic User Creation</h2>
<p>Nothing, however, will stop you from creating a user programmatically.&#160; You just need to supply the proper values.&#160; Here’s some sample code:</p>
<pre class="code"><span style="color: #2b91af">systemuser </span>user = <span style="color: blue">new </span><span style="color: #2b91af">systemuser</span>();

user.accessmode = <span style="color: blue">new </span><span style="color: #2b91af">Picklist</span>(<span style="color: #2b91af">SystemUserAccessMode</span>.NonInteractive);
user.firstname = <span style="color: #a31515">&quot;system&quot;</span>;
user.lastname = <span style="color: #a31515">&quot;integration&quot;</span>;
user.businessunitid = <span style="color: blue">new </span><span style="color: #2b91af">Lookup</span>(<span style="color: #a31515">&quot;businessunit&quot;</span>, <span style="color: blue">new </span><span style="color: #2b91af">Guid</span>(<span style="color: #a31515">&quot;{C9694BD7-C0C4-DE11-B95D-02BF0A0679DB}&quot;</span>));

service.Create(user);</pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>As you can see, you only need four properties:</p>
<h3>Access Mode</h3>
<p>In this case, we’re going to supply NonInteractive as the value, since that is the purpose of our discussion.</p>
<h3>First Name</h3>
<p>First name of the user.</p>
<h3>Last Name</h3>
<p>Last name of the user</p>
<h3>Business Unit ID</h3>
<p>This is the ID of the business unit the user belongs to.</p>
<p>&#160;</p>
<p>Calling the CrmService.Create method to actually create the user.</p>
<p>Afterwards, any connection that you need to make to CRM Online can use the new non-interactive user instead of a fully-licensed person.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2010/06/14/non-interactive-users-and-crm-online/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Field Level Security White Paper Released</title>
		<link>http://blogs.infinite-x.net/2009/11/11/field-level-security-white-paper-released/</link>
		<comments>http://blogs.infinite-x.net/2009/11/11/field-level-security-white-paper-released/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 17:51:09 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2009/11/11/field-level-security-white-paper-released/</guid>
		<description><![CDATA[The Microsoft Engineering for the Enterprise team has released another white paper this week: Security and Authentication in Microsoft Dynamics CRM: Field-level Security in Microsoft Dynamics CRM: Options and Constraints Brief Description While Microsoft Dynamics CRM does not provide for true field-level security, there are a number of options available for using supported custom logic [...]]]></description>
			<content:encoded><![CDATA[<p>The Microsoft Engineering for the Enterprise team has released another white paper this week:</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=471f8670-47b3-4525-b25d-c11a6774615c" target="_blank">Security and Authentication in Microsoft Dynamics CRM: Field-level Security in Microsoft Dynamics CRM: Options and Constraints</a></p>
<h6>Brief Description</h6>
<p>While Microsoft Dynamics CRM does not provide for true field-level security, there are a number of options available for using supported custom logic to control of access to data at a more granular level than provided out of the box. This document discusses some of the key options and constraints available for implementing this type of solution.</p>
<p>&#160;</p>
<h6>Overview</h6>
<p><a name="Description"></a>This white paper, Field-level Security in Microsoft Dynamics CRM: Options and Constraints, provides selected aspects of the conceptual application of the security model in Microsoft Dynamics CRM. While Microsoft Dynamics CRM does not provide for true field-level security, there are a number of options available for using supported custom logic to control of access to data at a more granular level than provided out of the box. This document discusses some of the key options and constraints available for implementing this type of solution. </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2009/11/11/field-level-security-white-paper-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viewing How Users Have Configured CRM</title>
		<link>http://blogs.infinite-x.net/2009/10/29/viewing-how-users-have-configured-crm/</link>
		<comments>http://blogs.infinite-x.net/2009/10/29/viewing-how-users-have-configured-crm/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 10:53:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2009/10/29/viewing-how-users-have-configured-crm/</guid>
		<description><![CDATA[We ran into an issue last week where a user was creating an Order directly, instead of from the Opportunity, where they should have been creating it.  We traced the problem to the fact that the somehow, the user’s CRM profile had been changed and they were seeing navigation items normally hidden from them. Reporting [...]]]></description>
			<content:encoded><![CDATA[<p>We ran into an issue last week where a user was creating an Order directly, instead of from the Opportunity, where they should have been creating it.  We traced the problem to the fact that the somehow, the user’s CRM profile had been changed and they were seeing navigation items normally hidden from them.</p>
<h2>Reporting on your user’s configuration</h2>
<p>I created the following process to review how each user had their CRM environment configured.</p>
<p>I started by running the following SQL script:</p>
<div style="line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: gray 1px solid; padding: 4px;">
<div style="line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">
<pre style="line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">SELECT</span></pre>
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    s.fullname,</pre>
<pre style="line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    u.homepagearea,</pre>
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    u.homepagesubarea,</pre>
<pre style="line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    u.userprofile</pre>
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">FROM</span></pre>
<pre style="line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    usersettingsbase u</pre>
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    <span style="color: #0000ff">INNER</span> <span style="color: #0000ff">JOIN</span> systemuserbase s <span style="color: #0000ff">ON</span> u.systemuserid = s.systemuserid</pre>
<pre style="line-height: 12pt; background-color: white; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff">ORDER</span> <span style="color: #0000ff">BY</span></pre>
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">    s.fullname</pre>
</div>
</div>
<p>Which results in a report something like this:</p>
<p><a href="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_thumb.png" border="0" alt="image" width="504" height="408" /></a></p>
<h2>So what does this tell us?</h2>
<p>Well, the first column is the user’s name, of course.</p>
<p>The second and third columns instruct CRM what to display as the user’s “Home” page when they first start CRM.  These settings are found on the General tab of the Personal Options dialog when the user selects <span style="text-decoration: underline;">T</span>ools, O<span style="text-decoration: underline;">p</span>tions:</p>
<p><a href="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_thumb_3.png" border="0" alt="image" width="504" height="375" /></a></p>
<p>The final column defines how the user’s Workplace will appear:</p>
<p><a href="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_thumb_4.png" border="0" alt="image" width="504" height="375" /></a></p>
<p>When you select one of the checkboxes in the Select Workplace Areas box, it will add that group to the user’s Workplace area.  The Preview area on the left allows the user to see how the Workplace will look after the changes have been saved.</p>
<p>When you look in the database, the Profile column will contain a comma-delimited list of those groups that should be shown in the Workplace.  Here is the list:</p>
<table border="0" cellspacing="0" cellpadding="0" width="400">
<tbody>
<tr>
<td width="200" valign="top"><strong>Display Value</strong></td>
<td width="200" valign="top"><strong>Internal Value</strong></td>
</tr>
<tr>
<td width="200" valign="top">Sales</td>
<td width="200" valign="top">SFA</td>
</tr>
<tr>
<td width="200" valign="top">Marketing</td>
<td width="200" valign="top">MA</td>
</tr>
<tr>
<td width="200" valign="top">Service</td>
<td width="200" valign="top">CS</td>
</tr>
<tr>
<td width="200" valign="top">Scheduling</td>
<td width="200" valign="top">SM</td>
</tr>
</tbody>
</table>
<p> </p>
<h2>Changing the User’s Environment</h2>
<p>The only problem with knowing how the user has their CRM environment configured is there is no way to make a global change unless you write an application to do it.  If you don’t feel like writing an application, you’ll need to fix the any issues by logging into CRM as that user.</p>
<p> </p>
<h2>Security Considerations</h2>
<p>If you would like to prevent your users from changing their settings, you can remove the <strong><span style="text-decoration: underline;">Write</span></strong> right from the User Settings section in their security role:</p>
<p><a href="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://blogs.infinite-x.net/images/ViewingHowUsersHaveConfiguredCRM_8D6B/image_thumb_5.png" border="0" alt="image" width="504" height="250" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2009/10/29/viewing-how-users-have-configured-crm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enabling Quick Find of Disabled Records</title>
		<link>http://blogs.infinite-x.net/2009/08/31/enabling-quick-find-of-disabled-records/</link>
		<comments>http://blogs.infinite-x.net/2009/08/31/enabling-quick-find-of-disabled-records/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 18:51:04 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Unsupported]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2009/08/31/enabling-quick-find-of-disabled-records/</guid>
		<description><![CDATA[This week we discovered a requirement to allow the user to perform a Quick Search on both active and close Opportunity records. Engage Incorporated has an article on how to do this, but for some reason, when I tried their technique, it didn’t work.&#160; So, here is my alternative. 1) Export the Entity in question. [...]]]></description>
			<content:encoded><![CDATA[<p>This week we discovered a requirement to allow the user to perform a Quick Search on both active and close Opportunity records. Engage Incorporated has an <a href="http://blogs.engage2day.com/2009/04/include-inactive-records-in-microsoft-crm-40-quick-find/" target="_blank">article</a> on how to do this, but for some reason, when I tried their technique, it didn’t work.&#160; So, here is my alternative.</p>
<p>1) Export the Entity in question. In my case, it was Opportunity.</p>
<p>2) Locate the Quick Find view.</p>
<p>3) Change filter type from this:</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">condition </span><span style="color: red">attribute</span><span style="color: blue">=</span>&quot;<span style="color: blue">statecode</span>&quot; <span style="color: red">operator</span><span style="color: blue">=</span>&quot;<span style="color: blue">eq</span>&quot; <span style="color: red">value</span><span style="color: blue">=</span>&quot;<span style="color: blue">0</span>&quot; <span style="color: blue">/&gt;
</span></pre>
<p><a href="http://11011.net/software/vspaste"></a></p>
<p>to this:</p>
<pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">condition </span><span style="color: red">attribute</span><span style="color: blue">=</span>&quot;<span style="color: blue">statecode</span>&quot; <span style="color: red">operator</span><span style="color: blue">=</span>&quot;<span style="color: blue">not-null</span>&quot;<span style="color: blue">/&gt;</span></pre>
<p>4) Save the customizations.</p>
<p>5) Import and publish the customizations.</p>
<p>&#160;</p>
<p>This will allow the Quick Find operation to find Opportunity records no matter what their state is ( active, canceled, closed, etc. ).</p>
<p>And yes, this is <strong><em>unsupported</em></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2009/08/31/enabling-quick-find-of-disabled-records/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing Customizations as a Normal User</title>
		<link>http://blogs.infinite-x.net/2009/08/28/testing-customizations-as-a-normal-user/</link>
		<comments>http://blogs.infinite-x.net/2009/08/28/testing-customizations-as-a-normal-user/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 20:06:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Customization]]></category>
		<category><![CDATA[Dynamics CRM]]></category>
		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2009/08/28/testing-customizations-as-a-normal-user/</guid>
		<description><![CDATA[This will probably be old news to most of you, but for those who are just starting with CRM, you should have a methodology in place to test your customizations as a normal user. The Basics You should have at least one test user for each role in which normal users exist.&#160; Normal being not-CRM [...]]]></description>
			<content:encoded><![CDATA[<p>This will probably be old news to most of you, but for those who are just starting with CRM, you should have a methodology in place to test your customizations as a normal user.</p>
<h3>The Basics</h3>
<p>You should have at least one test user for each role in which normal users exist.&#160; Normal being not-CRM Administrators.&#160; This will allow you to test the functionality of your customizations and custom solutions as each type of user.</p>
<p>While this may not seem like a huge issue, you need to keep in mind that CRM alters the environment and the user interface based on the user’s security.&#160; This means that sometimes they will <em>not</em> see things you expect them to or they will have permissions issues where you least expect them.</p>
<h3>How to Test</h3>
<p>Prior to Windows Vista and Server 2008, you could simply right-click on the Internet Explorer icon, select Run As, then supply the credentials of whatever test user you wished.</p>
<p>Unfortunately, Microsoft changed that behavior and according to this <a href="http://support.microsoft.com/kb/922980" target="_blank">article</a>, it no longer works.&#160; Thanks guys.</p>
<p>A possible work-around is using the ShellRunAs commandlet found <a href="http://technet.microsoft.com/en-us/sysinternals/cc300361.aspx" target="_blank">here</a>.</p>
<p>It is supposed to provide this functionality but I’ve had mixed results ( probably didn’t follow the directions properly ).</p>
<p>So if you’re using Vista or Server 2008, should nothing else work, you can always just Switch Users and log into the machine as the test user.</p>
<h3>What to Test</h3>
<p>Here are the usual suspects for testing customizations within CRM:</p>
<ul>
<li>The Site Map ( left-hand navigation )</li>
<li>ISV.Config ( buttons and menus )</li>
<li>JavaScript ( does your custom JavaScript work with all users )</li>
<li>Custom Solutions ( any custom ASP.NET code you have written and added to CRM )</li>
<li>Processes.&#160; If you have a process that moves data through the system, test it from start to finish as the particular user or users who actually perform the work to make sure you’re covering the whole process as a “normal” user and experiencing what they experience.</li>
</ul>
<h3>Conclusion</h3>
<p>This is, at the very least, the minimal amount of testing you need to perform on a customized system.&#160; You can get as comprehensive and complex as you desire.</p>
<p>If you will document your testing procedures and steps and repeat those each time a change is made, you should be able to more quickly identify problems and create solutions before your changes reach the hands of the users.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2009/08/28/testing-customizations-as-a-normal-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Utility: Run CRM Deletion Service</title>
		<link>http://blogs.infinite-x.net/2009/08/26/free-utility-run-crm-deletion-service/</link>
		<comments>http://blogs.infinite-x.net/2009/08/26/free-utility-run-crm-deletion-service/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 08:46:00 +0000</pubDate>
		<dc:creator>Mitch Milam</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Dynamics CRM]]></category>

		<guid isPermaLink="false">http://blogs.infinite-x.net/2009/08/26/free-utility-run-crm-deletion-service/</guid>
		<description><![CDATA[Shortly after CRM 4.0 was released I discovered a need to have a utility to run the CRM Deletion service on-demand and not wait for it to automatically cycle. This functionality is extremely useful when perfecting data import processes where you are supplying the IDs of the item being imported. So, I wrote a utility [...]]]></description>
			<content:encoded><![CDATA[<p>Shortly after CRM 4.0 was released I discovered a need to have a utility to run the CRM Deletion service on-demand and not wait for it to automatically cycle.</p>
<p>This functionality is extremely useful when perfecting data import processes where you are supplying the IDs of the item being imported.</p>
<p>So, I wrote a utility that would call the internal CRM Deletion Service function to run the service against a specific CRM organization.</p>
<p>You will find this utility in the <a href="http://blogs.infinite-x.net/free-utilities/" target="_blank">Free Utilities</a> section.</p>
<p>&#160;</p>
<h3>Caveats</h3>
<p>This utility utilizes and internal and undocumented CRM function call.&#160; </p>
<p>Undocumented translates to unsupported by Microsoft so you will be using this utility at your own risk.&#160; </p>
<p>That being said, I’ve used this utility for well over 18 months and have never had an issue.&#160; It’s a fairly binary equation: it runs the deletion service or it doesn’t.</p>
<p>I’m finally publishing it because I continue to run into situations where i need this functionality and I figure that if I need it, other people might as well.</p>
<p>&#160;</p>
<h3>Alternatives</h3>
<p>If the above statements make you a little uncomfortable, you can always download the <a href="http://code.msdn.microsoft.com/ScaleGroupJobEditor" target="_blank">CRM 4 ScaleGroup Job Editor</a>.&#160; Which can perform roughly the same functionality as this utility.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.infinite-x.net/2009/08/26/free-utility-run-crm-deletion-service/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
