2
votes

We recently installed TFS 2010 and are using it in an agile manner by taking advantage of the Scrum templates. We were curious if there is a way to track task due date within TFS so that we can easily run our daily scrums by only looking at tasks with a due date of yesterday and/or today.

5

5 Answers

4
votes

There is no due date field because in Scrum methodology such information is not needed. All sprint related tasks (sprint backlog items) have due date of sprint ending. All user stories (product backlog items) have no due date because this is driven by business priority and team capacity => due date can change every sprint.

1
votes

It is definitely possible without any external plugins or extensions. Read more about the process here.

I did the same for my TFS 2012 server, and the same can be done for TFS 2010 server also.

Instead of modifying the existing Task or Bug, I added a new Work Item type called Defect having both of their properties using this command

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE>witadmin importwitd /collection:myTFSserver/TFS_DefaultCollection /p:MyProjectName /f:D:\Defect.xml

Defect.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="Defect">
    <DESCRIPTION>Task bug or Issue</DESCRIPTION>
    <FIELDS>
      <FIELD name="Iteration Path" refname="System.IterationPath" type="TreePath" reportable="dimension">
        <HELPTEXT>The iteration within which this issue will be fixed</HELPTEXT>
      </FIELD>
      <FIELD name="Iteration ID" refname="System.IterationId" type="Integer" />
      <FIELD name="External Link Count" refname="System.ExternalLinkCount" type="Integer" />
      <FIELD name="Team Project" refname="System.TeamProject" type="String" reportable="dimension" />
      <FIELD name="Hyperlink Count" refname="System.HyperLinkCount" type="Integer" />
      <FIELD name="Attached File Count" refname="System.AttachedFileCount" type="Integer" />
      <FIELD name="Node Name" refname="System.NodeName" type="String" />
      <FIELD name="Area Path" refname="System.AreaPath" type="TreePath" reportable="dimension">
        <HELPTEXT>The area of the product with which this issue is associated</HELPTEXT>
      </FIELD>
      <FIELD name="Revised Date" refname="System.RevisedDate" type="DateTime" reportable="detail" />
      <FIELD name="Changed Date" refname="System.ChangedDate" type="DateTime" reportable="dimension" />
      <FIELD name="ID" refname="System.Id" type="Integer" reportable="dimension" />
      <FIELD name="Area ID" refname="System.AreaId" type="Integer" />
      <FIELD name="Authorized As" refname="System.AuthorizedAs" type="String" syncnamechanges="true" />
      <FIELD name="Title" refname="System.Title" type="String" reportable="dimension">
        <HELPTEXT>The nature of the problem and why it is affecting or could affect the project</HELPTEXT>
        <REQUIRED />
      </FIELD>
      <FIELD name="State" refname="System.State" type="String" reportable="dimension">
        <HELPTEXT>Change to Closed when the issue is resolved or not relevant anymore</HELPTEXT>
      </FIELD>
      <FIELD name="Authorized Date" refname="System.AuthorizedDate" type="DateTime" />
      <FIELD name="Watermark" refname="System.Watermark" type="Integer" />
      <FIELD name="Rev" refname="System.Rev" type="Integer" reportable="dimension" />
      <FIELD name="Changed By" refname="System.ChangedBy" type="String" syncnamechanges="true" reportable="dimension">
        <ALLOWEXISTINGVALUE />
        <VALIDUSER />
      </FIELD>
      <FIELD name="Reason" refname="System.Reason" type="String" reportable="dimension">
        <HELPTEXT>The reason why the issue is in the current state</HELPTEXT>
      </FIELD>
      <FIELD name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
        <HELPTEXT>The person currently working on this issue</HELPTEXT>
        <ALLOWEXISTINGVALUE />
        <VALIDUSER />
      </FIELD>
      <FIELD name="Work Item Type" refname="System.WorkItemType" type="String" reportable="dimension" />
      <FIELD name="Created Date" refname="System.CreatedDate" type="DateTime" reportable="dimension" />
      <FIELD name="Created By" refname="System.CreatedBy" type="String" syncnamechanges="true" reportable="dimension" />
      <FIELD name="Description" refname="System.Description" type="HTML">
        <HELPTEXT>Problem, resolution plan and status</HELPTEXT>
      </FIELD>
      <FIELD name="History" refname="System.History" type="History">
        <HELPTEXT>Discussion thread plus automatic record of changes</HELPTEXT>
      </FIELD>
      <FIELD name="Related Link Count" refname="System.RelatedLinkCount" type="Integer" />
      <FIELD name="Tags" refname="System.Tags" type="PlainText" />
      <FIELD name="System Info" refname="Microsoft.VSTS.TCM.SystemInfo" type="HTML">
        <HELPTEXT>Test context, provided automatically by test infrastructure</HELPTEXT>
      </FIELD>
      <FIELD name="Repro Steps" refname="Microsoft.VSTS.TCM.ReproSteps" type="HTML">
        <HELPTEXT>How to see the bug. End by contrasting expected with actual behavior.</HELPTEXT>
      </FIELD>
      <FIELD name="State Change Date" refname="Microsoft.VSTS.Common.StateChangeDate" type="DateTime">
        <WHENCHANGED field="System.State">
          <SERVERDEFAULT from="clock" />
        </WHENCHANGED>
        <WHENNOTCHANGED field="System.State">
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Activated Date" refname="Microsoft.VSTS.Common.ActivatedDate" type="DateTime" reportable="dimension">
        <WHENNOTCHANGED field="System.State">
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Activated By" refname="Microsoft.VSTS.Common.ActivatedBy" type="String" syncnamechanges="true" reportable="dimension">
        <WHENNOTCHANGED field="System.State">
          <ALLOWEXISTINGVALUE />
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Resolved Date" refname="Microsoft.VSTS.Common.ResolvedDate" type="DateTime" reportable="dimension">
        <WHENNOTCHANGED field="System.State">
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Resolved By" refname="Microsoft.VSTS.Common.ResolvedBy" type="String" syncnamechanges="true" reportable="dimension">
        <WHENNOTCHANGED field="System.State">
          <ALLOWEXISTINGVALUE />
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Resolved Reason" refname="Microsoft.VSTS.Common.ResolvedReason" type="String" reportable="dimension">
        <HELPTEXT>The reason why the bug was resolved</HELPTEXT>
        <ALLOWEDVALUES expanditems="true">
          <LISTITEM value="As Designed" />
          <LISTITEM value="Cannot Reproduce" />
          <LISTITEM value="Deferred" />
          <LISTITEM value="Duplicate" />
          <LISTITEM value="Fixed" />
          <LISTITEM value="Obsolete" />
        </ALLOWEDVALUES>
        <FROZEN />
      </FIELD>
      <FIELD name="Closed Date" refname="Microsoft.VSTS.Common.ClosedDate" type="DateTime" reportable="dimension">
        <WHENNOTCHANGED field="System.State">
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Closed By" refname="Microsoft.VSTS.Common.ClosedBy" type="String" syncnamechanges="true" reportable="dimension">
        <WHENNOTCHANGED field="System.State">
          <ALLOWEXISTINGVALUE />
          <READONLY />
        </WHENNOTCHANGED>
      </FIELD>
      <FIELD name="Priority" refname="Microsoft.VSTS.Common.Priority" type="Integer" reportable="dimension">
        <HELPTEXT>Business importance. 1=must fix; 4=unimportant.</HELPTEXT>
        <ALLOWEDVALUES expanditems="true">
          <LISTITEM value="1" />
          <LISTITEM value="2" />
          <LISTITEM value="3" />
          <LISTITEM value="4" />
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="2" />
      </FIELD>
      <FIELD name="Severity" refname="Microsoft.VSTS.Common.Severity" type="String" reportable="dimension">
        <HELPTEXT>Assessment of the effect of the bug on the project</HELPTEXT>
        <ALLOWEDVALUES expanditems="true">
          <LISTITEM value="1 - Critical" />
          <LISTITEM value="2 - High" />
          <LISTITEM value="3 - Medium" />
          <LISTITEM value="4 - Low" />
        </ALLOWEDVALUES>
        <DEFAULT from="value" value="3 - Medium" />
      </FIELD>
      <FIELD name="Stack Rank" refname="Microsoft.VSTS.Common.StackRank" type="Double" reportable="dimension">
        <HELPTEXT>Work first on items with lower-valued stack rank. Set in triage.</HELPTEXT>
      </FIELD>
      <FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
        <HELPTEXT>The build in which the bug was fixed</HELPTEXT>
        <SUGGESTEDVALUES expanditems="true">
          <LISTITEM value="&lt;None&gt;" />
        </SUGGESTEDVALUES>
      </FIELD>
      <FIELD name="Due Date" refname="Microsoft.VSTS.Scheduling.DueDate" type="DateTime" reportable="dimension">
        <HELPTEXT>The date by which this issue needs to be closed</HELPTEXT>
      </FIELD>
      <FIELD name="Found In" refname="Microsoft.VSTS.Build.FoundIn" type="String" reportable="dimension">
        <HELPTEXT>The build in which the bug was found</HELPTEXT>
        <SUGGESTEDVALUES expanditems="true">
          <LISTITEM value="&lt;None&gt;" />
        </SUGGESTEDVALUES>
      </FIELD>
      <FIELD name="Activity" refname="Microsoft.VSTS.Common.Activity" type="String" reportable="dimension">
        <HELPTEXT>Type of work involved</HELPTEXT>
        <SUGGESTEDVALUES expanditems="true">
          <LISTITEM value="Development" />
          <LISTITEM value="Testing" />
          <LISTITEM value="Requirements" />
          <LISTITEM value="Design" />
          <LISTITEM value="Deployment" />
          <LISTITEM value="Documentation" />
        </SUGGESTEDVALUES>
      </FIELD>
      <FIELD name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum">
        <HELPTEXT>An estimate of the number of units of work remaining to complete this task</HELPTEXT>
      </FIELD>
      <FIELD name="Original Estimate" refname="Microsoft.VSTS.Scheduling.OriginalEstimate" type="Double" reportable="measure" formula="sum">
        <HELPTEXT>Initial value for Remaining Work - set once, when work begins</HELPTEXT>
      </FIELD>
      <FIELD name="Completed Work" refname="Microsoft.VSTS.Scheduling.CompletedWork" type="Double" reportable="measure" formula="sum">
        <HELPTEXT>The number of units of work that have been spent on this task</HELPTEXT>
      </FIELD>
      <FIELD name="Start Date" refname="Microsoft.VSTS.Scheduling.StartDate" type="DateTime" reportable="dimension">
        <HELPTEXT>The date to start the task</HELPTEXT>
      </FIELD>
      <FIELD name="Finish Date" refname="Microsoft.VSTS.Scheduling.FinishDate" type="DateTime" reportable="dimension">
        <HELPTEXT>The date to finish the task</HELPTEXT>
      </FIELD>
    </FIELDS>
    <WORKFLOW>
      <STATES>
        <STATE value="Active">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
              <ALLOWEXISTINGVALUE />
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
              <ALLOWEXISTINGVALUE />
              <EMPTY />
            </FIELD>
          </FIELDS>
        </STATE>
        <STATE value="Resolved">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
              <ALLOWEXISTINGVALUE />
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
              <REQUIRED />
            </FIELD>
          </FIELDS>
        </STATE>
        <STATE value="Closed">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
              <READONLY />
            </FIELD>
          </FIELDS>
        </STATE>
      </STATES>
      <TRANSITIONS>
        <TRANSITION from="" to="Active">
          <REASONS>
            <DEFAULTREASON value="New" />
          </REASONS>
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
              <ALLOWEXISTINGVALUE />
              <COPY from="currentuser" />
              <VALIDUSER />
              <REQUIRED />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
            <FIELD refname="System.AssignedTo">
              <DEFAULT from="currentuser" />
            </FIELD>
          </FIELDS>
        </TRANSITION>
    <TRANSITION from="Active" to="Resolved">
          <REASONS>
            <DEFAULTREASON value="Completed" />
            <REASON value="Fixed">
              <FIELDS>
                <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
                  <COPY from="value" value="Fixed" />
                  <ALLOWEDVALUES expanditems="true">
                    <LISTITEM value="Fixed" />
                  </ALLOWEDVALUES>
                </FIELD>
              </FIELDS>
            </REASON>
            <REASON value="Deferred">
              <FIELDS>
                <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
                  <COPY from="value" value="Deferred" />
                  <ALLOWEDVALUES expanditems="true">
                    <LISTITEM value="Deferred" />
                  </ALLOWEDVALUES>
                </FIELD>
              </FIELDS>
            </REASON>
            <REASON value="Duplicate">
              <FIELDS>
                <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
                  <COPY from="value" value="Duplicate" />
                  <ALLOWEDVALUES expanditems="true">
                    <LISTITEM value="Duplicate" />
                  </ALLOWEDVALUES>
                </FIELD>
              </FIELDS>
            </REASON>
            <REASON value="As Designed">
              <FIELDS>
                <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
                  <COPY from="value" value="As Designed" />
                  <ALLOWEDVALUES expanditems="true">
                    <LISTITEM value="As Designed" />
                  </ALLOWEDVALUES>
                </FIELD>
              </FIELDS>
            </REASON>
            <REASON value="Cannot Reproduce">
              <FIELDS>
                <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
                  <COPY from="value" value="Cannot Reproduce" />
                  <ALLOWEDVALUES expanditems="true">
                    <LISTITEM value="Cannot Reproduce" />
                  </ALLOWEDVALUES>
                </FIELD>
              </FIELDS>
            </REASON>
        <REASON value="Cut" />
            <REASON value="Obsolete">
              <FIELDS>
                <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
                  <COPY from="value" value="Obsolete" />
                  <ALLOWEDVALUES expanditems="true">
                    <LISTITEM value="Obsolete" />
                  </ALLOWEDVALUES>
                </FIELD>
              </FIELDS>
            </REASON>
          </REASONS>
          <FIELDS>
            <FIELD refname="System.AssignedTo">
              <COPY from="field" field="System.CreatedBy" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
              <READONLY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
              <ALLOWEXISTINGVALUE />
              <READONLY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedBy">
              <ALLOWEXISTINGVALUE />
              <COPY from="currentuser" />
              <VALIDUSER />
              <REQUIRED />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
              <COPY from="value" value="Fixed" />
            </FIELD>
          </FIELDS>
          <ACTIONS>
            <ACTION value="Microsoft.VSTS.Actions.Checkin" />
          </ACTIONS>
        </TRANSITION>
        <TRANSITION from="Resolved" to="Closed">
          <REASONS>
            <DEFAULTREASON value="Issue Resolved" />
          </REASONS>
          <FIELDS>
            <FIELD refname="System.AssignedTo">
              <COPY from="field" field="System.CreatedBy" />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
              <READONLY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
              <ALLOWEXISTINGVALUE />
              <READONLY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
              <ALLOWEXISTINGVALUE />
              <COPY from="currentuser" />
              <VALIDUSER />
              <REQUIRED />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
          </FIELDS>
          <ACTIONS>
            <ACTION value="Microsoft.VSTS.Actions.Checkin" />
          </ACTIONS>
        </TRANSITION>
        <TRANSITION from="Closed" to="Active">
          <REASONS>
            <DEFAULTREASON value="Reactivated" />
          </REASONS>
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
              <ALLOWEXISTINGVALUE />
              <COPY from="currentuser" />
              <VALIDUSER />
              <REQUIRED />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
              <SERVERDEFAULT from="clock" />
            </FIELD>
            <FIELD refname="System.AssignedTo">
              <COPY from="field" field="Microsoft.VSTS.Common.ClosedBy" />
            </FIELD>
          </FIELDS>
        </TRANSITION>
      </TRANSITIONS>
    </WORKFLOW>
    <FORM>
      <Layout>
        <Group>
          <Column PercentWidth="100">
            <Control FieldName="System.Title" Type="FieldControl" Label="&amp;Title:" LabelPosition="Left" />
          </Column>
        </Group>
        <Group>
          <Column PercentWidth="50">
            <Group Label="Status">
              <Column PercentWidth="100">
                <Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&amp;gned To:" LabelPosition="Left" />
                <Control FieldName="System.State" Type="FieldControl" Label="&amp;State:" LabelPosition="Left" />
                <Control FieldName="System.Reason" Type="FieldControl" Label="&amp;Reason:" LabelPosition="Left" />
              </Column>
            </Group>
          </Column>
          <Column PercentWidth="50">
            <Group Label="Classification">
              <Column PercentWidth="100">
                <Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&amp;Area:" LabelPosition="Left" />
                <Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&amp;ration:" LabelPosition="Left" />
              </Column>
            </Group>
          </Column>
        </Group>
        <Group>
          <Column PercentWidth="100">
            <Group Label="Planning">
              <Column PercentWidth="25">
                <Control FieldName="Microsoft.VSTS.Common.StackRank" Type="FieldControl" Label="Stack Ran&amp;k:" LabelPosition="Left" NumberFormat="DecimalNumbers" MaxLength="10" />
              </Column>
              <Column PercentWidth="25">
                <Control FieldName="Microsoft.VSTS.Common.Priority" Type="FieldControl" Label="&amp;Priority:" LabelPosition="Left" />
              </Column>
              <Column PercentWidth="25">
                <Control FieldName="Microsoft.VSTS.Scheduling.DueDate" Type="DateTimeControl" Label="D&amp;ue Date:" LabelPosition="Left" Format="Short" />
              </Column>
              <Column PercentWidth="25">
                 <Control FieldName="Microsoft.VSTS.Scheduling.OriginalEstimate" Type="FieldControl" Label="Effort:" LabelPosition="Left" />
              </Column>
            </Group>
          </Column>
        </Group>
        <TabGroup>
          <Tab Label="Details">
            <Group>
              <Column PercentWidth="50">
                <Control FieldName="System.Description" Type="HtmlFieldControl" Label="&amp;Description:" LabelPosition="Top" Dock="Fill" />
              </Column>
              <Column PercentWidth="50">
                <Control FieldName="System.History" Type="WorkItemLogControl" Label="&amp;History:" LabelPosition="Top" Dock="Fill" />
              </Column>
            </Group>
          </Tab>
          <Tab Label="Links">
            <Control Type="LinksControl" Name="IssueLinks" 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" LabelPosition="Top" />
          </Tab>
        </TabGroup>
      </Layout>
    </FORM>
  </WORKITEMTYPE>
</witd:WITD>
0
votes

The Scrum template doesn't include a "due date" field on the Task WIT. You could add one fairly easily by following steps here: http://msdn.microsoft.com/en-us/library/ms243782.aspx.

The Work in Progress query that ships with the template should give you something similar in that you can run that query and track only work that is in progress.

0
votes

If your goal is to easily run your daily scrums by only looking at tasks, I suggest that you use a Task Board with TFS Web Access. Take a look at Urban Turtle - http://urbanturtle.com. According to Microsoft, this is the premier Scrum tooling for TFS.

Discloser: I work with the Urban Turtle team. So do not take my words. Instead, read what Microsoft blogs said about Urban Turtle. http://blogs.msdn.com/search/SearchResults.aspx?q=urban%20turtle&sections=3652.

0
votes

Is not possible out of the box, but there is a TFS Extension which can accomplish this by allowing you to set some rules which if violated a new delayed workitem will be created and you can subscribe to be notified when a rule is violated , it can be set on any type of workitem

Please check this :

TFS SLA Server Extension

TFS SLA Client Extension