Synching with a customized TFS template

Paul

I am working through trying to synch Team Pulse against my customized TFS template and I am receiving the following validation message.

Synchronization settings are not valid. Please review the following error:The allowed transitions for the Status/State field for the TeamPulse 'Story' entity adn the TFS 'User Story' work item do not match.

I have modified the XML in the database for the Scrum ProjectTemplate to line up with the work item definition deployed to the server.

Here is the portion of the XML related to Story from the database XML

<EntityDefinitions>

<EntityDefinitionEntityTypeName="Story">

<Workflow>

<Statuses>

<string>New</string>

<string>Active</string>

<string>Resolved</string>

<string>Closed</string>

<string>Approved</string>

<string>Committed</string>

<string>Done</string>

<string>Removed</string>

</Statuses>

<Transitions>

<TransitionFrom="Active"To="Resolved"/>

<TransitionFrom="Resolved"To="Closed"/>

<TransitionFrom="Resolved"To="Active"/>

<TransitionFrom="Active"To="Closed"/>

<TransitionFrom="Closed"To="Active"/>

<TransitionFrom="Closed"To="Resolved"/>

<TransitionFrom=""To="New"/>

<TransitionFrom="New"To="Approved"/>

<TransitionFrom="Active"To="New"/>

<TransitionFrom="Closed"To="Done"/>

<TransitionFrom="Resolved"To="Done"/>

<TransitionFrom="Approved"To="Committed"/>

<TransitionFrom="Committed"To="Done"/>

<TransitionFrom="Committed"To="Approved"/>

<TransitionFrom="New"To="Removed"/>

<TransitionFrom="Approved"To="Removed"/>

<TransitionFrom="Done"To="Committed"/>

<TransitionFrom="Removed"To="New"/>

<TransitionFrom="Removed"To="Active"/>

<TransitionFrom="Approved"To="New"/>

</Transitions>

<UnexecutedStatuses>New,Approved,Active</UnexecutedStatuses>

<InProgressStatuses>Committed</InProgressStatuses>

<DoneStatuses>Done,Resolved,Closed</DoneStatuses>

<ExcludedStatuses>Removed</ExcludedStatuses>

</Workflow>

My work item definition for User Story is as follows:

<WORKFLOW>

- <STATES>

+ <STATEvalue="Active">

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedDate">

<EMPTY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedBy">

<ALLOWEXISTINGVALUE/>

<EMPTY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedDate">

<EMPTY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedBy">

<ALLOWEXISTINGVALUE/>

<EMPTY/>

</FIELD>

</FIELDS>

</STATE>

+ <STATEvalue="Resolved">

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedDate">

<EMPTY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedBy">

<ALLOWEXISTINGVALUE/>

<EMPTY/>

</FIELD>

</FIELDS>

</STATE>

<STATEvalue="Closed"/>

<STATEvalue="New"/>

+ <STATEvalue="Done">

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.BusinessValue">

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Scheduling.StoryPoints">

<READONLY/>

</FIELD>

</FIELDS>

</STATE>

<STATEvalue="Removed"/>

<STATEvalue="Approved"/>

<STATEvalue="Committed"/>

</STATES>

- <TRANSITIONS>

- <TRANSITIONfrom="Active"to="Resolved">

- <REASONS>

<DEFAULTREASONvalue="Code complete and unit tests pass"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

</FIELDS>

- <ACTIONS>

<ACTIONvalue="Microsoft.VSTS.Actions.Checkin"/>

</ACTIONS>

</TRANSITION>

- <TRANSITIONfrom="Resolved"to="Closed">

- <REASONS>

<DEFAULTREASONvalue="Acceptance tests pass"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedDate">

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedBy">

<ALLOWEXISTINGVALUE/>

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

</FIELDS>

</TRANSITION>

- <TRANSITIONfrom="Resolved"to="Active">

- <REASONS>

<DEFAULTREASONvalue="Acceptance tests fail"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

</FIELDS>

</TRANSITION>

+ <TRANSITIONfrom="Active"to="Closed">

- <REASONS>

<DEFAULTREASONvalue="Rejected"/>

<REASONvalue="Abandoned"/>

<REASONvalue="Out of scope"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedDate">

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ResolvedBy">

<ALLOWEXISTINGVALUE/>

<READONLY/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ClosedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

</FIELDS>

</TRANSITION>

- <TRANSITIONfrom="Closed"to="Active">

- <REASONS>

<DEFAULTREASONvalue="Reintroduced in Scope"/>

<REASONvalue="Closed in error"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

</FIELDS>

</TRANSITION>

- <TRANSITIONfrom="Closed"to="Resolved">

- <REASONS>

<DEFAULTREASONvalue="Closed in error"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

</FIELDS>

</TRANSITION>

- <TRANSITIONfrom=""to="New">

- <REASONS>

<DEFAULTREASONvalue="New backlog item"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="System.Description">

<DEFAULTfrom="value"value="As a <type of user> I want <somegoal> so that <somereason>" />

</FIELD>

- <FIELDrefname="XS.Work.Path">

<DEFAULTfrom="value"value="Maintenance"/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.StackRank">

<DEFAULTfrom="value"value="0"/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.BacklogPriority">

<DEFAULTfrom="value"value="0"/>

</FIELD>

- <FIELDrefname="System.AssignedTo">

<DEFAULTfrom="value"value="Joe Gonwa"/>

</FIELD>

</FIELDS>

</TRANSITION>

- <TRANSITIONfrom="New"to="Approved">

- <REASONS>

<DEFAULTREASONvalue="Approved by the Product Owner"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Active"to="New">

- <REASONS>

<DEFAULTREASONvalue="Converting to scrum"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Closed"to="Done">

- <REASONS>

<DEFAULTREASONvalue="Converting to scrum"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Resolved"to="Done">

- <REASONS>

<DEFAULTREASONvalue="Converting to scrum"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Approved"to="Committed">

- <REASONS>

<DEFAULTREASONvalue="Commitment made by the team"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Committed"to="Done">

- <REASONS>

<DEFAULTREASONvalue="Work finished"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Committed"to="Approved">

- <REASONS>

<DEFAULTREASONvalue="Work stopped"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="New"to="Removed">

- <REASONS>

<DEFAULTREASONvalue="Removed from the backlog"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Approved"to="Removed">

- <REASONS>

<DEFAULTREASONvalue="Removed from the backlog"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Done"to="Committed">

- <REASONS>

<DEFAULTREASONvalue="Additional work found"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Removed"to="New">

- <REASONS>

<DEFAULTREASONvalue="Reconsidering backlog item"/>

</REASONS>

</TRANSITION>

- <TRANSITIONfrom="Removed"to="Active">

- <REASONS>

<DEFAULTREASONvalue="New"/>

</REASONS>

- <FIELDS>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedBy">

<ALLOWEXISTINGVALUE/>

<COPYfrom="currentuser"/>

<VALIDUSER/>

<REQUIRED/>

</FIELD>

- <FIELDrefname="Microsoft.VSTS.Common.ActivatedDate">

<SERVERDEFAULTfrom="clock"/>

</FIELD>

- <FIELDrefname="System.AssignedTo">

<DEFAULTfrom="currentuser"/>

</FIELD>

- <FIELDrefname="System.Description">

<DEFAULTfrom="value"value="As a <type of user> I want <somegoal> so that <somereason>" />

</FIELD>

</FIELDS>

</TRANSITION>

- <TRANSITIONfrom="Approved"to="New">

- <REASONS>

<DEFAULTREASONvalue="Need more information for Acceptance Criteria"/>

</REASONS>

</TRANSITION>

</TRANSITIONS>

</WORKFLOW>

I was able to clear up some mismatched status values, but the transitions I can't seem to get resolved.

Thanks,

Paul McClintock
IT Team Lead
XS Inc.

Joel

Modifying the values in the ProjectTemplate table does not affect any projects that have already been created. They only affect new projects creating using that template. To update the states and transitions for existing projects, you can use the Advanced Settings screen in TeamPulse.

I also noticed that you mentioned that your TFS work item type name is 'User Story', but you tried to modify the settings for 'Scrum' template. The 'User Story' work item type is usually only present in the 'Agile' TFS process template. Can you tell me if your TFS project was originally created from the MSF for Agile v5 process template? If it was, I would recommend creating your TeamPulse project from the included Agile project template and then customizing it afterwards to match your current TFS project.

You also need to make sure that the states and transitions for all mapped work item types match up. So if you have customized any other work item type definitions in your TFS project, you will also need to make sure the states and transitions for those work item types match up in TeamPulse. Again, this can and should be done from the advanced settings screen in TeamPulse.

If you have any other questions, please let us know. You can also check out the sync documentation.

Progress, Telerik, and certain product names used herein are trademarks or registered trademarks of Progress Software Corporation and/or one of its subsidiaries or affiliates in the U.S. and/or other countries. See Trademarks or appropriate markings.