当我尝试在更新后插件阶段创建另一种类型的实体记录时,出现“在第 20 阶段插件中不允许更改安全属性”错误。它在 Dynamics CRM 2013 SP1 CRM 中运行良好。将 CRM 2013 更新到 CRM 2015 后,出现此错误
问问题
3199 次
3 回答
2
从预创建中删除逻辑并将其移动到其他实体的创建后。然后它会正常工作
于 2015-06-12T09:00:50.340 回答
2
从插件图像中删除不需要的属性。仅在插件中选择您需要的属性。您可以在注册插件时设置它(不要勾选所有属性复选框)。删除安全相关属性(所有者,修改者,创建于)
于 2015-06-15T06:36:47.533 回答
2
当组织迁移到 CRM 2015 时,你们中的一些人可能会在插件步骤中遇到此错误。原因:
- 您在记录预创建中更改记录的所有权
解析度:
- 大多数解决方案都说将插件更改为操作后阶段,但这对于您的插件可以执行的某些操作/检查没有意义。
- 因此,您可以做的是在运行分配操作之前检查管道阶段。 https://msdn.microsoft.com/en-us/library/gg327941.aspx#bkmk_PipelineStages
示例代码:
//Runs on the Pre-Validation step, when a Contact is created
if (context.Stage == 10)
{
if (!targetEntity.Attributes.Contains("parentcustomerid"))
{
throw new InvalidPluginExecutionException("Message to show....");
}
try
{
var accountOwner = (from a in orgServiceContext.AccountSet
where a.Id == targetContact.ParentCustomerId.Id
select a).Single();
targetEntity.Attributes["ownerid"] = new EntityReference("team", accountOwner.OwnerId.Id);
targetEntity.Attributes["owningbusinessunit"] = new EntityReference("businessunit", accountOwner.OwningBusinessUnit.Id);
}
catch
{
throw new InvalidPluginExecutionException("Message to show...");
}
}
找到另一个解决方案:将您的插件步骤移至预验证。
于 2015-07-15T15:22:30.287 回答