Darren Liu's Blog

Archive for the ‘CRM’ Category

CRM Lookup error with Google Chrome 38–Fixed

leave a comment »

I haven’t get a chance to blog for a while and I need to pick it backup… Some of you may seen a lookup error with Chrome when Google released version 38.0.2125.101, as indicated on this blog article. Everyone is expecting Microsoft to solve this Google issue. Smile But I think Google realized that many other applications got impacted and they fixed their own issue, as indicated on this bug in their bug system.  So to resolve the CRM lookup error, you just need to update your Chrome browser version 38.0.2125.111. As always, please test other functionalities before doing a browser upgrade.

I hope this helps and have a great CRM day!

Written by darrenliu

11/04/2014 at 6:05 pm

Posted in Chrome, CRM, CRM 2013

Tagged with ,

Learned something new on IIS Compression

leave a comment »

Dynamics CRM is a web app, therefore it leverages IIS. Usually IIS compression is enabled by default since we would like to reduce bandwidth usage and also reduce the page load times. The .aspx files sent by the server to the browser is highly compressed by algorithms such as gzip. IIS 7+ offers the ability to cache not only compressed static files, it also compressed dynamic files. Modern browsers have the ability to decompress the incoming files.

IIS Compression uses the CPU to compress the files, I’ve learned that compression is automatically switch OFF when CPU usage is above 90% for Dynamic file and 100% for Static files. It will automatically switch back ON when the CPU drops back to 50% for both Dynamic and Static files. You can modify these limits in the applicationHost.config file which is normally in the C:\Windows\System32\inetsrv\config folder.

I want to bring this to everyone’s attention because usually during CRM performance testing, we often push the server CPUs to their limits. Please look at your CPU usage on your front end servers to make sure that they don’t hit the IIS compression limits and you will have a more accurate performance test.

Written by darrenliu

03/26/2014 at 4:10 am

Manually Apply CRM Update Rollup to Single Tenant

leave a comment »

In an enterprise CRM project, you might run into a large number of tenants in an environment since there are multiple teams working on the project. Not all of the teams want to have the patch apply to their tenant due to many reasons… My customer asked me if there’s a way for them to apply the CRM Update Rollup to a single tenant instead of all tenants in an environment.  I am thinking there’s got to be a way since CRM Online applies the patches at the tenant level, so I reach out to my colleagues in PG and Premier and sure there’s a way to do it. Smile

By default, when you install a CRM Update Rollup, it will automatically applies the update to all of the tenants (include database updates). If you want to disable the automatic database update, please execute the following PowerShell script.

add-pssnapin Microsoft.Crm.Powershell 

$itemSetting = new-object 'System.Collections.Generic.KeyValuePair[String,Object]'("AutomaticallyInstallDatabaseUpdates",0) 

$configEntity = New-Object "Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity" 


$configEntity.Attributes = New-Object "Microsoft.Xrm.Sdk.Deployment.AttributeCollection" 


Set-CrmAdvancedSetting -Entity $configEntity

After the script is executed, you may go to Deployment Manager and apply the patch to the DB at the tenant level.  Just want to clarify that you are still installing the update rollup bits to the servers, and the above script will disable the updates to the CRM databases. All tenants will get the new UR bits, there are no ways around it, but the bits are backward compatible so they will work with older database schema.

I hope this will help you in your CRM project!

Written by darrenliu

03/26/2014 at 3:48 am

How to change organization URL in CRM 2013 MoCA client?

leave a comment »

At this moment, The only way to change the org URL is to uninstall and reinstall the MoCA app. Happy to be corrected. Smile

Written by darrenliu

10/15/2013 at 3:57 pm

Posted in CRM, CRM 2013

Tagged with ,

Determine the # of Outlook Client Users

leave a comment »

I got another interesting question from my customer today.  How many users configured the CRM Outlook client?  Thanks to my PFE friend, KG, he provided us the SQL query to get that information. 

To get the # of subscription clients in CRM, you may execute the query against the [ORGNAME]_MSCRM database below.

select distinct MachineName from SubscriptionClients

Written by darrenliu

10/01/2013 at 4:10 pm

Posted in CRM, Outlook Client

Tagged with ,

Change CRM Organization Display Name

leave a comment »

Customer asked me to see if they can change their CRM Organization Display Name. I didn’t pay attention to these small details in CRM therefore I don’t know. But I did some research and evaluated the impact of changing the name. So it’s possible to change the organization display name and the impact is minor since we are not changing the schema name of the organization.

To change the Display Name of a CRM organization, you may follow the steps below.

  1. Logon to the CRM Application Server.
  2. Navigate to Start | Microsoft Dynamics CRM 2011 | Deployment Manager.
  3. Click on Organizations on the left navigation to display the organizations in the environment.
  4. Select the organization that you want to change the Display Name.
  5. Click Disable from the Action Pane on the right.
  6. Click Edit Organization from the Action Pane on the right.
  7. On the Edit Organization Wizard screen. enter the desired organization name in the Display Name textbox, then click Next to move to the confirmation screen.
  8. Click Next on the System Checks screen.
  9. Click Apply on the Ready to Apply Changes screen.
  10. Click Finish to close the Edit Organization Wizard.
  11. After the update is completed, click Enable on the Action Pane to re-enable the organization.

Written by darrenliu

09/21/2013 at 3:47 pm

Posted in CRM

Tagged with ,

Is WIF required for CRM 2011?

leave a comment »

The customer asked me today if WIF is really required for CRM 2011 On-Premise deployment without using Claims-based authentication. Hmm… It’s a good question, I know it’s required for CRM 2011 but I don’t really know the reason behind why WIF is required for a pure AD on-premise deployment.

So I did some research and pinged some of my Microsoft friends in the CRM product team. Found out that the reason that WIF is required for CRM is because it is used for claims-based authentication and it’s built into the CRM SDK, and it’s statically linked to the CRM binaries and there’s no easy way to separate them at this moment, therefore it’s required for all deployments.

I’ve learned something new today! 🙂

Written by darrenliu

05/02/2013 at 12:12 am

Posted in Authentication, CRM, SDK

Tagged with ,

CRM 2011 – IE 7,8 9 Hangs

leave a comment »

I ran into a problem today that CRM IE7, 8, 9 hangs after 30 minutes because I have many XmlHttpRequest calls on the form.  I found a blog on MSDN that helped me out and I believe all of the us as a CRM developer should pay attention to.  The title of the blog article is Why You Should Use XMLHttpRequest Asynchronously, it’s a good read.

Written by darrenliu

08/27/2012 at 3:28 pm

CRM 2011 Performance Tuning Lesson Learned

with 2 comments

Oh well, when it comes to tuning the CRM 2011 application, there are many things we can do.  The project that I am working on for the past two years is finally finished with performance tuning, I like to write down a few things that I learned from the tuning exercise just in case that I need to do it in the future.  Thanks to my friend, Grant Geiszler for sharing some of the information with me.

  1. Infrastructure
    • Reduce network latency, make sure the network routings to the servers are correct.
    • Make sure the SPNs are setup correct between servers and the different service accounts in used.
    • Make sure the IIS AppPool Recycle time is adjusted.
    • Make sure the load balancer are setup correctly using the correct profile.
      • If using F5 load balancer, please review the Deployment Guide provided by F5. The deployment guide is written for Microsoft Dynamics CRM 4.0 however most of the configuration applies to CRM 2011 as well. The profile that we used has the following settings.
        ltm profile tcp pr_irpc_tcp_120min {
        ack-on-push enabled
        bandwidth-delay disabled
        defaults-from tcp
        idle-timeout 7200
        nagle disabled
        proxy-buffer-high 131072
        proxy-buffer-low 98304
        receive-window-size 65535
        send-buffer-size 65535
        slow-start disabled

  2. Customization/Coding Optimization
    • Reduce the # of REST/SOAP calls, consolidate the client-side calls into a server side plug-in.
    • If you are using the REST endpoint to retrieve related information, only return the fields that are needed.  If returning all of the fields from an entity, it’ll drag down the performance because the return page-size.  We have entities storing a lot of data, the return page-size was up to 5MB, after the optimization and only returning the fields that we need, the page-size reduced to KB.
    • Avoid registering too many synchronous plug-ins, try to convert some of the plug-ins to asynchronous when possible.
  3. CRM Optimization
    • Enable authPersistNonNTLM.
    • Enable WCF compression.
    • Turn off IM Presence Functionality if not needed by updating the IsPresenceEnabled field to false in the OrganizationBase table.
    • Add EnableRetrieveMultipleOptimization (value 2) to the registry under HKLM\Software\Microsoft\MSCRM.
    • Add MaxUserPort (value 65534) and TcpTimedWaitDelay (value 30) to the registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.
    • Monitor the AysncOperationBase table.  Schedule a periodic job to clean up the AsyncOperationBase table.  More information on removing the records from the AyncOperationBase table and to schedule a job to clean up the table, please refer to KB 968520.
    • Reschedule the CRM 2011 Maintenance Jobs. By default CRM 2011 creates 6 maintenance jobs which are scheduled to run daily.  Depends on when the CRM Organization is created, the jobs may run when users are in the system.  You may download the CRM 2011 Maintenance Job Editor Tool to reschedule the jobs.  More information on the tool and how to use the tool, the premier team wrote a post on their blog.
  4. SQL 2008 Optimization
    • Set degree of parallelism from 0 to 1. This disables the parallel execution of the simultaneous operations on the SQL server.
    • Turn Read Committed Snapshot On.
    • Configure the TempDB Drive using the SQL best practice.
    • Validate the Max/Min Memory Configuration.
    • Validate Processor Configuration is set to use Normal mode and not fiber mode.

Anyway, I am sure there are many more optimization that you can do to the Outlook client, IE and the client OS. I hope the above tips can give you a head start.

Written by darrenliu

06/13/2012 at 11:58 pm

Posted in CRM, Performance

Tagged with , , , ,

Installing CRM Using SQL Server DNS Alias

leave a comment »

In most enterprise Dynamics CRM project, the customer would like to install CRM using the SQL server DNS alias instead of the server name. One of the reasons for doing it is because they need to support their Disaster Recovery (DR) strategy. 

CRM does not allow you to use the alias because the Environment Diagnosis Wizard (EDW) did not have the ability to check for a SQL DNS alias, therefore it does not allow you to move to the next step even though it’s supported.

You have two options to solve this problem.

  • Option #1: Install CRM using the actual SQL server name.  After the installation is completed, modify the database connection string in the MSCRM registry and the MSCRM_CONFIG database.
  • Option #2: Add the IgnoreChecks key to the MSCRM ([HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM]) registry to by pass the EDW check to continue with the installation.  Make sure that you setup the DWORD value to “1”. If you are going with this option, please make sure all of your other checks passed before adding the IgnoreChecks key.

Hope this helps!

Written by darrenliu

04/10/2012 at 1:55 am

Posted in CRM, Installation, SQL

Tagged with , , ,