Joining a New CRM Server to an Upgraded CRM Deployment

Sometimes we need to scale out a CRM 2015 deployment that is having the latest update installed, when you try to join a new server you are faced with the below error in the installer checks page:

The Product key is not compatible with installed version of Microsoft Dynamics CRM.

I believe this is a bug in the installer so to workaround it add the IgnoreChecks registry key to the computer that is running Microsoft Dynamics CRM so the installation can proceed when an error is shown in the Environmental Diagnostic Wizard (EDW):

Click Start, click Run, type regedit, and then click OK.

In the registry, locate the following subkey: 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM

Right-click MSCRM, point to New, click DWORD Value, and then type IgnoreChecks.

Double-click IgnoreChecks, and then type 1 in the Value data field.

Note: After including this registry value you will get the same error message in installation wizard but this time the Next> button will be enabled in Installation Wizard to complete this installation so just proceed and install the CRM latest updates at a later step.

Moving Site Collection to Different Web Application – SharePoint

We created a site collection for saving CRM documents on Intranet web application, we wanted to move that site collection to a new web application to avoid having a single point of failure for the 2 site collections and also allow the CRM administrators to control the maximum attachment size for files stored on SharePoint.

We achieved this by running the below 2 PowerShell cmdlets:

Backup-SPSite -Identity “http://intranet.domain.com/sites/CRMDocs” -Path “C:\CRMDocumentsSiteCollection.bak”

Restore-SPSite -Identity “http://intranet.domain.com:8888/sites/CRMDocs” -Path “C:\CRMDocumentsSiteCollection.bak”

The site collection will be created if not already existing, and if we want to override an already existing site collection on the specified URL then we will need to add the -force parameter.

Then we re-configured the documents management settings in CRM to point to the new site collection URL, the good thing about CRM is that it saves the document locations relatively, so such a change in the base URL only requires updating the SharePoint site URL and everything works fine.

Please note that in case you faced a SQL timeout while re-configuring the document management settings in CRM due to having large number of documents then you will need to increase the CRM SQL timeouts on the front end servers.

CRM 2015 SLA New Features – Differences

CRM 2015 SLA is now having 2 main types:

  • Standard SLA
  • Enahanced SLA

Below is a comparison between the 2 types:

Standard SLA Enhanced SLA
Populates First Response by and/or Resolve by values in the case entity. Uses a new entity (SLA KPI Instance) to store this data.
Failure time stamped on case entity attributes. Failure/Warning times stamped on related SLA KPI Instance record displayed via a sub grid in the case form
Timer control based on case entity fields; can be directly added to case form. Timer control based on related SLA KPI Instance fields; can be added using Quick From
SLA Pause/Resume is not available SLA Pause/Resume while SLA Time calculation is automatically paused when a case is put on Hold, also the amount of time on hold is also tracked.

There is system setting that allows pausing cases SLA automatically for certain case status reasons.

The ability to pause can be disabled/enabled for each SLA.

Success actions are not available. Trigger actions when an SLA is successful

Important Considerations:

  • Cannot change SLA type once created.
  • Case SLA cannot be sorted by Enhanced SLA fields as they are now on another entity.
  • Queue Item views cannot display Enhanced SLA fields.

CRM & SQL Server BizTalk Integration

We had a project in which there was a requirement for an integration between Microsoft SQL server and Microsoft Dynamics CRM 2011 using BizTalk 2013 R2, the solution in brief was Listening on SQL server using the WCF-Custom Adapter then using the orchestration to do data mapping then send the new transformed message to a custom WCF service that handles inserting the message as a new case in CRM, below are the hard learned lessons for such integration:

  • When receiving message from SQL server with a specific schema, make sure the SQL statement is returning xml results matching the same schema defined in the orchestration or the mapping process will not be able of transforming the message to the target schema.
  • When constructing a message using message assignment in an orchestration, check the message in the constructed messages property in the construct shape to resolve the build time error in case trying to assign value to a message not constructed from a receive shape.
  • When configuring the WCF-Custom SQL binding connection, if there is only one default instance on the SQL server then you need to use the below format with double slash between the server name and the database name for the URI connection string: mssql://ServerName//DatabaseName
  • When using the WCf-Custom adapter, there is an important property named UseAmbientTransaction which is defaulted to true, this property specifies whether the adapter will use DTC transactions in the communication with SQL server or use normal queries that doesn’t require DTC, you need to make sure that DTC is enabled on SQL server and is working properly by using a tool named DTCPing, sometimes the adapter will not work properly while not throwing any errors on the BizTalk server due to DTC issues like DNS name resolution that is blocking the transaction only on the SQL server side.

The experience with this integration was fruitful, interesting, and leveraged how BizTalk can be used to build robust and powerful integration solutions.

Microsoft Dynamics CRM 2013 Best Practices Analyzer

I found this nice tool while searching for Dynamics CRM 2013 best practices.

The Microsoft Dynamics CRM 2013 Best Practices Analyzer is a diagnostic tool that performs the following functions:

  • Gathers information about the CRM 2013 server roles that are installed on that server.
  • Determines if the configurations are set according to the recommended best practices.
  • Reports on all configurations, indicating settings that differ from recommendations.
  • Indicates potential problems in the CRM 2013 features installed.
  • Recommends solutions to potential problems.

http://www.microsoft.com/en-us/download/details.aspx?id=41156&751be11f-ede8-5a0c-058c-2ee190a24fa6=True

You can find here also best development practices for Dyanmics CRM 2013

http://msdn.microsoft.com/en-us/library/gg509027%28v=crm.6%29.aspx

Dependent Dlls Location for Dynamics CRM Plugins & Workflows

Some developers take the easy approach and add the plugin or custom workflow activity dependent DLLs in the server GAC. This approach for some cases may not be valid specially that it requires administrative rights on the server.

Others use ILMerge to merge the plugin Dll with the dependent Dlls which causes an update for the whole Dll in case you are updating a single Dll.

I prefer another approach which is putting the dependent Dlls on the server bin folder which differs in case of WFE server than that for a back end asynchronous server.

For the front end server you can place the Dlls in that path:

C:\Program Files\Microsoft Dynamics CRM\CRMWeb\bin

On the back end server you can place the Dlls in that path:

C:\Program Files\Microsoft Dynamics CRM\Server\bin

Please note that if the Dlls are already in the GAC then for some cases the version in the GAC will be used, I suggested having these Dlls in only one place.

CRM Maintenance Job Editor

One day we faced complete CRM outage, the only error we noticed in the event viewer was by the deletion service, errors due to CRM maintenance services that causes such outage requires re-scheduling these services to run away from the core business hours, in our case it was running at 7 AM morning, 1 hour before the start of the core business hours for our client.

You can find on CodePlex this great tool that allows you to modify the scheduled run time for the different CRM back-end services as well as check their last run results

https://crmjobeditor.codeplex.com/releases/view/117948