In my previous post I went into detail about how TFS process templates affect the sync process and in this post I’ll give some pointers on how to make the TFS sync experience in TeamPulse even better by explaining some of the finer points and also show you how to make sync work faster.
You can test the TFS sync by downloading the TeamPulse trial and installing it on your machine.
Using a TFS query to speed up sync
If you have a big project, as we do, the sync process can take a while. The part that takes the longest is figuring out what has changed in TFS since the last sync. To speed this up we used a custom query to shrink the number of TFS items to check for changes down to a more manageable size. Our query filters out “done” and “deleted” items because they are very likely to have not changed [screenshot]. Our project is about a year and a half old now so by using this query we went from over 3000 items down to about 300. Syncing our project now only takes a couple minutes. If we ever need to change modify any “done” or “deleted” items we just make the change in TeamPulse because those changes will still be synced. It was a quick change that yielded dramatic results. Here’s a screenshot of the query we use:
And here’s a link to our documentation about how to use a TFS query as part of your sync process: http://www.telerik.com/agile-project-management-tools/support-resources/documentation/user-guide/features/synchronization/configuring-sync/use-tfs-query.aspx.
The TFS Service Account
One common question we get is what permissions are required by the TFS service account and which account should be used for this. Our recommendation is that you create a new account for this and then add this account the Project Collection Service Accounts group in TFS.
Adding to this group is the easiest way to give an account all the permissions it needs to perform synchronization for all projects in the collection. In addition, it also gives the account permission to impersonate users. Impersonation is a great way to keep the work item change history accurate because without impersonation, all changes synced from TeamPulse to TFS will show up as if they were made by the service account, instead of the by the actual person who made the change in TeamPulse.
Adding to the service accounts group is not required though because in many organizations this is not an option. All the service account really needs is the right to create and edit work items, areas, and iterations in any project that is configured for syncing. An example of where this is useful is if you are using a hosted TFS solution where you don’t have control over the TFS environment, but you are the administrator of the project. You could enter your own credentials in as the service account and be on your way. In this case though, impersonation would not work unless this permission is specifically granted by your TFS hosting provider.
The Project List
Another common question we get goes a little something like this: “I have access to [insert project name here] in TFS, why isn’t it in the list?” The answer to this question is usually another question: “Are you a member of the Project Administrators group for [insert project name here]?”
When designing the sync UI, we needed a reliable way to prevent just anyone from connecting TeamPulse projects to TFS projects. We used membership in this group as our criteria because it is a built-in group that is part of every project and by definition people in this group should have control over the project, not just from a permissions perspective, but from a decision making and/or management perspective. The actual permissions in this case are irrelevant.
At first glance configuring synchronization between TeamPulse and TFS may not seem all that easy but I hope that this post has clarified some of the areas that often cause confusion. With a better understanding of all the pieces you should be able to get sync up and running in no time. And of course if you have any feedback on how we can improve our TFS integration we are always listening!
Developer, TeamPulse Team Canada