To retrieve campaign and target products in Dynamics CRM 2011 follow below steps:
- Use Link Entities to get N:N relationship entity details
- Passing Campaign Activity Guid array and it will return campaign details and target products associated with campaign
private EntityCollection RetrieveCampaign(Guid[] campaignactivityids, IOrganizationService service)
{
EntityCollection ecCampaigns = new EntityCollection();
try
{
QueryExpression query = new QueryExpression();
query.EntityName = "campaignactivity";
query.ColumnSet = new ColumnSet("regardingobjectid", "activityid");
query.Criteria = new FilterExpression();
query.Criteria.AddCondition(new ConditionExpression("activityid", ConditionOperator.In, campaignactivityids));
LinkEntity objcamp = new LinkEntity("campaignactivity", "campaign", "regardingobjectid", "campaignid", JoinOperator.Inner);
objcamp.Columns = new ColumnSet("new_campaignpriority");
objcamp.EntityAlias = "campaign";
LinkEntity objcamp1 = new LinkEntity("campaign", "campaignitem", "campaignid", "campaignid", JoinOperator.Natural);
LinkEntity product = new LinkEntity("campaignitem", "product", "entityid", "productid", JoinOperator.Inner);
product.Columns = new ColumnSet("productid");
product.EntityAlias = "camapignproduct";
objcamp1.LinkEntities.Add(product);
objcamp.LinkEntities.Add(objcamp1);
query.LinkEntities.Add(objcamp);
ecCampaigns = service.RetrieveMultiple(query);
}
catch (Exception ex)
{
throw new Exception("An error occured while executing the workflow. Error Details : " + ex.ToString());
}
return ecCampaigns;
}