Detect enhanced service capabilities available with product updates

Dynamics CRM 2013

Applies To: Dynamics CRM 2013

Microsoft Dynamics CRM 2013 Service Pack 1 (SP1) and the Microsoft Dynamics CRM Online Spring ‘14 release include enhanced customer service capabilities. Every new organization created after this release will have these capabilities enabled. Several of these capabilities use new entities described in Enhanced service entities. For an overview of these new capabilities, see What's new in this release.

Because these enhanced service capabilities might disrupt the experience for organizations using the pre-existing service capabilities, any organizations who upgrade to Microsoft Dynamics CRM 2013 Service Pack 1 (SP1) or Microsoft Dynamics CRM Online Spring ‘14 must choose to install product updates before the enhanced service capabilities will be enabled. More information:Implementation Guide Topic: Install Product Updates.

When an organization is upgraded to Microsoft Dynamics CRM 2013 Service Pack 1 (SP1) or Microsoft Dynamics CRM Online Spring ‘14, all the new entity metadata to support these features are created. However, the application user interface isn’t updated to provide access to these entities, so most users won’t be able to see them. People who browse the metadata will note these new entities, but the descriptions for these entities will be “For internal use only” until product updates to enable them are applied. Checking for the presence of these entities is not a valid way to determine if the product updates are applied.

Product updates are applied through installing a special system solution. This solution isn’t displayed in the user interface. To detect whether the enhanced service capabilities are enabled you must query the solutions entity for a solution named “ServiceEnhancements610”.


In the next major release of Microsoft Dynamics CRM Online and Microsoft Dynamics CRM (on-premises), this solution won’t be present; all the capabilities found in it will be part of the application.

The following queries define conditions that will return a record when product updates for these customer service enhancements are enabled:

var query = from s in SvcContext.SolutionSet
where s.UniqueName.Equals("ServiceEnhancements610")
select new {s.UniqueName};


Organization URL/XRMServices/2011/OrganizationData.svc/SolutionSet?$select=UniqueName&$filter=UniqueName eq 'ServiceEnhancements610'
QueryByAttribute ServiceEnhancementsSolutionQuery = new QueryByAttribute("solution"){
ColumnSet = new ColumnSet("uniquename")};
ServiceEnhancementsSolutionQuery.AddAttributeValue("uniquename", "ServiceEnhancements610");
QueryExpression ServiceEnhancementsSolutionQuery = new QueryExpression("solution"){
 ColumnSet = new ColumnSet("uniquename")};
 new ConditionExpression(
  new String[] { "ServiceEnhancements610" }
String FetchString = @"
 <fetch distinct='false' no-lock='false' mapping='logical'>
   <entity name='solution'>
     <attribute name='uniquename' />
     <filter type='and'>
       <condition attribute='uniquename' operator='eq' value='ServiceEnhancements610' />
FetchExpression ServiceEnhancementsSolutionQuery = new FetchExpression(FetchString);

All new organizations will have the product updates with the enhanced service capabilities installed by default. These updates can’t be removed. For development and testing it’s valuable to have an environment that represents an organization that has upgraded to Microsoft Dynamics CRM 2013 Service Pack 1 (SP1) but hasn’t installed the product updates. With an on-premises deployment you can modify settings on the server so that new organizations created won’t have products updates installed by default.

Use the following PowerShell script on your server to change the OptinProvisioningEnabled setting to 0.

        add-pssnapin Microsoft.Crm.Powershell 
$itemSetting = new-object 'System.Collections.Generic.KeyValuePair[String,Object]'("OptinProvisioningEnabled",0) 
$configEntity = New-Object "Microsoft.Xrm.Sdk.Deployment.ConfigurationEntity" 
$configEntity.Attributes = New-Object "Microsoft.Xrm.Sdk.Deployment.AttributeCollection" 
Set-CrmAdvancedSetting -Entity $configEntity

If you need to change this back, modify the script to change the setting back to 1.

After you change this value, you must then use the Microsoft Dynamics CRM Deployment Manager application on the server to generate a new organization. A new organization can also be created using PowerShell. More information:Implementation Guide topic: Create an organization (PowerShell).