如何从市场营销列表中批量删除成员

本文关键字:删除成员 列表 市场营销 | 更新日期: 2023-09-27 18:21:42

我在CRM Dynamics 2013中有一个场景,我需要删除数千条记录,基本上我有联系人、帐户、潜在客户,我需要从所有者为"挂起删除"的联系人中删除所有营销列表,这样这些联系人就不会收到列表,我想知道哪种方法最好,我想,如果我创建一个使用RemoveMemberListRequest的程序,那就好了,但我如何使用sdk指定一个查询呢?sdk基本上是说,从列表中删除联系人的所有者设置为"挂起删除"的列表中的成员。

我认为这种方法有点令人担忧,因为我计划使用RemoveMemberListRequest,它会查找EntityId(联系人)的guid和ListID(营销列表)的guid,问题是有许多列表和许多联系人都符合此标准。重要的标准集中在所有者为"挂起删除"的联系人上,这意味着我没有特定的方法来查询添加联系人的特定营销列表,而是将"挂起的删除"字段作为所有者字段。我希望这是合理的,任何帮助都将不胜感激。

请看我到目前为止有什么

public static Entity GetConatctWithPendingDeletion(IOrganizationService service)
    {
        QueryExpression qe = new QueryExpression();
        qe.EntityName = "contact";
        qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
        qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");// tbhis represents the optionset 'Pending Deletion'
        EntityCollection response = service.RetrieveMultiple(qe);
        return response.Entities[0];
        Console.WriteLine(response.Entities.Count());
        Console.ReadLine();
        RemoveMemberListRequest req = new RemoveMemberListRequest();
        req.EntityId = new Guid("xxxxxxx-xxx-xxx-xxx-xxxxxxx");//how do I specifty a list of Contact guids based on above code
        req.ListId = new Guid("xxxxxxx-xxxx-xxxx-xxxxx");// Also here , how do I specify the lists I want,
        RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);

    }

如何从市场营销列表中批量删除成员

您应该能够通过JOIN将营销列表成员关系实体连接到您的帐户/联系人/潜在客户查询并迭代生成的记录来解决此问题:

QueryExpression qe = new QueryExpression();
qe.EntityName = "contact";
qe.ColumnSet = new ColumnSet("fullname", "ownerid", "parentcustomerid", "new_title");
qe.Criteria.AddCondition("ownerid", ConditionOperator.Equal, "0F040671-1E83-E111-83B9-D067E5EBE694");
LinkEntity le = new LinkEntity();
le.EntityAlias = "lm";  // note the alias, you need it when accessing fields of the linked entity
le.Columns = new ColumnSet("listid");
le.JoinOperator = JoinOperator.Inner;
le.LinkFromEntityName = "contact";
le.LinkFromAttributeName = "contactid";
le.LinkToEntityName = "listmember";
le.LinkToAttributeName = "entityid";
eq.LinkEntities.Add(le);
EntityCollection response = service.RetrieveMultiple(qe);
// iterate over list members
foreach (var listmember in response.Entities)
{
    RemoveMemberListRequest req = new RemoveMemberListRequest();
    req.EntityId = listmember.Id;
    // the linked (relationship) entity fields are of type AliasedValue
    AliasedValue av = listmember.GetAttributeValue<AliasedValue>("lm.listid");
    EntityReference lm = (EntityReference)av.Value;
    req.ListId = lm.Id;
    RemoveMemberListResponse resp = (RemoveMemberListResponse)service.Execute(req);
}