将 TFS 2013 升级到 DevOps 2018。现在 Boards、Backlogs 和 Sprints 不工作了。错误 TF400507

Upgraded TFS 2013 to DevOps 2018. Now the Boards, Backlogs, and Sprints are not working. Error TF400507

我们将 TFS 2013 服务器升级到 DevOps 2018,现在当我们转到 Boards、Backlogs 和 Sprint 时,我们收到以下错误:

TF400917: The current configuration is not valid for this feature. This feature cannot be used until you correct the configuration. The following element contains an error: BugWorkItems/BugWorkItems. TF400507: Each work item type must support an initial state value that matches one of the states defined in: BugWorkItems. The following work item types have initial states that do not include any states defined in the bug state configuration: Bug.

我下载了 processconfig.xml 并查看了 BugWorkItems 部分,但它看起来是正确的。

  <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>

我也下载了 Bug.xml,但我在文件中没有看到带有“初始状态”标签的任何内容。
所以我不确定“必须支持初始状态值”是什么意思...

这是工作流程部分。

    <WORKFLOW>
  <STATES>
    <STATE value="Active">
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
          <EMPTY />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
          <ALLOWEXISTINGVALUE />
          <EMPTY />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
          <EMPTY />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <EMPTY />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
          <ALLOWEXISTINGVALUE />
          <EMPTY />
        </FIELD>
      </FIELDS>
    </STATE>
    <STATE value="Closed">
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
          <READONLY />
        </FIELD>
      </FIELDS>
    </STATE>
    <STATE value="Code Review">
      <FIELDS>
        <FIELD refname="Custom.Developer">
          <ALLOWEXISTINGVALUE />
          <REQUIRED for="[global]\Developers" />
          <REQUIRED not="[global]\ITProjectManagers" />
        </FIELD>
      </FIELDS>
    </STATE>
    <STATE value="Acceptance Testing" />
    <STATE value="Beta" />
    <STATE value="On Hold" />
    <STATE value="QA Testing" />
    <STATE value="Ready For Beta" />
    <STATE value="Ready For Prod" />
    <STATE value="Requirement" />
  </STATES>
  <TRANSITIONS>
    <TRANSITION from="Closed" to="Active">
      <REASONS>
        <DEFAULTREASON value="Regression" />
        <REASON value="Reactivated" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
          <ALLOWEXISTINGVALUE />
          <COPY from="currentuser" />
          <VALIDUSER />
          <REQUIRED />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="System.AssignedTo">
          <COPY from="field" field="Microsoft.VSTS.Common.ResolvedBy" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Beta" to="Active">
      <REASONS>
        <DEFAULTREASON value="Returned to Development" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Happy Customer" />
        <REASON value="Cancelled" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
          <SERVERDEFAULT from="currentuser" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="On Hold" to="Active">
      <REASONS>
        <DEFAULTREASON value="Back in Business" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="On Hold" to="Beta" for="[global]\ITProjectManagers">
      <REASONS>
        <DEFAULTREASON value="Back in Business" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Acceptance Testing" to="Closed" for="[global]\ITProjectManagers">
      <REASONS>
        <DEFAULTREASON value="Happy Customer" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
          <SERVERDEFAULT from="currentuser" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="QA Testing" to="Beta">
      <REASONS>
        <DEFAULTREASON value="PASSED QA TESTING" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="QA Testing" to="Active">
      <REASONS>
        <DEFAULTREASON value="Back to Development" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Beta" to="Ready For Prod">
      <REASONS>
        <DEFAULTREASON value="Passed Beta - Ready to Deploy" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="Ready For Beta">
      <REASONS>
        <DEFAULTREASON value="Development is done" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Ready For Beta" to="Active">
      <REASONS>
        <DEFAULTREASON value="Not Ready Yet" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Ready For Beta" to="QA Testing">
      <REASONS>
        <DEFAULTREASON value="Ready to be moved to Beta" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Beta" to="On Hold">
      <REASONS>
        <DEFAULTREASON value="Waiting on Resources" />
        <REASON value="Waiting on 3rd Party" />
        <REASON value="Waiting on Development" />
        <REASON value="Waiting on Requirements" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Ready For Prod" to="On Hold">
      <REASONS>
        <DEFAULTREASON value="Waiting on Resources" />
        <REASON value="Waiting on 3rd Party" />
        <REASON value="Waiting on Development" />
        <REASON value="Waiting on Requirements" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="QA Testing" to="On Hold">
      <REASONS>
        <DEFAULTREASON value="Waiting on Resources" />
        <REASON value="Waiting on 3rd Party" />
        <REASON value="Waiting on Development" />
        <REASON value="Waiting on Requirements" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="On Hold">
      <REASONS>
        <DEFAULTREASON value="Waiting on Requirements" />
        <REASON value="Waiting on Development" />
        <REASON value="Waiting on Resources" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="1" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Ready For Beta" to="On Hold">
      <REASONS>
        <DEFAULTREASON value="Waiting for Resources" />
        <REASON value="Waiting for Development" />
        <REASON value="Waiting for Requirements" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="" to="Requirement">
      <REASONS>
        <DEFAULTREASON value="New" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
          <ALLOWEXISTINGVALUE />
          <COPY from="currentuser" />
          <VALIDUSER />
          <REQUIRED />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="System.AssignedTo">
          <DEFAULT from="value" value="Unassigned User" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <DEFAULT from="value" value="25" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Scheduling.CompletedWork">
          <DEFAULT from="value" value="0" />
        </FIELD>
        <FIELD refname="Custom.TestEstimate">
          <DEFAULT from="value" value="15" />
        </FIELD>
        <FIELD refname="Custom.StepsReproduce">
          <REQUIRED for="[global]\Project Collection Valid Users" />
        </FIELD>
        <FIELD refname="Custom.ServiceAgreement">
          <DEFAULT from="value" value="Bug" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.TCM.ReproSteps">
          <REQUIRED />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Requirement" to="Active">
      <REASONS>
        <DEFAULTREASON value="Active" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Active" to="Code Review">
      <REASONS>
        <DEFAULTREASON value="Code Complete" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Code Review" to="Ready For Beta">
      <REASONS>
        <DEFAULTREASON value="Passed Code Review" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Code Review" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Cancelled" />
        <REASON value="Complete" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Requirement" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Cancelled" />
        <REASON value="Complete" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="Requirement">
      <REASONS>
        <DEFAULTREASON value="Need Requirements" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="1" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="On Hold" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Cancelled" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="On Hold" to="Ready For Prod" for="[global]\ITProjectManagers">
      <REASONS>
        <DEFAULTREASON value="Ready for Production" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="On Hold" to="Ready For Beta">
      <REASONS>
        <DEFAULTREASON value="Ready to Deploy to BETA" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="On Hold" to="QA Testing">
      <REASONS>
        <DEFAULTREASON value="Ready for QA Testing" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.StackRank">
          <COPY from="value" value="0" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Beta" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Cancelled" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
          <SERVERDEFAULT from="currentuser" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Ready For Prod" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Cancelled" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
      </FIELDS>
    </TRANSITION>
    <TRANSITION from="Ready For Prod" to="Acceptance Testing">
      <REASONS>
        <DEFAULTREASON value="Ready for Acceptance Testing" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Acceptance Testing" to="Ready For Prod" for="[global]\ITProjectManagers">
      <REASONS>
        <DEFAULTREASON value="Back to QA" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Code Review" to="Active">
      <REASONS>
        <DEFAULTREASON value="Back to Developer" />
      </REASONS>
    </TRANSITION>
    <TRANSITION from="Active" to="Acceptance Testing" for="[global]\ITProjectManagers">
      <REASONS>
        <DEFAULTREASON value="No Development Required" />
      </REASONS>
    </TRANSITION>
  </TRANSITIONS>
</WORKFLOW>

Azure DevOps 中的每个进程有 4 个 meta-states。这些更高级别的状态必须映射到每个工作项类型中的工作流状态。

此时你的 BugWorkItems 有这 4 个映射:

 <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>

在这 4 个中,状态 NewResolved 在您的 Bug 的 WORKFLOW 定义中缺失。

您有几个选择...

  • 您可以选择将 Proposed 映射到现有的工作流状态,例如Requirement.
  • 您可以添加 New 状态来执行 Bug 的工作流程和转换。

同样适用于Resolved状态。