Why are my WIT Links not migrating? Q&A-43 Part II

This blog post is a continuation from the post Why are my WIT Links not migrating? Q&A-43 and covers another scenario reported by our support engineers, where links are not migrating automatically (as expected).

Generally, when migrating between Team Projects based on a process template such as MSF for Agile Software Development, MSF for CMMI Process Improvement or Microsoft Visual Studio Scrum, or similar process template the migration of links just works.

In the following scenario, however, where we migrate from a Team Project based on the Conchango Scrum process template to a Team Project based on the MSF for Agile Software Development we encounter yet another scenario where the red question mark appears in the diagram (as below) to indicate that a link has gone missing.

… why?

The reason for this anomaly is that there are custom link types in the Conchango Scrum Process Template, which the TFS Integration Tools are unaware of and therefore need additional configuration settings. You can get the Linktype out of the wit definition and put that on the appropriate source side, in this case Left.

The configuration extract example is as follows:

<LinkTypeMappings>
<LinkTypeMapping LeftMigrationSourceUniqueId="…leftsourceguid…"
LeftLinkType="Scrum.ImplementedBy"
RightMigrationSourceUniqueId="…rightsourceguid…" />
RightLinkType="Microsoft.TeamFoundation.Migration.TFS.LinkType.WorkItemToWorkItem"
</LinkTypeMappings>

Rerunning the migration using a session configuration with the link type mapping, as above, results in a happier migration results which include the link between the work items as shown below.

Another example, pulled from one of the ClearQuest configuration files from the readiness package, shows the same concept when migrating from Clear Quest to a Team project based on the MSF for CMMI Process Improvement process template:

<LinkTypeMappings>
<LinkTypeMapping LeftMigrationSourceUniqueId="…leftsourceguid…"
LeftLinkType="ClearQuestAdapter.LinkType.Duplicate"
RightMigrationSourceUniqueId="…rightsourceguid…"
RightLinkType="Microsoft.TeamFoundation.Migration.TFS.LinkType.WorkItemToWorkItem"/>
<!-- Request to Task(s) -->
<LinkTypeMapping LeftMigrationSourceUniqueId=""…leftsourceguid…"
LeftLinkType="ClearQuestAdapter.LinkType.ReferenceListFieldRecordLink.request.Tasks"
RightMigrationSourceUniqueId="…rightsourceguid…"
RightLinkType="Microsoft.TeamFoundation.Migration.TFS.LinkType.WorkItemToWorkItem"/>
<!-- Request to Requirement(s) -->
<LinkTypeMapping LeftMigrationSourceUniqueId=""…leftsourceguid…"
LeftLinkType="ClearQuestAdapter.LinkType.ReferenceListFieldRecordLink.request.Requirements_List"
RightMigrationSourceUniqueId="…rightsourceguid…"
RightLinkType="Microsoft.TeamFoundation.Migration.TFS.LinkType.WorkItemToWorkItem"/>
<!-- Request to StakeHolderRequest(s) -->
<LinkTypeMapping LeftMigrationSourceUniqueId=""…leftsourceguid…"
LeftLinkType="ClearQuestAdapter.LinkType.ReferenceListFieldRecordLink.request.StakeholderRequests"
RightMigrationSourceUniqueId="…rightsourceguid…"
RightLinkType="Microsoft.TeamFoundation.Migration.TFS.LinkType.WorkItemToWorkItem"/>
<!-- Task(s) to Request -->
<LinkTypeMapping LeftMigrationSourceUniqueId=""…leftsourceguid…"
LeftLinkType="ClearQuestAdapter.LinkType.ReferenceListFieldRecordLink.Task.Requests"
RightMigrationSourceUniqueId="…rightsourceguid…"
RightLinkType="Microsoft.TeamFoundation.Migration.TFS.LinkType.WorkItemToWorkItem"/>
</LinkTypeMappings>

The configuration guide that is included with the tooling will be updated accordingly in the next release.