Hey, I’m Joel Poiron and I’ve been a developer on the TeamPulse project from the beginning. I am one of the guys behind our Team Foundation Server synchronization engine and also played a sizeable role in developing the TFS Work Item Manager. We’ve received a few questions regarding TFS process templates and how they affect synchronizing with TeamPulse so with this post I will try to clarify their importance and how to deal with issues that can arise.
If you still haven't used the TFS Synchronization feature, I encourage you to:
Let's continue. When setting up a project for syncing, you may have noticed that if you change the value in the TFS Process Template drop down, you get a little warning saying that the templates don’t match. As TFS is a highly customizable system, we need to configure mappings between TeamPulse entities and TFS work item types (and the fields within them). We make an educated guess at which TFS process template was used to create the project and then use that guess to determine some default values for the sync mappings. We may be wrong on that guess though which is why it’s just a warning.
The biggest reason why it is important to have the templates match is so that the states and state transitions of the TFS work items match the statuses and transitions of the mapped TeamPulse entities. For instance, if you have mapped Stories in TeamPulse to the User Story work item type in an “Agile” project, you need the states and transitions of these entities to be the same.
Both TeamPulse and TFS use the status/state field to define a workflow for an item and that workflow is always enforced, even when syncing. What this means is that we have to sync every change to that field, in the order that the change was made. This is not true for other fields where we don’t care about the intermediate changes, just the end value. Take Estimate for example. From a sync perspective, it doesn’t matter that it goes from 1 to 2 to 3, just that the current value is now 3. Since TeamPulse does auto-saving, skipping intermediate values is usually a good thing, especially for rich text fields like description. These fields get saved every five seconds while being edited so they end up with a lot of changes and we don’t need or want to sync every single change to that field.
Before each sync the settings are validated and part of this is to check if the states and transitions of each mapped entity line up. If you ever see an error like the one below, you will need to either go into your TeamPulse project settings, or your TFS work item type definition to make some changes. Unfortunately the message in the UI does not clearly indicate this which has led to some confusion.
And here are some links to some documentation to help you fix this error.
Editing the TeamPulse Project Settings
Editing the TFS Process Template
Integrating with TFS is no easy task because it is so highly customizable while at other times it can be quite rigid (see state transition rules). There are so many cases and scenarios that need to be considered which adds lots of complexity to the sync engine. While no product is perfect, we believe we have one of the best TFS integration stories out there and we hope you feel this way too. But of course we’re always looking to improve so as always, we look forward to your feedback. Feel free to use the comments section below.
Developer, TeamPulse Team Canada