Dynamics 365工作流报错:您无法登陆系统。原因可能是您的用户记录或您所属的业务部门在Microsoft Dynamics 365中已被禁用。

本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复265或者20170926可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。

在一个工作流中,包括了等待条件,比如说等待一天后再执行,执行的步骤包括了自定义工作流活动,发现报这个错误:您无法登陆系统。原因可能是您的用户记录或您所属的业务部门在Microsoft Dynamics 365中已被禁用。

囧,这是为什么呢?原因查一下就知道了,因为触发该工作流运行的用户被禁用了(比如用户离职后按照规定要禁止用户登录系统),在执行工作流的时候是通过类似下面代码来获取组织服务的:

IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IOrganizationService orgService = serviceFactory.CreateOrganizationService(context.InitiatingUserId);

因为这个方式获取组织服务是通过触发工作流运行的用户来获取组织服务,如果这个用户被禁用了就会出现这个错误。

怎么办?我的博文 Dynamics 365中自定义工作流活动获取的上下文分析及注意事项 中有提到,用另外一种方式来获取组织服务就可以,因为这种在自动运行的时候,获取的用户ID是工作流Owner的ID,这个用户一般不会被禁用,代码如下,最后一个单词有变化:

IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IOrganizationService orgService = serviceFactory.CreateOrganizationService(context.UserId);

 

posted @ 2017-09-26 18:33  微软MVP(15-18)罗勇  阅读(598)  评论(0编辑  收藏  举报