5 Syntax Changes in Dynamics CRM 2011 Plugins

Gayan Perera, 04 October 2010

There are number of changes between Dynamics CRM 2011 SDK and CRM 4 SDK. Let’s take a look at what has changed between plugins.

5 Syntax Changes in Dynamics CRM 2011 Plugins *

1. The IPlugin now resides in Microsoft.Xrm.Sdk namespace instead of Microsoft.Crm.Sdk

public class ClassName : Microsoft.Crm.Sdk.IPlugin

public class ClassName : Microsoft.Xrm.Sdk.IPlugin

2. The Execute method signature of the IPlugin interface has changed, it now expects an IServiceProvider instead of the IPluginExecutionContext.

public void Execute(IPluginExecutionContext context)

public void Execute(IServiceProvider serviceProvider)

3. To get a reference to the IPluginExecutionContext you now need to call the GetService method of the IServiceProvider interface.

public void Execute(IPluginExecutionContext context)

Microsoft.Xrm.Sdk.IPluginExecutionContext context =(Microsoft.Xrm.Sdk.IPluginExecutionContext)

    serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));

4. ICrmService has been changed to IOrganisationService.

ICrmService sdk = context.CreateCrmService(true);

IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory

IOrganizationService sdk = factory.CreateOrganizationService(context.UserId);

5. Dynamic Entity has been changed to Entity.

• Properties property of DynamicEntity no longer exists
• Getting and Setting values no longer use *Property classes,

Eg: no more KeyProperty, StringProperty…etc, simply do int value = (int)entity[“schema_name”];

if (context.InputParameters.Properties.Contains("Target") &&

context.InputParameters.Properties["Target"is DynamicEntity)

if (context.InputParameters.Contains("Target") &&

context.InputParameters["Target"is Entity)

*Image from http://www.sabre-roads.org.uk/wiki/index.php?title=File:Change_carr.png