Mark McCabe
Mark McCabe

Reputation: 11

Unsure how to fix the error in the Azure Devops Migration Tool for very old TFS collections

We've been asked to migrate some very old legacy projects (i.e. from TFS 2010 days) onto Azure Devops Services. These very old projects have almost nothing in their Process Configuration and only have one error line in the logs from the migration tool for all project types (Scrum, Agile, Basic etc...).

[Info   @15:27:48.998] === Found 1 error(s) when compared against process TFS 2019 Update 1 Scrum ===
[Error  @15:27:48.998] Custom processConfiguration typeField count '0' is different than system '8'.
[Info   @15:27:48.998] === End of error(s) when compared against process TFS 2019 Update 1 Scrum ===

When looking at their Process Configuation it is only a few lines:

<?xml version="1.0" encoding="utf-16"?>
<ProjectProcessConfiguration>
  <RequirementBacklog workItemCountLimit="1000">
    <AddPanel />
  </RequirementBacklog>
  <TaskBacklog workItemCountLimit="1000">
    <AddPanel />
  </TaskBacklog>
  <Properties>
    <Property name="BugsBehavior" value="Off" />
  </Properties>
</ProjectProcessConfiguration>

The only project that has no errors was a project added much later on TFS 2015:

<?xml version="1.0" encoding="utf-16"?>
<ProjectProcessConfiguration>
  <BugWorkItems category="Microsoft.BugCategory" pluralName="Bugs" singularName="Bug">
    <States>
      <State type="Proposed" value="New" />
      <State type="InProgress" value="Active" />
      <State type="Complete" value="Closed" />
      <State type="Resolved" value="Resolved" />
    </States>
  </BugWorkItems>
  <FeedbackRequestWorkItems category="Microsoft.FeedbackRequestCategory" pluralName="Feedback Requests" singularName="Feedback Request">
    <States>
      <State type="InProgress" value="Active" />
      <State type="Complete" value="Closed" />
    </States>
  </FeedbackRequestWorkItems>
  <FeedbackResponseWorkItems category="Microsoft.FeedbackResponseCategory" pluralName="Feedback Responses" singularName="Feedback Response">
    <States>
      <State type="InProgress" value="Active" />
      <State type="Complete" value="Closed" />
    </States>
  </FeedbackResponseWorkItems>
  <PortfolioBacklogs>
    <PortfolioBacklog category="Microsoft.EpicCategory" pluralName="Epics" singularName="Epic" workItemCountLimit="1000">
      <AddPanel>
        <Fields>
          <Field refname="System.Title" />
        </Fields>
      </AddPanel>
      <Columns>
        <Column width="100" refname="System.WorkItemType" />
        <Column width="400" refname="System.Title" />
        <Column width="100" refname="System.State" />
        <Column width="50" refname="Microsoft.VSTS.Scheduling.Effort" />
        <Column width="50" refname="Microsoft.VSTS.Common.BusinessValue" />
        <Column width="100" refname="Microsoft.VSTS.Common.ValueArea" />
        <Column width="200" refname="System.Tags" />
      </Columns>
      <States>
        <State type="Proposed" value="New" />
        <State type="InProgress" value="Active" />
        <State type="InProgress" value="Resolved" />
        <State type="Complete" value="Closed" />
      </States>
    </PortfolioBacklog>
    <PortfolioBacklog category="Microsoft.FeatureCategory" parent="Microsoft.EpicCategory" pluralName="Features" singularName="Feature" workItemCountLimit="1000">
      <AddPanel>
        <Fields>
          <Field refname="System.Title" />
        </Fields>
      </AddPanel>
      <Columns>
        <Column width="100" refname="System.WorkItemType" />
        <Column width="400" refname="System.Title" />
        <Column width="100" refname="System.State" />
        <Column width="50" refname="Microsoft.VSTS.Scheduling.Effort" />
        <Column width="50" refname="Microsoft.VSTS.Common.BusinessValue" />
        <Column width="100" refname="Microsoft.VSTS.Common.ValueArea" />
        <Column width="200" refname="System.Tags" />
      </Columns>
      <States>
        <State type="Proposed" value="New" />
        <State type="InProgress" value="Active" />
        <State type="InProgress" value="Resolved" />
        <State type="Complete" value="Closed" />
      </States>
    </PortfolioBacklog>
  </PortfolioBacklogs>
  <RequirementBacklog category="Microsoft.RequirementCategory" parent="Microsoft.FeatureCategory" pluralName="Stories" singularName="User Story" workItemCountLimit="1000">
    <AddPanel>
      <Fields>
        <Field refname="System.Title" />
      </Fields>
    </AddPanel>
    <Columns>
      <Column width="100" refname="System.WorkItemType" />
      <Column width="400" refname="System.Title" />
      <Column width="100" refname="System.State" />
      <Column width="50" refname="Microsoft.VSTS.Scheduling.StoryPoints" />
      <Column width="100" refname="Microsoft.VSTS.Common.ValueArea" />
      <Column width="200" refname="System.IterationPath" />
      <Column width="200" refname="System.Tags" />
    </Columns>
    <States>
      <State type="Proposed" value="New" />
      <State type="InProgress" value="Active" />
      <State type="InProgress" value="Resolved" />
      <State type="Complete" value="Closed" />
    </States>
  </RequirementBacklog>
  <TaskBacklog category="Microsoft.TaskCategory" parent="Microsoft.RequirementCategory" pluralName="Tasks" singularName="Task" workItemCountLimit="1000">
    <AddPanel>
      <Fields>
        <Field refname="System.Title" />
      </Fields>
    </AddPanel>
    <Columns>
      <Column width="400" refname="System.Title" />
      <Column width="100" refname="System.State" />
      <Column width="100" refname="System.AssignedTo" />
      <Column width="50" refname="Microsoft.VSTS.Scheduling.RemainingWork" />
    </Columns>
    <States>
      <State type="Proposed" value="New" />
      <State type="InProgress" value="Active" />
      <State type="Complete" value="Closed" />
    </States>
  </TaskBacklog>
  <TypeFields>
    <TypeField refname="Microsoft.VSTS.Common.Activity" type="Activity" />
    <TypeField refname="Microsoft.VSTS.Common.StackRank" type="Order" />
    <TypeField refname="Microsoft.VSTS.Feedback.ApplicationLaunchInstructions" type="ApplicationLaunchInstructions" />
    <TypeField refname="Microsoft.VSTS.Feedback.ApplicationStartInformation" type="ApplicationStartInformation" />
    <TypeField refname="Microsoft.VSTS.Feedback.ApplicationType" type="ApplicationType">
      <TypeFieldValues>
        <TypeFieldValue type="ClientApp" value="Client application" />
        <TypeFieldValue type="RemoteMachine" value="Remote machine" />
        <TypeFieldValue type="WebApp" value="Web application" />
      </TypeFieldValues>
    </TypeField>
    <TypeField format="{0} h" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="RemainingWork" />
    <TypeField refname="Microsoft.VSTS.Scheduling.StoryPoints" type="Effort" />
    <TypeField refname="System.AreaPath" type="Team" />
  </TypeFields>
  <Weekends>
    <DayOfWeek>Sunday</DayOfWeek>
    <DayOfWeek>Saturday</DayOfWeek>
  </Weekends>
  <Properties>
    <Property name="HiddenBacklogs" value="Microsoft.EpicCategory" />
    <Property name="BugsBehavior" value="AsTasks" />
  </Properties>
  <WorkItemColors>
    <WorkItemColor primary="FFCC293D" secondary="FFFAEAE5" name="Bug" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Code Review Request" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Code Review Response" />
    <WorkItemColor primary="FFFF7B00" secondary="FFFFD7B5" name="Epic" />
    <WorkItemColor primary="FF773B93" secondary="FFEEE2F2" name="Feature" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Feedback Request" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Feedback Response" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Issue" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Shared Parameter" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Shared Steps" />
    <WorkItemColor primary="FFF2CB1D" secondary="FFF6F5D2" name="Task" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Test Case" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Test Plan" />
    <WorkItemColor primary="FFFF9D00" secondary="FFFCEECF" name="Test Suite" />
    <WorkItemColor primary="FF009CCC" secondary="FFD6ECF2" name="User Story" />
  </WorkItemColors>
</ProjectProcessConfiguration>

Anyone know of a easy way to fix the older projects? We want to import the code with changeset histories into Azure Devop Services and none of them have actually have work items (was managed externally on JIRA), build and release configs etc... We just want to get them onto the cloud to retire the legacy onpremise TFS servers (which are now running Azure Devops Server 2020.1.1 as per the migration suggestions).

Thanks for any help.

Edit: we're using TFS Team Project Manager from Jelle Druyts to help do some of the analysis, and am wondering if we can use the Transform function under Process Configuration to import the working projects config into the other projects.

Mark.

Upvotes: 0

Views: 1058

Answers (1)

Mark McCabe
Mark McCabe

Reputation: 11

Sorry for the late reply on this. Since we didn't need to preserve templates and work items/ task history, we ended up abandoning full migrations. Ended up using the git-tfs (https://git-tfs.com/) tool to convert the TFS projects to a local git repository, then attaching that to a new Azure git project. Preserved all our history which was great.

Upvotes: 1

Related Questions