问题标签 [common-data-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1992 浏览

dynamics-crm - 通过 ADF 将记录加载到 Dynamics 365

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

TLDR

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

很长的故事

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

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

我收到此错误:

失败发生在“Sink”端。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表中与实际所有者记录相对应的内容),但我仍然遇到相同的错误。

systemuser我还注意到表中有一条具有相同 PK 值的记录

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

编辑 2

我收到了类似的消息msauto_testdrivefor customerid

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

编辑 2

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

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

也许 ADF 连接器也存在同样的问题。

0 投票
1 回答
46 浏览

javascript - Dynamics/CDS 单行文本格式选项 电话自定义电话提供商

TL;博士

我不想在桌面上打开此启动应用程序窗口,而是希望该按钮运行自定义代码以在我的浏览器中打开一个新选项卡或在我的浏览器中打开一个弹出窗口。那可能吗?

完整的上下文

在 Dynamics 和 Power Apps 中,单行文本格式选项中包含一个电话选项。这提供了一种很好的用户体验,可以沿着文本图标单击电话图标以启动桌面应用程序或移动设备上的电话应用程序来拨打电话。

是否可以使用我自己的代码为此电话按钮创建自定义操作?也许在 JavaScript 中。

在 Web 应用程序中,如果您的计算机上安装了 Skype 或 Lync 的客户端,则可以单击启用字段以发起呼叫。电话服务提供商选项位于系统设置的常规选项卡的底部。 ”唯一支持的自定义是在系统设置中,它只允许您定义 Skype 提供商。

在此处输入图像描述

理想情况下,在浏览器中使用 Dynamics 时,我想单击电话呼叫按钮,而不是启动应用程序窗口,而是使用我自己的代码在浏览器中为用户提供一个弹出窗口来处理电话呼叫操作。那可能吗?

在此处输入图像描述

我不希望打开以下内容,而是希望我自己的代码执行自定义操作,例如在浏览器中打开弹出窗口或在浏览器中打开警报对话框。 在此处输入图像描述

0 投票
1 回答
241 浏览

python-3.x - 使用文件向 Common Data Service 发出 PATCH 方法请求

我正在尝试创建一个 Python 脚本,它可以使用 PATCH 方法将文件上传到 MS 的公共数据服务中。我成功地使用简单数据进行了 GET、POST、PATCH 和 DELETE 调用,但到目前为止还无法对其进行配置,以便我可以上传文件。

我一直在使用Python 的 Requests 库requests.patch函数来尝试更新数据。我正在尝试将 .csv 文件上传到该字段中,我正在上传的文件的文件大小为 1kb。

如果我通过内置的数据接口直接将数据上传到公共数据服务中,我的浏览器能够正确地进行 PATCH 调用。我试图尽可能地复制调用,但成功率为零。

公共数据服务中的文件字段

公共数据服务中的文件字段

网络浏览器中的 PATCH 调用

网络浏览器中的 PATCH 调用

使用文件向 Microsoft 的通用数据服务发出 PATCH 请求的正确方法是什么?

0 投票
1 回答
183 浏览

sql-server - CDS 中预过滤的表/实体、系统视图或存储过程(基于 Dynamics CRM DB)

问题:我的 CRM 通过 Common Data Service (CDS) 连接到 PowerBI,但我无法将视图(系统或个人)从 Dynamics 拉入 PowerBI。

试过:当然,我可以通过 PowerBI 中的 CDS 连接器获取整个动态实体,但我无法选择我准备好的视图。

情况:目前我们在 SQL 中使用我们的 Dynamics 数据库的镜像来运行 PowerBI 的数据查询(当有人拉动数百万行数据以刷新他们的 BI 报告时,不会影响 Dynamics 服务器的性能。)我们使用 Dynamics CRM 的数据集成工具创建我们的 Dynamics 数据库的副本。我们在 SQL 数据库(下面的“....database.windows.net”图像)中设置的视图(和存储过程)是我们为用户提供运行报告的访问权限。(我没有扩展视图/存储过程,但它们在那里)

解决方案:SQL 代码和错误的图像
不必使用数据集成工具将我们的动态数据库传递到我们的 SQL 数据库而是使用 Common Data Service 会更有效,但是,在 CDS 中我似乎没有能够创建:

  • 意见

  • 存储过程

我知道 CDS 更像是一种访问数据的方式而不是数据库,但我们希望更多地控制用户可以访问哪些数据。也就是说,我们只想向他们展示我们选择的内容,这是他们使用 Dynamics 中的角色和权限能够看到的内容的子集。

这里有一篇关于我们如何设置 Dynamics - CDS 集成的文章:https ://www.powerobjects.com/blog/2020/05/20/use-sql-to-query-data-from-cds-and-dynamics -365-ce/

0 投票
1 回答
153 浏览

common-data-service - 如何从外部应用程序将数据存储在 Power Platform 的 Common Data Service 中?

我想从 Microsoft 生态系统外部的外部应用程序将新记录插入 Power Platform 的 Common Data Service 数据库中的实体。我不知道 Power Platform 是否为此公开了一种 API。

0 投票
1 回答
37 浏览

dynamics-crm - 用于销售的通用数据模型 (CDM) 中实体的某些字段之间有什么区别?

在研究用于销售的 CDM 模型并将我的数据映射到不同的字段时,我对某些字段(例如Order 实体中的 and 和 and 之间totalDiscountAmount的区别)感到困惑。有人可以澄清一下吗?discountAmountownerIdowningUser

0 投票
1 回答
248 浏览

dynamics-crm - 在 CDS 连接器中使用备用键时出错

我正在使用 Azure 数据工厂中的Common Data Service for Apps连接器将数据加载到 Dynamics 365

在使用实体密钥之前,我已经成功完成了这项工作。请参阅此问题:通过 ADF 将记录加载到 Dynamics 365

现在我正在尝试使用备用键将记录更新到account实体中。(在这种情况下插入)

在动力学

我在以下位置创建了两个自定义属性字段account

然后我创建了一个account包含以下字段的 Key:

xyz_alternatekeyaccount

在 ADF 中

然后,我使用 ADF 中的Copy Data活动将数据从 SQL 视图复制到帐户实体中,并使用 CDS 连接器作为目标。

这是我的源 SQL 语句:

在目标中,在备用键名字段中,我输入了备用键名:xyz_alternatekeyaccount

运行管道时出现的错误是

实体 ID 值的类型无效

一些排除极端情况的测试:

  • 如果我输入了一个虚拟备用密钥,我得到Cannot retrieve key information of alternate key 'xyz_alternatekeyaccountx' for entity 'account'。这意味着它正在正确找到备用密钥
  • 如果我从连接器中删除备用键,它会退回到我看到的另一组常见错误
  • 当我使用 CDM 连接器将实体拉入 SQL 时,自定义属性以NVARCHAR(MAX)
  • 我尝试转换为这些数据类型:NVARCHAR(MAX) NVARCHAR(50) VARCHAR(MAX) VARCHAR(50)
  • 如果我使用普通键(不是备用键),并且数据类型错误(GUID 以外的任何内容),我会得到同样的错误

另请参阅我提出的这个 Doco GitHub:

https://github.com/MicrosoftDocs/azure-docs/issues/59028

0 投票
1 回答
104 浏览

microsoft-dynamics - 用于将更改发布到 ServiceBus 的 Common Data Services Logic App Connector 或服务端点

我正在寻找一种在 Dynamics 365 上发布更改的弹性方式。我使用以下方法完成了 POC。

  1. 使用逻辑应用连接到使用 Common Data Services 连接器的 Dynamics 365 实例,该连接器在连接实体的任何更改时触发。我尝试禁用逻辑应用程序以模拟场景,以防逻辑应用程序由于某种原因失败。我发现逻辑应用程序不会触发更新,而逻辑应用程序在启用后被禁用。这是预期的行为吗?我是从弹性的角度思考的。

  2. 注册服务端点以将更改发布到服务总线。我发现发布的消息很冗长,并且通过剖析消息来计算更改很乏味。

在 D365 实体上发布更改的推荐方式是什么?

0 投票
1 回答
308 浏览

azure-data-factory - ADF CDM 源转换未读取数据

Azure 数据工厂中的通用数据模型的内联数据集存在问题。简单地说,ADF 中的所有内容似乎都连接并从我的清单文件和实体定义中读取——但是当我单击“数据预览”按钮时,我总是得到“无输出数据”——我觉得这很奇怪,因为可以完美地读取数据使用 CDM 连接器连接 PowerBI 中的相同文件时。我在做什么错意味着数据没有读入数据预览和映射数据流中的后续转换?

我的清单文件如下所示(引用示例实体):

0 投票
1 回答
246 浏览

azure - 在 Azure AD 中注册应用以访问 CDS Web API

我试图弄清楚如何将外部应用程序与 Microsoft CDS Web API 集成。第一步是尝试使用 Postman 的 Wep API。按照此文档,我可以使用文档中提供的客户端 ID 进行身份验证并向 API 发出请求。但是,当我尝试在我的 AAD 中注册我自己的应用程序时,我无法在 Postman 中获取访问令牌,而无需先请求管理员同意。

我按照本文档中的说明注册了应用程序,另外我允许隐式流程。A 在试用帐户中执行此操作,我是管理员,然后我尝试使用另一个租户的用户(我不是管理员)检索令牌,它告诉我征求租户的同意。

您知道如何在非管理员用户无需征得管理员同意的情况下注册应用程序吗?

编辑:
注册的应用程序具有以下权限,其中没有一个需要管理员同意:
所选权限的屏幕截图

非管理员用户所属的租户具有以下配置,用户可以同意访问:
用户设置截图

无论如何,我认为这些最后的设置不会是问题,因为在第一个链接的示例中使用 Microsoft 提供的客户端 ID 请求令牌时,我不需要管理员的同意。

只是为了清楚起见,这是我想从授权过程中删除的步骤: 同意请求屏幕的屏幕截图