<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>PowerObjects</title><link>http://www.powerobjects.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PowerobjectsMicrosoftCrmBlog" /><description>PowerObjects</description><language>en</language><lastBuildDate>Fri, 03 Feb 2012 09:09:05 PST</lastBuildDate><generator>http://wordpress.org/?v=3.3</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PowerobjectsMicrosoftCrmBlog" /><feedburner:info uri="powerobjectsmicrosoftcrmblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>PowerobjectsMicrosoftCrmBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Use a Dialog Process in Microsoft Dynamics CRM to replace the Case Resolution Form</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/URQIep_eoFc/</link><category>CRM How To</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Thu, 02 Feb 2012 19:53:11 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=5148</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>One of the few elements of <a href="http://www.powerobjects.com/">Microsoft Dynamics CRM 2011</a> that is not customizable is the Case Resolution form. It is also not accessible via workflow. If more case resolution information needed to be captured it typically needs to be entered on the case form and perhaps some <a href="http://www.powerobjects.com/blog/2011/01/14/crm-2011-useful-javascript-tidbits/">JavaScript</a> to dynamically set field requirements. Then when the user clicks to resolve the case they are prompted again.</p>
<p>In a recent implementation the user required the resolution to be populated on the case but didn&#39;t want to have to re-enter or copy and paste to the case resolution form.</p>
<p><img alt="MSCRM and Javascript" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp1.png" /></p>
<p>The out-of-the-box form has a text field for the resolution that was too minimal in many instances</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp2.png" /></p>
<p>One solution to this resolution conundrum is to create a Dialog to capture the information and replace the functionality of the &#39;Resolve Case&#39; button.</p>
<p>&nbsp;</p>
<p>I created a dialog that prompts for a &#39;Resolution&#39;</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp3.png" /></p>
<p>In the next step I updated the Case, populating the Resolution on the case from the prompt response</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp4.png" /></p>
<p>Final step changes the status of the case to resolved</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp5.png" /></p>
<p>Now from a Case, click on the &#39;Dialogs&#39; button and select the new Dialog</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp6.png" /></p>
<p>Respond to the prompt and complete the dialog</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp7.png" /></p>
<p>The dialog process populates the response in the designated field and the resolves the case</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp8.png" /></p>
<p>That&#39;s great, but let&#39;s take it another step and replace the function of the out-of-the-box &#39;Resolve Case&#39; button.</p>
<p>Next I created a web resource for the JavaScript we&#39;ll use to launch the Dialog</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp9.png" /></p>
<p>The JavaScript opens a window and accepts the parameters we&#39;ll send from the ribbon customization<br />
	I also added a line to close the case record.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/02/020312_0352_UseaDialogp10.png" /></p>
<p>I also captured the GUID of the workflow. (Simply open the dialog, Ctrl+N reopens with the url)</p>
<p>Next create a solution, add the Case entity and export and extract the xml</p>
<p>Locate the Ribbon section and add a custom action. In my case I&#39;m replacing the action of the existing Resolve Case button. If you want to add a custom button check out this <a href="http://www.powerobjects.com/blog/2011/06/17/crm-2011-%e2%80%93-enabling-and-disabling-ribbon-buttons-2/">blog post</a></p>
<p>Here is the code. The important element is the JavaScriptFunction &ndash; here I call the web resource and for the first parameter paste in the GUID of the Dialog:</p>
<p>
<pre class="brush: jscript; title: ; notranslate">&lt;/p&gt;
&lt;RibbonDiffXml&gt;
  &lt;CustomActions&gt;
  &lt;/CustomActions&gt;
  &lt;Templates&gt;
    &lt;RibbonTemplates Id=&quot;Mscrm.Templates&quot;&gt;&lt;/RibbonTemplates&gt;
  &lt;/Templates&gt;
  &lt;CommandDefinitions&gt;
    &lt;CommandDefinition Id=&quot;Mscrm.Form.incident.Resolve&quot;&gt;
      &lt;EnableRules&gt;
        &lt;/EnableRules&gt;
      &lt;DisplayRules&gt;
        &lt;DisplayRule Id=&quot;Mscrm.CanChangeIncidentForm&quot; /&gt;
        &lt;DisplayRule Id=&quot;Mscrm.IncidentIsActive&quot; /&gt;
      &lt;/DisplayRules&gt;
      &lt;Actions&gt;
        &lt;JavaScriptFunction FunctionName=&quot;ResolveCaseDialog&quot; Library=&quot;$webresource:new_ResolveCaseDialog&quot; &gt;
          &lt;!-- dialogID, typeName, recordId --&gt;
          &lt;StringParameter Value=&quot;60E0A113-2C90-44D6-8839-A9F4F6A115BC&quot; /&gt;
          &lt;StringParameter Value=&quot;incident&quot; /&gt;
          &lt;CrmParameter Value=&quot;FirstPrimaryItemId&quot; /&gt;
        &lt;/JavaScriptFunction&gt;
      &lt;/Actions&gt;
    &lt;/CommandDefinition&gt;
  &lt;/CommandDefinitions&gt;
  &lt;RuleDefinitions&gt;
    &lt;TabDisplayRules /&gt;
    &lt;DisplayRules /&gt;
    &lt;EnableRules /&gt;
  &lt;/RuleDefinitions&gt;
  &lt;LocLabels /&gt;
&lt;/RibbonDiffXml&gt;
	</pre>
</p>
<p>Save the customization and reimport into CRM</p>
<p>The button on the case form looks the same to the user but instead of the case resolution form the Case Resolution Dialog is launched.</p>
<p>Happy CRM&#39;ing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/URQIep_eoFc" height="1" width="1"/>]]></content:encoded><description>One of the few elements of Microsoft Dynamics CRM 2011 that is not customizable is the Case Resolution form. It is also not accessible via workflow. If more case resolution information needed to be captured it typically needs to be&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/02/02/use-a-dialog-process-in-microsoft-dynamics-crm-to-replace-the-case-resolution-form/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/02/02/use-a-dialog-process-in-microsoft-dynamics-crm-to-replace-the-case-resolution-form/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/02/02/use-a-dialog-process-in-microsoft-dynamics-crm-to-replace-the-case-resolution-form/</feedburner:origLink></item><item><title>Contacts, Cell Phones, and Microsoft Dynamics CRM</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/-ty5OsXAaM8/</link><category>CRM How To</category><category>crm experts</category><category>CRM how to</category><category>Microsoft Dyanmics CRM</category><category>Microsoft Dynamics CRM</category><category>Microsoft Dynamics CRM 2011</category><category>Microsoft Dynamics CRM add-on</category><category>Microsoft DynamicsCRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Tue, 31 Jan 2012 18:53:13 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=5064</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>One of the really powerful features of <a href="http://www.powerobjects.com/services/microsoft-dynamics-crm/">Microsoft Dynamics CRM</a> is the integration between Outlook and CRM for <a href="http://www.powerobjects.com/">contact management</a>. Contacts entered into CRM appear as Outlook Contacts for the owners of those records automatically. If you have a smart phone which is connected to your Exchange, then these Contacts also appear in your phone contact list automatically. There&#39;s no need to maintain three different contact lists! Furthermore, if you format the phone number correctly, your smart phone can simply push to dial everything for you.</p>
<p>Unfortunately, bad <strong>phone number formatting</strong> can keep people from taking advantage of this time-saving feature. I often see data structured like this:</p>
<p><img alt="contact management" src="http://www.powerobjects.com/wp-content/uploads/2012/01/020112_0253_ContactsCel1.png" /></p>
<p>Or like this:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/020112_0253_ContactsCel2.png" /></p>
<p>Some phones error when dialing phone numbers in these formats. If yours is one, there are alternative ways to format the number that can help. I&#39;ve seen people try to get around this problem by adding a different field for the extension. While this does allow the dialer to properly dial the primary number, it is still not the optimal way to handle phone numbers because users must manually enter the extension from their phone. No one wants to try to remember and type an 8-digit access code to the conference bridge while driving.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/020112_0253_ContactsCel3.png" /></p>
<p>A better alternative is to enter phone numbers is with this format: number space comma space extension. The dialer interprets the comma as a pause.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/020112_0253_ContactsCel4.png" /></p>
<p>This pause gives the system time to answer before the keystrokes for the extension are entered. Experimenting with the format that works best for your phone can pay off when on the road.</p>
<p>Another <strong>CRM How-to</strong> from your friendly <a href="http://www.powerobjects.com/blog/">CRM Experts</a> at PowerObjects.</p>
<p>Happy CRM&#39;ing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/-ty5OsXAaM8" height="1" width="1"/>]]></content:encoded><description>One of the really powerful features of Microsoft Dynamics CRM is the integration between Outlook and CRM for contact management. Contacts entered into CRM appear as Outlook Contacts for the owners of those records automatically. If you have a smart&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/31/contacts-cell-phones-and-microsoft-dynamics-crm/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/31/contacts-cell-phones-and-microsoft-dynamics-crm/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/31/contacts-cell-phones-and-microsoft-dynamics-crm/</feedburner:origLink></item><item><title>Hiding Tabs in the Outlook Reading Pane Display for Microsoft Dynamics CRM</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/Z_VoBABmXBI/</link><category>CRM 2011</category><category>CRM for Outlook</category><category>CRM Outlook</category><category>microsoft advanced crm</category><category>Microsoft Dynamics</category><category>Microsoft Dynamics CRM</category><category>Microsoft Dynamics CRM 2011</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Tue, 31 Jan 2012 10:24:01 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=5048</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>At <a href="http://www.powerobjects.com/">PowerObjects</a> we are always trying to make the <a href="http://www.powerobjects.com/services/">Microsoft Dynamics CRM</a> user experience the best it can be.</p>
<p>We recently encountered an issue with the Outlook Reading Pane displaying all the tabs on the form even though we had written java script to show and hide these tabs on the form. The reason behind this is that the java script can&#39;t be fired on the Outlook reading pane. As you can see in the screenshot below, all of the tabs are displayed in the Outlook Reading Pane.</p>
<p><img alt="Outlook Reading Pane Display for Microsoft Dynamics CRM" src="http://www.powerobjects.com/wp-content/uploads/2012/01/013112_1823_HidingTabsi1.png" /></p>
<p>To resolve the issue, the first thing we need to do is modify the tab properties that are displayed on the form. You can do this by going into the Customizations and modify the form for the Opportunities. Once you have the properties of the tab open, uncheck the option to display the tab by default. In our example, I have unchecked this option for all tabs except for the General and the Activities and Notes.</p>
<p><img alt="Outlook Reading Pane" src="http://www.powerobjects.com/wp-content/uploads/2012/01/013112_1823_HidingTabsi2.png" /></p>
<p>The next step is to make sure your java script will display the correct tabs when the appropriate value is selected from the option set. Below is an example of that code.</p>
<p>
<pre class="brush: jscript; title: ; notranslate">&lt;br /&gt;
	/*&lt;br /&gt;
	setTabsVisibility()&lt;br /&gt;
	*/&lt;/p&gt;
&lt;p&gt;setTabsVisibility = function() {&lt;br /&gt;
	switch (Xrm.Page.getAttribute(&amp;quot;po_opportunitytype&amp;quot;).getValue()) {&lt;br /&gt;
	case 936710000: displayTabs(&amp;quot;New Product&amp;quot;);&lt;br /&gt;
	break;&lt;br /&gt;
	case 936710001: displayTabs(&amp;quot;Existing Product&amp;quot;);&lt;br /&gt;
	break;&lt;br /&gt;
	case 936710002: displayTabs(&amp;quot;Both&amp;quot;);&lt;br /&gt;
	break;&lt;/p&gt;
&lt;p&gt;default: displayTabs(&amp;quot;&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	}&lt;/p&gt;
&lt;p&gt;//This method will display only certain tabs based on the Opportunity Type selected&lt;/p&gt;
&lt;p&gt;function displayTabs(tabName) {&lt;br /&gt;
	if (tabName == &amp;quot;New Product&amp;quot;) {&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;New Product&amp;quot;).setVisible(true);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Product Line Item Details&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Opportunity Quotes&amp;quot;).setVisible(true);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;notes and activities&amp;quot;).setVisible(true);&lt;br /&gt;
	}&lt;/p&gt;
&lt;p&gt;if (tabName == &amp;quot;Existing Products&amp;quot;) {&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;New Product&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Product Line Item Details&amp;quot;).setVisible(true);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Opportunity Quotes&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;notes and activities&amp;quot;).setVisible(true);&lt;br /&gt;
	}&lt;/p&gt;
&lt;p&gt;if (tabName == &amp;quot;Both&amp;quot;) {&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;New Product&amp;quot;).setVisible(true);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Product Line Item Details&amp;quot;).setVisible(true);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Opportunity Quotes&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;notes and activities&amp;quot;).setVisible(true);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;if (tabName == &amp;quot;&amp;quot;) {&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;New Product&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Product Line Item Details&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;Opportunity Quotes&amp;quot;).setVisible(false);&lt;br /&gt;
	Xrm.Page.ui.tabs.get(&amp;quot;notes and activities&amp;quot;).setVisible(true);&lt;br /&gt;
	}&lt;br /&gt;
	}&lt;br /&gt;
	</pre>
</p>
<p>Now when you open the Opportunities entity from the <strong>Microsoft Dynamics Outlook client</strong> we are only displaying the General Information and the Activites and Notes tabs in the Outlook Read Pane.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/013112_1823_HidingTabsi3.png" /></p>
<p>Hope this helps you make the <strong>Microsoft Dynamics CRM</strong> user experience the best it can be.</p>
<p>Happy CRM&#39;ing!</p>
<p><img align="left" alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/013112_1823_HidingTabsi4.png" /></p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/Z_VoBABmXBI" height="1" width="1"/>]]></content:encoded><description>At PowerObjects we are always trying to make the Microsoft Dynamics CRM user experience the best it can be. We recently encountered an issue with the Outlook Reading Pane displaying all the tabs on the form even though we had&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/31/hiding-tabs-in-the-outlook-reading-pane-display-for-microsoft-dynamics-crm/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/31/hiding-tabs-in-the-outlook-reading-pane-display-for-microsoft-dynamics-crm/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/31/hiding-tabs-in-the-outlook-reading-pane-display-for-microsoft-dynamics-crm/</feedburner:origLink></item><item><title>Dear JoeCRM – Volume #4</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/6DJ4WuzyzTI/</link><category>CRM How To</category><category>crm microsoft</category><category>Dear JoeCRM</category><category>microsoft crm</category><category>Microsoft Dynamics CRM</category><category>Microsoft Dynamics CRM 2011</category><category>Microsoft Dynamics CRM add-on</category><category>Microsoft DynamicsCRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Fri, 27 Jan 2012 11:01:42 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=5032</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><strong><img alt="JoeCRM" src="http://www.powerobjects.com/wp-content/uploads/2011/12/122111_2214_DearJoeCRMV1.png" style="float: left; width: 200px; height: 164px; " />Dear JoeCRM, </strong></p>
<p>I need to create a custom field with centrally managed values in <strong>Microsoft Dynamics CRM</strong>. Can you help me understand my options?</p>
<p>-Option Upset Overload</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Dear Option Upset Overload, </strong></p>
<p>You have two choices: either a Lookup or an Option Set. Both Option Sets and Lookup Values can be universal and used by most types of records. System customizers can quickly add an Option Set, so why would you go through the additional work to configure the extra permissions and custom entity required for a lookup?</p>
<p>Here are a few benefits for performing the extra steps for choosing a Lookup over an Option Set:</p>
<ul style="margin-left: 72pt">
<li>Since a lookup is a discreet record, it can contain information that further describes the value.</li>
<li>Adding a value simply entails adding a new record. This allows specified end users to add new values on the fly, and not have to turn to the system customizer for help.</li>
<li>You don&#39;t have to dole out system customizer permissions to the users assigned to adding new values. Create rights to the new entity rather than system customize rights are all that are required for those needing to add a new value.</li>
<li>Removing obsolete values is much easier with lookups. End users simply deactivate a record. This keeps historical data, but makes it unavailable to add to records going forward. Whereas deleting a value from the Option Set can be complicated.</li>
<li>Lookups can be configured so you can choose multiple values rather than only one. This is due to the fact lookups support parent/child relationships.</li>
<li>Users can use the type-ahead feature to quickly add a value.</li>
</ul>
<p>With that said, the simplicity of Option Sets may be all that you require! Use the above bullet points as a guideline to help you make a thoughtful decision when adding your custom field.</p>
<p>Happy CRM&#39;ing!</p>
<p>#&nbsp;<a href="http://www.powerobjects.com/contact">CRM Expert</a>,&nbsp;<a href="http://www.powerobjects.com/services/microsoft-dynamics-crm/">Microsoft Dynamics CRM</a>,&nbsp;<a href="http://www.powerobjects.com/">CRM How To</a></p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/6DJ4WuzyzTI" height="1" width="1"/>]]></content:encoded><description>Dear JoeCRM, I need to create a custom field with centrally managed values in Microsoft Dynamics CRM. Can you help me understand my options? -Option Upset Overload &amp;#160; &amp;#160; Dear Option Upset Overload, You have two choices: either a Lookup&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/27/dear-joecrm-volume-4/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/27/dear-joecrm-volume-4/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/27/dear-joecrm-volume-4/</feedburner:origLink></item><item><title>Microsoft Dynamics CRM and Dynamic Option Sets</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/6cZ6WQZ8kjc/</link><category>CRM 2011</category><category>mcsrm</category><category>microsoft</category><category>Microsoft Dyanmics CRM</category><category>Microsoft DynamicsCRM</category><category>PowerObjects Microsoft Dynamics CRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Wed, 25 Jan 2012 11:47:41 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=5012</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>If you were to imagine a custom form in <a href="http://www.powerobjects.com/">Microsoft Dynamics CRM</a> where you could select any entity and any field on that entity you would realize a few things about <strong>option sets</strong>.</p>
<ol style="margin-left: 54pt">
<li>To enter and support every entity and field would be a daunting and impossible task.</li>
<li>Even if you were to spend the time tackling the previous hurdle, any customizations you made to those entities would have to be tracked and re-applied in the option sets, thereby duplicating your workload.</li>
<li>Option sets do not inherently support dynamic lists.</li>
</ol>
<p>But wait, you might say, there&#39;s an example of how to dynamically modify the option set with JavaScript that ships with the SDK. This example still relies on the idea that you will have pre-filled the option set with all the possible options and then will remove the ones you no longer want. This really wasn&#39;t a viable solution for what we were trying to do either.</p>
<p>The solution we came up with was to utilize single line of text fields hidden on the form to store the values for our option sets. We&#39;ll demonstrate this with one mapping field. So let&#39;s start by setting up our form.</p>
<p>We create a new entity with the following fields:</p>
<ul style="margin-left: 54pt">
<li>Mapping Field (blank option set)</li>
<li>Selected Mapping Field (single line of text)</li>
</ul>
<p>We&#39;ll add the fields to our form and leave the &quot;Selected&quot; fields visible for now:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012512_1946_MicrosoftDy1.png" /></p>
<p>Now we can dive into the JavaScript for populating our Mapping Entity field. It should be noted that the code has been written for readability. If you do plan on implementing this there are places where refactoring should be performed and efficiency improved.</p>
<pre class="brush: jscript; title: ; notranslate">
function getAttributes(entityName) {

    var lookupFields = Xrm.Page.ui.controls.get(&quot;po_mappingfield&quot;);

    try {
        var xml = &quot;&quot; +
        &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;utf-8\&quot;?&gt;&quot; +
        &quot;&lt;s:Envelope xmlns:s=\&quot;http://schemas.xmlsoap.org/soap/envelope/\&quot;&gt;&quot; +
        &quot;&lt;s:Body&gt;&quot; +
        &quot;&lt;Execute xmlns=\&quot;http://schemas.microsoft.com/xrm/2011/Contracts/Services\&quot; xmlns:i=\&quot;http://www.w3.org/2001/XMLSchema-instance\&quot;&gt;&quot; +
        &quot;&lt;request i:type=\&quot;a:RetrieveEntityRequest\&quot; xmlns:a=\&quot;http://schemas.microsoft.com/xrm/2011/Contracts\&quot;&gt;&quot; +
        &quot;&lt;a:Parameters xmlns:b=\&quot;http://schemas.datacontract.org/2004/07/System.Collections.Generic\&quot;&gt;&quot; +
        &quot;&lt;a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;b:key&gt;EntityFilters&lt;/b:key&gt;&quot; +
        &quot;&lt;b:value i:type=\&quot;c:EntityFilters\&quot; xmlns:c=\&quot;http://schemas.microsoft.com/xrm/2011/Metadata\&quot;&gt;Attributes&lt;/b:value&gt;&quot; +
        &quot;&lt;/a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;b:key&gt;MetadataId&lt;/b:key&gt;&quot; +
        &quot;&lt;b:value i:type=\&quot;c:guid\&quot; xmlns:c=\&quot;http://schemas.microsoft.com/2003/10/Serialization/\&quot;&gt;00000000-0000-0000-0000-000000000000&lt;/b:value&gt;&quot; +
        &quot;&lt;/a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;b:key&gt;RetrieveAsIfPublished&lt;/b:key&gt;&quot; +
        &quot;&lt;b:value i:type=\&quot;c:boolean\&quot; xmlns:c=\&quot;http://www.w3.org/2001/XMLSchema\&quot;&gt;true&lt;/b:value&gt;&quot; +
        &quot;&lt;/a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;b:key&gt;LogicalName&lt;/b:key&gt;&quot; +
        &quot;&lt;b:value i:type=\&quot;c:string\&quot; xmlns:c=\&quot;http://www.w3.org/2001/XMLSchema\&quot;&gt;&quot; + entityName + &quot;&lt;/b:value&gt;&quot; +
        &quot;&lt;/a:KeyValuePairOfstringanyType&gt;&quot; +
        &quot;&lt;/a:Parameters&gt;&quot; +
        &quot;&lt;a:RequestId i:nil=\&quot;true\&quot; /&gt;&quot; +
        &quot;&lt;a:RequestName&gt;RetrieveEntity&lt;/a:RequestName&gt;&quot; +
        &quot;&lt;/request&gt;&quot; +
        &quot;&lt;/Execute&gt;&quot; +
        &quot;&lt;/s:Body&gt;&quot; +
        &quot;&lt;/s:Envelope&gt;&quot; + &quot;&quot;;

        var xmlHttpRequest = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);

        xmlHttpRequest.Open(&quot;POST&quot;, &quot;/XRMServices/2011/Organization.svc/web&quot;, false);
        xmlHttpRequest.setRequestHeader(&quot;Accept&quot;, &quot;application/xml, text/xml, */*&quot;);
        xmlHttpRequest.setRequestHeader(&quot;Content-Type&quot;, &quot;text/xml; charset=utf-8&quot;);
        xmlHttpRequest.setRequestHeader(&quot;SOAPAction&quot;, &quot;http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute&quot;);
        xmlHttpRequest.send(xml);

        var doc = xmlHttpRequest.responseXML;
        var nodeList = doc.selectNodes(&quot;//c:AttributeMetadata&quot;);
        for (i = 0; i &lt; nodeList.length; i++) {
            xmlDoc = new ActiveXObject(&quot;Microsoft.XMLDOM&quot;);
            xmlDoc.loadXML(nodeList[i].xml);
            if (xmlDoc.selectSingleNode(&quot;//c:DisplayName/a:UserLocalizedLabel/a:Label&quot;) != null) {
                var display = xmlDoc.selectSingleNode(&quot;//c:DisplayName/a:UserLocalizedLabel/a:Label&quot;).text;
                var value = xmlDoc.selectSingleNode(&quot;//c:LogicalName&quot;).text;
                var option = document.createElement(&quot;OPTION&quot;);
                option.value = option.innerText = value;
                option.text = option.innerText = display;
                lookupFields.addOption(option); 

            }
        }
    }
    catch (err) {
        alert(&quot;Script encountered error: &quot; + err.name + &quot;\nMessage: &quot; + err.message);
    }
}
</pre>
<p>The XML request in this function retrieves all available attributes of the entity that is passed into the function. After we&#39;ve received the XML response back from the request, we loop through each attribute node in the document and use XPath statements to grab both the display and schema name.</p>
<p>Finally, we create option elements, fill out their value and text attributes and add it to our option set.</p>
<p>Now that we have a helper method, which will populate our control, we need to call it from an event and pass it a value. For this example, we&#39;ll utilize the onLoad functionality of our form and hardcode the value lead to be passed to our helper method.</p>
<p>
<pre class="brush: jscript; title: ; notranslate"> function OnLoadGetAttributes()
{
    getAttributes(&quot;lead&quot;);

    $(&quot;#po_mappingfield&quot;).html($(&quot;option&quot;, &quot;#po_mappingfield&quot;).sort(function (a, b) {
        return a.text == b.text ? 0 : a.text &lt; b.text ? -1 : 1
    }));

    $(&quot;#po_mappingfield option:eq(0)&quot;).attr(&quot;selected&quot;, &quot;selected&quot;);

}
</pre>
</p>
<p>In addition to calling our helper method, we utilize jQuery to sort our returned results for us. Then we ensure the dropdown field is set to the default blank option.</p>
<p>Now we&#39;ll add our JavaScript and the jQuery library to our solution as a web resource, add the libraries to our source and bind our form onLoad event to the OnLoadGetAttributes method.</p>
<p>Once published, you should be able to create a new mapping entity from CRM with a dropdown that is populated with all available attribute or field names:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012512_1946_MicrosoftDy2.png" /></p>
<p>Now that we&#39;ve got the values in a dropdown, we need a way to store them. Since CRM does not have an option set tied to the back of this, in order for those values to persist, we&#39;ll need to affix another method to the onChange event of the po_mappingfield dropdown:</p>
<pre class="brush: jscript; title: ; notranslate">
function onLookupFieldChange() {
    var fieldLookup = document.getElementById(&quot;po_mappingfield&quot;);
    var field = fieldLookup.options[fieldLookup.selectedIndex].value;

    var selectedMappingField = Xrm.Page.data.entity.attributes.get(&quot;po_selectedmappingfield&quot;);
    selectedMappingField.setValue(field);
}
</pre>
<p>You might notice here that we&#39;re utilizing generic JavaScript to access the Mapping Field dropdown rather than the CRM provided getValue function. Since this isn&#39;t a real option set as far as CRM is concerned, it won&#39;t pass back any value.</p>
<p>After adding our new function to our JavaScript web resource, we&#39;ll make sure to call the function on the onChange event of the Mapping Field.</p>
<p>If you create a new Mapping Entity and select an option from the dropdown, you should now see the Selected Mapping Entity field populated with the schema name of the attribute:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012512_1946_MicrosoftDy3.png" /></p>
<p>This new value will persist when saving the entity. We can now hide this field if we wished too. It is now just a friendly storage site on your form.</p>
<p>There&#39;s one piece of the puzzle left and that&#39;s how to handle when the page loads. If we were to load the page as it exists, our hidden field would contain the schema name of our attribute, but the dropdown would only have the default value selected.</p>
<p>On our current onLoad function, we can add a check to determine if a Selected Mapping Field exists:</p>
<pre class="brush: jscript; title: ; notranslate">
function OnLoadGetAttributes()
{
    getAttributes(&quot;lead&quot;);

    $(&quot;#po_mappingfield&quot;).html($(&quot;option&quot;, &quot;#po_mappingfield&quot;).sort(function (a, b) {
        return a.text == b.text ? 0 : a.text &lt; b.text ? -1 : 1
    }));

    var selectedMapping = Xrm.Page.data.entity.attributes.get(&quot;po_selectedlookupfield&quot;);

    if (selectedMapping.getValue() != null) {
        $('#po_mappingfield option[value=&quot;' + selectedMapping.getValue() + '&quot;]').prop('selected', true);
    }
    else {
        $(&quot;#po_mappingfield option:eq(0)&quot;).attr(&quot;selected&quot;, &quot;selected&quot;);
    }
}
</pre>
<p>Now when our page loads, not only will the dropdown be populated, but it will have selected the proper attribute if we have one stored in our Selected Mapping Field.</p>
<p>Bam!!! There you have it. Hope this helps you as it has the <a href="http://www.powerobjects.com/about/">CRM Experts</a> at PowerObjects.</p>
<p>Happy CRM&#39;ing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/6cZ6WQZ8kjc" height="1" width="1"/>]]></content:encoded><description>If you were to imagine a custom form in Microsoft Dynamics CRM where you could select any entity and any field on that entity you would realize a few things about option sets. To enter and support every entity and&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/25/microsoft-dynamics-crm-and-dynamic-option-sets/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/25/microsoft-dynamics-crm-and-dynamic-option-sets/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/25/microsoft-dynamics-crm-and-dynamic-option-sets/</feedburner:origLink></item><item><title>Microsoft Dynamics CRM Data Import – Setting Primary Contact Field #2</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/DDEig6Ipqq0/</link><category>CRM 2011</category><category>crm experts</category><category>microsoft advanced crm</category><category>microsoft crm</category><category>Microsoft Dynamics CRM</category><category>Microsoft Dynamics CRM 2011</category><category>Microsoft DynamicsCRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Mon, 23 Jan 2012 19:25:01 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=4926</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>This is the second installment of a two part series on setting primary contact field in <strong>Microsoft Dynamics CRM</strong>. You may want to read the <a href="http://www.powerobjects.com/blog/2011/12/30/microsoft-dynamics-crm-data-import-setting-primary-contact-field/">first installment</a> before continuing on.</p>
<p>Another option to resolve this issue importing accounts and contacts is a new feature in CRM 2011. The Data Import has the ability to import Accounts and Contacts at the same time. We will walk through the steps of how to accomplish this task in CRM2011.</p>
<p><strong>Step1:</strong> Create two .CSV files, one for your Accounts and one for your Contacts.</p>
<p>If possible have a unique id for each record in your spreadsheet. This will allow you to use this value to build the relationship between the Accounts and Contacts. The reason behind this is if you have any duplicate contacts or accounts within your spreadsheet the import will fail on these records.</p>
<p>You may also choose to download template from the Data import. This will help you with mapping process.</p>
<p>Accounts Example:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy1.png" /></p>
<p>Contact Example:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy2.png" /></p>
<p><strong>Step 2:</strong> Once you are ready to give your files a try, add them to a zip file.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy3.png" /></p>
<p><strong>Step 3:</strong> In CRM 2011, start the Data Import and browse to your zip file that you created above. Select Next and Next after you have reviewed the settings.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy4.png" /></p>
<p>&nbsp;</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy5.png" /></p>
<p><strong>Step 4:</strong> Select the Default (Automatic Mapping) from the System Data Maps</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy6.png" /></p>
<p><strong>Step 5:</strong> Now we get to select what entities we are going to import into. Select the Account and Contact entities from the drop downs.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy7.png" /></p>
<p><strong>Step 6:</strong> You now get the ability to map your fields. Start with your Accounts until you get a green check mark next to the Account label.</p>
<p><strong>Step 7:</strong> When you get to the Primary Contact field, select the lookup icon. Here you can change the look up field. In this example will use the Contact name.</p>
<p>This is where you could use the unique id. This would allow you to map the contact to the correct account if you have duplicate records.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy8.png" /></p>
<p><strong>Step 8:</strong> Complete the same steps for the contacts. Once again you could change the lookup field but we will leave this as the Account name.</p>
<p>Note if you do want to use a unique id, you would need to map the unique field to the parent customer. Then select the id field from the account entity that you populated in the above step.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy9.png" /></p>
<p><strong>Step 9:</strong> The summary screen appears select Next and the Submit to start the import process.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy11.png" /></p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy12.png" /></p>
<p><strong>Step 10:</strong> You can review the import process by browsing to the Workplace, then Imports.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy13.png" /></p>
<p>From there you can look at what did import successfully, the partial failures and the failures may have occurred.</p>
<p>Here is an example error message that you could receive if you have duplicated accounts.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012412_0324_MicrosoftDy16.png" /></p>
<p>Hope this helps. Remember, you can always call in a dedicated <a href="http://www.powerobjects.com/contact">Microsoft Dynamics CRM Partner</a> if you find your import too complex to do on your own.</p>
<p>Happy CRM&#39;ing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/DDEig6Ipqq0" height="1" width="1"/>]]></content:encoded><description>This is the second installment of a two part series on setting primary contact field in Microsoft Dynamics CRM. You may want to read the first installment before continuing on. Another option to resolve this issue importing accounts and contacts&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/23/microsoft-dynamics-crm-data-import-setting-primary-contact-field-2/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/23/microsoft-dynamics-crm-data-import-setting-primary-contact-field-2/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/23/microsoft-dynamics-crm-data-import-setting-primary-contact-field-2/</feedburner:origLink></item><item><title>CRM custom reports – Issues with pre-filtering and non-searchable primary key for an entity.</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/q6yhmHUBJ30/</link><category>CRM 2011</category><category>crm reporting</category><category>mcsrm</category><category>microsoft</category><category>microsoft crm dynamics</category><category>Microsoft Dyanmics CRM</category><category>Microsoft Dynamics</category><category>Microsoft Dynamics CRM 2011</category><category>Microsoft DynamicsCRM</category><category>PowerObjects Microsoft Dynamics CRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Mon, 23 Jan 2012 13:49:46 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=4899</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>We&#39;re gonna get a bit technical today.</p>
<p>In <a href="http://www.powerobjects.com/services/microsoft-dynamics-crm/">Microsoft Dynamics CRM</a>, one of the reasons for turning on pre-filtering for custom reporting is to associate the report with the open form (record) so that it picks up the unique identifier of the opened record and passes it to the report. So, when the report is run, it filters records and only displays information about the opened record.</p>
<p>The following is the <strong>FetchXML </strong>report definition code snippet for turning on pre-filtering (for entity Cases- a.k.a. incident):</p>
<p><span style="color:#c00000">&lt;entity name=&quot;incident&quot; enableprefiltering=&quot;true&quot; prefilterparametername=&quot;FilteredIncident&quot;&gt; </span></p>
<p><img alt="CRM Team" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012312_2148_CRMcustomre1.jpg" /></p>
<p>When running a custom report, if you are getting following message that prevents the report being rendered- follow the instructions below.</p>
<p>It can take you some time to figure out the issue like this.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012312_2148_CRMcustomre2.jpg" /></p>
<p>As per the message above, the pre-filtering tried to use the primary key field of the entity to pull the record. But the field &ndash; in this case incidentid was not found because it was not searchable. Pre-filtering uses the advice find to look for the record. In this case, the incidentid was not searchable and pre-filtering did not find that field and hence the error.</p>
<p><strong>Solution: </strong></p>
<p>Make the field searchable by going to Settings-&gt;Customizations-&gt;Customize the system-&gt;Cases (primary entity the report is for) and open the field and make it searchable and publish customizations.<br />
	Everything should work as expected!</p>
<p>Hope this will save some time if you are experiencing the above issue. If you have any custom reporting needs or issues please reach out to our <a href="http://www.powerobjects.com/">CRM team</a> at PowerObjects.</p>
<p>Happy CRMing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/q6yhmHUBJ30" height="1" width="1"/>]]></content:encoded><description>We&amp;#39;re gonna get a bit technical today. In Microsoft Dynamics CRM, one of the reasons for turning on pre-filtering for custom reporting is to associate the report with the open form (record) so that it picks up the unique identifier&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/23/crm-custom-reports-issues-with-pre-filtering-and-non-searchable-primary-key-for-an-entity/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/23/crm-custom-reports-issues-with-pre-filtering-and-non-searchable-primary-key-for-an-entity/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/23/crm-custom-reports-issues-with-pre-filtering-and-non-searchable-primary-key-for-an-entity/</feedburner:origLink></item><item><title>CRM 2011 Large DuplicateRecordBase table</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/6ZoFOh7EFMI/</link><category>CRM How To</category><category>duplicate detection</category><category>Microsoft Dynamics CRM</category><category>Microsoft Dynamics CRM 2011</category><category>Microsoft Dynamics CRM add-on</category><category>Microsoft DynamicsCRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Fri, 20 Jan 2012 06:41:26 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=4876</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>The dreaded &#39;duplicate record&#39; in <a href="http://www.powerobjects.com/">CRM</a> can rear its ugly head. Are you prepared? Need a process to deal with the situation?</p>
<p>At PowerObjects, we recently had a client that created a bad &#39;Duplicate Detection&#39; rule in <a href="http://www.powerobjects.com/services/microsoft-dynamics-crm/">CRM 2011</a>. This caused the &#39;duplicateRecordBase&#39; table to grow to over 8 GB in size.</p>
<p>If this ever happens to you, you will need to do the following:</p>
<p>1) To identify the name of the rule and the number of all the records in the CRM database; you will need to run the following script in SQL on the &lt;organization_MSCRM&gt; database</p>
<p><span style="font-family:Courier New; font-size:10pt"><span style="color:blue"><code>select</code></span><code> <span style="color:blue">distinct</span> a<span style="color:gray">.</span>duplicateruleid<span style="color:gray">,</span> b<span style="color:gray">.</span>name<span style="color:gray">,</span> <span style="color:fuchsia">count<span style="color:gray">(*)</span> <span style="color:blue">as</span> Total <span style="color:blue">from</span> duplicaterecordbase a</span> </code></span></p>
<p><code><span style="font-family:Courier New; font-size:10pt"><span style="color:gray">join</span> duplicaterulebase b <span style="color:blue">on</span> a<span style="color:gray">.</span>duplicateruleid<span style="color:gray">=</span>b<span style="color:gray">.</span>duplicateruleid </span></code></p>
<p><code><span style="font-family:Courier New; font-size:10pt"><span style="color:blue">group</span> <span style="color:blue">by</span> a<span style="color:gray">.</span>duplicateruleid<span style="color:gray">,</span>b<span style="color:gray">.</span></span></code></p>
<p>2) This table can be cleaned up by simply truncating it.&nbsp; Please note that this is the only CRM table that can be safely truncated.&nbsp; We can do this because the table will immediately re-populate itself the next time a rule is executed.&nbsp; <span style="color:red">Note &ndash; it is best practice to take a backup of the database before running this type of SQL statement</span></p>
<p>To truncate the duplicateRecordBase table you will need to run the following statement in SQL again the &lt;organization_MSCRM&gt; database.</p>
<p style="margin-left: 36pt"><span style="font-family:Courier New; font-size:10pt"><span style="color:blue">Truncate</span> <span style="color:blue">table</span> DuplicateRecordBase</span></p>
<p>3. Disable or modify the bad Duplicate Detection rule</p>
<p><strong>Possible causes and prevention tips: </strong></p>
<ul>
<li>This can be caused by a rule in which the criterion does not work well with the data in the organization.&nbsp;</li>
<li>Having NULL values matching with each other, forces the table to grow exponentially.&nbsp;</li>
</ul>
<p>Note: Update Rollup 5 for the CRM server contains an enhancement for Duplicate Detection which always the rule to ignore NULL values.</p>
<p>To take advantage of this install UR5 and follow the steps below:</p>
<ol>
<li>Open the Duplicate Detection rule</li>
<li>Click on Administration</li>
<li>Check the Ignore Blank Values</li>
<li>Check Exclude inactive matching records</li>
</ol>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/012012_1440_CRM2011Larg1.png" /></p>
<p>If you are having this issue in CRM 4.0 please see our <a href="http://www.powerobjects.com/blog/2009/10/18/crm-4-large-duplicaterecordbase-table/">blog</a> regarding a large DuplicateRecordBase table in CRM 4.0.</p>
<p>Happy CRM&#39;ing!<span style="color:#1f497d"> </span></p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/6ZoFOh7EFMI" height="1" width="1"/>]]></content:encoded><description>The dreaded &amp;#39;duplicate record&amp;#39; in CRM can rear its ugly head. Are you prepared? Need a process to deal with the situation? At PowerObjects, we recently had a client that created a bad &amp;#39;Duplicate Detection&amp;#39; rule in CRM 2011. This&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/20/crm-2011-large-duplicaterecordbase-table/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/20/crm-2011-large-duplicaterecordbase-table/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/20/crm-2011-large-duplicaterecordbase-table/</feedburner:origLink></item><item><title>How to Remove Email Queue Item from Queue in Microsoft Dymamics CRM</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/dkRu8opbSVk/</link><category>Uncategorized</category><category>crm online</category><category>Microsoft Dyanmics CRM</category><category>Microsoft Dynamics</category><category>Microsoft Dynamics CRM 2011</category><category>Microsoft DynamicsCRM</category><category>PowerObjects Microsoft Dynamics CRM</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Wed, 18 Jan 2012 14:35:33 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=4862</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Every organization that sells products or services also makes sure that it provides support to its customers. We attribute their dedication to all the friendly telemarketers across the world who make sure that they call you as you sit down for dinner when, but we may be wrong.</p>
<p><a href="http://www.powerobjects.com/">MS Dynamics CRM</a> has exceptional abilities to automate the support and service processes. Your customers send you their queries in the form of an amazing mode of communication called email, and MS Dynamics creates an email queue item that enters your support queue to notify you of a new enquiry/ support question. However, every silver lining has a cloud, and the email queue item doesn&#39;t deviate too much from this made up expression. The one issue that constantly frustrates users is the fact that email queue items sit in the queue forever unless you go in and manually remove them. Sort of like how every once in a while we remove the dried up pieces of lo mein and bean burritos stuck in between the keys of our keyboard. Email queue items staying in the queue forever can be quite annoying, especially when you get a lot of support enquiries.</p>
<p>We recently solved this issue for one of our clients by creating a new workflow, and here are the steps involved:</p>
<p>(Note: essentially, we are creating a new email queue item (which gets created anyway), but this way we have control of it so that we could deactivate it later.)</p>
<p><img alt="Email Queue in Microsoft Dymamics CRM" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove1.png" /></p>
<p><strong>Step 1:</strong> We create a new Case and link it to the parent customer. Our clients use a plugin that looks up the sender in CRM, so we know who the Contact and Parent Account are. We also set the Title of the case to the subject of the email:</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove2.png" /></p>
<p><strong>Step 2:</strong> Here we update the email by setting the &quot;Regarding&quot; field to the case created in Step 1.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove3.png" /></p>
<p><strong>Step 3: </strong>Create case queue item and assign it to the support queue.</p>
<p><img align="left" alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove4.png" /><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove5.png" /></p>
<p><strong>Step 4:</strong> This is where you create a queue item for the email. Like we mentioned earlier, this queue item is created regardless, but this way you will be able to control and manipulate it.</p>
<p><img align="left" alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove6.png" /><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove7.png" /></p>
<p><strong>Step 5:</strong> Now that you have created the email queue item &ndash; deactivate it. This is done so that you don&#39;t see both the new case and email in your queue.</p>
<p><img alt="" src="http://www.powerobjects.com/wp-content/uploads/2012/01/011812_2234_HowtoRemove8.png" /></p>
<p>That&#39;s it! Your queue will be less cluttered now, and will only show cases created by this workflow. We hope this helped and if you need more in-depth problem solving, feel free to contact our <a href="http://www.powerobjects.com/contact/">CRM experts</a>.</p>
<p>Happy CRM&#39;ing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/dkRu8opbSVk" height="1" width="1"/>]]></content:encoded><description>Every organization that sells products or services also makes sure that it provides support to its customers. We attribute their dedication to all the friendly telemarketers across the world who make sure that they call you as you sit down&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/18/how-to-remove-email-queue-item-from-queue-in-microsoft-dymamics-crm/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/18/how-to-remove-email-queue-item-from-queue-in-microsoft-dymamics-crm/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/18/how-to-remove-email-queue-item-from-queue-in-microsoft-dymamics-crm/</feedburner:origLink></item><item><title>Microsoft Releases Update Rollup 6 for CRM 2011</title><link>http://feedproxy.google.com/~r/PowerobjectsMicrosoftCrmBlog/~3/vuiiAU4Nv3w/</link><category>CRM 2011</category><category>Microsoft Announcements</category><category>Uncategorized</category><category>microsoft crm dynamics</category><category>Microsoft Dynamics CRM</category><category>Microsoft DynamicsCRM</category><category>update rollup 6</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">JoeCRM</dc:creator><pubDate>Tue, 17 Jan 2012 07:53:01 PST</pubDate><guid isPermaLink="false">http://www.powerobjects.com/?p=4799</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://www.powerobjects.com/wp-content/uploads/2012/01/microsoft-crm.png" rel="" style="" target="" title=""><img alt="Microsoft Dynamics CRM Update Rollup 6 for CRM 2011" class="alignleft size-medium wp-image-4803" height="56" src="http://www.powerobjects.com/wp-content/uploads/2012/01/microsoft-crm-300x56.png" style="" title="Microsoft Dynamics CRM Update Rollup 6 for CRM 2011" width="300" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>UPDATE</strong>: 1/17/2012</p>
<p><em>Update Rollup 6 packages for Client and Server are being temporarily removed from the Microsoft Download Center peding the investigation of some issues that have surfaces. Please hold off on downloading Update Rollup 6 until new packages are available.</em></p>
<hr />
<p>Microsoft has released <strong>Update Rollup 6</strong> on January 12, 2012 for <a href="http://www.powerobjects.com/services/microsoft-dynamics-crm/">CRM 2011</a>. The update is ready to download here:</p>
<p><a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28712">http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=28712</a></p>
<p><strong>Update Rollup 6 contains the following hotfixes:</strong></p>
<ol>
<li>When you access Microsoft Dynamics CRM with Claims enabled over Internet-Facing Deployment (IFD), the 404 error pages are generated at random.</li>
<li>Assume that the Microsoft Dynamics CRM client for Outlook is configured by using the IFD URL. In this situation, you are not prompted for credentials if the stored credentials that you have are no longer valid.</li>
<li>You cannot run reports in the Microsoft Dynamics CRM client for Outlook when Claims Authentication is enabled.</li>
<li>When you browse in the Microsoft Dynamics CRM web client by using Internet Explorer 9, Internet Explorer consumes excessive memory. Therefore, you experience slow performance.</li>
<li>The sub-grid views do not load records.</li>
<li>When you change the queue after you perform a quick search on queues, a script error occurs.</li>
<li>When you pin a view in the Microsoft Dynamics CRM client for Outlook, the tab for the view is remembered across sessions and the data for the view is cached locally.</li>
<li>When you synchronize a recurring appointment that includes a canceled meeting, and the canceled meeting is not removed from the calendar, Outlook crashes.</li>
<li>Assume that you have an asynchronous plugin or workflow that is registered on the update of a queue item. When the queue item is routed through a Microsoft Dynamics CRM 4.0 SDK endpoint route request in Microsoft Dynamics CRM 2011, the route request fails.</li>
<li>Reports cannot be displayed for users in the Top Level business unit after the EnableRetrieveMultipleOptimization DWORD registry entry value is set to 2.</li>
<li>When multiline text fields are included in an email template in Microsoft Dynamics CRM 2011, the line breaks in the multiline text fields are formatted incorrectly</li>
<li>When you add a custom lookup field to the quick find field list in Quick Find view in the Microsoft Dynamics CRM client for Outlook, the custom lookup field displays no records.</li>
<li>When you assign records from one user to another user in Microsoft Dynamics CRM 2011, you experience slow performance. Additionally, the assignment process may time out.</li>
<li>When you switch quickly between several Microsoft Dynamics CRM Account records, Microsoft Office Outlook crashes. <span style="text-decoration:underline"> </span></li>
<li>When you save appointments in Outlook, you experience slow performance.</li>
<li>Assume that you close opportunities by using a Microsoft CRM software development kit (SDK) in the Microsoft CRM client for Outlook in offline mode. When you try to change the client back to an online state, a playback error occurs.</li>
</ol>
<p>To view a full list of the hotfixes included in the package, read more at <a href="http://support.microsoft.com/default.aspx?kbid=2600640">Microsoft CRM support</a>.</p>
<p><strong>Additional Installation information via Windows Update </strong></p>
<p>To automatically install Update Rollup 6 for <a href="http://www.powerobjects.com/services/microsoft-dynamics-crm/">Microsoft Dynamics CRM 2011</a>, you can use Windows Update. Update Rollup 6 for Microsoft Dynamics CRM 2011 will be available on Windows Update on January 24, 2012.</p>
<p><span style="color:red"><em>Note &#8211; Update Rollup 6 cannot be removed</em></span>. Specific database updates are applied in Update Rollup 6 that will not let you uninstall Update Rollup 6. You should back up your databases before you install this update.</p>
<p>You can also set Windows to automatically install recommended updates. This setting can address noncritical problems and help improve your computing experience. Optional updates are not downloaded or installed automatically.</p>
<p>Happy CRM&#39;ing!</p>
<img src="http://feeds.feedburner.com/~r/PowerobjectsMicrosoftCrmBlog/~4/vuiiAU4Nv3w" height="1" width="1"/>]]></content:encoded><description>&amp;#160; &amp;#160; &amp;#160; UPDATE: 1/17/2012 Update Rollup 6 packages for Client and Server are being temporarily removed from the Microsoft Download Center peding the investigation of some issues that have surfaces. Please hold off on downloading Update Rollup 6 until&lt;div class="read_more"&gt;&lt;a href="http://www.powerobjects.com/blog/2012/01/17/microsoft-releases-update-rollup-6-for-crm-2011/"&gt;Read More +&lt;/a&gt;&lt;/div&gt;</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.powerobjects.com/blog/2012/01/17/microsoft-releases-update-rollup-6-for-crm-2011/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://www.powerobjects.com/blog/2012/01/17/microsoft-releases-update-rollup-6-for-crm-2011/</feedburner:origLink></item></channel></rss>

