通过 ADF 将记录加载到 Dynamics 365

Nic*_*aid 3 dynamics-crm azure-data-factory xrmtoolbox common-data-service

我在 Azure 数据工厂中使用 Dynamics 连接器。

TLDR

此连接器是否支持加载需要传入父记录键的子记录?例如,如果我想创建一个contact并将其附加到父项account,我会使用 null 插入一条记录contactid,一个有效的parentcustomeridGUID 并设置parentcustomeridtype为 1(或 2),但出现错误。

很长的故事

我已成功连接到 Dynamics 365 并将数据(例如,lead表)提取到 SQL Server 表中

为了测试我是否可以以另一种方式传输数据,我只是将数据从lead表加载回leadDynamics 中的实体。

我收到此错误:

失败发生在“接收器”端。ErrorCode=DynamicsMissingTargetForMultiTargetLookupField,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=,Source=,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=无法找到多目标查找字段的目标列:'所有者'。

作为测试,我ownerid从源列列表中删除了它加载正常。

这显然是一个外键值。

它向我提出了两个问题:

  1. 特别是关于错误消息:如果我知道它需要使用哪个查找,我如何指定它应该验证哪个查找表?ADF 连接器中没有设置允许我这样做。

  2. 这显然是一个外键值。如果我只有这一行的名称(或业务键),我如何轻松查找外键值?

这通常如何通过其他 API 完成,即 Web API?

是否有有助于澄清的 XRMToolbox 插件?

我还阅读了一些帖子,这些帖子暗示您可以在 XML 文档中发送预先连接的数据,所以也许这也会有所帮助。

编辑 1

我意识到lead.ownertypeid我的源数据集中的字段是NULL(这就是导出的)。如果我在各种 Xrmtoolbox 工具中浏览它,它也是 NULL。我尝试将其硬编码为systemuser(这是owner实际所有者记录在表中的实际情况),但我仍然遇到相同的错误。

我还注意到有一个纪录,在同一个PK值systemuser

所以相同的记录在两个表中,但我如何告诉动态连接器使用哪一个?为什么它甚至在乎?

编辑 2

我收到了类似的消息msauto_testdrivefor customerid

我用 排除了所有记录customerid=null,并得到了同样的错误。

编辑 2

此链接似乎表明我需要设置customeridtype为 1(帐户)或 2(联系人)。我这样做了,但仍然出现相同的错误。

我也相信我和这个人同样的问题

也许 ADF 连接器也遇到了同样的问题。

Nic*_*aid 5

在撰写本文时,@Arun Vinoth 是 100% 正确的。然而不久之后有一个文档更新(响应我提出的 GitHub)解释了如何做到这一点。

我将在这里记录我是如何做到的。

要针对父帐户填充联系人,您需要父帐户 GUID。然后你准备一个这样的数据集:

SELECT 
-- a NULL contactid means this is a new record
CAST(NULL as uniqueidentifier) as contactid,
-- the GUID of the parent account
CAST('A7070AE2-D7A6-EA11-A812-000D3A79983B' as uniqueidentifier) parentcustomerid,
-- customer id is an account
'account' [parentcustomerid@EntityReference],
'Joe' as firstname,
'Bloggs' lastname,
Run Code Online (Sandbox Code Playgroud)

现在您可以在 ADF 中应用普通的自动映射方法。

现在您可以从此数据集中选择并加载到contact. 您可以应用通常的自动映射方法,即:创建没有模式的数据集。在不映射列的情况下执行复制活动