• Blog
  • Info Support
  • Career
  • Training
  • International Group
  • Info Support
  • Blog
  • Career
  • Training
  • International Group
  • Search
logo InfoSupport
  • Latest blogs
  • Popular blogs
  • Experts
      • All
      • Bloggers
      • Speakers
  • Meet us
  • About us
    • nl
    • en
    • .NET
    • 3D printing
    • Advanced Analytics
    • Agile
    • Akka
    • Alexa
    • Algorithms
    • Api's
    • Architectuur
    • Artificial Intelligence
    • ATDD
    • Augmented Reality
    • AWS
    • Azure
    • Big Data
    • Blockchain
    • Business Intelligence
    • Chatbots
    • Cloud
    • Code Combat
    • Cognitive Services
    • Communicatie
    • Containers
    • Continuous Delivery
    • CQRS
    • Cyber Security
    • Dapr
    • Data
    • Data & Analystics
    • Data Science
    • Data Warehousing
    • Databricks
    • DataOps
    • Developers life
    • DevOps
    • Digital Days
    • Digital Twin
    • Docker
    • eHealth
    • Enterprise Architecture
    • Event Sourcing
    • Hacking
    • Infrastructure & Hosting
    • Innovatie
    • Integration
    • Internet of Things
    • Java
    • Machine Learning
    • Microservices
    • Microsoft
    • Microsoft Bot Framework
    • Microsoft Data Platform
    • Mobile Development
    • Mutation Testing
    • Open source
    • Pepper
    • Power BI
    • Privacy & Ethiek
    • Python
    • Quality Assistance & Test
    • Quality Assurance & Test
    • Requirements Management
    • Scala
    • Scratch
    • Security
    • SharePoint
    • Software Architecture
    • Software development
    • Software Factory
    • SQL Server
    • SSL
    • Start-up
    • Startup thinking
    • Stryker
    • Test Quality
    • Testing
    • TLS
    • TypeScript
    • Various
    • Web Development
    • Web-scale IT
    • Xamarin
    • All
    • Bloggers
    • Speakers
Home » Team Foundation Server: Mapping process templates
  • Team Foundation Server: Mapping process templates

    • By Sander Aernouts
    • No Category 8 years ago
    • No Category 0 comments
    • No Category No Category
    Team Foundation Server: Mapping process templates

    When you work a lot with teams that start to use Team Foundation Server you will most certainly run into teams that already have some, or even a lot of, experience with Team Foundation Server. Now these kind teams are both a blessing and curse, you don’t have to teach them a lot about working with Team Foundation Server, but they will usually already have carved out a process, picked a process template and sometimes did some (or a lot) of customizations on it to make it just right for the way they want to use the system.

    Now this is perfectly fine but if you work in an enterprise environment you might not want each and every team to have their own flavor of the process template. This might cause you to have a lot of work during an upgrade as I found out myself doing a TFS2010 to TFS2012 upgrade a while back.

    So where do you start when you want to move all your teams to the same process template? You could argue that there is not “one size fits all” so why would you want to try and consolidate every team into the same template, I feel one of the main reasons here is maintainability. And if you look at for instance Visual Studio online, where you don’t get to customize the process template, a generic enough template might just be your “one size fits all”. I was asked myself a few weeks back to map the process templates of 3 different teams, which had customized them quite a bit, back to our so called “base template”,

    Team Foundations Server’s historical records are your friend!

    The mapping I had to do contained 3 different project with a total of about 20.000 individual work items and months if not years of history. So where do you start comparing 20.000 work items to the types you have in your own process template. It seems quite a monolithic task but since you are working with a system like Team Foundation Server there is a wealth of information and history in the databases. So the first thing you might want to do (I know I did) is find out which work item types are used an how many there are. You can do this using Excel’s Power Pivot features to connect to Team Foundation Servers Data Warehouse and extract the work item count per work item type for a single project and turn it into a chart like the one below:

    work item type usage

    This will give you insight into the actual work item type usage, and what to actually focus on for the next part of the mapping. If for instance 5000 User Story work items exist and only 100 Task work items that might mean that Task work items aren’t really used and thus will not be that important to map, User Story work items will be important to map. Now you can also extend your Power Pivot view to include the “Created Date” or the “Changed Date” of a work item and create a Stacked Area graph that shows work item usage or creation over time, this will give you a bit more insight into what types are used heavily in the past few weeks or months.

    Some work item types might contain a lot of fields on the form, but how do you know whether these field carry any importance for the team, how to you know that these fields are even used if you have to investigate 20.000 work items? What I found a really powerful view to render is how many of the fields were not empty or did not contain the default value, this will most likely greatly reduce the number of fields you will have to discuss.

    Below a simple sample of such a graph:

    Fied Usage

    It is not straightforward to get this kind of information out of Team Foundation Server, you could do it using a SQL query on the warehouse database, but that does not contain all fields (only the reportable ones). So also using Excel Power Pivot will not give you a 100% view. You could run work item queries, select all fields, export it to Excel and using formula’s extract the data, but this is quite labor intensive and your a quick to make a mistake with such vast amounts of data. So what I did myself was create a simple C# application that uses the Team Foundation Server Client Object Model to get the work item data out of the system. The tool basically queries for all work items and for each work item type all empty and non empty fields are counted (default values for fields are also counted as empty). I had the tool ignore the so called “Core Fields” because these are mandatory to have on a Work Item Type so you can always do a one on one mapping for those. This information is exported to a CSV file for each work item type which you can simply import into Excel. The great thing is that once I had this tool, it was real easy to run it again and again (and again) against different team projects.

    Now this is no magic pill making all the discussions go away, but it is a tool to at least make sure you are discussing the right things, simply put, how important can a field be if it is almost never filled in?

    The sources are available on our Info Support GitHub page (link), To use the application you will have to modify the Program.cs file to connect to your own team project, it will export a .CSV file per work item type into the working directory:

    static void Main(string[] args)
    {
    	string teamProjectCollectionUrl = "https://your_server/tfs/your_collection";
    	string teamProject = "your project";
    
    	Uri teamProjectCollectionUri = new Uri(teamProjectCollectionUrl);
    
    	IEnumerable<WorkItemTypeData> workItemTypesData = WorkItemAnalyzer.Analyze(teamProjectCollectionUri, teamProject);
    
    	WorkItemTypeDataCsvExporter.Export(workItemTypesData);
    
    	Console.WriteLine("Press any key to exit...");
    	Console.ReadKey();
    }

    Share this

Sander Aernouts

View profile

Related blogs

  • Import a GraphQL API in API Management using Powershell

    Import a GraphQL API in API Management using Powershell Caspar Eldermans - 12 months ago

  • Configure SCOM Health Service account for SQL Server

    Configure SCOM Health Service account for SQL Server Jody Treffers - 1 year ago

  • Pattern Matching maakt Java in de komende jaren nóg kra…

    Pattern Matching maakt Java in de komende jaren nóg kra… Hanno Embregts - 1 year ago

Data Discovery Channel

  • Modern Data Platform

  • Gartner Data & Analytics Summit 2022

  • De Data Architecture ®Evolution

Nieuwsbrief

* verplichte velden

Contact

  • Head office NL
  • Kruisboog 42
  • 3905 TG Veenendaal
  • T +31 318 552020
  • Call
  • Mail
  • Directions
  • Head office BE
  • Generaal De Wittelaan 17
  • bus 30 2800 Mechelen
  • T +32 15 286370
  • Call
  • Mail
  • Directions

Follow us

  • Twitter
  • Facebook
  • Linkedin
  • Youtube

Newsletter

Sign in

Extra

  • Media Library
  • Disclaimer
  • Algemene voorwaarden
  • ISHBS Webmail
  • Extranet
Beheer cookie toestemming
Deze website maakt gebruik van Functionele en Analytische cookies voor website optimalisatie en statistieken.
Functioneel Always active
De technische opslag of toegang is strikt noodzakelijk voor het legitieme doel het gebruik mogelijk te maken van een specifieke dienst waarom de abonnee of gebruiker uitdrukkelijk heeft gevraagd, of met als enig doel de uitvoering van de transmissie van een communicatie over een elektronisch communicatienetwerk.
Voorkeuren
De technische opslag of toegang is noodzakelijk voor het legitieme doel voorkeuren op te slaan die niet door de abonnee of gebruiker zijn aangevraagd.
Statistieken
De technische opslag of toegang die uitsluitend voor statistische doeleinden wordt gebruikt. De technische opslag of toegang die uitsluitend wordt gebruikt voor anonieme statistische doeleinden. Zonder dagvaarding, vrijwillige naleving door uw Internet Service Provider, of aanvullende gegevens van een derde partij, kan informatie die alleen voor dit doel wordt opgeslagen of opgehaald gewoonlijk niet worden gebruikt om je te identificeren.
Marketing
De technische opslag of toegang is nodig om gebruikersprofielen op te stellen voor het verzenden van reclame, of om de gebruiker op een website of over verschillende websites te volgen voor soortgelijke marketingdoeleinden.
Manage options Manage services Manage vendors Read more about these purposes
Voorkeuren
{title} {title} {title}