CRM 将电话 activity 转移到新实体显示在两个实体上

CRM transferring phonecall activity to a new Entity shows it on both Entities

我正在尝试将我们 contacts/accounts 的一些活动转移到 new_private_contact_details 实体。我拥有所有这些,但电话工作正常。下面的代码似乎确实有效,但它最终会在 new_private_contact_details 实体和现有 Contact 实体的 activity 提要上显示电话。显然这是一个问题,因为我正在尝试将这些类型的详细信息迁移到私人详细信息,所以让它们仍然显示该过程无效。

if (phoneCallsList != null && phoneCallsList.Count > 0)
{
    foreach (PhoneCall pc in phoneCallsList)
    {
        if (pc.StatusCode.Value != 1)
        {
            int oldState = 0; //for the beginning statecode
            int oldStatus = 0; //for the beginning statuscode

            if (pc.StatusCode.Value == 3)
            {
                oldState = 2;
                oldStatus = 3;
            }
            else
            {
                oldState = 1;
                oldStatus = pc.StatusCode.Value;
            }

            //change status to open
            SetStateRequest setStateRequest = new SetStateRequest()
            {
                EntityMoniker = new EntityReference
                {
                    Id = pc.Id,
                    LogicalName = pc.LogicalName
                },
                State = new OptionSetValue(0),
                Status = new OptionSetValue(1)
            };
            try
            {
                crm.Execute(setStateRequest);
            }
            catch (Exception ex)
            {
                throw new Exception("Error: " + ex);
            }
            pc.RegardingObjectId = pcd.ToEntityReference();
            pc.StatusCode.Value = 1;
            try
            {
                service.Update(pc);
            }
            catch (Exception ex)
            {
                throw new Exception("Error: " + ex);
            }
            //return status to closed
            setStateRequest = new SetStateRequest()
            {
                EntityMoniker = new EntityReference
                {
                    Id = pc.Id,
                    LogicalName = pc.LogicalName
                },
                State = new OptionSetValue(oldState),
                Status = new OptionSetValue(oldStatus)
            };
            try
            {
                crm.Execute(setStateRequest);
            }
            catch (Exception ex)
            {
                throw new Exception("Error: " + ex);
            }
        }
        else
        {
            pc.RegardingObjectId = pcd.ToEntityReference();
            try
            {
                service.Update(pc);
            }
            catch (Exception ex)
            {
                throw new Exception("Error: " + ex);
            }
        }
    }
}

电话是completed/closed,我已经处理好了。我正在更新 RegardingObjectId,但它不会从原始实体中删除它,也不会在 CRM 中从任何一个实体中删除它,也不会从两个实体中删除它。

同样,我似乎只对 phonecall 实体有这个问题。此代码非常适用于其他代码,即 appointmentstaskslettersemails

我知道问题出在哪里了。它出现在两个实体上,因为对于 PhoneCalls 还有一个 PhoneCalls.To 字段仍然引用旧的 Contact 实体。不幸的是,这个字段需要 PartyList,根据我的发现,它无法自定义,因此它必须始终指向 ContactLeadOpportunityAccount实体。