如何从市场营销列表中批量删除成员
本文关键字:删除成员 列表 市场营销 | 更新日期: 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);
}