Dynamics365从OBM迁移至CIJ:联系人合并致旅程丢失的问题咨询
一、解决联系人合并后CIJ旅程记录丢失的问题
OBM依赖营销列表/静态细分的自动替换逻辑,但CIJ是基于**旅程参与者实体(msdynmkt_journeycontact)**追踪用户旅程的,合并联系人时不会自动迁移这些记录,导致后续提醒邮件无法触发。可以通过以下几种方式解决:
配置合并实体映射:进入Dynamics 365的「数据管理」→「合并实体映射」,找到
msdynmkt_journeycontact和msdynmkt_eventregistration(活动报名)实体,添加联系人字段的合并映射规则。设置后,当联系人被合并时,系统会自动将被合并联系人的旅程参与者、活动报名记录关联到主联系人,替代OBM的列表替换逻辑。用Power Automate自动迁移记录:创建一个自动化流,触发条件设为「当联系人记录被合并」。流中执行以下操作:
- 获取被合并的联系人(如
justme1)的所有msdynmkt_journeycontact记录; - 将这些记录的「联系人」字段更新为主联系人(如
justme2); - 同步更新关联的
msdynmkt_eventregistration记录的联系人字段,确保活动报名信息归属正确。
- 获取被合并的联系人(如
替换静态细分为动态细分:如果旅程是基于静态细分触发的,换成动态细分。动态细分会实时查询符合条件的联系人,合并后的主联系人会自动被纳入细分,避免快照式静态细分的记录失效问题。对于表单触发的旅程,可以在等待节点后添加一个「检查联系人有效性」的步骤,重新拉取当前活跃的联系人记录。
二、合并前排查联系人是否参与活跃旅程
要阻止正在参与活跃旅程的联系人被合并,需要通过CIJ的核心实体进行排查:
查询旅程参与者记录:用高级查找创建视图,筛选条件为:
- 联系人 = 待合并的联系人;
- 关联的旅程(
msdynmkt_journey)状态为「已激活」(状态代码=1); - 旅程参与者(
msdynmkt_journeycontact)状态不为「已完成」或「已退出」(具体状态代码可在实体定义中查看,通常已完成=3、已退出=4)。
如果存在符合条件的记录,说明该联系人正在参与活跃旅程。
检查活动报名状态:同样用高级查找筛选
msdynmkt_eventregistration记录:- 联系人 = 待合并的联系人;
- 关联活动的状态为「已发布」或「即将开始」;
- 报名状态为「已确认」。
这类记录对应的活动后续旅程(如提醒邮件)通常仍在活跃中,需要提前处理。
用Pre-Merge插件阻止合并:开发一个Pre-Merge事件插件,在联系人合并前自动查询上述两类记录。如果存在活跃的旅程参与者或未完成的活动报名,抛出错误提示,阻止合并操作,要求用户先完成或移除该联系人的旅程参与。
内容的提问来源于stack exchange,提问作者marc_s

