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")
        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,