我为Microsoft Dynamics CRM 2013 Online平台构建了一个插件。该插件已在Delete of my_custom_entity中注册。它是同步的和后期操作的。模拟设置为“呼叫用户”。据我所知,插件应该通过这些设置使用主叫用户的权限等来解雇。
我无法弄清楚原因,但我的插件总是在" SYSTEM"用户。我试图使用两个不同的系统用户,但没有任何运气。这是一个问题,因为我的插件正在调用工作流程,而工作流程正在发送电子邮件。 SYSTEM用户无法发送电子邮件。
这是CRM 2013中的新功能吗?我试图谷歌,但无法找到任何相关的东西。我已经尝试取消注册并再次注册我的插件程序集。没有区别。
如何更改插件注册,以便代表触发插件的用户(谁删除实体)运行。
谢谢
答案 0 :(得分:3)
您是如何获得服务参考的?
如果您这样做,您应该以触发插件的用户身份执行所有操作。
// Obtain the organization service reference.
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
如果您传递空值,您将获得系统用户,例如serviceFactory.CreateOrganizationService()
IOrganizationServiceFactory.CreateOrganizationService
指定调用服务的系统用户。一个 null值表示SYSTEM用户。在插件中调用时,a Guid.Empty值表示与IPluginExecutionContext相同的用户。 用户身份。在自定义工作流活动中调用时,为Guid.Empty值 表示与IWorkflowExecutionContext.UserId相同的用户。任何其他 value表示特定的系统用户。
答案 1 :(得分:0)
你应该使用context.InitiatingUserId。
IOrganizationService service = serviceFactory.CreateOrganizationService(context.InitiatingUserId);
答案 2 :(得分:0)
InitiatingUserId将是触发删除操作的用户。在“删除”上下文中,UserId将是平台使用的系统。