开发者

CRM 4.0 - Is there a way to know if a contact from a specific marketing list has respond to a campaign?

开发者 https://www.devze.com 2023-02-14 19:29 出处:网络
I am won开发者_Go百科dering how can I do the following about MS CRM 4.0: I want to know for a campaign if a contact from a specific marketing list has not replied yet.

I am won开发者_Go百科dering how can I do the following about MS CRM 4.0: I want to know for a campaign if a contact from a specific marketing list has not replied yet.

The field custom in the campaign response form is a partyfield. CRM doesn’t allow a PartyList field to be queried using a QueryExpression

Any ideas?

Thanks,

Katya


You cannot retrieve activityparty records directly, but you can use them in LinkEntities:

private bool contactHasResponded(Guid idCampaign, Guid idContact)
{
    QueryExpression qryCampaignResponses = new QueryExpression("campaignresponse");
    qryCampaignResponses.ColumnSet = new AllColumns();

    qryCampaignResponses.Criteria = new FilterExpression();
    qryCampaignResponses.Criteria.AddCondition("regardingobjectid", ConditionOperator.Equal, idCampaign);

    LinkEntity leContact = new LinkEntity("campaignresponse", "activityparty", "activityid", "activityid", JoinOperator.Inner);
    leContact.LinkCriteria = new FilterExpression();
    leContact.LinkCriteria.AddCondition("partyid", ConditionOperator.Equal, idContact);

    qryCampaignResponses.LinkEntities.Add(leContact);

    List<gcCampaignresponse> lstCampaignResponses = gcCampaignresponse.RetrieveMultiple(m_svcCrm, qryCampaignResponses);

    return (lstCampaignResponses.Count > 0);
}

This will tell you whether there's a campaign response for a given campaign and contact. (I use entity classes generated by Stunnware Tools, so the RetrieveMultiple call looks a little different, but I think you get my point).

If you turn this QueryExpression/LinkEntity construct upside down, you can also get all contacts that have responded to a given campaign (you can also restrict that to contacts in a certain marketing list through a second LinkEntity).

The only thing that's not possible directly with a single query is the "negative" check you are looking for, so you'll have to take this result and do an "outer join" against your marketing list to get the contacts that have not responded.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号