Status Change Message Plugin Call in Dynamics 365
When you want to call a Plugin on Status change of a record in Dynamic 365 CE then you should use EntityMoniker. Check the code below and update it accordingly and use in your project.
IMPORTANT NOTE
While registering message in Plugin Registration tool, you have to add SetState and SetStateDynamicEntity messages .
using Microsoft.Xrm.Sdk;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
namespace ValidateShift
{
public class checkshift:IPlugin
{
public void Execute(IServiceProvider serviceProvider)
{
try
{
IPluginExecutionContext context = (IPluginExecutionContext)
serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext));
if (context.InputParameters.Contains("EntityMoniker") &&
context.InputParameters["EntityMoniker"] is EntityReference)
{
var EngineerShiftEntity = (EntityReference)context.InputParameters["EntityMoniker"];
var state = (OptionSetValue)context.InputParameters["State"];
var status = (OptionSetValue)context.InputParameters["Status"];
// add your code
}
}
catch (InvalidPluginExecutionException)
{
throw;
}
catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> ex)
{
throw new InvalidPluginExecutionException("An FaultException occurred in the SetStatePlugin plug-in odf Enginner Shift.", ex);
}
catch (Exception ex)
{
throw new InvalidPluginExecutionException("An Exception occurred in the SetStatePlugin plug-in of Engineer Shift.", ex);
}
}
}
}
Hope this helps