如何在 Dynamics 迁移中保留createdon、createdby、modifiedon 和modifiedby?

问题描述 投票:0回答:1

在尝试了 SSIS 和 KingswaySoft 后,我选择编写一个控制台应用程序来迁移我的 Dataverse 表。 事实证明,与无代码/低代码方法相比,代码对我来说更熟悉并且更容易。 我遇到的一个问题是保留源记录中的用户/日期戳。 迁移时,这些值会被系统覆盖。

我找到了一种 OOTB 方法来覆盖

createdon
,但该方法并不全面,并且不适用于所有 4 个领域。 https://nishantrana.me/2018/10/16/using-overriddencreatedon-or-record-created-on-field-to-update-created-on-field-in-dynamics-365/

migration dynamics-crm dataverse kingswaysoft
1个回答
0
投票

经过大量研究和实验(包括 ChatGPT 帮助),我发现我需要编写一个插件。 我把它称为 RecordStamps。 我将插件连接到每个正在迁移的表的创建/更新操作,特别是预操作阶段。

我创建了一个用于迁移目的的中间表,称为迁移元。 在其中我创建了 Meta Created On、Meta Created By、Meta Modified On、Meta Modified By,所有这些都是为了确保列名称与系统更新的列名称不同。我还将主名称字段命名为“逻辑名称”。

在迁移应用程序中,在迁移任何记录之前,我首先将元数据值保存在该表中。 我将源记录的 GUID 指定为写入迁移元的实体的 GUID 以及逻辑名称和元事实。 这样,一张表就可以让我跟踪每一条被迁移的记录。 回想一下,GUID 是全局唯一的。保存元数据后,我将记录从源迁移到目标 Dataverse 环境。 RecordStamps 插件拦截创建/更新,使用 ID 和逻辑名称从迁移元表中检索靶心命中,然后在写入之前替换这些事实。

我指定创建/更新。 我发现我不能只在目标环境中创建非活动记录,尽管这些记录在源中是非活动的。 因此,我必须暂时将它们标记为活动状态以迁移它们,然后将它们更新为非活动状态。

© www.soinside.com 2019 - 2024. All rights reserved.