I ran across an unusual SDK topic last week that I thought I would share.
I need to associate a Campaign with a Marketing List. This should be a pretty simple Associate operation but it turns out, if you try to use the standard Associate Request, like one of these three methods (all of which I know to be perfectly valid):
var request1 = new AssociateEntitiesRequest { Moniker1 = new EntityReference(Campaign.EntityLogicalName, campaignId), Moniker2 = new EntityReference(List.EntityLogicalName, marketingListId), RelationshipName = "campaignlist_association" };
var request2 = new AssociateRequest { Target = new EntityReference(List.EntityLogicalName, marketingListId), RelatedEntities = new EntityReferenceCollection { new EntityReference(Campaign.EntityLogicalName, campaignId) }, Relationship = new Relationship("campaignlist_association") };
service.Associate( Campaign.EntityLogicalName, campaignId, new Relationship("campaignlist_association"), new EntityReferenceCollection { new EntityReference(List.EntityLogicalName, marketingListId) });
These requests actually produce a really strange error message:
Associate is not supported for CampaignItem Platform
After digging around for quite a while, I finally found this article, by Rajeev Pentyala, which shows a JavaScript version of the solution I need.
This is the correct code segment to perform this operation in C#:
var request = new AddItemCampaignRequest { CampaignId = campaignId, EntityId = marketingListId, EntityName = List.EntityLogicalName, };