private void DoDelete(ICRMEvent context, Guid pluginStepId, mwo_PluginStepRegistration subject)
        {
            subject.mwo_ImageType = mwo_ImageType.None;
            DoManageImage(context, pluginStepId, subject);

            StepManager.Delete(pluginStepId);
            Tracer.Trace($"Deleted PluginStep: {pluginStepId}");
        }
 private void DoManageStage(ICRMEvent context, Guid pluginStepId, mwo_PluginStepRegistration subject)
 {
     if (subject.StateCode == mwo_PluginStepRegistrationState.Active)
     {
         StepManager.Activate(pluginStepId);
         Tracer.Trace($"Activated PluginStep: {pluginStepId}");
     }
     else
     {
         StepManager.Deactivate(pluginStepId);
         Tracer.Trace($"Deactivated PluginStep: {pluginStepId}");
     }
 }
 private void DoManageImage(ICRMEvent context, Guid pluginStepId, mwo_PluginStepRegistration subject)
 {
     if (subject.mwo_ImageType != null && subject.mwo_ImageType != mwo_ImageType.None)
     {
         ImageManager.Upsert(MapImageType(subject.mwo_ImageType), subject.mwo_ImageName, new EntityReference(SdkMessageProcessingStep.EntityLogicalName, pluginStepId), subject.mwo_ImageAttributes);
         Tracer.Trace($"Upserted image: {subject.mwo_ImageName}");
     }
     else
     {
         ImageManager.Delete(new EntityReference(SdkMessageProcessingStep.EntityLogicalName, pluginStepId));
         Tracer.Trace($"Deleted image: {subject.mwo_ImageName}");
     }
 }
        private void DoUpdate(ICRMEvent context, Guid pluginStepId, mwo_PluginStepRegistration subject)
        {
            StepManager.Update(
                pluginStepId,
                subject.mwo_EventHandler,
                MapPluginType(subject.mwo_EventHandlerType),
                subject.mwo_Name,
                subject.mwo_SDKMessage,
                subject.mwo_PrimaryEntity,
                subject.mwo_SecondaryEntity,
                subject.mwo_StepConfiguration,
                subject.mwo_Asynchronous == true,
                MapStage(subject.mwo_PluginStepStage),
                subject.mwo_FilteringAttributes,
                subject.mwo_Description);

            Tracer.Trace($"Updated PluginStep: {pluginStepId}");

            DoManageImage(context, pluginStepId, subject);
        }
        private void DoCreate(ICRMEvent context, mwo_PluginStepRegistration subject)
        {
            var res = StepManager.Register(
                subject.mwo_EventHandler,
                MapPluginType(subject.mwo_EventHandlerType),
                subject.mwo_Name,
                subject.mwo_SDKMessage,
                subject.mwo_PrimaryEntity,
                subject.mwo_SecondaryEntity,
                subject.mwo_StepConfiguration,
                subject.mwo_Asynchronous == true,
                MapStage(subject.mwo_PluginStepStage),
                subject.mwo_FilteringAttributes,
                subject.mwo_Description);

            Tracer.Trace($"Created new PluginStep: {res}");
            subject.mwo_PluginStepId = res.ToString();

            DoManageImage(context, res, subject);
        }