Migration of Work Items from TFS 2018 to Azure DevOps 2020 fails to migrate links between Work Items

I am exploring different possibilities to move our organisations Work Items from a TFS 2018 (v. 16.131.28507.4) to Azure DevOps 2020 (v. Dev18.M170.6). with Azure DevOps Migration Tools.

I am now struggling with parts of the migration tools (v. 11.11)

All Work Items do copy to the target environment, the iterations and areas are in place as well as the teams and team areas. The field "ReflectedWorkItemId" is also updated correctly in my target.

But looking in Azure, not one work item in the target environment has any links to its children or parents. In the migration tools logs there's a lot of warnings which I guess are related to my problem.

"[SKIP] [LINK_CAPTURE_RELATED] [RegisteredLinkType] target not found. wiSourceL=38673, wiSourceR=null, wiTargetL=12410"

The parent and the children WI's is present in Azure with but I am guessing I am missing something in the configuration.

In my source I am using the project type "Agile". In my target I've created an inherited project from Agile (with name "OrgAgile" to be able to add the "ReflectedWorkItemId" field in the process templates. Can that be an issue?

I see one issue have been posted on the tools GitHub (https://github.com/nkdAgility/azure-devops-migration-tools/issues/964) and I've posted a question there myself but no answers yet so I thought I try here. It could be a bug, but I want to make sure I haven't done the configuration wrong.

Below is the configuration.json. Perhaps I've removed/missed configuration from the default file that is crucial for a correct link migration or have redundant/conflicting parts in it.

Any help, pointers or roasts is most welcome.

configuration.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"
            }
         }
      ]
   }
}

Solution 1:

This was probably caused by a bug.

Discussion and possible solution is found here:

https://github.com/nkdAgility/azure-devops-migration-tools/issues/964