Массовое удаление не запускает плагин в динамике CRM

Я хочу активировать подключаемый модуль для массового удаления в Microsoft CRM Dynamics 2013. Я создал настраиваемый объект, и мой подключаемый модуль указал на операцию удаления этого настраиваемого объекта. Я настроил регистрацию плагина следующим образом:

   Message :    "delete"
   Primary entity :     "my custom entity",
   Run in User's Context :    "Calling User",
   Event pipeline :    "Pre operation",
   Execution mode :    "synchronous"

Процесс массового удаления не запускает плагин. он не выдает ошибку.
Однако подключаемый модуль может запускаться при ручном удалении. Но я хочу запускать подключаемый модуль при любом системном событии по расписанию (массовое удаление)
Пожалуйста, помогите мне решить эту проблему.

Это мой код:

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

  if (context.Depth == 1)
  {
      IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
      IOrganizationService service = serviceFactory.CreateOrganizationService(context.InitiatingUserId);

      EntityReference entity = (EntityReference)context.InputParameters["Target"];

      DateTime dtToday = DateTime.Now;
      DateTime toDate = dtToday.AddMonths(-1);

      QueryExpression qe = new QueryExpression("contact");
      qe.ColumnSet = new ColumnSet(new String[] { "birthdate", "firstname", "address1_name" ,"new_lastapptdate" });
      qe.Criteria.AddCondition("new_lastapptdate", ConditionOperator.LessEqual, toDate);

      EntityCollection collection = service.RetrieveMultiple(qe);

      foreach (Entity contact in collection.Entities)
      {

      }

     try
     {
         var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
         Entity Ageentity = new Entity("new_agecalc");
         Ageentity.Attributes.Add("new_name", "AgecalcTest");
         service.Create(Ageentity);
     }
     catch (Exception ex)
     {
         throw new InvalidPluginExecutionException("An error ", ex);
     }
  }

}


person user3562857    schedule 01.05.2014    source источник
comment
Не могли бы вы поделиться кодом. Так что я могу видеть, есть ли какие-либо проблемы.   -  person Scorpion    schedule 01.05.2014
comment
Просто предположение - попробуйте зарегистрировать плагин в асинхронном режиме или перенести логику в workflow.   -  person Scorpion    schedule 01.05.2014
comment
Спасибо за ваш ответ. Я также пробовал с асинхронным режимом. но это не сработало.   -  person user3562857    schedule 01.05.2014


Ответы (1)


В своем коде вы проверяете, равна ли глубина контекста 1. Во время массового удаления он уже является частью задания, поэтому глубина будет больше 1. Если вы удалите эту проверку, ваш плагин должен работать.

person Kevin Ross    schedule 02.05.2014