You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于邮箱地址获取MS Dynamics中用户的业务单元?

可以通过用户邮箱地址检索其业务单元

当然可以,核心思路是通过邮箱定位到对应的系统用户记录,再关联查询其所属的业务单元。以下是具体实现方式:

使用QueryExpression(.NET 示例)

通过邮箱过滤系统用户,同时关联查询业务单元的信息:

// 假设你已经有组织服务实例 IOrganizationService service
string userEmail = "user@example.com"; // 你的目标邮箱

// 创建用户查询条件
QueryExpression query = new QueryExpression("systemuser")
{
    ColumnSet = new ColumnSet("fullname", "businessunitid"),
    Criteria = new FilterExpression
    {
        Conditions =
        {
            new ConditionExpression("internalemailaddress", ConditionOperator.Equal, userEmail)
        }
    },
    // 关联业务单元,获取业务单元名称等信息
    LinkEntities =
    {
        new LinkEntity("systemuser", "businessunit", "businessunitid", "businessunitid", JoinOperator.Inner)
        {
            Columns = new ColumnSet("name", "businessunitid")
        }
    }
};

EntityCollection results = service.RetrieveMultiple(query);
if (results.Entities.Count > 0)
{
    Entity user = results.Entities[0];
    // 获取业务单元ID和名称
    Guid businessUnitId = ((EntityReference)user["businessunitid"]).Id;
    string businessUnitName = user.GetAttributeValue<AliasedValue>("businessunit.name").Value.ToString();
    // 后续业务逻辑处理
}

使用FetchXml(通用查询语言)

如果是用FetchXml查询,也可以实现同样的效果:

<fetch top="1">
  <entity name="systemuser">
    <attribute name="fullname" />
    <attribute name="businessunitid" />
    <filter type="and">
      <condition attribute="internalemailaddress" operator="eq" value="user@example.com" />
    </filter>
    <link-entity name="businessunit" from="businessunitid" to="businessunitid" alias="bu">
      <attribute name="name" />
      <attribute name="businessunitid" />
    </link-entity>
  </entity>
</fetch>

注意事项

  • 确保邮箱地址是唯一的,避免返回多条用户记录(如果系统允许重复邮箱的话,需要额外处理)
  • 调用接口时需要有对应的权限,确保能读取系统用户和业务单元的信息

内容的提问来源于stack exchange,提问作者DareToDead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:51:24