Upgrade your 2012 team project from RTM to Update 2

Upgrade your 2012 team project from RTM to Update 2

Rate This
  • Comments 34

In our effort to bring continuous improvements to the product, we have made improvements to the stock process templates in VS Update 2. If you have an account on our hosted service or when you create a new team project, your team projects are already updated with these changes. However if you have an on premises installation of TFS, the existing team projects are not updated automatically. This blog post explains the steps to add the same improvements between VS 2012 RTM and VS 2012 Update 2 to your existing team projects.

The last section of this post explains which of these changes apply when you upgraded from VS 2012 Update 1

Overview of the changes

Before we dive deep in the steps to update your team project, let’s start with an overview of the improvements we made.

TFS ships with three templates (Agile, Scrum and CMMI). If you are not sure what process template was used when you created the team project, then go to the team home page

image

  • If the backlog contains “Product Backlog Item” and “Bug” work items, you used the Scrum process template
  • If the backlog contains “User Story” work items, you used the Agile process template
  • If the backlog contains “Requirement” work items, you used the CMMI process template
From Scrum 2.0 to Scrum 2.2
  1. Add the Tags column by default on the product backlog
  2. Add missing transitions to the Bug and PBI
From Agile 6.0 to Agile 6.2
  1. Add the Tags column by default on the product backlog
  2. Add the missing transitions to the User Story
  3. Set the values in the ResolvedBy and ResolvedDate fields in the transition “Active –> Closed”
  4. Update the reasons in the transitions “Active –> New” and “Active –> Closed”
From CMMI 6.0 to CMMI 6.2
  1. Add the Tags column by default on the product backlog
  2. Set the value of the ResolvedBy and ResolvedDate fields in the transition “Active –> Closed”
  3. Set the value of the ActivatedBy, ActivatedDate, ResolvedBy and ResolvedDate fields in the transition “Proposed –> Closed”  

Note: You need to apply these steps to all team projects. Applying the steps to one team project do not automatically apply them to all team projects.

Update your team project if it was created by the Scrum Template

Add the Tags column by default on the product backlog

When you create a new team, the columns on the team’s backlog get defaulted to a set of columns. Each individual can later modify the columns in the view, so this setting only applied to the initial set of columns. With the introduction of tagging, we have added the Tags column to the initial set of columns on the product backlog.

  1. Download the agile configuration with the command witadmin exportagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)
  2. Open the downloaded file in notepad and update the ProductBacklog section to include the highlighted text

      <ProductBacklog>
        <Columns>
          <Column refname="System.Title" width="400" />
          <Column refname="System.State" width="100" />
          <Column refname="Microsoft.VSTS.Scheduling.Effort" width="50" />
          <Column refname="System.IterationPath" width="200" />
          <Column refname="System.Tags" width="200" />
        </Columns>

  3. Save and close the file
  4. Import the updated configuration with the command witadmin importagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)
Add missing transitions to the Bug and PBI
  1. Download the Product Backlog Item work item type with the witadmin exportwitd /collection:<CollectionURL> /p:<Project> /n:"Product Backlog Item" /f:%TEMP%\PBI.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  2. Open the downloaded file in notepad
  3. Locate the </TRANSITIONS> element in the xml
  4. Add the highlighted text to the section

        <TRANSITION from="Removed" to="New">
          <REASONS>
            <DEFAULTREASON value="Reconsidering backlog item" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Approved" to="New">
          <REASONS>
            <DEFAULTREASON value="Moved to the backlog" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Committed" to="New">
          <REASONS>
            <DEFAULTREASON value="Moved to the backlog" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Done" to="New">
          <REASONS>
            <DEFAULTREASON value="Moved to the backlog" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Done" to="Approved">
          <REASONS>
            <DEFAULTREASON value="Additional work found" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Approved" to="Done">
          <REASONS>
            <DEFAULTREASON value="Work finished" />
          </REASONS>
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
          </FIELDS>
        </TRANSITION>
      </TRANSITIONS>
    </WORKFLOW>

  5. Save and close the file
  6. Import the updated Product Backlog Item work item type with the witadmin importwitd /collection:<CollectionURL> /p:<Project> /f:%TEMP%\PBI.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  7. Repeat the same steps for the Bug work item type

Update your team project if it was created by the Agile Template

Add the Tags column by default on the product backlog

When you create a new team, the columns on the team’s backlog get defaulted to a set of columns. Each individual can later modify the columns in the view, so this setting only applied to the initial set of columns. With the introduction of tagging, we have added the Tags column to the initial set of columns on the product backlog.

  1. Download the agile configuration with the command witadmin exportagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)
  2. Open the downloaded file in notepad and update the ProductBacklog section to include the highlighted text

      <ProductBacklog>
        <Columns>
          <Column refname="System.Title" width="400" />
          <Column refname="System.State" width="100" />
          <Column refname="Microsoft.VSTS.Scheduling.StoryPoints" width="50" />
          <Column refname="System.IterationPath" width="200" />
          <Column refname="System.Tags" width="200" />
        </Columns>

  3. Save and close the file
  4. Import the updated configuration with the command witadmin importagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProc (see Managing Process Configuration [witadmin] for more details on this command)
Add the missing transitions to the User Story
  1. Download the User Story work item type with the witadmin exportwitd /collection:<CollectionURL> /p:<Project> /n:"User Story" /f:%TEMP%\UserStory.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  2. Open the downloaded file in notepad
  3. Locate the </TRANSITIONS> element in the xml
  4. Add the highlighted text to the section

        <TRANSITION from="Removed" to="New">
          <REASONS>
              <DEFAULTREASON value="Reconsidering the User Story" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Resolved" to="New">
          <REASONS>
            <DEFAULTREASON value="Moved to the backlog" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="Closed" to="New">
          <REASONS>
            <DEFAULTREASON value="Moved to the backlog" />
          </REASONS>
        </TRANSITION>
        <TRANSITION from="New" to="Closed">
          <REASONS>
            <DEFAULTREASON value="Acceptance tests pass" />
          </REASONS>
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
              <SERVERDEFAULT from="currentuser" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
              <SERVERDEFAULT from="currentuser" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
              <SERVERDEFAULT from="currentuser" />
            </FIELD>
          </FIELDS>
        </TRANSITION>
      </TRANSITIONS>
    </WORKFLOW>

  5. Save and close the file
  6. Import the updated User Story work item type with the witadmin importwitd /collection:<CollectionURL> /p:<Project> /f:%TEMP%\UserStory.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command) 
Set the values in the ResolvedBy and ResolvedDate fields in the transition “Active –> Closed”
  1. Again download the User Story work item type with the witadmin exportwitd /collection:CollectionURL /p:Project /n:"User Story" /f:%TEMP%\UserStory.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  2. Open the downloaded file in notepad
  3. Locate the following xml node

    <TRANSITION from="Active" to="Closed">

  4. Replace the section 

    <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
      <READONLY />
    </FIELD>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
      <ALLOWEXISTINGVALUE />
      <READONLY />
    </FIELD>

    With 

    <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
      <SERVERDEFAULT from="clock" />
    </FIELD>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
      <SERVERDEFAULT from="currentuser" />
    </FIELD>

  5. Save and close the file
  6. Import the updated User Story work item type with the witadmin importwitd /collection:<CollectionURL> /p:<Project> /f:%TEMP%\UserStory.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
Update the reasons in the transitions “Active –> New” and “Active –> Closed”
  1. Again download the User Story work item type with the witadmin exportwitd /collection:CollectionURL /p:Project /n:"User Story" /f:%TEMP%\UserStory.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  2. Open the downloaded file in notepad
  3. Locate the following xml node

    <TRANSITION from="Active" to="New">
      <REASONS>
          <DEFAULTREASON value="Implementation halted" />
      </REASONS>
    </TRANSITION>

  4. Replace it with

    <TRANSITION from="Active" to="New">
      <REASONS>
        <DEFAULTREASON value="Moved to the backlog" />
        <REASON value="Implementation halted" />
      </REASONS>
    </TRANSITION>

  5. Locate the following xml node

    <TRANSITION from="Active" to="Closed">
      <REASONS>
          <DEFAULTREASON value="Rejected" />
          <REASON value="Abandoned" />
          <REASON value="Out of scope" />
      </REASONS>
    </TRANSITION>

  6. Replace it with

    <TRANSITION from="Active" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Acceptance tests pass" />
          <REASON value="Rejected" />
          <REASON value="Abandoned" />
          <REASON value="Out of scope" />
      </REASONS>
    </TRANSITION>

  7. Save and close the file
  8. Import the updated User Story work item type with the witadmin importwitd /collection:<CollectionURL> /p:<Project> /f:%TEMP%\UserStory.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)

Update your team project if it was created by the CMMI Template

Add the Tags column by default on the product backlog

When you create a new team, the columns on the team’s backlog get defaulted to a set of columns. Each individual can later modify the columns in the view, so this setting only applied to the initial set of columns. With the introduction of tagging, we have added the Tags column to the initial set of columns on the product backlog.

  1. Download the agile configuration with the command witadmin exportagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)
  2. Open the downloaded file in notepad and update the ProductBacklog section to include the highlighted text

      <ProductBacklog>
        <Columns>
          <Column refname="System.Title" width="400" />
          <Column refname="System.State" width="100" />
          <Column refname="Microsoft.VSTS.Scheduling.StoryPoints" width="50" />
          <Column refname="Microsoft.VSTS.CMMI.RequirementType" width="50" />
          <Column refname="System.IterationPath" width="200" />
          <Column refname="System.Tags" width="200" />
        </Columns>

  3. Save and close the file
  4. Import the updated configuration with the command witadmin importagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)
Set the value of the ResolvedBy and ResolvedDate fields in the transition “Active –> Closed”
  1. Download the Requirement work item type with the witadmin exportwitd /collection:CollectionURL /p:Project /n:"Requirement" /f:%TEMP%\Requirement.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  2. Open the downloaded file in notepad
  3. Locate the following xml node

    <TRANSITION from="Active" to="Closed">

  4. Add the highlighted text to the transition 

    <TRANSITION from="Active" to="Closed">
      <REASONS>
        <REASON value="Abandoned" />
        <REASON value="Out-of-scope" />
        <DEFAULTREASON value="Split" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
          <SERVERDEFAULT from="currentuser" />
        </FIELD>

        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>

  5. Save and close the file
  6. Import the updated Requirement work item type with the witadmin importwitd /collection:<CollectionURL> /p:<Project> /f:%TEMP%\Requirement.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
Set the value of the ActivatedBy, ActivatedDate, ResolvedBy and ResolvedDate fields in the transition “Proposed –> Closed”
  1. Again download the Requirement work item type with the witadmin exportwitd /collection:CollectionURL /p:Project /n:"Requirement" /f:%TEMP%\Requirement.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)
  2. Open the downloaded file in notepad
  3. Locate the following xml node

    <TRANSITION from="Proposed" to="Closed">

  4. Add the highlighted text to the transition 

    <TRANSITION from="Proposed" to="Closed">
      <REASONS>
        <DEFAULTREASON value="Rejected" />
      </REASONS>
      <FIELDS>
        <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
          <SERVERDEFAULT from="currentuser" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
          <SERVERDEFAULT from="currentuser" />
        </FIELD>
        <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
          <SERVERDEFAULT from="clock" />
        </FIELD>

  5. Save and close the file
  6. Import the updated Requirement work item type with the witadmin importwitd /collection:<CollectionURL> /p:<Project> /f:%TEMP%\Requirement.xml (see Customizing and Managing Work Item Types [witadmin] for more details on this command)

What changes apply if I upgraded from VS 2012 Update 1 to VS 2012 Update 2?

Between Update 1 and Update 2, we only added the Tags field to the list of columns on the Product Backlog in the Agile Configuration Settings. The steps are equal for all process templates, which are

  1. Download the agile configuration with the command witadmin exportagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)
  2. Open the downloaded file in notepad and update the ProductBacklog section to include the highlighted text

      <ProductBacklog>
        <Columns>
          <Column refname="System.Title" width="400" />
          <Column refname="System.State" width="100" />
          <Column refname="Microsoft.VSTS.Scheduling.StoryPoints" width="50" />
          <Column refname="Microsoft.VSTS.CMMI.RequirementType" width="50" />
          <Column refname="System.IterationPath" width="200" />
          <Column refname="System.Tags" width="200" />
        </Columns>

  3. Save and close the file
  4. Import the updated configuration with the command witadmin importagileprocessconfig /collection:<CollectionURL> /p:<Project> /f:%TEMP%\AgileProcessConfig.xml (see Managing Process Configuration [witadmin] for more details on this command)

Resources

Leave a Comment
  • Please add 4 and 1 and type the answer here:
  • Post
  • @Jeff,

    The WorkItems.xml is not the file that contains the configuration of the Agile Planning Tools. The configuration of the Agile Planning Tools is in TFS 2012 defined in the AgileConfiguration and the CommonConfiguration, and in TFS 2013 it is merged in a file named ProcessConfiguration. The configuration file(s) contain information to specify which items live on the backlogs, and how Code Review and Feedback interacts with the underlying work item tracking system.

    You can get the configuration file in TFS 2013 with the command "witadmin exportprocessconfig".

    Hope this helps.

  • Thanks! I'll look in to that.. I was drawn to the WorkItems.xml because it is what is referencing the two files that have been merged in to one (2012's file references CommonConfiguration and AgileConfiguration, while 2013's only references ProcessConfiguration).  So I was trying to figure out how to change that... If I import an updated processConfig then I'll see where that gets me.

  • I've just upgraded TFS 2012.2 to TFS 2013 and it told me I needed to apply these changes.

    For the record, some feedback:

    The detailed instructions are great. However, IMO this page would be much easier to use if it also provided the old and new versions of the XML files. This would allow people to diff/merge using tools instead of fiddling through by hand. It would also mean that where the templates have not been customised we could just upload the latest version and be done in a few seconds. (This seems like something the installer should do automatically where the templates are not customised).

    Confusingly, although I have been directed here by the upgrade process, it seems that my templates are already up to date. This implies that the upgrade process (2012 RTM -> .1 -> .2 -> 2013) does upgrade the files if they have not been customised. If this is the case it would have been more reassuring for this page to mention that, or even better for the upgrade system to have realised everything was up to date and therefore not told me that I needed to make these changes at all!

    Apart from that, the upgrade was easy and seamless - great job! (I upgraded 2005->2008->2010 so I really appreciate how much better this process has become)

    Thanks

  • @Jason,

    Thanks for the nice comments. It is a great suggestion to include the xml files in a future blog post. I will play with the idea when I create the next upgrade blog post.

    I would like to comment on your already upgraded templates. When you do an upgrade of your TFS server, we will install the new process templates. These process templates can be used when you create a new team project. This blog post however is how to update your existing team projects. If we introduce a new feature (like portfolio management in TFS 2013) that needs updated settings, we will do our best to make it friction free with the "Configure Features" wizard. There are however a couple changes that are not critical, and we will not apply them automatically. And that is what this post describes.

    We will not apply the changes automatically because we don't know what your customizations have made in the past.

Page 3 of 3 (34 items) 123