MigrationTool迁移工作项仅复制未删除源项 配置问题咨询
配置问题及修正方案
核心遗漏点
- 处理器执行顺序错误:当前
WorkItemDeleteConfig放在迁移处理器之前,会先执行删除逻辑再执行迁移,完全不符合「先复制成功再删除源项」的移动逻辑 - 删除处理器默认作用于目标项目:未配置指定删除源项目工作项,默认
WorkItemDeleteConfig仅清理目标项目的工作项 - 缺少迁移成功校验规则:当前删除逻辑的WIQL没有过滤未成功迁移的工作项,存在误删未迁移数据的风险
修正方案
- 调整处理器顺序,先执行工作项迁移,再执行删除操作
- 给
WorkItemDeleteConfig添加"DeleteFromSource": true配置,指定删除源项目工作项 - 调整删除逻辑的WIQL,仅删除已经成功同步到目标端、
ReflectedWorkItemID字段已被标记的工作项
修正后的Processors配置片段如下:
"Processors": [ { "$type": "WorkItemMigrationConfig", "ReplayRevisions": true, "PrefixProjectToNodes": false, "UpdateCreatedDate": true, "UpdateCreatedBy": true, "BuildFieldTable": false, "AppendMigrationToolSignatureFooter": false, "WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan')", "WIQLOrderBit": "[System.ChangedDate] desc", "Enabled": true, "LinkMigration": true, "AttachmentMigration": true, "AttachmentWorkingPath": "C:\\Users\\ABCD\\Desktop\\AzureDevOpsMigrationTool\\WorkItemAttachmentWorkingFolder\\", "FixHtmlAttachmentLinks": false, "SkipToFinalRevisedWorkItemType": true, "WorkItemCreateRetryLimit": 5, "FilterWorkItemsThatAlreadyExistInTarget": false, "PauseAfterEachWorkItem": false, "AttachmentMaxSize": 480000000, "CollapseRevisions": false, "LinkMigrationSaveEachAsAdded": true }, { "$type": "WorkItemDeleteConfig", "Enabled": true, "DeleteFromSource": true, "WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan') AND [Custom.ReflectedWorkItemId] <> ''", "WIQLOrderBit": "[System.ChangedDate] desc" } ]
执行注意事项
- 首次执行建议先关闭删除处理器的
Enabled开关,跑一次完整迁移确认所有工作项同步无误后,再开启删除处理器执行源项清理 - 操作前建议先备份源项目的工作项数据,避免误操作导致数据丢失
内容的提问来源于stack exchange,提问作者J A
相关产品推荐
相关产品推荐

