如何识别非人类用户?

时间:2015-06-08 11:23:42

标签: c# dynamics-crm-2015 query-expressions

列出系统中的所有用户,我注意到其中一些用户是系统用户而没有例如工作时间。目前,我只是将它们列出并从我的循环中排除,这是一种Q& D方法,我更喜欢这样做。

我还没有找到关于 systemuser 实体的任何具体信息,它告诉我某个是真实配置文件(即在Office 365门户中创建)还是提供给我的MS默认情况下。

Q& D代码如下。

QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... };
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities;

IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" };
  foreach (Entity user in users.Where(element
    => !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... }

第二个最佳解决方案,如果无法确定谁在自动列表中以及谁是真正的家伙,那就是制作详尽的全面例外列表。再一次,我的google-fu让我失望了,因为我没有在实体 systemuser 的自动创建实例的完整列表中找到任何文档。

1 个答案:

答案 0 :(得分:2)

一种方法是检查CreatedBy字段;用户NULLSYSTEMINTEGRATION。对于 CRM管理员用户,此字段也是NULL,因此,如果管理员用户正在被人使用,则应考虑将其排除在外。

FilterExpression humanFilter = new FilterExpression();
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull));

if (retrieveAdminUser)
{
  humanFilter.FilterOperator = LogicalOperator.Or;
  humanFilter.AddCondition(
    new ConditionExpression("domainname", ConditionOperator.Equal, "admin@crm"));
}

userQuery.Criteria.AddFilter(humanFilter);