У меня разработан плагин (Post-Operation, Create, Sync), который захватывает Target
и вызывает InitializeFromRequest
для создания другой записи, производной от создаваемой.
версия метода Execute
вниз:
public void Execute(IServiceProvider serviceProvider)
{
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = factory.CreateOrganizationService(context.UserId);
var newRecord = (service.Execute(new InitializeFromRequest
{
EntityMoniker = new EntityReference(context.PrimaryEntityName, context.PrimaryEntityId),
TargetEntityName = "my_entityName",
TargetFieldType = TargetFieldType.ValidForCreate
}) as InitializeFromResponse).Entity;
}
Это работало отлично, пока пару недель назад.
Теперь точно такие же ошибки плагина с указанием my_entity with Id = <guid> does not exist
.
Я вроде понимаю, почему это происходит, я все еще в транзакции, и запись еще не была на самом деле создана, следовательно, ошибка.
Я подозреваю, что апрельское обновление виновато, потому что оно начало происходить в то время, когда обновление было массово развернуто во всех средах (мы, как обычно, не обновляемся, если в этом нет необходимости, так как обновления всегдасломать кучу случайных вещей).
Что-то изменилось в том, как плагины Post-Operation Create обрабатываются платформой?Это еще один недокументированный трюк, который нам нужно как-то обойти?