This is a migrated thread and some comments may be shown as answers.

Synching with a customized TFS template

1 Answer 85 Views
TFS Integration
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Paul
Top achievements
Rank 1
Paul asked on 06 Mar 2012, 08:43 PM

Greetings,

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>
    <EntityDefinition EntityTypeName="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>
          <Transition From="Active" To="Resolved" />
          <Transition From="Resolved" To="Closed" />
          <Transition From="Resolved" To="Active" />
          <Transition From="Active" To="Closed" />
          <Transition From="Closed" To="Active" />
          <Transition From="Closed" To="Resolved" />
          <Transition From="" To="New" />
          <Transition From="New" To="Approved" />
          <Transition From="Active" To="New" />
          <Transition From="Closed" To="Done" />
          <Transition From="Resolved" To="Done" />
          <Transition From="Approved" To="Committed" />
          <Transition From="Committed" To="Done" />
          <Transition From="Committed" To="Approved" />
          <Transition From="New" To="Removed" />
          <Transition From="Approved" To="Removed" />
          <Transition From="Done" To="Committed" />
          <Transition From="Removed" To="New" />
          <Transition From="Removed" To="Active" />
          <Transition From="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>
+ <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.ClosedDate">
  <EMPTY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
  <ALLOWEXISTINGVALUE />
  <EMPTY />
  </FIELD>
  </FIELDS>
  </STATE>
+ <STATE value="Resolved">
- <FIELDS>
- <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
  <EMPTY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
  <ALLOWEXISTINGVALUE />
  <EMPTY />
  </FIELD>
  </FIELDS>
  </STATE>
  <STATE value="Closed" />
  <STATE value="New" />
+ <STATE value="Done">
- <FIELDS>
- <FIELD refname="Microsoft.VSTS.Common.BusinessValue">
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Scheduling.StoryPoints">
  <READONLY />
  </FIELD>
  </FIELDS>
  </STATE>
  <STATE value="Removed" />
  <STATE value="Approved" />
  <STATE value="Committed" />
  </STATES>
- <TRANSITIONS>
- <TRANSITION from="Active" to="Resolved">
- <REASONS>
  <DEFAULTREASON value="Code complete and unit tests pass" />
  </REASONS>
- <FIELDS>
- <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
  <ALLOWEXISTINGVALUE />
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
  <SERVERDEFAULT from="clock" />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
  <ALLOWEXISTINGVALUE />
  <COPY from="currentuser" />
  <VALIDUSER />
  <REQUIRED />
  </FIELD>
  </FIELDS>
- <ACTIONS>
  <ACTION value="Microsoft.VSTS.Actions.Checkin" />
  </ACTIONS>
  </TRANSITION>
- <TRANSITION from="Resolved" to="Closed">
- <REASONS>
  <DEFAULTREASON value="Acceptance tests pass" />
  </REASONS>
- <FIELDS>
- <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
  <ALLOWEXISTINGVALUE />
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
  <ALLOWEXISTINGVALUE />
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
  <SERVERDEFAULT from="clock" />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
  <ALLOWEXISTINGVALUE />
  <COPY from="currentuser" />
  <VALIDUSER />
  <REQUIRED />
  </FIELD>
  </FIELDS>
  </TRANSITION>
- <TRANSITION from="Resolved" to="Active">
- <REASONS>
  <DEFAULTREASON value="Acceptance tests fail" />
  </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>
  </FIELDS>
  </TRANSITION>
+ <TRANSITION from="Active" to="Closed">
- <REASONS>
  <DEFAULTREASON value="Rejected" />
  <REASON value="Abandoned" />
  <REASON value="Out of scope" />
  </REASONS>
- <FIELDS>
- <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
  <ALLOWEXISTINGVALUE />
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
  <ALLOWEXISTINGVALUE />
  <READONLY />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
  <SERVERDEFAULT from="clock" />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
  <ALLOWEXISTINGVALUE />
  <COPY from="currentuser" />
  <VALIDUSER />
  <REQUIRED />
  </FIELD>
  </FIELDS>
  </TRANSITION>
- <TRANSITION from="Closed" to="Active">
- <REASONS>
  <DEFAULTREASON value="Reintroduced in Scope" />
  <REASON value="Closed in error" />
  </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>
  </FIELDS>
  </TRANSITION>
- <TRANSITION from="Closed" to="Resolved">
- <REASONS>
  <DEFAULTREASON value="Closed in error" />
  </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>
  </FIELDS>
  </TRANSITION>
- <TRANSITION from="" to="New">
- <REASONS>
  <DEFAULTREASON value="New backlog item" />
  </REASONS>
- <FIELDS>
- <FIELD refname="System.Description">
  <DEFAULT from="value" value="As a <type of user> I want <some goal> so that <some reason>" />
  </FIELD>
- <FIELD refname="XS.Work.Path">
  <DEFAULT from="value" value="Maintenance" />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.StackRank">
  <DEFAULT from="value" value="0" />
  </FIELD>
- <FIELD refname="Microsoft.VSTS.Common.BacklogPriority">
  <DEFAULT from="value" value="0" />
  </FIELD>
- <FIELD refname="System.AssignedTo">
  <DEFAULT from="value" value="Joe Gonwa" />
  </FIELD>
  </FIELDS>
  </TRANSITION>
- <TRANSITION from="New" to="Approved">
- <REASONS>
  <DEFAULTREASON value="Approved by the Product Owner" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Active" to="New">
- <REASONS>
  <DEFAULTREASON value="Converting to scrum" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Closed" to="Done">
- <REASONS>
  <DEFAULTREASON value="Converting to scrum" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Resolved" to="Done">
- <REASONS>
  <DEFAULTREASON value="Converting to scrum" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Approved" to="Committed">
- <REASONS>
  <DEFAULTREASON value="Commitment made by the team" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Committed" to="Done">
- <REASONS>
  <DEFAULTREASON value="Work finished" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Committed" to="Approved">
- <REASONS>
  <DEFAULTREASON value="Work stopped" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="New" to="Removed">
- <REASONS>
  <DEFAULTREASON value="Removed from the backlog" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Approved" to="Removed">
- <REASONS>
  <DEFAULTREASON value="Removed from the backlog" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Done" to="Committed">
- <REASONS>
  <DEFAULTREASON value="Additional work found" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Removed" to="New">
- <REASONS>
  <DEFAULTREASON value="Reconsidering backlog item" />
  </REASONS>
  </TRANSITION>
- <TRANSITION from="Removed" to="Active">
- <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="currentuser" />
  </FIELD>
- <FIELD refname="System.Description">
  <DEFAULT from="value" value="As a <type of user> I want <some goal> so that <some reason>" />
  </FIELD>
  </FIELDS>
  </TRANSITION>
- <TRANSITION from="Approved" to="New">
- <REASONS>
  <DEFAULTREASON value="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.

1 Answer, 1 is accepted

Sort by
0
Joel
Telerik team
answered on 08 Mar 2012, 04:04 AM
Hi,

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.

Kind regards,
Joel
the Telerik team
Tags
TFS Integration
Asked by
Paul
Top achievements
Rank 1
Answers by
Joel
Telerik team
Share this question
or