用户离职后如何删除其个人视图(Personal View)?
Posted luoyong0201
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户离职后如何删除其个人视图(Personal View)?相关的知识,希望对你有一定的参考价值。
我是微软Dynamics 365 & Power Platform方面的工程师/顾问罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复440或者20210429可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
铁打的军营流水的兵,公司也是一样,人来人往,离职后将其在Dynamics 365的账号禁用,一般我们会取消其许可,减少对Dynamics 365许可的占用以便节省费用,过一会儿这个用户在Dynamics 365中就会显示为已经禁用。
我这里来操作下取消用户许可。最好是具有Global Administrator权限的账号登录 https://admin.microsoft.com/ 找到要进行处理的用户,点击出来 Manage product licenses.
取消他的所有许可(将所有许可前面的复选框取消选中),然后点击【Save chages】按钮。
过会儿我们来看这个用户,可以看到这个用户的状态已经是Disabled了。注意,如果用户是Global Aministrator,移除许可不会禁用用户。
用户不能访问了,但是他/她可能建立了一些私有视图,这些私有视图可能分享给了其他用户/团队,如何删除?有些人可能有强迫症,不想看到,特别是离职员工创建的试图包括了该员工的名字。
方法一:通过对用户执行 【Reassign Records】操作,这个如果用户负责的记录很多执行操作耗时会比较长,而且记录被重新分派的话可能触发某些插件/工作流/flow等,可能会存在潜在问题。当然这个操作也会重新分派这个用户的私人视图到指定的用户,然后新负责人是可以删除这些私有视图的。
方法二,通过执行SQL执行删除,如果是On-premise部署的话自己执行即可,若是Online版本的话则需要上Case给到微软技术支持中心来处理,执行的SQL类似这种:
delete from userquerybase where createdby=\'禁用用户的GUID\'
可能你会有疑问,我可以用Web API的代理来做吗?实际上是不行的,我做了验证。
比如我用下面的代码来查看这个用户的私有视图,但是会报错如下:
{ "error":{ "code":"0x8004d24b", "message":"The user with SystemUserId=ccf01a1c-efa8-eb11-9442-00224816c083 in OrganizationContext=a38a904d-9ebf-43cd-9aab-92098bb67be1 is not licensed, and its SystemUserAccessMode=0 is not either of (NonInteractive=4, SetupUser=1)" } }
使用的代码如下:
这里用了新的代理方法,你可能会问CallerObjectId 的值从哪儿来,很简单用类似这个请求可以拿到:
https://thomasluodemo.crm5.dynamics.com/api/data/v9.2/systemusers?$select=azureactivedirectoryobjectid&$filter=domainname eq \'luoyong@microsoft.com\'
var clientUrl = Xrm.Utility.getGlobalContext().getClientUrl(); var req = new XMLHttpRequest() req.open("GET", clientUrl + "/api/data/v9.2/userqueries?$select=name,createdon,userqueryid&$filter=_createdby_value eq \'ccf01a1c-efa8-eb11-9442-00224816c083\'", true); req.setRequestHeader("Accept", "application/json"); req.setRequestHeader("Content-Type", "application/json; charset=utf-8"); req.setRequestHeader("CallerObjectId", "ccf01a1c-efa8-eb11-9442-00224816c083"); req.setRequestHeader("OData-MaxVersion", "4.0"); req.setRequestHeader("OData-Version", "4.0"); req.onreadystatechange = function () { if (this.readyState == 4) { req.onreadystatechange = null; if (this.status == 200) { var responseJSON = JSON.parse(this.responseText); console.log(responseJSON); } else { var error = JSON.parse(this.responseText).error; Xrm.Utility.alertDialog("Error." + error.message); } } }; req.send();
以上是关于用户离职后如何删除其个人视图(Personal View)?的主要内容,如果未能解决你的问题,请参考以下文章
Django如何在用户删除后删除用户的个人资料和帖子以及所有关联?
如何以编程方式绘制边框并在 UIImageview 周围的文字后将其删除?
使用后如何在堆栈中删除 UINavigationController 的第一个视图?