Microsoft Entra ID与Dataverse查找字段协同问题:无法获取用户原始ID
解决Dataverse查找列返回ID与Entra ID不一致的问题
问题根源
从你提供的JSON片段能看到,_new_businessunitrequestedfor_value@Microsoft.Dynamics.CRM.lookuplogicalname的值是new_abcd——这说明你创建的「Requesting For」查找列,关联的是自定义表new_abcd,而非Dataverse内置的systemuser系统用户表(该表与Microsoft Entra ID直接映射)。所以返回的ID是自定义表中记录的GUID,不是你需要的Entra用户ID。
解决步骤
方法一:修改查找列的关联目标(推荐)
- 进入Dataverse的表设计界面,找到「Requesting For」字段
- 将其关联的目标表改为系统用户(systemuser),替换原来的自定义表
new_abcd - 保存修改后,新增记录时返回的
_new_businessunitrequestedfor_value就是系统用户的GUID,这个ID和创建者字段里的用户ID一致,且可通过系统用户表的azureactivedirectoryobjectid字段直接获取对应的Entra ID
方法二:通过自定义表关联获取(无法修改字段时用)
如果业务上不能修改查找列的关联目标,就通过自定义表的关联关系追溯:
- 在Power Automate中,拿到
_new_businessunitrequestedfor_value(自定义表记录ID)后,添加Dataverse的「获取行」动作,目标表选new_abcd,用该ID获取对应记录 - 确认自定义表
new_abcd中是否有字段关联到systemuser表(比如名为new_systemuserid的查找字段) - 拿到系统用户ID后,再执行一次「获取行」动作,目标表选系统用户,通过系统用户ID提取
azureactivedirectoryobjectid字段值,这就是你需要的Entra ID
验证修改效果
修改后,你会看到返回的JSON中,_new_businessunitrequestedfor_value@Microsoft.Dynamics.CRM.lookuplogicalname的值变为systemuser,此时返回的GUID就是正确的系统用户ID。
内容的提问来源于stack exchange,提问作者SajidSalim
相关产品推荐
相关产品推荐

