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

Dataverse迁移中如何保留createdon、createdby等4个系统字段值?

保留Dataverse迁移记录元数据的解决方案

Dataverse默认会自动生成createdon/createdby/modifiedon/modifiedby这四个系统元数据字段,常规写入操作会覆盖源记录的原始值。仅用overriddencreatedon只能覆盖createdon,要完整保留这四个字段的源数据,需借助Dataverse的特殊请求配置,以下是具体实现方式:

使用Dataverse SDK(C#)实现

通过CreateRequest或UpdateRequest的SuppressAutoCreatedModified参数,禁止系统自动生成元数据,直接赋值源记录的四个字段:

using Microsoft.PowerPlatform.Dataverse.Client;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Messages;

// 初始化服务连接
var serviceClient = new ServiceClient("你的Dataverse连接字符串");

// 从源记录获取的元数据信息
DateTime sourceCreatedOn = new DateTime(2023, 1, 1, 0, 0, 0, DateTimeKind.Utc);
Guid sourceCreatedById = new Guid("源环境创建用户ID");
DateTime sourceModifiedOn = new DateTime(2023, 1, 2, 0, 0, 0, DateTimeKind.Utc);
Guid sourceModifiedById = new Guid("源环境修改用户ID");

// 构造目标实体
var targetEntity = new Entity("你的实体逻辑名称");
targetEntity["name"] = "测试记录"; // 实体业务字段示例
// 直接赋值系统元数据字段
targetEntity["createdon"] = sourceCreatedOn;
targetEntity["createdby"] = new EntityReference("systemuser", sourceCreatedById);
targetEntity["modifiedon"] = sourceModifiedOn;
targetEntity["modifiedby"] = new EntityReference("systemuser", sourceModifiedById);

// 创建请求并设置关键参数
var createReq = new CreateRequest
{
    Target = targetEntity,
    SuppressAutoCreatedModified = true // 禁止系统自动覆盖元数据
};

// 执行请求
var createResp = (CreateResponse)serviceClient.Execute(createReq);

使用Web API实现

在请求头中添加MSCRM.SuppressAutoCreatedModified: true,然后在请求体中直接传入四个元数据字段:

POST [你的组织URI]/api/data/v9.2/[实体逻辑名称集合]
Headers:
Content-Type: application/json
MSCRM.SuppressAutoCreatedModified: true

Body:
{
    "name": "测试记录",
    "createdon": "2023-01-01T00:00:00Z",
    "createdby@odata.bind": "/systemusers(源环境创建用户ID)",
    "modifiedon": "2023-01-02T00:00:00Z",
    "modifiedby@odata.bind": "/systemusers(源环境修改用户ID)"
}

关键注意事项

  • 执行操作的用户必须拥有写入审计历史(prvWriteAuditHistory)权限,否则会触发权限错误
  • SuppressAutoCreatedModified参数仅对单条创建/更新请求生效,批量操作需为每个子请求单独配置
  • 若源环境的创建/修改用户在目标环境不存在,需先迁移这些用户记录,或映射到目标环境的对应用户,避免实体引用无效报错
  • 部分系统实体可能限制修改元数据字段,自定义实体默认支持此操作

内容的提问来源于stack exchange,提问作者M. Lanza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:32:45