How to change the DashboardSettings of maximum controls limit in Dynamics CRM2011/2013

The maximum number of controls allowed on CRM2011 or CRM 2013 dashboards is 6. You cannot put the more than 6 graphs/charts/iframes/web resources etc. on the dashboard.

We can extend the number of controls as per the user needs. This setting is applied to the server not a organization setting. So you cannot change this setting for CRM Online but you can change this for an on-premise installation.

Option 1: Using Window Power Shell we can achieve it.

  1. Open the Windows Power Shell command window
  2. Add the Microsoft Dynamics CRM PowerShell snap-in using

Add-PSSnapin Microsoft.Crm.PowerShell
Sometimes You may get the message saying something like “Add-PSSnapin : Cannot add Windows PowerShell snap-in Microsoft.Crm.PowerShell because it is already added.” It is fine no problem.

3.  Run the following 3 commands

$setting = Get-CrmSetting -SettingType DashboardSettings

$setting.MaximumControlsLimit = 10

Set-CrmSetting -Setting $setting

After that open CRM, still you will be see only 6 components on the dashboard design, however you can add extra components based on how much you have set the limit.

Once you crossed the limit you will get following error message.


Option 2: If Powershell does not work, use following C# code to do the same

  public static void UpdateDashboardSettings()
            //Create Instance of Deployment Service
            DeploymentServiceClient service = Microsoft.Xrm.Sdk.Deployment.Proxy.ProxyClientHelper.CreateClient(new Uri("http://CRMServer/Organization/XRMDeployment/2011/Deployment.svc"));
            //Use Default network Credentials(User should de Deployment Admin in Deployment Manager and System Admin in CRM)
            service.ClientCredentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials;

            //Retrieve Current Dashboard Settings MaximumControlsLimit
            Microsoft.Xrm.Sdk.Deployment.RetrieveRequest retrieveReq = new Microsoft.Xrm.Sdk.Deployment.RetrieveRequest();
            retrieveReq.EntityType = DeploymentEntityType.DashboardSettings;

            Microsoft.Xrm.Sdk.Deployment.RetrieveResponse retrieveRes = (Microsoft.Xrm.Sdk.Deployment.RetrieveResponse)service.Execute(retrieveReq);
            if (retrieveRes != null && retrieveRes.Entity != null)
                DashboardSettings dsCurrentResult = (DashboardSettings)retrieveRes.Entity;
                if (dsCurrentResult != null)
                    Console.WriteLine("Current DashboardSettings MaximumControlsLimit is " + dsCurrentResult.MaximumControlsLimit);
            //Update Current Dashboard Settings MaximumControlsLimit = 10
            Microsoft.Xrm.Sdk.Deployment.UpdateRequest updateReq = new Microsoft.Xrm.Sdk.Deployment.UpdateRequest();
            DashboardSettings ds = new DashboardSettings();
            ds.MaximumControlsLimit = 10;
            updateReq.Entity = ds;
            Microsoft.Xrm.Sdk.Deployment.UpdateResponse updateRes = (Microsoft.Xrm.Sdk.Deployment.UpdateResponse)service.Execute(updateReq);

            //Retrieve again after updating Current Dashboard Settings MaximumControlsLimit
            Microsoft.Xrm.Sdk.Deployment.RetrieveRequest retrieveReq1 = new Microsoft.Xrm.Sdk.Deployment.RetrieveRequest();
            retrieveReq1.EntityType = DeploymentEntityType.DashboardSettings;
            Microsoft.Xrm.Sdk.Deployment.RetrieveResponse retrieveRes1 = (Microsoft.Xrm.Sdk.Deployment.RetrieveResponse)service.Execute(retrieveReq1);

            if (retrieveRes1 != null && retrieveRes1.Entity != null)
                DashboardSettings dsUpdatedResult = (DashboardSettings)retrieveRes1.Entity;
                if (dsUpdatedResult != null)
                    Console.WriteLine("After Updating DashboardSettings MaximumControlsLimit is " + dsUpdatedResult.MaximumControlsLimit);


NOTE: You need add microsoft.xrm.sdk.deployment DLL from SDK to access those Deployment classes and methods. User who is running this should be Deployment Admin in Deployment Manager and Sys Admin in CRM

Incase if you are getting 404 error while accessing Deployment service, you need to check your CRM web server IIS settings and make sure XRMDeployment is not configured in Hidden Segments in IIS, Follow below steps to remove/add XRMDeployment setting in IIS

  1. Open Internet Information Services(IIS) Manager
  2. Expand Server on left navigation
  3. Expand Sites on the Left Navigation
  4. Click on Microsoft Dynamics CRM
  5. Click on “Request Filtering” icon in IIS on right side window
  6. Click on “Hidden Segments” tab on Request Filtering window on right side
  7. If “XRMDeployment” exists then select “XRMDeployment” and right click on “Remove” and say “Yes” to remove “XRMDeployment” from Hidden Segments
  8. Once you are done executing PowerShell, SDK Code you can add using “Add Hidden Segment” option, enter “XRMDeployment” in Hidden Segment window and click on “OK” to close the window.

Build dynamic HTML table and display on entity form using JavaScript and HTML web resource in Dynamics CRM 2011

I have a requirement to build dynamic HTML table and display on Account form using HTML web resource and JavaScript.

Here is my scenario; I have two entities; Account and AccountService. There is 1:N relationship between Account and AccountService. AccountService entity has name and account fields. Requirement is to get account services from AccountService entity based on account guid and display on Account form.

I have created new HTML web resource for displaying account services and added on Account form.

Here is HTML web resource code, I am using oDATA and JavaScript in HTML web resource.


    <title>Account Services</title>
    <script src="ls_Script_JQuery_1.7.1.min"></script>
    <script src="ClientGlobalContext.js.aspx"></script>
    <script language="javascript" type="text/javascript">
        function loadAccountServices() {
            //Get Account Guid
            var accountId =;
            //Get Account Services
            var accountServices = getAccountServices(accountId);
            if (accountServices != null && accountServices.length > 0) {
                var tableData = "";
                for (var i = 0; i < accountServices.length; i++) {
                    var service = accountServices[i].ls_name;
                    if (service != null) {
                        //dynamically add table data with Service Names
                        tableData = tableData + "<tr><td>" + service + "</td></tr>";
                //Create HTML table
                var table = "<table style='font-family:Segoe UI;font-weight:normal;font-size:13px;'><tr style='height:20px'><td style='text-decoration:underline;'>Account Services</td></tr>" + tableData + "</table>";
                //show table data on the Account form
        //get Account Services
        function getAccountServices(accountId) {
            var serverUrl = location.protocol + "//" + + "/" + Xrm.Page.context.getOrgUniqueName();
            var oDataUri = serverUrl + "/xrmservices/2011/OrganizationData.svc/ls_accountserviceSet?$select=ls_name&$filter=ls_Account/Id eq guid'" + accountId + "'";
            var accountServices = null;
                type: "GET",
                contentType: "application/json; charset=utf-8",
                datatype: "json",
                url: oDataUri,
                async: false,
                beforeSend: function (XMLHttpRequest) {
                    XMLHttpRequest.setRequestHeader("Accept", "application/json");
                success: function (data, textStatus, XmlHttpRequest) {
                    if (data != null && data.d.results.length > 0) {
                        accountServices = data.d.results;
                error: function (XMLHttpRequest, textStatus, errorThrown) {
            return accountServices;
<body onload="loadAccountServices();">

How it looks on Account Form:

Account Services

Dynamics CRM 2011 JavaScript debugging in Internet Explorer 11

Microsoft rebuilt the F12 tools from the ground up in Internet Explorer11. They have a brand new UI and new functionality to make your developing and debugging faster and easier.

You can access them from within a browser window by hitting F12. If your keyboard doesn’t have function keys, you can select ‘F12 developer tools’ from the ‘Tools’ menu.

You can use the Debugger tool to examine what your code is doing, when it’s doing it, and how it’s doing it. Pause code in mid-execution, step through it line-by-line, and watch the state of variables and objects at each step. New features in the Debugger tool include:

  • No-refresh debugging. Set your breakpoints  and go without reloading and losing state.
  • Tabbed document interface for easier management of multiple scripts.
  • Scrollbar that highlights breakpoints and search matches.

Development and debugging tasks it makes easier:

  • Seeing what led to a function call using the Callstack.
  • Making compressed or minified code more readable.
  • Monitoring web worker creation and  execution.

There are eight distinct tools, each with their own tab in the F12 tools interface. Here you’ll find an image of each tool, a quick summary of what it does and what’s new, and a couple of typical development or debugging tasks the tool makes easier. Check the link ‘Using the F12 developer tools in Internet Explorer 11’

Here are the steps how to debug Dynamics CRM JavaScript code in Internet Explorer11.

Step1:  Before you try to debug JavaScript code make sure ‘Disable script debugging (Internet Explorer)’ and ‘Disable script debugging (Other)’ options are un-checked in ‘Advanced’ tab of Internet Explorer options, these options are checked by default.


Step2:  Press the F12 key on your keyboard to open the tools or select ‘F12 developer tools’ from the ‘Tools’ menu.  You will see ‘DOM Explorer tool (CTRL + 1)’ left side, click on ‘Debugger (CTRL+3)’


Step3:  Click on ‘Open Document (CTRL+O)’ and check CRM page.


Step4:  Expand CRM page in ‘Open Document (CTRL+O)’ and check your JavaScript file is loaded and click on your JavaScript file and set the debugger wherever you want



SQL Generic error in Accounts Merge and Contacts Merge in Dynamics CRM 2011

Exception Message: SQL Generic error

Route Cause: Sometimes we used to get ‘SQL Generic error’ exceptions during Accounts merge or Contacts merge.  We enabled SQL Server Profiler and tried again merging for some of the failed merge accounts and contacts, traced what exception is, it is (Violation of UNIQUE KEY constraint ‘UQ_PrincipalObjectAccess’. Cannot insert duplicate key in object ‘dbo.PrincipalObjectAccess’)

For Accounts Merge: When any of Subordinate account contacts/sub accounts are shared with Master account owner, it creates a record in PrincipalObjectAccess table. When merging accounts, it is again trying to create the same record in PrincipalObjectAccess table,  since this record already exists in PrincipalObjectAccess table which causes Generic SQL error.

For Contacts Merge: It is same for contacts merge too, when Subordinate contact is already shared with Master contact owner, it creates a record in PrincipalObjectAccess table when merging contacts, it is again trying to create the same record in POA table, since this record already exists in PrincipalObjectAccess table which causes Generic SQL Error.

Solution 1: I tried to revoke those privilege records from PrincipalObjectAccess table using RevokeAccessRequest class in SDK, for some reason it is not deleting those records. It just sets AccessRightsMask and InheritedAccessRightsMark values to 0.  I guess this is what RevokeAccessRequest does, it just zero’s out the permissions shared rather than deleting the record.
Tried again merging accounts and contacts after revoking privilege records from PrincipalObjectAccess, for some reason it did not work.

Solution 2: Following solution worked for me, you can use following code do the same.

  1. Try changing the master account owner to CRM Admin user
  2. Merge the accounts/contacts
  3. Change owner back to original owner who owns before Merge.
    private void MergeFailedAccounts(CRM.SDK.Account subOrdinateAccount, CRM.SDK.Account masterAccount, CRM.SDK.Account updateContent)
            IOrganizationService service = CRMHelper.GetCRMConnection();

            OrgServiceWrapper orgServiceWrapper = (OrgServiceWrapper)service;
            //Get Organization Service Context User Credentials
            string strUserDomainName = orgServiceWrapper.ClientCredentials.Windows.ClientCredential.Domain + "\\" + orgServiceWrapper.ClientCredentials.Windows.ClientCredential.UserName;
            string userFetchXML = string.Format(@"<fetch version='1.0' output-format='xml-platform' mapping='logical' no-lock='true'>
                                                    <entity name='systemuser'>
                                                        <attribute name='systemuserid'/>
                                                        <filter type='and'><condition attribute='domainname' operator='eq' value='{0}' /></filter>
                                                </fetch>", strUserDomainName);    
            //1-Get CRMS Service(Admin User) UserId for changing account owner
            var userFetchExp = new FetchExpression(userFetchXML);
            EntityCollection userEntityCollection = service.RetrieveMultiple(userFetchExp);
            if (userEntityCollection.Entities.Count > 0)
                //2- Change Master Account owner to CRMS Service(Admin User)
                AssignRequest cRMSServiceUserAssignReq = new AssignRequest
                    Assignee = new EntityReference("systemuser", userEntityCollection.Entities[0].Id),
                    Target = new EntityReference("account", masterAccount.Id)
                // Execute the AssignRequest

                //3-Merge Accounts
                MergeRequest request = new MergeRequest
                    Target = new EntityReference("account", masterAccount.Id),
                    SubordinateId = subOrdinateAccount.Id,
                    UpdateContent = updateContent,

                MergeResponse response = (MergeResponse)service.Execute(request);

                //4- Change Master Account Owner back to orginal owner who was before Merge
                AssignRequest accountOwnerAssignReq = new AssignRequest
                    Assignee = masterAccount.OwnerId,
                    Target = new EntityReference("account", masterAccount.Id)
                // Execute the AssignRequest

 private void MergeFailedContacts(SDK.Contact subOrdinateContact, SDK.Contact masterContact, SDK.Contact updateContent)
            IOrganizationService service = CRMHelper.GetCRMConnection();

            OrgServiceWrapper orgServiceWrapper = (OrgServiceWrapper)service;
            //Get Organization Service Context User Credentials
            string strUserDomainName = orgServiceWrapper.ClientCredentials.Windows.ClientCredential.Domain + "\\" + orgServiceWrapper.ClientCredentials.Windows.ClientCredential.UserName;

            string userFetchXML = string.Format(@"<fetch version='1.0' output-format='xml-platform' mapping='logical' no-lock='true'>
                                                    <entity name='systemuser'>
                                                        <attribute name='systemuserid'/>
                                                        <filter type='and'><condition attribute='domainname' operator='eq' value='{0}' /></filter>
                                                </fetch>", strUserDomainName);            
            //1-Get CRMS Service(Admin User) UserId for changing account owner
            var userFetchExp = new FetchExpression(userFetchXML);
            EntityCollection userEntityCollection = service.RetrieveMultiple(userFetchExp);
            if (userEntityCollection.Entities.Count > 0)
                //2- Change Master Contact owner to CRMS Service(Admin User)
                AssignRequest cRMSServiceUserAssignReq = new AssignRequest
                    Assignee = new EntityReference("systemuser", userEntityCollection.Entities[0].Id),
                    Target = new EntityReference("contact", masterContact.Id)
                // Execute the AssignRequest

                //3-Merge Contacts
                MergeRequest request = new MergeRequest();

                request.Target = new EntityReference("contact", masterContact.Id);
                request.SubordinateId = subOrdinateContact.ContactId.Value;
                request.UpdateContent = updateContent;

                MergeResponse response = (MergeResponse)service.Execute(request);

                //4- Change Master Contact Owner back to orginal owner who was before Merge
                AssignRequest contactOwnerAssignReq = new AssignRequest
                    Assignee = masterContact.OwnerId,
                    Target = new EntityReference("contact", masterContact.Id)
                // Execute the AssignRequest

Navigation in Dynamics CRM 2013

One of the huge difference between Dynamics CRM 2011 and 2013 is navigation. Page and menu navigation has changed drastically in Dynamics CRM 2013. In CRM 2011 navigation is done thru left navigation and ribbon menu, however in CRM 2013 it is very user friendly, no left navigation and no ribbon menu, all you have to do just click on any drop down on left top side to go to corresponding page.

Main Modules Navigation: when you click on Microsoft Dynamics CRM drop down, it displays different main module tiles like Sales, Service, Marketing, Settings and Help. Shown in the below screenshot.


Individual Module Navigation: when you click on “Sales” drop down from the main modules navigation, it displays different sales functions available under Sales module. If number of menu items are exceeding in the width of the window, you need to click arrow on the right side to see remaining menu items, once you click on right side arrow, if number of menu items exceeding in the window, you will see arrow on left side too. Scroll Left and Right side arrows to see all menu items under Sales module. Shown in the below screenshots:



Recently Viewed Navigation: when you click on “Accounts” drop down next to “Sales”, It displays the recently viewed Accounts. Shown in the below screenshot.


You can also click on “Accounts” drop down under “Sales” module to check recently viewed records, shown in the below screenshot.


Dynamics CRM 2013 Features

Following features of Dynamics CRM 2013 I am covering here comparing with Dynamics CRM 2011.

  1. Navigation
  2. Ribbon Menu
  3. Auto Save
  4. Popup Windows
  5. Business Process Flows
  6. Business Rules
  7. Actions
  8. Quick Create Forms
  9. Quick View Forms
  10. Social Pane
  11. Store Images
  12. Multi browser support
  13. Yammer Integration
  14. Skype Integration
  15. Bing maps Integration
  16. Windows 8 and iPad apps
  17. Customizable Tooltips

1. Navigation: One of the huge difference between Dynamics CRM 2011 and 2013 is navigation. Page and menu navigation has changed drastically in Dynamics CRM 2013. In CRM 2011 navigation is done thru left navigation and ribbon menu, however in CRM 2013 it is very user friendly, no left navigation and no ribbon menu, all you have to do just click on any drop down on left top side to go to corresponding page.


2. Ribbon Menu: Ribbon menu is gone in Dynamics CRM 2013, No more ribbon, instead, you’ll see just the commands related to the things you’re working on. rather than using a ribbon displaying every option to the user, the navigation is streamlined to a few commands. The user can select the ellipses (….) called the MORE COMMANDS button to find relevant commands for the records in context. 


3. Auto Save: In Microsoft Dynamics CRM 2013, you no longer need to click or tap Save when you’re editing. It has the ability to save records automatically when you create new record or update existing record. While editing a record, CRM automatically saves the record every 30 seconds and when you close the record or go to other page, it gets automatically saved. By default, the system automatically saves any edited records every 30 seconds, or when you navigate to another record. This feature can also be disabled in the Settings, if anyone is not interested to use. Having an auto-save will significantly reduce clicks for power users who had to save and close ever record in previous versions.

4. Popup windows: Popup window functionality is also gone in Dynamics CRM 2013, as you all know In Dynamics CRM 2011, every link opens new window, sometimes it really frustrates, however in CRM 2013, you will clearly notice the absence of pop-up windows. Just like any website, everything happens inside one window, no more popup windows, when you click on any link navigation it replaces your current view with the new page. Dynamics CRM 2013 has Popup option, if you want particular window to be popup, you can click on Popup command. As shown in the below screenshot, a record opens up right within the same window—NOT a new window or tab. To navigate out of the record, you do not need to close the record, but rather you just select where you want to go on the top navigation. You can also use the back button to go to previous page.


5. Business Process flow: The concept of Business Processes was already introduced in the Rollup 12 of Dynamics CRM 2011, but it was limited to the Opportunity, Lead and Case entities. With the release of CRM 2013, organizations can now create processes for any entity. The business process flow guides users through the various phases of the sales and customer service processes. In addition, multiple processes can be created for the same record type and made available to users through security roles. The method of creating Processes in CRM is just like creating workflows or dialogs in CRM 2011. Now, you’ll see a process bar at the top of the screen for many of the record types. With these new business processes, each stage for working with a customer is clearly outlined. Steps to complete your work are easy to follow. Example below screenshot shows different stages of Lead like Qualify, Develop, Propose and Close.


6. Business Rules: Use business rules to apply form logic without writing JavaScript code. Business rules provide a simple declarative interface to implement and maintain fast changing, commonly used business rules that will be applied to main and quick create forms for both the web application and CRM for tablets.

7. Actions: Actions are a new feature in Microsoft Dynamics CRM 2013. Actions are a type of process that is run by using custom code that uses the Microsoft Dynamics CRM web services. If you are not a developer, or if you haven’t installed some solution that uses actions, you won’t be able to do anything with Actions in Microsoft Dynamics CRM 2013. You cannot call an action from another process except indirectly through a custom workflow activity or plug-in that contains the code to call the action. However, if you install a solution that uses Actions or if you work with a developer who can write code for one, you will see that Actions is a very powerful feature.Actions open a range of possibilities for developers and people who compose business logic. Before Actions, the primary way that developers could implement business processes was limited to plug-ins or custom workflows.

8. Quick Create Forms: Microsoft has introduced new feature in Dynamics CRM 2013, with this you can quickly capture key data points when you enter new records with Quick Create. On the right navigation bar, click or tap Create, and then select the type of record you want. Enter data for a few fields, or more if you have it. You can come back and fill in the gaps later when you have more time. Whenever the user clicks create on the top right of the screen, the form that is displayed is called the Quick Create form. This allows users to fill out a subset of fields needed to create the record. What’s neat about this is that it does not disturb the record you are on. The Quick Create allows you to multitask should you get a phone call or want to make a note while you are working on something else. Administrators can modify the Quick Create forms through the customizations area in CRM 2013. Below screenshot shows what type of records I can create quickly.

06-Quick Create

9. Quick View Forms: These forms allow you to show fields and lists in a form from a record that is related to the current record. For example, if you want to see details for the account record that is linked to an opportunity, you can add a quick view form that exists for the account entity and display the information in the opportunity form. This data can include any fields from the account entity as well as lists showing any records related to the account.

10. Social Pane:  It was already partially introduced in Rollup 12 of Dynamics CRM 2011 on the Lead, Opportunity, and Case, In CRM 2013, the social pane has been extended to most other types of records. Also included is the ability to add all types of activities in addition to the Task and Phone Call. It allows you to view and create social posts right on the record. You can see posts automatically generated, such as when the record is created. The social pane also allows the users to create notes and activities in a simplified form—making it much easier for users to see and record what is going on with this record. Using the buttons in the top right of the newly created activity, the user can expand the activity to see all the notes or open the activity to view, edit, or complete it.

11. Store Images: In Dynamics CRM 2013, Microsoft has introduced new functionality to associate images on entities. With this you can now store images on custom entities and some of the OOB like User and Contact. Below screenshot shows adding image on Contact, similarly we can do on User too.


12. Multi browser support: It was already introduced in Microsoft Dynamics CRM 2011 Update Rollup 12, however Dynamics CRM 2013 now fully supports browser compatibility for Firefox, Chrome, and Safari latest browsers.

13. Yammer Integration: Microsoft Dynamics CRM 2013 supports integration with Yammer. Using the Enterprise power of Yammer, your team can quickly comment on posts or start contextual conversations from within Microsoft Dynamics CRM(on-premises and online) or Yammer. Users can participate in social conversations directly within Microsoft Dynamics, through the Yammer web and desktop applications as well as apps running on Microsoft (Windows Phone), Apple (iOS) and Google (Android) mobile devices.

14. Skype integration:  Microsoft Dynamics CRM 2013 supports Skype integration, we can call or video conference with a CRM contact, prospect, or lead with a single click or tap. The productivity gain per call is small, but even these moments add up to greater efficiency. More importantly, tools like Skype integration enhance the user experience and affinity for using the system.

15. Bing maps Integration: Microsoft Dynamics CRM 2013 now comes with an out of the box integration with Bing Maps. This integration uses the address record of your account, lead, contact or custom entity to enable that location and render a Bing Map right on the CRM 2013 page. These maps have the typical Bing Maps functionality: you can see nearby landmarks, “grab” a map and move it around, and you can use your mouse’s scroll wheel to zoom in or out. Move your cursor over the location dot to display the address in a pop-up, and click on the map to get directions. In order to set this up, you will first need to get a Bing Maps API Key from here:

16. Windows 8 and iPad apps:  Microsoft Dynamics CRM 2013 mobile apps for iPad and Windows 8 tablets are available for online CRM. With access to your CRM solution on your Windows 8 tablet or iPad as well as your mobile phone, you have the tools you need to not only look smarter but also to be smarter. Microsoft Dynamics CRM for tablets helps you stay connected and productive wherever you are. Use your iPad or Windows 8 tablet to stay up to date with your customer info —even when you’re on the go. Arrive prepared for every appointment, and update your notes, tasks, contacts, accounts, and leads while the details are still fresh in your mind. Data is cached for offline viewing so you can still access key data if connectivity is lost.

17. Customizable Tooltips: The description text set for fields is now displayed as tooltips when you place your cursor over the labels for fields. Set the description text to provide guidance for people in your organization.

Microsoft Dynamics CRM 2011 Update Rollup 15 is available

Update Rollup 15 for Microsoft Dynamics CRM 2011 is now available. This update only contains bug fixes and no new functionality.

Check out here for complete details: Rollup 15 for Microsoft Dynamics CRM 2011 KB Article

Update Rollup 15 for Dynamics CRM 2011 provides the following improvements:

  • It includes a new feature that is scheduled to be delivered with Microsoft Dynamics CRM 2013. This feature moves the CRM client-specific workload into its own process so that it no longer shares memory with the Microsoft Office Outlook process. This feature is also known as Process Isolation.
  • It includes an upgrade to Microsoft SQL Server for Windows CE 4.0 for better memory management, better caching, and connection enhancements.
  • It updates the CRM for Outlook configuration files to make the CRM for Outlook SDF files compatible with SQL Server for Windows CE 4.0.
  • It materializes the Address Book Provider to reduce performance issues that  are caused by large address books.
  • It limits the amount of active open forms.
  • It provides a MAPI Lock time-out.
  • It hard codes a previous registry setting that prevented pinned views from pulling down information to local SQL CE cache. This new DisableMapiCaching  setting defaults to a value of 1. For more information about the behavior of this setting, see Slow Performance When Pinning Views in Microsoft Dynamics CRM
    Note: This value can be overridden by modifying the DisableMapiCaching  setting in the OrgDbOrgSettings tool if the critical update has been applied to the Dynamics CRM server. For more information, see OrgDBOrgSettings Tool for Microsoft Dynamics CRM 2011.

Update Rollup 15 resolves the following issues:

  • New organization setting to disable presence for Contacts.
  • Report Editor User Interface edit buttons for Categories, Related Record Types and Display have button displaying  “…” intended for editing the field options.
  • After the General and Administration tabs user focus moves to the address bar before returning to the form.
  • When a view list is opened, focus is not placed on the options and you cannot tab or use the arrow keys.
  • Dashboard Tab Ordering is incorrect.
  • Custom Entities are not available for Appointment lookup fields.
  • Menu not navigable with the keyboard when using screen reader.
  • Dynamics CRM 2011 SharePoint 2010 List Web Part Ignored When Using Metadata Managed Columns.
  • There are two tabs which are untitled frames on the new dashboard editing page when tabbing off the Name field.
  • Slow performance logging into the CRM for Outlook client when the organization has a large amount of teams. I.E. 5000 teams.
  • When qualifying a Lead using the Sales Refresh forms in Microsoft Dynamics CRM 2011, the contact information is missing from the newly created Opportunity form.
  • Performance issues when adding or removing a team  member due to the p_SystemUserBuEntityMapReinit stored procedure.
  • A blank page appears with an “Error on page” message in the Internet Explorer window when running a custom report on a custom  view.
  • Lookup view of the Site entity is not sorted correctly.
  • The CRM for Outlook client intermittently removes the due date from appointments.
  • Amounts of Opportunity Products are not calculated if  Opportunity Revenue is “User Provided”.
  • After upgrade to Update Rollup 12 you receive an error when trying to modify a workflow by deleting a condition from a Check Condition or Wait step. This error occurs if the Check Condition or Wait Condition contains a condition for a lookup field that was previously existing in the step. The error is as follows:This process cannot be created, updated or activated because it was created outside the Microsoft Dynamics CRM Web application. Your organization does not allow this type of workflow.
  • Users can select inactive queues under My Work | Queues when they should not appear here.
  • When you leverage retrieve multiple optimizations in  CRM 2011 and you request data from CRM using the 2007 endpoint those requests may result in errors if deletion state code attributes are  automatically included in the list of columns to be retrieved. These deletion state code attributes are added automatically for backward  compatibility to CRM 2007 endpoint requests.
  • Business required Currency field shows original value on mobile express when saving as blank.
  • SDK- FetchXmlToQueryExpressionRequest does not work after Update Rollup 11.
  • When creating a many-to-many relationship using both sides of the relationship as the same entity, the fields can be dragged and dropped to certain places on the navigation menu; however, they will continue to appear at the bottom.
  • After installing Update Rollup 12 there is an error using User Saved Views in Service Calendar. “Record is unavailable
    The requested record was not found or you do not have sufficient permissions to view it.”
  • The Service Activity page becomes very slow when using Internet Explorer 8 after Update Rollup 12.
  • When you run a report against all records on all pages for an entity shown in a sub area on an entity form, the report will not execute.
  • Goal entity’s Actual and In-Progress Associated Views  are incorrect.
  • Unable to create copies of emails in Microsoft Dynamics CRM when prompted: “This e-mail is already being tracked in Microsoft Dynamics CRM. Do you want to create a copy of this item in Microsoft Dynamics CRM?”
  • Loading order of web resource script files is not respected after Update Rollup 12.
  • Reports started rendering with incorrect results after COD applied for running reports on a view with a related entity.
  • Unable to select, copy, and paste lookup text after Update Rollup 12.
  • DOM elements are being leaked in FilterPopup base class.
  • DOMElement _elmNavigationInstructions in Ribbon causing memory leak.
  • _elmLarge DOM Element in Ribbon Toggle Button Control  not disposed causing memory leak.
  • Service Calendar not refreshing.
  • Records with a custom N:1 relationship to connections fail to merge.
  • Records with a custom N:1 relationship to connections fail to merge. Updates made in connection record will not be cascaded to reciprocal connection record.
  • DOMElement _elmScrollCurtain and _elmStoredFocus in Ribbon causing memory leak.
  • Recurring Meetings Start Time change synchronization issue from Outlook to CRM.
  • Many unnecessary spaces in the email body of Email Activities.
  • Notification is incorrectly shown for child dialogs.
  • Tasks do not appear in Activities view if User is  assigned to team in Child BU.
  • CRM Mobile Express saving numeric/currency values with incorrect CrmCultureInfo.
  • POA table not cleaned up after deleting related Activity types.
  • Jscript logic issue on Phone Call Activity.
  • CRM 2011 UR11 Critical Update Causes Dashboard Views Not to Refresh.
  • Error on Dynamic export when Advanced Find linked entity filtered on Date field.
  • Getting error “Table alias ‘alias name’ is not  unique” when opening certain views.
  • Unable to save a check condition or wait condition step  if lookup condition exists on step.
  • Custom duration fields are defaulted to 1 minute after Update Rollup 12.
  • “Contains” and “Does Not Contain”  workflow data filters are not available post Update Rollup 12.
  • Post Update Rollup 12, the SetFocus called after form  is enabled for user interaction cancels navigation.
  • Set regarding broken when using CRM 4.0 client with CRM  2011 Update Rollup 12 server.
  • Grid View Selector DOM Elements are being leaked.
  • CRM 2011 Outlook Client goes to “Online”  state automatically when in offline mode.
  • Post Update Rollup 12 Offline Synchronization Filters  resets the Outlook Synchronization Filters unexpectedly.
  • Records with a custom N:1 relationship to connections  fail to merge.
  • Updates made in connection record will not be cascaded  to reciprocal connection record.
  • Link-entity filter criteria not shown in UI when a link-entity column is added first.
  • When you use the CRM client for Outlook 32-bit, you may notice high memory usage and once memory increases to much Outlook may exit unexpectedly.
  • CRM client for Outlook exits unexpectedly after navigating to CRM folders and opening CRM records. (form Isolation)
  • Scheduling Alert warning missing post Update Rollup 12.
  • DOM element event handlers are not being removed in all places causing memory leaks.
  • Lync presence icon absent in Grid View/Form controls.
  • Appointment owner changes to an attendee that synchronizes the appointment first.
  • Group Policy causing white screen for lookup in Outlook Client.
  • Sending Mail Merge To More Than 3000 Recipients Causes Errors. “An error has occurred in Microsoft Dynamics CRM Mail Merge.”
  • Server is queried for Duplicate detection settings on every record when Outlook goes Online.
  • KBs word wrap getting ignored when a / is at end of line.
  • If field is used twice on a form, merge fails if field is null in the child.
  • QualifyMember message not available in the plugin registration.
  • DOMElements being leaked out of Ribbon Group.
  • Ribbon Tooltips Are Leaking DOM Elements.
  • Email Router: Attachment file name of incoming emails is coming with GUID appended in it.
  • Import managed solution fails when contains custom activity attribute changes.
  • Duplicate detection return no records when tracking contact from Outlook.
  • IE10: Notification cannot display while first click “Export” button on “Export Data to Excel” wizard in Outlook client.
  • Deleting pinned views can corrupt TabOrderXml causing rending issues in Outlook.
  • Exporting Application ribbon contains duplicate value in XML.
  • Exporting Reports Opens Window Outside of CRM client for Outlook.
  • Report page cannot work when the report is created with existing file on outlook client.
  • UR14 Outlook Client fails to synchronize contacts after reconfigure.
  • Outlook task removes due date intermittently.
  • After upgrade to UR12 you receive an error when trying to modify a workflow by deleting a condition from a Check Condition or  Wait step.
  • Applying Update Rollup 14 for Microsoft Dynamics CRM      2011 causes several database updates to not be applied if the system had  Update Rollup 13 applied previously.
  • After installing the Update Rollup 11 Critical Update for the Microsoft Dynamics CRM 2011 Client For Outlook, grids are no longer being refreshed.
  • SetStateRequest for KB Article should need prvWriteArticle privilege.
  • Outlook crashes in this scenario: Install UR6 -> Patch to UR11 -> Patch to UR11 + -> Uninstall Patch UR11+
  • Outlook Client failing to install patch when machine name/ domain are longer than 125 characters with Error code:1638
  • Report page does not work when the report is created with existing file on outlook client.
  • Set Regarding not returning record after applying  Update Rollup 11 Critical Update.
  • WebFormsHost process does not allow to open forms once recycling of processes is complete in Terminal Service scenario.
  • Publishing CRM report failed as parent report already links to another report with same name.

Dynamics CRM 2011 SDK version 5.0.17 available

Check out new Dynamics CRM 2011 SDK version 5.0.17 available in MSDN web site.

Check out What’s changing in the Next Major Release?

Download Microsoft Dynamics CRM 2011 SDK 5.0.17 from following MSDN page.

Set tracing/logging in Dynamics CRM 2011 E-mail Router

Turn on tracing: Follow below steps to enable E-mail router logging,

  1. Login to CRM E-mail Router server
  2. In Windows Explorer, locate the Microsoft.Crm.Tools.EmailAgent.xml file. By default, this file is located in the following folder: SystemDrive:\Program Files\Microsoft CRM Email\Service
  3. This is the configuration file for the Email router , Open the file by using Notepad or another text-editing program.
  4. In the file, examine the <SystemConfiguration> node, and then scroll down the text toward the end of the file to find the following statement: <LogLevel>1</LogLevel>By default, this value is set to 1. Modify this statement so that it reads as follows: <LogLevel>3</LogLevel>, If you want to save logs into text file, you can specify the log file location as <LogFile> c:\emailrouterlog.txt </LogFile>  where you want it to put the log file. If you don’t mention log file location, all logs will be saved into windows event logs under MSCRMEmailLog. It is in this Event Viewer log view that the events appear.
  5. Save the file.
  6. Restart the E-mail Router Service.

When the LogLevel is set to 3 and a logfile location is specified, all router actions will be written to a log file in the specified location. If we don’t specify the log file location, all router actions will be logged in windows event logs. You will find a new Event Viewer log view that is named MSCRMEmailLog.

The router log will give you a lot of details, including granular detail on each incoming and outgoing email that it processes. Open the log file from the location specified,  or open the windows event logs and review the captured error messages. You can find the problem with a specific email by searching the log file for the subject of the email.

Here is the sample Microsoft.Crm.Tools.EmailAgent.xml with logging options.

<?xml version="1.0" encoding="utf-8"?>
   <LogFile> c:\emailrouterlog.txt </LogFile>

Turn off tracing: While email router logs are helpful while troubleshooting an error with the router, they capture large volumes of detail while enabled, so I would suggest they should be turned off when you are done otherwise it causes disk space issues in the server if it is enabled for long time, seriously it caused us in QA when we forgot to turn off in QA.

Improve AsyncoperationBase table performance in Dynamics CRM 2011

For every async operation happens in Dynamics CRM 2011, a record gets saved in Asyncoperationbase table. So there is a possibility to grow this table very fast. To control growing this table size and save disk space, need to make sure following settings are done in Workflows and Plugins.

Workflows: If you open your workflow definition and go to the Administration tab, you will find the “Workflow Job Retention” option, under this you will see option to check “Automatically delete completed workflow jobs (to save disk space)”, If you click on the checkbox, it means that every time this workflow job is executed AND if it succeeds, the system job will be deleted. Selecting that option is perfect for processes that you don’t need to audit and you just need the logic to execute. However, if you need to keep a history of which workflows have executed on which records you should not select this option to delete the workflow job on completion (Note that this option is disabled by default).


Plugins:  The similar option is also available for asynchronous plugin steps as well. When any asynchronous operation completes, a System Job entity is created to record the completion status. You can view these system jobs in the Web application by selecting Settings, and then click System Job. Check this option if you want plug-in related system jobs automatically deleted when the status is successful. (Note that this option is disabled by default for all asynchronous plugin steps).


In case If your AsyncOperationBase table becomes too large in Microsoft Dynamics CRM, you can follow Microsoft KB article to reduce the size.