【问题标题】:CRM 2011 linking a lead with a campaign responseCRM 2011 将潜在客户与活动响应联系起来
【发布时间】:2014-02-21 15:33:14
【问题描述】:

在我们公司,我们有一个使用 CRM Web 服务的应用程序。 由于我们从 CRM 4.0 升级到 CRM 2011,我正在尝试将我们的代码迁移到新的 CRM 2011。我还必须防止使用强类型。因此,我对所有实体使用 CRM 2011 Web 服务提供的 Entity-Class。

我们的应用程序执行以下操作:

  1. 从 HTML 表单创建潜在客户
  2. 创建活动响应并将其与潜在客户链接
  3. 将活动响应与特定活动联系起来

这是 CRM 4.0 代码:

Dim lookup As New Lookup()
lookup.Value = New Guid(linkCampaignGuid)
lookup.type = "campaign"

Dim activity As New activityparty()
activity.partyid = New Lookup()
activity.partyid.type = "lead"
' the CreateLead method creates a lead and returns its guid
' linkCustomer is the object wich is filled by the HTML form
activity.partyid.Value = New Guid(CreateLead(linkCustomer))

Dim cr As New campaignresponse()
cr.regardingobjectid = lookup
cr.customer = New activityparty() {activity}

' my CrmService object
_service.Create(cr)


到目前为止的 CRM 2011 代码:

Dim lookup As New EntityReference()
lookup.LogicalName = "campaign"
lookup.Id = New Guid(linkCampaignGuid)

Dim lead As New EntityReference()
lead.LogicalName = "lead"
lead.Id = New Guid(CreateLead(linkCustomer))

Dim activity As New Entity
activity.LogicalName = "activityparty"
activity.Id = lead.Id
activity.Attributes = New AttributeCollection
activity.Attributes.Add(New KeyValuePair(Of String, Object)("partyid", lead))

Dim campaignResponse As New Entity
campaignResponse.LogicalName = "campaignresponse"
campaignResponse.Attributes = New AttributeCollection
campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("regardingobjectid", lookup))
campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("customer", activity))

_service.Create(campaignResponse)

创建活动响应,将其与活动链接并创建潜在客户正在工作。 我的问题是活动响应和领导之间的联系不起作用。

感谢您的任何帮助!

更新:

在尝试了几乎所有方法之后,我终于找到了一种方法:

Dim campaignId As Guid = New Guid(linkCampaignGuid)
Dim leadId As Guid = New Guid(CreateLead(linkCustomer))

Dim campaignReference As New EntityReference("campaign", campaignId)
Dim leadReference As New EntityReference("lead", leadId)

Dim activityParty As New Entity("activityparty")
activityParty.AddAttribute("partyid", leadReference)

Dim entityCollection As New EntityCollection()
entityCollection.EntityName = "activityparty"
entityCollection.Entities.Add(activityParty)

Dim campaignResponse = New Entity("campaignresponse")
campaignResponse.Attributes.Add("regardingobjectid", campaignReference)
campaignResponse.Attributes.Add("customer", entityCollection)

_service.Create(campaignResponse)

【问题讨论】:

    标签: vb.net dynamics-crm-2011


    【解决方案1】:

    我认为错误在这一行:

    campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("customer", activity))
    

    CRM 2011 的 customer 字段是一个简单的查找,因此请尝试直接设置潜在客户参考:

    campaignResponse.Attributes.Add(New KeyValuePair(Of String, Object)("customer", lead))
    

    另外我建议以这种方式重写你的代码(更具可读性)

    Dim campaignId As Guid
    campaignId = New Guid(linkCampaignGuid)
    
    Dim leadId As Guid
    leadId = New Guid(CreateLead(linkCustomer))
    
    Dim campaignReference = New EntityReference("campaign", campaignId)
    Dim leadReference = New EntityReference("lead", leadId)
    
    Dim campaignResponse = New Entity("campaignresponse")
    campaignResponse.Attributes.Add("regardingobjectid", campaignReference)
    campaignResponse.Attributes.Add("customer", leadReference)
    
    _service.Create(campaignResponse);
    

    【讨论】:

    • 感谢您的回答,但没有奏效。我也尝试使用 EntityCollection 类而不是数组,但它都没有工作。
    • @langer_muc 我编辑了我的答案,请重试并返回结果
    • 它也不起作用。但我必须告诉你,我没有带有两个参数的 EntityReference 类的构造函数。我只有标准的()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多