Nitin Dhawan CRM Discussion


Introduction to Microsoft Dynamics CRM 2011 Plugins

Posted by Nitin Dhawan on July 4, 2012

Whenever we need to extend the OOB functionality of Microsoft Dynamics CRM 2011. We can write custom plugins which can run before an event performs it operations and after an event completes its operations. It can be executed synchronously or asynchronously from managed queue. With the help, can perform data validations; integrate with other legacy applications, auto number generations and writing complex business logic. We can write custom plugin in Microsoft .net 4.0 framework writing code in Microsoft C# or VB .net.
We can register the Plugin or custom workflow activity using Plugin Registration tool. It can be registered in online and offline mode [Microsoft Dynamics CRM for Outlook with offline access client]. However, registering custom workflow activities with Microsoft Dynamics CRM Online is not supported using the registration tool.
The Plug-in Registration tool is provided as a source code sample in the Tools folder of the Microsoft Dynamics CRM SDK download. Review the instructions provided in the Tools/Plugin Registration/Readme.docx file for more information about the tool and instructions on how to build the tool.
The Microsoft Dynamics CRM 2011 event processing subsystem executes plug-ins based on a message pipeline execution model. A user action or an SDK method call or other application results in a message being sent to the organization Web service contains business entity and core operation information. The message is passed through the event execution pipeline where it can be read or modified by the platform core operation and any registered plug-ins.
The below figure depicts the overall architecture of the Microsoft Dynamics CRM 2011 platform with respect to both synchronous and asynchronous event processing:
The plugins registered synchronously will be executed immediately whereas plugins registered asynchronous will be queued with asynchronous service and executed later. The event pipeline is divided into 5 stages are as follows:
Stage# Stage Stage Name Description
10 Pre Event Pre Validation – It execute before the main system operation.
– It may execute outside the database transaction.
– The pre-validation stage occurs prior to security checks being performed to verify the calling or logged on user has the correct permissions to perform the intended operation.
20 Pre Event Pre Operation – It execute before the main system operation.
– It could be executed in the database transaction.
30 Platform Core Operation Main Operation – This stage used for internal use only.
– It handles main operation such as create, update, delete etc.
– No custom plugins can be registered in this stage.
40 Post Event Post Operation – This Stage execute after the main operation.
– It could be executed in the database transaction
50 Post Event Post Operation [Deprecated] – This Stage execute after the main operation.
– This stage only supports Microsoft Dynamics CRM 4.0 plugins.
The Microsoft Dynamics CRM 2011 execution pipeline is organization specific. Server can host multiple organizations. There will be virtual pipeline for every organization. This means a plugin must be registered with each organization execution where it has to execute. We can register plugin in sandbox or outside sandbox. The difference if plugin registered within sandbox [known as partial trust] it will not have access to external endpoints other case if plugin registered outside the sandbox [known as full trust] it will support on-premise and Internet facing deployments. Whereas for online deployment plugin must be registered in sandbox only.

Leave a Reply

Please log in using one of these methods to post your comment: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: