Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / DevOps / TFS

Scrum Definition of Done and Team Foundation Server

4.00/5 (1 vote)
18 Dec 2014CPOL2 min read 27.8K  
Practical implementation of Scrum Definition of Done (DoD) in Visual Studio Team Foundation Server (TFS)

1. Introduction

The article provides information and instructions to use Scrum Definition of Done artifact with TFS.

1.1 Purpose

Definition of Done is an important artifact of Scrum which improves transparency amongst teams and the quality of product.

TFS out of the box does not have support for Definition of Done at Product/Release/Sprint level, however it is flexible and customizable. We can extend the TFS Scrum template, introduce Definition of Done as a new Work Item Type (WIT) and use it as an artifact for Scrum process within TFS.

1.2 References

For details about Definition of Done, please refer to the latest official Scrum Guide:

1.3 Audience

Can be used by the following:

  1. TFS on-premise users only
  2. Scrum methodology/template users

1.4 Definitions, Acronyms, and Abbreviations

Abbreviation Description
DoD Definition of Done
TFS Visual Studio Team Foundation Server

2. Import/Install the Definition of Done (DoD) work item type (WIT)

Create a new XML file as DoD.xml. Copy/replace the entire code below in the file DoD.xml which you created:

XML
<?xml version="1.0" encoding="utf-8"?>
<Witd:WITD application="Work item type editor" 
version="1.0" 
xmlns:Witd="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef">
<WORKITEMTYPE name="Definition of Done">
<DESCRIPTION>Definition of Done.</DESCRIPTION>
<FIELDS>
<FIELD name="Area Path" refname="System.AreaPath" 
type="TreePath" reportable="dimension" />
<FIELD name="Iteration Path" 
refname="System.IterationPath" type="TreePath" 
reportable="dimension" />
<FIELD name="Title" refname="System.Title" 
type="String" reportable="dimension">
<DEFAULT from="value" value="Definition of Done" />
<REQUIRED />
</FIELD>
<FIELD name="State" refname="System.State" 
type="String" reportable="dimension" />
<FIELD name="Acceptance Criteria" 
refname="Microsoft.VSTS.Common.AcceptanceCriteria" type="HTML" />
<FIELD name="Description" 
refname="System.Description" type="HTML" />
<FIELD name="History" 
refname="System.History" type="History" />
</FIELDS>
<WORKFLOW>
<STATES>
<STATE value="New" />
<STATE value="Done" />
<STATE value="Removed" />
</STATES>
<TRANSITIONS>
<TRANSITION from="" to="New">
<REASONS>
<DEFAULTREASON value="New Definition of Done" />
</REASONS>
</TRANSITION>
<TRANSITION from="New" to="Done">
<REASONS>
<DEFAULTREASON value="Definition of Done completed" />
</REASONS>
</TRANSITION>
<TRANSITION from="New" to="Removed">
<REASONS>
<DEFAULTREASON value="Removed the Definition of Done" />
</REASONS>
</TRANSITION>
<TRANSITION from="Done" to="New">
<REASONS>
<DEFAULTREASON value="Made Definition of Done active" />
</REASONS>
</TRANSITION>
<TRANSITION from="Removed" to="New">
<REASONS>
<DEFAULTREASON value="Reconsidering the Definition of Done" />
</REASONS>
</TRANSITION>
</TRANSITIONS>
</WORKFLOW>
<FORM>
<Layout HideReadOnlyEmptyFields="true" HideControlBorders="true">
<Group Margin="(4,0,0,0)">
<Column PercentWidth="100">
<Control FieldName="System.Title" Type="FieldControl" 
ControlFontSize="large" EmptyText="&lt;Enter title here&gt;" 
LabelPosition="Top" />
</Column>
</Group>
<Group Margin="(10,0,0,0)">
<Column PercentWidth="100">
<Control FieldName="System.IterationPath" 
Type="WorkItemClassificationControl" 
Label="Ite&amp;ration" LabelPosition="Left" />
</Column>
</Group>
<Group Margin="(10,0,0,0)">
<Column PercentWidth="50">
<Group>
<Column PercentWidth="100">
<Control FieldName="System.State" Type="FieldControl" 
Label="Stat&amp;e" LabelPosition="Left" />
</Column>
</Group>
</Column>
<Column PercentWidth="50">
<Group>
<Column PercentWidth="100">
<Control FieldName="System.AreaPath" 
Type="WorkItemClassificationControl" Label="&amp;Area" 
LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
<Group>
<Column PercentWidth="50">
<TabGroup>
<Tab Label="Details">
<Control FieldName="Microsoft.VSTS.Common.AcceptanceCriteria" 
Type="HtmlFieldControl" Label="" 
LabelPosition="Top" Dock="Fill" />
</Tab>
</TabGroup>
</Column>
<Column PercentWidth="50">
<TabGroup Margin="(5,0,0,0)">
<Tab Label="Comments">
<Control FieldName="System.Description" 
Type="HtmlFieldControl" Label="" 
LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="History">
<Control FieldName="System.History" 
Type="WorkItemLogControl" Label="" 
LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="Links">
<Control Type="LinksControl" 
Name="GeneralLinks" LabelPosition="Top">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
<LinkColumn LinkAttribute="System.Links.Comment" />
</LinkColumns>
<WorkItemLinkFilters FilterType="includeAll" />
<ExternalLinkFilters FilterType="includeAll" />
<WorkItemTypeFilters FilterType="includeAll" />
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Attachments">
<Control Type="AttachmentsControl" 
Label="" LabelPosition="Top" />
</Tab>
</TabGroup>
</Column>
</Group>
</Layout>
</FORM>
</WORKITEMTYPE>
</Witd:WITD>

Run the following command to import DoD.xml in your TFS project:

witadmin importwitd /f:DoD.xml /collection:"http://[Your server]:8080/tfs/DefaultCollection" /p:"[Your project]"

For details on importing custom WIT to project, please visit:

3. Usage

3.1 Create/Modify the DoD during Sprint Planning Meeting

For the first time, create the DoD and populate the Details/List section as per your company or product’s definition of done. In later Sprint planning meetings, you can modify the DoD after review of points from Sprint Retrospective meetings.

Image 1

Image 2

3.2 Use DoD during Sprint Review Meeting

Open and use DoD while Sprint Review to ensure that all Done are met for the Sprint.

3.3 In Sprint Retrospective Meeting

During or after Sprint Retrospective meeting, points can be added in Comments section:

Image 3

It can be later reviewed in the next Sprint planning meeting to be a part of DoD Details/List:

Image 4

For changes in DoD, History tab can also be used:

Image 5

4. DoD as ‘Team favorites’ and ‘Pin to homepage’

Create a new query as ‘Definition of Done’ and make it shared, add to team favorites and pin to homepage for increased transparency and quick access:

Image 6

Image 7

5. DoD Usage in Scaled Agile Framework (SAFe) for TFS

For details on SAFe for TFS, please visit:

http://msdn.microsoft.com/en-us/library/dn798712.aspx

Use default Acceptance Criteria field for PBI, Feature and Epic:

Image 8

Image 9

Separate DoD at Sprint, PI, Release/Product levels can be created using the Iteration field of DoD WIT:

Image 10

Image 11

Different DoD for teams can be created using the Area field of DoD WIT:

Image 12

6. Use Charts and ‘Pin to homepage’

You can also create charts for DoD and pin to the homepage:

Image 13

Feel free to further customize things as per your needs. Please leave a comment for feedback or any questions.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)