Customize a team project to support team fields
The default configuration for team projects configures each team as an area path. If your organization has several teams that work from a common backlog and across many product areas, this configuration might not fit how you want to organize your work. By adding a custom field to represent teams in your organization, you can reconfigure the agile planning tools and pages to support your teams and decouple assignment to teams and area paths.
Here’s how to reconfigure your team project to use a team field instead of the team-as-area-path.
The witadmin command line tool supports import and export of definition files. You can also use the Process Editor, available with the download of TFS Power Tools, or TFS Team Project Manager, a community resource project available on CodePlex.
This topic describes how to reconfigure a team project that is based on the Scrum process template that TFS provides. If your team project is based on another process template and that template is compatible with TFS 2013, you can make similar changes. Even if you’ve used the default configuration, you can reconfigure your team project.
If you aren't a member of the Project Administrators group, get those permissions.
Open a Command Prompt window where either Visual Studio or Team Explorer is installed and enter:
cd %programfiles%\Microsoft Visual Studio 12.0\Common7\IDE
On a 64-bit edition of Windows, replace %programfiles% with %programfiles(x86)%. You can download Team Explorer for free.
Export the global list for the team project collection.
witadmin exportgloballist /collection:"http://MyServer:8080/tfs/DefaultCollection" /f:Directory/globallist.xml"
Add the global list definition for your team. Include a value you'll want to use for items not yet assigned to a team. If your global list is empty, simply copy the following code, paste into the XML file, and modify to support your team labels.
<?xml version="1.0" encoding="utf-8"?> <gl:GLOBALLISTS xmlns:gl="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists"> <GLOBALLIST name="Teams"> <LISTITEM value="Unassigned"/> <LISTITEM value="Team A"/> <LISTITEM value="Team B"/> <LISTITEM value="Team C"/> <LISTITEM value="Team D"/> </GLOBALLIST> </gl:GLOBALLISTS>
Import the global list definition.
witadmin importgloballist /collection:"http://MyServer:8080/tfs/DefaultCollection" /f:Directory/globallist.xml"
Note that global lists are defined for all team projects within a team project collection.
Add a custom team field to those work item types that you'll assign to teams. Add the Team field to the work item types defined in the Features, Requirements, and Task categories.
Export the work item type definitions. For Scrum, export the type definitions for the feature, product backlog item, bug, and task.
witadmin exportwitd /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /n:"Product Backlog Item" /f:Directory/pbi.xml witadmin exportwitd /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /n:Bug /f:Directory/bug.xml witadmin exportwitd /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /n:Task /f:Directory/task.xml
For each type, add a custom Team field that references the global list.
<FIELDS> . . . <FIELD name="Team" refname="MyCompany.Team" type="String" reportable="dimension"> <HELPTEXT>Name of the team that will do the work.</HELPTEXT> <ALLOWEXISTINGVALUE /> <ALLOWEDVALUES > <GLOBALLIST name="Teams" /> </ALLOWEDVALUES > <DEFAULT from="value" value="Unassigned" /> </FIELD> . . . </FIELDS>
Name your custom field to distinguish it from TFS fields. Do not use "System" as a prefix for refname. And, keep the name and refname labels to 128 characters and 70, respectively.
Add the Team field to the work item form.
<FORM> . . . <Group Label="Status"> <Column PercentWidth="100"> <Control FieldName="MyCompany.Team" Type="FieldControl" Label="Activity" LabelPosition="Left" EmptyText="<None>" /> <Control Type="FieldControl" FieldName="System.AssignedTo" Label="Assi&gned to:" LabelPosition="Left" /> <Control FieldName="System.State" Type="FieldControl" Label="Stat&e" LabelPosition="Left" /> <Control FieldName="System.Reason" Type="FieldControl" Label="Reason" LabelPosition="Left" ReadOnly="True" /> </Column> </Group> . . . </FORM>
Optionally, move the Area Path field to appear before or after the Iteration Path.
Import the updated type definitions.
witadmin importwitd /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /f:Directory/pbi.xml witadmin importwitd /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /f:Directory/bug.xml witadmin importwitd /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /f:Directory/task.xml
Export the ProcessConfiguration definition.
witadmin exportprocessconfig /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /f:Directory/ProcessConfiguration.xml
Replace System.AreaPath for the field used to specify type="Team".
<TypeField refname="MyCompany.Team" type="Team" />
Import the definition file.
witadmin importprocessconfig /collection:"http://MyServer:8080/tfs/DefaultCollection" /p:MyProject /f:Directory/ProcessConfiguration.xml
Create and configure teams in Team Web Access (TWA) to both match and reference the team field.
Refresh TWA, and from the team project home page, open a product backlog item. Verify that the changes appear as you expect and that you can select a team.
Open the product backlog or the task board for the team project. You'll see an error indicating you'll need to select a team area.
On the team field admin page, select the teams that are available. They should match the same list that you have added to the global list for teams.
When finished, your team field assignments should look similar to this:
At the team project level, create teams, using the same names you use in the global list.
If you have previously created teams, they will continue to exist. You can rename them as needed.
Each team will also have to configure their team field.
A: Before you can configure features for an upgraded team project that you have customized to use team fields, you’ll need to customize the latest process template with the same changes outlined in this topic. Here are the basic steps:
Upgrade TFS to the latest version.
Download the TFS process template that corresponds to the template used to create your team project.
Modify the ProcessTemplate file, and update the process template name and version number. For example:
<?xml version="1.0" encoding="utf-8"?> <ProcessTemplate> <metadata> <name>Microsoft Visual Studio Scrum 3.0 with Team Field</name> <description>This template is for teams who follow the Scrum methodology and use Scrum terminology.</description> <version type="6B724908-EF14-45CF-84F8-768B5384DA45" major="3" minor="60" />
As described in Add a custom team field to work item types, update the WIT definitions for the work item types assigned to the Feature, Requirements, and Task categories. For the Scrum process template, this corresponds to the Feature, Product Backlog Item, Bug, and Task WITs.
As described in Change process configuration to reference the team field, update the ProcessConfiguration file to use the custom team field.
Upload the TFS process template that you just modified.
Configure features using the wizard. Upon verify, the wizard should select the process template that you uploaded in the previous step.
A: For a list of all witadmin commands, see witAdmin: Customize and manage objects for tracking work.
A: Teams that you add to a team project from the Overview page of the team project, will not show up in the pick list of the custom field that you created to capture teams. You must update the global list that you created in Create a global list to manage teams for new teams to appear.
Use the global list to add new teams and then configure them as described in Configure Team settings.