CRM将电话呼叫活动转移到一个新实体时,会在两个实体上显示该活动
本文关键字:活动 实体 显示 两个 一个 呼叫 电话 转移 新实体 CRM | 更新日期: 2023-09-27 18:19:25
我正试图将一些联系人/帐户上的活动转移到new_private_contact_details
实体。除了电话,我都有。下面的代码看起来确实有效,但它最终在活动提要上显示了new_private_contact_details
实体和现有Contact
实体的电话呼叫。显然,这是一个问题,因为我正试图将这些类型的细节迁移到私有细节,所以让它们仍然显示出来会使这个过程变得空洞。
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);
}
}
}
}
我已经处理好了电话何时结束。我正在更新RegardingObjectId
,但它不会将其从原始实体中删除,在CRM中从任一实体中删除它,会从两者中删除它。
同样,我似乎只对phonecall
实体有这个问题。此代码完全适用于其他代码,即appointments
、tasks
、letters
和emails
我找到了问题发生的地方。它出现在两个实体上,因为对于PhoneCalls
,还有一个PhoneCalls.To
字段仍然引用旧的Contact
实体。不幸的是,该字段需要一个PartyList
,根据我的发现,它无法自定义,因此它必须始终指向Contact
、Lead
、Opportunity
或Account
实体。