我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复382或者20191202可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!
公告(post)功能类似微博功能,不过有自动发公告的功能,我以前文章写过,Activity Feeds。这里我就不再赘述了。
Dynamcis 365 Customer Engagement中默认启用公告功能的实体清单如下,自定义实体默认是不启用的。
默认启用的活动源规则有28个,如下:
接着我去简单测试下公告功能,我新建一个客户,会在Post实体中新增1条记录关联到这个客户,PostRegarding实体中新增1条记录关联到到这个客户,PostRole实体中新增2条记录,分别关联到创建的客户,创建客户的系统用户。PostRegarding实体和PostRole实体都是系统使用的内部实体,不要尝试去操作。
我新建一个案例,会在Post实体中新增一条记录关联到这个案例,PostRegarding实体中新增1条记录关联到这个案例,PostRole实体中新增3条记录,这三条记录分别关联到案例,案例关联的客户,创建客户的系统用户。
打开表单时Post记录是如何查询的,应该与 Microsoft.Dynamics.CRM.RetrieveRecordWall 这个Action有关(可能用到存储过程 p_RetrievePosts )。
如何停用公告功能呢?如果我把【客户的新案例】这个活动源规则停用的话,为客户新建案例就不会创建Post及其相关的记录了,其他的做类似理解。
如果【分派给用户/团队的案例】的规则是启用的话,分派案例也会会在Post实体中新增一条记录关联到这个案例,PostRegarding实体中新增1条记录关联到这个案例,PostRole实体中新增3条记录,这三条记录分别关联到案例,案例的新负责人,案例的原负责人(原来负责人此处为猜测)。当然可以停用。
如何停用某个实体的Post功能呢,建议先停用实体相关的活动源规则。
再停用相关的活动源配置(取消选中【为此类型的记录窗体启用留言板】,点击【停用】按钮),再发布该实体。
可以看到就不显示公告了。
假如一个组织的客户/联系人/案例等很多的话,会创建大量的Post及其相关记录,加载Timeline就会慢。可能需要清理(删除)公告记录。
如果删除公告Post记录,其关联的记录都会立即删除吗?答案是不尽然,如下几个关联的实体记录会立即删除,因为关系是ParentChild。
但是其关联的另外实体 PostRegarding 相关记录不会立即删除,有个系统作业(AsyncOperationType = 14)来每天定期运行来清理它,可以参考 Dynamics CRM 2011 DeletionService Async Maintenance Operation Demystified ,对于On-Premise的Dynamics 365 Customer Engagement如何手工跑一下这个系统作业可以参考我的博文:Dynamics CRM中一个查找字段引发的【血案】 。我这里执行的参考SQL如下,注意这个更改不会更改该系统作业往后的运行时间,若要更改还需要更改RecurrenceStartTime字段的值。
Select NextRunTime,RecurrenceStartTime,*
from MSCRM_CONFIG.dbo.ScaleGroupOrganizationMaintenanceJobs
where OperationType = 14 update MSCRM_CONFIG.dbo.ScaleGroupOrganizationMaintenanceJobs
set NextRunTime = '2019-12-02 03:30:20.707'
where OperationType = 14
使用Web API来查询Post和普通实体一样,类似 https://demo.luoyong.me/api/data/v9.0/posts 。
如果使用FetchXml (高级查找来判断),可以看到能使用的查询条件不多。
我推荐使用系统的批量删除功能来删除公告Post记录。