用户离职后如何删除其个人视图(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.

\'用户离职后如何删除其个人视图(Personal

取消他的所有许可(将所有许可前面的复选框取消选中),然后点击【Save chages】按钮。

\'用户离职后如何删除其个人视图(Personal


过会儿我们来看这个用户,可以看到这个用户的状态已经是Disabled了。注意,如果用户是Global Aministrator,移除许可不会禁用用户。

\'用户离职后如何删除其个人视图(Personal


用户不能访问了,但是他/她可能建立了一些私有视图,这些私有视图可能分享给了其他用户/团队,如何删除?有些人可能有强迫症,不想看到,特别是离职员工创建的试图包括了该员工的名字。

方法一:通过对用户执行 【Reassign Records】操作,这个如果用户负责的记录很多执行操作耗时会比较长,而且记录被重新分派的话可能触发某些插件/工作流/flow等,可能会存在潜在问题。当然这个操作也会重新分派这个用户的私人视图到指定的用户,然后新负责人是可以删除这些私有视图的。

\'用户离职后如何删除其个人视图(Personal

方法二,通过执行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 的第一个视图?

powershell powershell脚本列出了用户的所有个人视图,并根据需要提供删除选项。

推荐系统召回算法之——图模型(Personal Rank)