A Guide to Creating Custom Plugins for Increased Productivity into MS CRM

A Guide to Creating Custom Plugins for Increased Productivity into MS CRM

Microsoft Dynamics CRM is a powerful customer relationship management system that allows businesses to manage their interactions with customers and prospects in a centralized and efficient manner. However, the system’s capabilities are not always sufficient to meet the specific needs of a particular organization. This is where plugins come in.

A plugin in Microsoft Dynamics CRM is a custom code that can be integrated with the system to perform specific actions when certain events occur. These events can be triggered by a variety of actions, such as when a record is created, updated, or deleted. By creating a plugin, businesses can add custom functionality to their CRM system that is tailored to their unique needs.

For example, let’s say that a retail company wants to automatically send a thank-you email to customers who make a purchase through its website. The company could create a plugin using C# and the Dynamics CRM SDK (Software Development Kit) that triggers an email to be sent to the customer when a new order is created in the CRM system.

Here’s an example of what the plugin code might look like:

using System;

using Microsoft.Xrm.Sdk;

using Microsoft.Xrm.Sdk.Client;

using System.ServiceModel.Description;

namespace MyPlugins


    public class SendThankYouEmail : IPlugin


        public void Execute(IServiceProvider serviceProvider)


            // Obtain the execution context from the service provider.

            IPluginExecutionContext context = (IPluginExecutionContext)


            // Obtain the organization service reference.

            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

            // The InputParameters collection contains all the data passed in the message request.

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

                context.InputParameters["Target"] is Entity.Order)


                // Obtain the target entity from the input parameters.

                Entity.Order order = (Entities.Order)context.InputParameters["Target"];

                string customerEmail = order.CustomerEmail;

                // Send the thank-you email to the customer

                // Code to send email





This plugin would be registered in the CRM system, and would be executed when a new Order is created in the system. It would access the customer’s email address from the order entity and use it to send the email. This plugin could be executed asynchronously so it won’t slow down the order process.

This is just one example of how a plugin can be used to add custom functionality to a CRM system.

Other examples include:

  • A plugin that automatically updates a contact’s information in the CRM system when they make a purchase on the company’s website.
  • A plugin that sends a notification to a sales representative when a lead’s status changes to “qualified”.
  • A plugin that calculates a discount for a customer based on their purchase history and applies it to an invoice.

Please note that this is just an example code, it may need some adjustment to work on your specific CRM. Also, this is a simplified example of how to send an email, and in reality, you may need to include more code to handle email server configurations, attachments, or any other additional email features you may want.

2 thoughts on “A Guide to Creating Custom Plugins for Increased Productivity into MS CRM

Leave a Reply

Your email address will not be published. Required fields are marked *