使用 Web API 合并表行

找到重复的记录时,可以使用 合并操作将它们合并为一个记录。

注释

只能合并以下实体类型:

合并操作

合并是接受四个参数的未绑定操作:

Name 类型 Description 可选
Target crmbaseentity 合并操作的目标。 No
Subordinate crmbaseentity 要从中合并数据的实体记录。 No
UpdateContent crmbaseentity 在合并操作期间要设置的更多实体属性。 Yes
PerformParentingChecks 布尔 指示是否检查两个实体记录的父信息是否不同。 No

合并会将任何有用的数据从 Subordinate 记录移到 Target 记录。 Target 记录中的任何现有数据都不会被覆盖。 然后,Subordinate 记录将被停用。 若要执行此操作,调用方必须具有对标识为 Target 和 Subordinate 的两条记录的权限和访问权限。

使用 POST 请求发送数据以合并记录。 本示例合并两个帐户实体记录,同时更新将在合并后保留的记录的 accountnumber 属性。

请求:

POST [Organization URI]/api/data/v9.2/Merge HTTP/1.1
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Accept: application/json

{
  "Target": {
    "name": "Account 1",
    "accountid": "bb8055c0-aea6-ea11-a812-000d3a55d474",
    "@odata.type": "Microsoft.Dynamics.CRM.account"
  },
  "Subordinate": {
    "name": "Account 2",
    "accountid": "c38055c0-aea6-ea11-a812-000d3a55d474",
    "@odata.type": "Microsoft.Dynamics.CRM.account"
  },
  "UpdateContent": {
    "accountnumber": "1234",
    "@odata.type": "Microsoft.Dynamics.CRM.account"
  },
  "PerformParentingChecks": false
}

Important

由于参数未显式定义 Target、Subordinate 和 UpdateContent 属性类型,因此必须包含 @odata.type 注释以指定类型。

响应:

HTTP/1.1 204 No Content
OData-Version: 4.0

事件的合并行为

incident(case)表的合并行为不同于 account、contact 或 lead 表。

  • 未使用 UpdateContent 参数数据。

  • 合并是在用户的安全上下文中执行的

    其他表的合并操作通过系统用户安全上下文执行。 由于事件单合并操作是在用户的安全上下文中执行的,因此用户必须具有执行合并操作所涉及的任何操作(例如重新设置相关记录的父记录)所需的安全权限。

    如果执行记录合并的用户没有合并操作中包含的所有操作的权限,则合并操作将失败并回滚到原始状态。

另请参阅

使用 Web API 操作
合并重复记录
MergeRequest 类
管理指南:合并数据
Dynamics 365 for Service:合并案例