我正在探索将我们的组织工作项从 TFS 2018 (v. 16.131.28507.4) 迁移到 Azure DevOps 2020 (v. Dev18.M170.6) 的不同可能性。使用 Azure DevOps 迁移工具。
我现在正在努力使用部分迁移工具(v. 11.11)
所有工作项都会复制到目标环境,迭代和区域以及团队和团队区域都已到位。“ReflectedWorkItemId”字段也在我的目标中正确更新。
但在 Azure 中,目标环境中没有一个工作项与其子项或父项有任何链接。在迁移工具日志中,有很多警告与我的问题有关。
"[SKIP] [LINK_CAPTURE_RELATED] [RegisteredLinkType] target not found. wiSourceL=38673, wiSourceR=null, wiTargetL=12410"
Azure 中存在父 WI 和子 WI,但我猜我在配置中遗漏了一些东西。
在我的源代码中,我使用的是项目类型“敏捷”。在我的目标中,我从 Agile 创建了一个继承的项目(名称为“OrgAgile”,以便能够在流程模板中添加“ReflectedWorkItemId”字段。这可能是个问题吗?
我看到一个问题已发布在工具 GitHub ( https://github.com/nkdAgility/azure-devops-migration-tools/issues/964 ) 上,我自己在那里发布了一个问题,但还没有答案,所以我想我在这里试试。这可能是一个错误,但我想确保我没有做错配置。
下面是configuration.json。也许我已经从默认文件中删除/遗漏了对正确链接迁移至关重要的配置,或者其中包含冗余/冲突部分。
任何帮助、指点或烤肉都是最受欢迎的。
配置.json
{
"Version": "11.11",
"workaroundForQuerySOAPBugEnabled": false,
"GitRepoMapping": null,
"LogLevel": "Information",
"Source": {
"$type": "TfsTeamProjectConfig",
"Collection": "http://<sourceServer>/DefaultCollection",
"Project": "<sourceProject>",
"ReflectedWorkItemIDFieldName": "TfsMigrationTool.ReflectedWorkItemId2",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Target": {
"$type": "TfsTeamProjectConfig",
"Collection": "http://<targetServer>/DefaultCollection",
"Project": "<targetProject>",
"ReflectedWorkItemIDFieldName": "ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Processors": [
{
"$type": "TfsAreaAndIterationProcessorOptions",
"Enabled": true,
"PrefixProjectToNodes": false,
"NodeBasePaths": null,
"ProcessorEnrichers": null,
"SourceName": "IterationSettingsSource",
"TargetName": "IterationSettingsTarget"
},
{
"$type": "TfsTeamSettingsProcessorOptions",
"Enabled": true,
"MigrateTeamSettings": true,
"UpdateTeamSettings": true,
"PrefixProjectToNodes": false,
"Teams": null,
"ProcessorEnrichers": null,
"SourceName": "TeamSettingsSource",
"TargetName": "TeamSettingsTarget"
},
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"BuildFieldTable": false,
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan', 'Shared Steps', 'Shared Parameter', 'Test Case')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"LinkMigration": true,
"AttachmentMigration": false,
"AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": true,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"AttachRevisionHistory": false,
"LinkMigrationSaveEachAsAdded": false,
"GenerateMigrationComment": true,
"NodeBasePaths": [],
"WorkItemIDs": null,
"MaxRevisions": 5
}
],
"Endpoints": {
"TfsEndpoints": [
{
"Name": "IterationSettingsSource",
"AccessToken": "",
"Organisation": "http://<sourceServer>/DefaultCollection",
"Project": "<sourceProject>",
"ReflectedWorkItemIdField": "TfsMigrationTool.ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"Area": "Area",
"Iteration": "Iteration"
}
},
{
"Name": "IterationSettingsTarget",
"AccessToken": "",
"Organisation": "http://<targetServer>/DefaultCollection",
"Project": "<targetProject>",
"ReflectedWorkItemIdField": "ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
}
],
"TfsTeamSettingsEndpoints": [
{
"Name": "TeamSettingsSource",
"AccessToken": "",
"Organisation": "http://<sourceServer>/DefaultCollection",
"Project": "<sourceProject>",
"ReflectedWorkItemIdField": "TfsMigrationTool.ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"Area": "Area",
"Iteration": "Iteration"
}
},
{
"Name": "TeamSettingsTarget",
"AccessToken": "",
"Organisation": "http://<targetServer>/DefaultCollection",
"Project": "<targetProject>",
"ReflectedWorkItemIdField": "ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"AreaPath": "Area",
"Iteration": "Iteration"
}
}
]
}
}