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
实体有这个问题。此代码非常适用于其他代码,即 appointments
、tasks
、letters
和 emails
我知道问题出在哪里了。它出现在两个实体上,因为对于 PhoneCalls
还有一个 PhoneCalls.To
字段仍然引用旧的 Contact
实体。不幸的是,这个字段需要 PartyList
,根据我的发现,它无法自定义,因此它必须始终指向 Contact
、Lead
、Opportunity
或 Account
实体。
我正在尝试将我们 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
实体有这个问题。此代码非常适用于其他代码,即 appointments
、tasks
、letters
和 emails
我知道问题出在哪里了。它出现在两个实体上,因为对于 PhoneCalls
还有一个 PhoneCalls.To
字段仍然引用旧的 Contact
实体。不幸的是,这个字段需要 PartyList
,根据我的发现,它无法自定义,因此它必须始终指向 Contact
、Lead
、Opportunity
或 Account
实体。