Skip Navigation LinksHome > SSW Standards > SSW Rules > Rules to Better Project Management with TFS (Creating and Managing Release Plans)

At SSW we advocate using the rich features of email and a release plan approach to getting work done. Follow these steps and you will have happier clients and clients that know what is going on.

  1. Do you know what Outlook add-ins you need?

    At SSW we advocate using the rich features of email to describe work items. As Team Foundation Server (TFS) does not support this implicitly, you need to use a 3rd party solution:

    Check our The Best 3rd Party TFS Tools for more information.

    Figure: Good Example - Using Team Companion
    Figure: Bad Example - Using TeamLook

    We think Team Companion is the best because it allows you to easily:

    • Attach the original email to the work item automatically
    • Download and view the work items offline from outlook
    • Generate all necessary data from work item and put into an email for you to reply done
    • Attach the done mail to the work item automatically

    Above features are almost all you need to easily manage the process to track a job.

  2. Do you use printed 'SSW Story Cards' with your customers in the Spec Review?

    When doing a Spec Review, always bring printed SSW Story Cards.

    • Complete the story card with the client
    • Teach the clients how to complete story cards by themselves
    • Go to Web Portal (projects.ssw.com.au/tfs/Northwind) and enter the story
    • Write the Story ID field on the card
    • Stick the cards on the project room wall maximizing visibility
    SSW Story Card
    Figure: SSW Story Card
  3. Describe the work item request in an email

    The required work item (bug request, new feature or change) should be described in sufficient detail in the body of an email and emailed according to the projects work item communication standard. It is preferred that the email not include any attachments.

    Confirming requirement with email
    Figure: Confirming the requirement by sending an email to yourself
  4. Use Outlook Add-in to move the email to a TFS Work Item

    Open the task email and click on "New Work Item from Mail" in Team Companion toolbar, the good thing about this it will automatically attach the original email as an attachment when you check the option.

    Converting email to TFS with TeamCompanion
    Figure: Convert the email into a TFS work item by click TeamCompanion's 'New Work Item from Mail' button
    Converting email to TFS with TeamCompanion
    Figure: The original email will be attached to the TFS work item so you have the original (plus all the rich formatting in the email)

    Ensure you inform the client that the current task, and all subsequent tasks, will be added to backlog, or to a specified iteration.

    Hi Adam,
     
    Your task has been added to the next release, Release 04.  All subsequent tasks will be added to this iteration unless otherwise specified.
     
    Regards,
     
    Jonny Trees
    www.ssw.com.au
    					
    Figure: After converting the email into TFS work item, you should send the client an email.

    Note: Once you've moved the email into TFS as work item, you should delete the original email from your inbox or move it to a outlook folder called "Moved to TFS" to avoid duplication.

  5. Do you update Team Companion template, so the email "subject" doesn't change?

    Genernally email subject should not change as it affects threading in Outlook, see our Rules to Better Emails.

    Out of the box, Team Companion does change the "Email Subject" in the "Send Email" tab. To avoid this, change to "System.Title" as new task subject.

    Change from:

    Send Email option
    Figure: The default template changes the subject

    To

    Send Email option
    Figure: Change the New Email subject to be 'RE: {System.Title}' so the subject does not change

    Note: You should add "RE:" as the prefix because this generated email will normally be a reply to the original request.

  6. Do you update Team Companion template, so you can generate a proper "done" mail?

    Send Email option
    Figure: Change the "New e-mail body:" so you can generate a proper "done" mail

    Besides the Email subject, you shoud also do the following

    1. Use the following as the "New e-mail body:"

      Done
      <br />
      <br />
      -----------------------------------
      <br />
      <b>Work Item URL: </b>{TeamCompanion.WorkItemUrl}
      <br />
      <b>Area: </b> {System.AreaPath}
      <br />
      <b>Iteration: </b>{System.IterationPath}
      <br />
      <b>Type: </b> {System.WorkItemType}
      <br />
      <b>State: </b> {System.State}
      <br />
      <b>Estimated</b>: {Microsoft.VSTS.Scheduling.BaselineWork} 
      <br />
      <b>Completed</b>: {Microsoft.VSTS.Scheduling.CompletedWork}
      <br />
      <b>Additional</b>: {SSW.Agile.Additional}
      <br />
      <b>Descriptions:</b>
      {System.Description}
      {SSW.Agile.HtmlDescription}
      -----------------------------------
      
    2. Uncheck "Use Work Item Html preview as Email body".
      Check "Use HTML markup in body".
    3. Choose "Send Email (and Attach to Work Item)" as "Default Send by Mail action".

  7. Use Excel to create a TFS Work Items

    • Open SSW Priorities Estimate Template in Excel
      Find SSW Template - 'New | My templates... | SSW_Proposal-Project | SSWPrioritiesEstimateTemplate.xltx'
      Figure: Find SSW Template - 'New | My templates... | SSW_Proposal-Project | SSWPrioritiesEstimateTemplate.xltx'
    • Add the tasks and additional tasks into Release_XX sheet
      Copy work items to Release_XX sheet
      Figure: Copy work items to Release_XX sheet
      Note: The Project Management tasks will be calculated based on your tasks
    • Create a new sheet and go to Team tab
    • Click "New List" and choose your project
      Find your project in the list
      Figure: Find your project in the list
      Choose 'Input list' to download the empty template
      Figure: Choose 'Input list' to download the empty template
    • Add the other useful columns e.g. Baseline Work, Remaining Work, Completed Work into Excel
      Click 'Choose columns'
      Figure: Click 'Choose columns'
      Select columns in the left list
      Figure: Select columns in the left list
    • Copy work items (including the Project Management tasks) from Release_XX to the new sheet
      Copy work items from Release_XX
      Figure: Copy work items from Release_XX
    • Click "Publish" button to upload the work items to TFS
  8. Triage the work item

    If you are already working on an iteration, you will need to Triage the work item. Ideally choose a future iteration

    Assign the converted task to an interation
    Figure: Triage the work item. Aim to assign the task to a future iteration.
  9. What if this is a related work item?

    • If the request is related to another work item or is a duplicate request, create a link to the other work item (see below)
    • If the request is a bug from a closed work item that needs to be re-opened
      Close work items with actual hours spent.
      Figure: Bad Example - Work Item is re-opened and email added to attachments (using TFSWA)
      Attach Email - Team Companion
      Figure: Good Example - Work Item is re-opened and email added to the attachments (using Team Companion)
  10. Linking Work Items

    If a work item is related to another work item or is a duplicate request, create a link between the work items.

    In the next version of Visual Studio Team System 2008 there is a feature of hierarchy tables that may allow better management of related work items and multiple change requests on the same work item.
    Add link between work items
    Figure: Bad Example - Add the link between the two work items, you will be prompted for search options to locate the related item (using TFSWA)
    Locate Work Item
    Figure: Bad Example - Locate original work item from your work items list (using TFSWA)
    Locate Work Item
    Figure: Bad Example - Link has been added and you can save the new work item (using TFSWA)

    Team Companion provides an easy way to link with an existing work item.

    Open the existing work item
    Figure: Good Example - Open an existing work item from work item list (using Team Companion)
    Create related work item
    Figure: Good Example - Link has been added to the new created work item (using Team Companion)
  11. Create Scenario to Task hierarchical view

    At SSW, we are using Agile process to manage our project. The Agile template in TFS provides two different kind of "task" work item, scenario and task. Scenario is a bigger view of a group of Tasks, which can improve the overall tracking capability by giving project manager a better understanding of the project progress; while Tasks will focus on each individual details of the implementation, should be used and assigned to developers as their job unit.

    In order to create such an hierarchical view, you need to follow the instruction above to link different tasks to specific scenario like below.

    Locate Work Item
    Figure: Create Scenario to Task hierarchical view (using Team Companion)
  12. Completing a work item

    1. When the work item is completed opens up the work item and opens the original attachment email and click "reply to all"

      A Feature request for TFS would be to have a 'Reply to All' option on the File Attachments dialog (see figure below), this would open a new email with the original message. Once this message has been sent it then should add the file to the file attachments for the work item.

      At this stage this is the way to do it manually.

      Open original email from work items
      Figure: Bad Example - Open work item and select file attachments, then open the original email request (using TFSWA)
    2. Select 'reply to all' and create a 'done' email
      Explain what you did.
      Figure: Bad Example - Reply 'done' to all (using TFSWA)
    3. Save "done" email as msg file to a local folder
      Save email as msg file
      Figure: Bad Example - Save 'done' email as msg file to a local folder (using TFSWA)
      Attach done email into the work item
      Figure: Bad Example - Attach 'done' email back against the work item (using TFSWA)
    4. Change the status of the work item and update the hours worked
      Close work items with actual hours spent.
      Figure: Bad Example - Change Status to 'Closed', add hours to worked completed and change remaining hours to 0 (using TFSWA)

    Check the good example to send a "Done" email using Team Companion

  13. What a proper "done email" should include

    • Description of the original change request
    • Baseline estimates
    • Completed time
    • Technical detail & code if the client is interested (you will need to factor time for this in your estimate)
    • Relevant screenshots
    • A link or reference to the original item in TFS
  14. Do you follow the 4 steps to send a "done" email?

    Team Companion might be good, but it is not perfect, one is the extra steps to send a "done" email. The goal is to send it looking like a normal email, because that is what most clients are used to. The main steps are:

    • Open original request email and reply to it
    • Choose "Send -> Email (and Attach to Work Item)"
    • Include the replied original request email as history
    • Send the done mail (and Team Companion will attach it back to work item)

    Step 1: Open original request email and reply to it

    Note: Make sure you have followed rule Use Outlook Add-in to move the email to a TFS Work Item to create work items in TFS.

    A done mail should include the original request as the history so your client can easily see what the requirement was. As you have attached the original email to the work item, you should open the work item from Team Companion, go to "File Attachment" tab, find the original email, and open it.

    Work Item File Attachments
    Figure: Open original request email from "File Attachment" tab

    Then you should reply to this email and keep this open (we need this replied email as the history of the done mail).

    Replied original request email as the history
    Figure: Replied original request email as the history

    Step 2: Choose "Send -> Email (and Attach to Work Item)"

    Note: Before you do this step, make sure
    1. You have updated Completed Work and Remaining Work as per the time you spent
    2. Work Item state is "Closed"
    3. You have setup your Team Companion as per rules
      Do you update Team Companion template, so the email "subject" doesn't change?
      Do you update Team Companion template, so you can generate a proper "done" mail?

    Open the work item in Team Companion, and then choose "Send -> Email (and Attach to Work Item)":

    Generate done mail template
    Figure: Choose "Email (and Attach to Work Item)" to generate the done mail template

    You will see the following done mail template is generated,

    Generate done mail template
    Figure: generated "done" mail template

    Step 3: Include the replied original request email as history

    As you can see, this "done" mail template only include basic information about the work item, in order to keep client fully informed about the task, you should include the "replied original email" that we prepared in step 1 as the history of this email.

    Note: you should not copy this template back to the "replied original email" as Team Companion will attach this generated email back to work item when you hit "send"; but it will not do the same for your "replied original email".
    Proper done mail
    Figure: Proper "done" mail

    Note: please notice the red rectangles above:

    1. Enter the client's email
    2. Make clear that the task is done
    3. Include necessary information about the implementation/fix and screen shots
    4. "Replied original email" as the history

    Step 4: Send the done mail (and Team Companion will attach it back to work item)

    Now you are all set and ready to send this "done" mail by clicking the "Send" button. Team Companion will attach this "done" mail back to the work item as soon as you click the "send" button.

    File Attachments
    Figure: Original Request and "Done" mail all attached to work item
  15. Do you avoid creating multiple Team Projects for the same project?

    TFS uses Team Project to manage sources code, Work Items and other project related document; the source control allows you to create multiple solution folders under the same Team Project to meet your need. You shouldn't create multiple Team Projects for the same project as this make it very difficult to query the Work Items, create reference between projects and make builds.

    TFS Team Project should be considered from a project management point of view instead of technical point of view, you should use a Team Project to manage all resources in your project, including source code, documentations and reports etc. If you are separating the related source code into different Team Project, you will find it's difficult for you to decide the location of your other resources should be going to, like your release plan, project update etc.

    Bad Multiple Project Example
    Figure: Bad Example - Multiple Team Projects for the same product
    Good Multiple Project Example
    Figure: Good Example - Multiple solution folders in the same Team Project
  16. Do you know how to create a project release plan with TFS?

    1. Use SSW Agile Template to create or upgrade your TFS team project. See rule Do you use SSW Agile Template for SSW project?
    2. Create a new TFS iteration for your release - go to Visual Studio | Team | Team Project Settings | Areas and Iterations
      Create Iteration in TFS
      Figure: Create Iteration in TFS
      Add the Iteration
      Figure: Add the Iteration
    3. Add and estimate work items
      We suggest using Excel to create work items in batch. Use Team Companion to create the additional task.
      • Follow our rules Use Outlook Add-in to move the email to a TFS Work Item to generate work items by Team Companion
      • Estimate each work item and fill in fields of "Baseline work" and "Remaining work" (the value of the two fields should be equal before the work item starts)
        create work item for release plan
        Figure: Use the SSW Agile Template and fill in Baseline work and Remaining work fields
    4. Open "SSW Release Plan" report in your team project of TFS
      release plan report
      Figure: Use the SSW Agile Template report to generate Release Plan
    5. Copy the content of Release Plan Report
    6. Update the information in < > and [ ]
    7. Use the tasks table of the SSW Agile Template instead of eXtreme Emails
      • Open the release plan generated by the SSW Agile Template
      • Copy the tasks table
      • Open the release plan created by eXtreme Emails
      • Paste and replace the tasks table in eXtreme Emails

  17. Do you know how to create a Release Update/Debrief report with TFS?

    As per rule Do you get regular updates on costs and progress?, we send project update report to client every week (usually on Monday) and a debrief report at the end of each release.

    Before using TFS to generate release update or debrief report, you should create a Release Plan following rule Do you know how to create a project release plan with TFS?.
    Then you need:

    • Follow rule Completing a work item to complete work item after it's done or update
    • Update work items which are not done
      update work item
      Figure: Update work item fields
    • Go to TFS report server and open report folder of your team project, generate project Update/Debrief from SSW Release Update
      release update/debrief report
      Figure: SSW Release Update report

  18. Do you use TFS Proxy server for Build server

    Automated build contribute the most load on TFS server, adding a TFS proxy server even in the same LAN will help to reduce the concurrent connections to the main TFS server.

  19. Do you know how to find the URL of a task?

    • Open the TFS Web Access in browser (tfswa.ssw.com.au)
    • Find and click on your task
      Find your task
      Figure: Find your task
      Click on your task and see the detail
      Figure: Click on your task and see the detail
    • Get the URL in the address bar
  20. Do you know about the nice URLs for TFS Web Access?

    By default the URLs that come out of TFS Web Access are ugly.

    http://tfswa.ssw.com.au/UI/Pages/WorkItems/WorkItemEdit.aspx?pid=1425&state-guid=0b5f1ed0-6ca5-4907-8ff4-9a41b4c11581&oqs=pid%3d1425%26state-guid%3d436808a0-3f8e-452a-97c4-c93ef887e160%26oqs%3did%253d10197

    Figure: Ugly URL

    You can use the following nice URLs to get access to the work items you need:

    Open a work item

    http:///wi.aspx?id=<workItemID>

    Open a work item in a team collection by GUID

    http:///wi.aspx?id=<workItemID>&pguid=<teamProjectCollectionGuid>

    Open a work item in a team collection by collection name

    http:///wi.aspx?id=<workItemID>&pname=<teamProjectCollectionName>

    Create a new work item

    http:///wi.aspx?wit=<workItemType>&pcname=<CollectionName>&pname=<ProjectName>

    Note: You can also use a tool Team System Web Access Link Creator to create nice URLs

    TSWA Link Creator
  21. Do you know how to refresh the cube?

    Note: These are instructions for TFS 2010 Beta 2

    If you enter data and then look at reports you will see stale data!!!

    The TFS Warehouse needs to be updated.
    Figure: The report footer tells you that the TFS Warehouse is not up to date.

    The UI does not provide an easy option. However you have 2 *hard* ways of updating the TFS Data Warehouse.
    Option 1. Open SQL Management Studio and then force re-processing
    Option 2. Open the TFS Web Services in IE and then force processing (Recommended - see below)

    More info on Option 2
    Follow these instructions to reprocess the data warehouse using the web services (this took us a long time to work out):

    1. Open IIS Manager
    2. Go to "Team Foundation Server"
    3. Open the feature "Directory browsing"
    4. "Enable"
    5. Back to "Team Foundation Server"
    6. "Browse website"
    7. Browse to http://localhost:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
      Warehouse Control web services
      Figure: You will need to call 2 of these web services
    8. Invoke "ProcessWarehouse" with the parameter "DefaultCollection" (or whatever your collection is called)
      Process Warehouse
      Figure: Call "ProcessWarehouse" web service with paramter "DefaultCollection"
    9. Invoke "ProcessAnalysisDatabase" with parameter "Full"
      Process Analysis Database
      Figure: Call "ProcessAnalysisDatabase" with paramter "Full"
    10. Now once the the reprocess is completed, the reports are up to date

    More info see the blog entry from Grant Holliday:http://ozgrant.com/2006/05/15/forcing-data-warehouse-update-for-tfs/

    Note: We have a suggestion to the TFS team for this.

  22. Do you know the right way to collect user stories by INVESTing and using SMART tasks?

    I want to be able to search for customers.
    Figure: Bad Example - the user story is too vague and broad in scope
    As a Marketing Manager...
    I want to be able to search for customers by country and last name.
    So that I can find their numbers and call customers close to me.
    Figure: Good Example - Clear user story following the INVEST principle

    Read about how to INVEST in Good Stories, and SMART Tasks

Links

Acknowledgments

Adam Cogan
Justin King
Mark Liu
Lei Xu


Benefit from our knowledge and experience!

SSW is the industry leader in Custom Software Development, Software Auditing & Developer Training.

Call us on +61 2 9953 3000 or email us for a free consultation

What does it cost? I’m not in Australia. Can you still help?