Share →
Buffer
metro-visualstudio-128-link

Upgrading your Process Template in Team Foundation Server regardless of the version is pretty hard to achieve. Think of it like changing your mind on the blueprints of a building after you have finished construction. If you are making a small change, like adding a field, then this will be easy. But if you want to fundamentally change the structure of your work items and their workflow then you are looking at a bigger and much more complicated solution.

  • Update 2012-05 – Added #7 to the list
  • Update 2012-12 – Fixed layout and omissions noted by Jesse Houwing
  • Update 2012-12 – Updated for TFS 2012

Here are the 6 7 8 ways to change the Process Template that I have used and all of their pros and cons. Some are easy to implement but may not fit your needs while others have a massive time penalty that you may not be willing to accept. Take my advice and try to implement the simplest solution that you can. Most failed Process Template changes are due to the complexity of the restrictions put in place by folks that don’t actually understand what they are asking for. I will often use the above construction metaphor to help customers understand what we are talking about in lue of a solution from the product team that is currently Under Review: Allow for updating project templates on existing projects in TFS (add your vote if you have any left)

The complexity of the change will depend on the scale and scope of the changes that you have made to your process template and the instance that is used in the Team Project. I would always recommend consolidating your organisation to a single process template as the two evils of maintaining TFS are; Wildly divergent process instances regardless of the original template; what I like to call frankin-templates. Work Items that have been so heavily customised as to be practically unusable by those they are meant for.

There are specific changes, namely worflow and state changes, that will limit your choices severely and you should be aware of all of the ramifications before you make any changes. I would go so far as to say that if you are going to make changes other than just adding some simple fields that you create a set of CodedUI tests for all of your Users paths through the workflow and run a bank of those tests every time you make a change to make sure that you have not broken a necessary activity that folks already use.

If you are making incremental changes to the process that you are already using you can likely upgrade with no issues nor data loss by simply overwriting the new work item types over the old ones. However, if you are making large fundamental changes to the way that the template works (e.g. SfTSv2 to MSF Agile 5.0) then you need another approach:

#1 Do nothing (0 hours)

Lazy the Smurph

Sticking with same template is not a good option as everyone wants to take advantage of the new features.

  • Pro Little or no work to achieve
  • Con You have to use the old template

    Note this is not a con unless there is some feature that people want

#1.1 Enable new features only (5 minutes)

In this scenario you keep the same process template but you “inject” the new platform features. This was done in TFS 2010 with a batch file and in 2012 the Product Team built in a basic capability to the web UI for those that have not modified their process templates much.

  • Pro Little or no work to achieve
  • Con Same old process in new clothing

Note Does not work if you have made modifications to the workflow

#2 Create a new Team Project (.5 hours)

Ripped scroll

This is tantamount to doing nothing, but you are using the new process template. You just have to be willing to leave all of your data behind. The real problem here is that with TFS 2010 a “move” or “rename” of files actually results in a “branch” and then a “delete” action that breaks the history chain for folders. The history is still intact, but it only exists on the old Team Project and is deleted or if the permissions are changed then the history is lost.

  • Pro Minimal commitment
  • Pro Retain access to historical reporting
  • Con You are leaving your history behind on the old project

    Note reports may be different anyway so this may not be such a bad idea for WI

  • Con You have to do a move (“Branch” + “Delete”) operation and disconnect you history

    Note This really sucks for version control

#3 Destroy all Work Items and Import new ones (2-3 hours)

Explosion

In this scenario you loose all existing Work Item data, but you have not moved your source code, so no nasty history chain.

How-To Process Template Upgrade #3 – Destroy all Work Items and Import new ones

  • Pro New template with clean data
  • Pro no disconnect of version control history
  • Con No history on work items (all existing data is lost)

#4 Use the TFS Integration Platform to move Source and Work Item history to a new team project (1-2 days)

a distorted clock

This is an ideal solution, but it does result in “time dilation” on your source control. There is no way to fake a check-in date so all dates will be when the actual check-in happens. As the TFS Integration Platform does all of the check-ins concurrently it stores the original date in the comment.

  • Pro Keeps all history for both Work Items and Version Control
  • Con Time dilation effect, rather like traveling to Alpha Centauri at Light speed; this affects both Work Item and Version Control

    Note there are ways to fix this for work items and reporting

    Note If you care about this for Version Control you are likely doing something wrong!

#5 Do an in place manual migration (1-¥ days)

One way sign with a double ended arrow

This is just plane nasty and take a lot of time. It can take over 8 hours to complete the migration once it has been planned out, and that time depends on the process template you are moving from, the one you are moving to, and the customisations you have made along the way. If all of your Team Projects have different customisations, then this is probably a non-starter.

  • Pro Keeps all of your data intact with renames of fields and work item types
  • Con Takes a really, really long time

    Note There are many circumstance where this is not possible
    note: Even our most technical TFS Consultant takes 1-2 days to do this (I have never done this)

#6 Do an in-place export migration.

One arrow going up and another going down

This gives us the best of both worlds, with an export of Work Item data to another location, destroying all the existing work item types along with all of the data, then install the new Work Item Types and reload the data. This is still a horrible process, but it keeps the Source Code history intact, and allows for the process template to be completely upgraded.

  • Pro Keeps all of your data intact will a small modification to fix time dilation on work items
  • Con Takes a really, really long time

    Note There are many circumstance where this is not possible

    Note Even our most technical TFS Consultant takes 1-2 days to do this (I have never done this)

#7 Rename Work Items and Import new ones (4-5 hours) (Recommended)

trophyIn this scenario you get to keep all of the history in tact and also get to start afresh with new work item types. It is almost the best of both worlds as you don’t need to move Source Control nor do you end up with new Work Item ID’s.

How-To Process Template Upgrade #7 – Overwrite retaining history with limited migration

  • Pro New template with clean data
  • Pro No disconnect of version control history
  • Pro History on work items (all existing data accessible through history tab)
  • Con leaves old legacy fields in the template

Conclusion

For me options #7 is the most appropriate for most circumstances and is part of my default arsenal. The rest I only use if I have to, but if a customer is happy with #1, #2 or #3 then I am unlikely to argue as they are easy to implement.

-Do you need to move from one process template to another? is this a daunting task because of your customisations? We are here to help, contact info@nwcadence.com to get in touch with an expert.

-Every company deserves working software that successfully and consistently meets your customers needs. We can help you get working software with continuous feedback so that you agile teams can deliver continuous value with Visual Studio, Team Foundation Server & Scrum. We have experts on hand to help improve your process and deliver more value at higher quality.

[subscribe] While we love helping you individually we provide much of our resultant consulting understanding here for you to use. By writing about our experiences we gain a better understanding of them ourselves. You can get notified of all content that we publish with our weekly newsletter and see exactly what we are doing and how we are doing it. [/subscribe]

Tagged with →  
Share →
Buffer
  • Pingback: July 28, 2011 – Learn TFS Daily | Learn TFS

  • Pingback: TOC: TFS Integration Tools Blog Posts and Reference Sites - Willy's Cave - Site Home - MSDN Blogs

  • Pingback: Good post on changing your TFS2010 Process Template « Jim Szubryt's Blog

  • http://blog.hinshelwood.com Martin Hinshelwood

    I have been looking at Process Template migration again and I have decided that for most customers that while #4 would be fantastic and the best option, it is overly complicated.

     For my current customer I am recommending #2 or #3 depending how many work items that they currently have. Most of the teams are not using work items at all, so #3 is bets, and for those that want to retain their historical access to both data and reports #2 is a must.

    I am actually going back to my previous position that you always create a team project called “mytpname.Agile5″ and a new one with “mytpname.Agile6″ when you upgrade.

  • Pingback: Process Template Upgrade #3 – Destroy all Work Items and Import new ones | Process, Practices and Tools

  • Anonymous

    Great work Martin, i love the icons next to the available options :-] 

    • http://blog.hinshelwood.com Martin Hinshelwood

      I try to please :)  

  • Pingback: Process Template Upgrade #7 – Overwrite retaining history with limited migration - Visual Studio ALM with Team Foundation Server, Visual Studio & Scrum

  • Pingback: Full-fidelity history and data migration are mutually exclusive - Visual Studio ALM with Team Foundation Server, Visual Studio & Scrum

  • Brian Baker

    It seems like something has happened to your numbering scheme… Your options now appear as #s 1, 4, 9, 13, 16, 19, 22 instead of 1-7.

    • http://blog.hinshelwood.com/ Martin Hinshelwood

      Thanks for the note… looks like a weird CSS thing as I have:

      .entry_content ol {     text-indent: -24px;    counter-reset: item;}.entry_content ol li:before {     color:white;    margin-right:25px;    content: counter(item) ”  ”;     counter-increment: item;}

      Still trying to figure it out….

    • http://blog.hinshelwood.com/ Martin Hinshelwood

      Did that work?

      • Brian Baker

        Looks to be working correctly now!

        • http://blog.hinshelwood.com/ Martin Hinshelwood

          Thanks Brian… I have gone through a number of iterations on my CSS and it is mainly my older posts like this one that get messed up :)

  • Pingback: Upgrading from TFS 2008 to TFS 2010 Overview - Visual Studio ALM

  • Pingback: MSDN Blogs

  • Brian Baker

    We’re planning a TFS 2008 -> 2012 upgrade + template migration (SfTS to VS Scrum) + team project consolidation. Do you think it would be easier to do the template migration and project consolidation as a single step? Or should we consolidate everything first and then change process templates? We plan to keep the old work items around for reference to the old ID numbers and we plan to leave the source code where it is.

    • http://blog.hinshelwood.com/ Martin Hinshelwood

      I cant make recommendations without a lot more info and time to look at your setup. I would however do everything separately with time in-between to settle.

      How do you plan to consolidate? Are you migrating work item data or starting fresh? How are you consolidating team projects yet leaving source control where it is?

      I would want to do an assessment of where you are, what you are trying to achieve and what options are viable for achieving it. You can contact info@nwcadence.com to get some time for an evaluation…

      • Brian Baker

        Fair enough… Just thought I would check if you had any tips from running a similar scenario before. I’m fairly confident in our plans… perhaps I will try to share them once we’re done.

  • MG

    Which approach would be best if I want to change the process template from MSF agile to Scrum? The Team project in question has only been used purely as a source code repository. There are no work items, queries, build definitions, reports or sites created other than out of the box.