So hopefully you already caught part 1 where I extolled the virtues of Work Item Reporting. This time, I have moved into new territory! I am in the middle of a big, slightly nasty, TFS upgrade and TPC consolidation project. First thing is first. Attaching a legacy Team Project (TP) to TFS 2013 “upgrades it” but only in the sense that it works on TFS 2013. So you get everything you had before, but not necessarily ALL of the new stuff in 2013. You probably have very little of the new features in terms of the “agile planning tools”. There were changes made to the underlying TP Process Templates to support new features like, the “Feature” feature :)
I apparently had been taking the TFS Configure Features Wizard (CFW) for granted. “The what?” you say… Yeah, the thing that gets launched when you upgrade to TFS 2013 and you try to open something like the Product Backlog while connected to a legacy (pre-2012) TP. So if you’ve seen this message, the link at the bottom launches the CFW:
Often if you have an older, customized template (like modified CMMI 4.2), you can run into issues with the wizard. You may be familiar with errors like this “[Error] TF400654: Unable to configure Planning Tools. The following element contains an error: RequirementBacklog” or “[Error] TF400654: Unable to configure Planning Tools. The following element contains an error: TypeFields/TypeField[type='Order']“. Makes sense, there are some HUGE deltas between older templates and those in 2013.
So the CFW is super easy to use if you can upgrade with the OOB templates, especially if you’re just upgrading one version behind. And how often does THAT happen in the real world? Right. In our case we have TPs coming from TFS 2005, TFS 2008, AND TFS 2010 and all the templates are customized versions of CMMI. Oy. I decided to begin by upgrading the 2010 TPs since they were the most straight-forward and had the least amount of differences as compared to CMMI 2013. So, that is the main focus of THIS post. I will share experiences IRT other template versions later. So if you start with MSDN you’ll see a tangle of different articles when it comes to upgrading to new templates. A few important points about process templates:
- A) In case you did not know, you can’t just swap templates out once you have created a Team Project and started using it, you HAVE to upgrade the underlying template of a team project itself to make changes ::opens giant can of worms:: OR if it’s a major change, like going from CMMI to Agile, just trust me on this -- migrate to a new Team Project.
- B) Template upgrades can be scripted but at the end of the day it is very manual, and fairly time consuming because of all of the testing required. XML can be tricky for even the saltiest of us developers. In the old days it was ALL manual all the time and all command line, but over the years a host of helpful add-ons have become available like the process template editor in the TFS Power Tools, and the TFS Team Project manager tool.
- C) Changes to a base process template (so at the TFS Collection level) do not automatically filter down to TPs created with that template, wouldn’t that be awesome and terrible at the same time?! You must manually apply any template changes to all TPs that used that template, if you want them to remain consistent. I bet now you really regret spinning up new TPs for every single one-off project your IT group dreamed up huh?
But now there is another way, the Configure Features Wizard ::duh duh DUUHHHH:: I will admit, I did not thoroughly RTFM the first time through and missed out on the full power of this little tool myself. To be fair, the last time I had a massive mutli-version TFS consolidation this tool didn’t even exist. Of course now that I know what to search for, I turned up this AMAZING post of Edwald’s on how the wizard works, as well as this MSDN article that details how it is working its beautiful magic under the covers. To sum up why it is so awesome, it allows you to specify your template changes once, and then easily rinse and repeat with a click of a button. No scripting or command line necessary. Unless you like that sort of thing, or have a bajillion TPs, then have at it, but use this handy script to iterate through all of your projects.
So how does it work? I still contend there is some black magic involved, but more likely it was a lot of late nights by some wicked smart TFS dudes. Essentially, you need to create a new copy of the legacy template that was used to create the team projects that you wish to upgrade to 2013, and then retrofit some new shinies from both 2012 and 2013 into it. I first downloaded CMMI v5.0 (which they had customized and re-uploaded without renaming – ACK!). Next I had to do things like add in a handful of work item types (Code Review and Feedback for 2012, Features for 2013), update my WIT categories, as well as add the Process Configuration file specific to 2013. For all other work items I was able to simply replace the 5.0 WIT definitions with the 2013 versions, and then retrofit the client’s customizations back in. I used the heck out of the Team Project Manager Tool to compare them and see exactly what was customized. Be careful here and read both the 2012 changes AND the 2013 changes that need to be incorporated, so you don’t duplicate effort. For instance, the 2012 changes have you add 2 configuration files, but then both of those files are replaced by the single Process Configuration file for 2013. When I was done, I had a new version of the process template (with a new name!) that I could use with the wizard to convert the old TFS 2010/CMMI 5.0 TPs to 2013. It also contained all of the customizations that were done on the template before the TPs were created. Last, I uploaded that bad boy to the TFS Server, navigated to my legacy TPs one-by-one, and launched the Configure Features Wizard. I ignored the recommendation of CMMI 2013, and picked my updated CMMI 5.0 template:
When the wizard runs, the super-simplified explanation is that it performs a DIFF on the team project and the modified process template, and applies the changes to the TP so it now matches the template. I KNOW!! So update the template once, run as many times as you need.
Now, if after the team projects were created off of that old template, you had some template cowboys who went in customized the crap out of team projects in an inconsistent manner, or did not also make that change to the underlying base template as well, you may end up needing to upgrade those team projects by hand and/or resolve any issues encountered during the wizard to upgrade them to 2013 completely. No easy button there. And maybe start being more careful about who you let customize process templates and team projects going forward! ;)
Now you have a simple way to upgrade all of the team projects created off of that old, custom template up to 2013. At least for 2010. Next we tackle all of the 2008 TPs. And my understanding is that if you have 2005 TPs, just play some Taps and migrate what you need to a fresh, new 2013 TP.