【问题标题】:CRM transferring phonecall activity to a new Entity shows it on both EntitiesCRM 将电话活动转移到新实体上会在两个实体上显示
【发布时间】:2015-10-27 19:16:33
【问题描述】:

我正在尝试将我们的一些联系人/帐户上的活动转移到 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 实体有这个问题。此代码适用于其他代码,即appointmentstaskslettersemails

【问题讨论】:

  • 为什么所有的 Try Catches 都会删除自定义错误类型?

标签: c# dynamics-crm-2013


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多