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.
-
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.
-
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
-
- Figure: SSW Story Card
See also the SSW client taskboard.
-
Dones - Do you reply 'Done - changeset xxx' (bad example using TFS instead of TeamCompanion)
- 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.
|
-
-
Figure: Bad Example - Open work item and select file attachments, then open the
original email request (using TFSWA)
- Select 'reply to all' and create a 'done' email
-
-
Figure: Bad Example - Reply 'done' to all (using TFSWA)
- Save "done" email as msg file to a local folder
-
-
Figure: Bad Example - Save 'done' email as msg file to a local folder (using TFSWA)
-
-
Figure: Bad Example - Attach 'done' email back against the work item (using TFSWA)
- Change the status of the work item and update the hours worked
-
-
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
-
Dones - 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.If you send the email to yourself make sure to follow Email to yourself.
-
-
Figure: Confirming the requirement by sending an email to yourself
-
Dones - Move the email from your inbox to a TFS Work Item (via an Outlook Addin)
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.
-
-
Figure: Convert the email into a TFS work item by click TeamCompanion's 'New Work
Item from Mail' button
-
-
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.
-
Done - Do you fix/update the TeamCompanion template, so the email "subject" doesn't change?
Generally 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:
-
-
Figure: The default template changes the subject
To
-
- 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.
-
Dones - Do you fix/update the TeamCompanion template, so the email "history" looks decent?
-
- 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
- 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}
-----------------------------------
Note:
- if you are rely done to a work item other than "Task", you need to manually remove the following fields because these work items doesn't
have these.
- Estimated: {Microsoft.VSTS.Scheduling.BaselineWork}
- Completed: {Microsoft.VSTS.Scheduling.CompletedWork}
- Additional: {SSW.Agile.Additional}
- {SSW.Agile.Additional} field will only be available when you installed SSW.Agile.Template .
- We didn't include {System.Description} here because we are going to reply to the original email, so the history will do the job.
-
Uncheck "Use Work Item Html preview as Email body".
-
Check "Use HTML markup in body".
-
Choose "Send Email (and Attach to Work Item)" as "Default Send by Mail action".
-
Dones - Do your "dones" include the right details
- 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
-
Dones - Do you reply 'Done - changeset xxx' (good example in 4 steps using TeamCompanion instead of TFS)
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
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.
-
-
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).
-
-
Figure: Replied original request email as the history
Step 2: Choose "Send -> Email (and Attach to Work Item)"
Open the work item in Team Companion, and then choose "Send -> Email (and Attach to Work Item)":
-
-
Figure: Choose "Email (and Attach to Work Item)" to generate the done mail template
You will see the following done mail template is generated,
-
-
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".
-
-
Figure: Proper "done" mail
Note: please notice the red rectangles above:
- Enter the client's email
- Make clear that the task is done
- Include necessary information about the implementation/fix and screen shots
- "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.
-
-
Figure: Original Request and "Done" mail all attached to work item
For more tips on sending "Done" emails see "Rules to better Email"
-
Initializing the Project - Do you get the work items into TFS via Excel
- Open SSW Priorities Estimate Template in Excel
-
-
Figure: Find SSW Template - 'New | My templates... | SSW_Proposal-Project | SSWPrioritiesEstimateTemplate.xltx'
- Add the tasks and additional tasks into 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
-
-
Figure: Find your project in the list
-
-
Figure: Choose 'Input list' to download the empty template
- Add the other useful columns e.g. Baseline Work, Remaining Work, Completed Work
into Excel
-
-
Figure: Click 'Choose columns'
-
-
Figure: Select columns in the left list
- Copy work items (including the Project Management tasks) from Release_XX to the
new sheet
-
-
Figure: Copy work items from Release_XX
- Click "Publish" button to upload the work items to TFS
-
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
-
-
Figure: Triage the work item. Aim to assign the task to a future iteration.
-
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
-
-
Figure: Bad Example - Work Item is re-opened and email added to attachments (using
TFSWA)
-
-
Figure: Good Example - Work Item is re-opened and email added to the attachments
(using Team Companion)
-
Do you know what to do with a duplicate? (aka 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.
|
-
-
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)
-
-
Figure: Bad Example - Locate original work item from your work items list (using
TFSWA)
-
-
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.
-
-
Figure: Good Example - Open an existing work item from work item list (using Team
Companion)
-
-
Figure: Good Example - Link has been added to the new created work item (using Team
Companion)
-
Do you use the Implementation tab to organize your requirements hierarchy?
At SSW, we are using Agile process to manage our project, in MSF Agile Template 5.0,
there are different work item types that can help us to organize our requirements hierarchy.
User Stories work items present a piece of user requirements, normally it describe a complete
scenario a user interact with the software; such description make senses to customer as well
as the developers, provide the team a common understanding of what is required. Tasks work
items make more senses to the developers which provide a breakdown of a single User Story,
and they can be filled into the "Implementation" tab of a User Story by linking them together.
The advantages of this new MSF Agile Template 5.0 and Team Foundation Server 2010 is it
understands the hierarchy itself by providing Child/Parent link type between User Stories
and Tasks, therefore not only the people understand their relationship, but also the server
itself can use such links to generate more meaningful reports.
-
- Figure:Child/Parent link types
Compare to the old Agile Template which only provide links between work items, it couldn't distinguish a child or a parent.
-
- Bad Example: The old Agile template only provides "related" links
-
- Good Example:Using the "Implementation" tab to organize hierarchy by using "Child" link type
-
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.
-
-
Figure: Bad Example - Multiple Team Projects for the same product
-
-
Figure: Good Example - Multiple solution folders in the same Team Project
-
Reports - Do you know how to create a project release plan with TFS?
- Use SSW Agile Template to create or upgrade your TFS team project. See rule Do you
use SSW Agile Template for SSW project?
- Create a new TFS iteration for your release - go to Visual Studio | Team | Team
Project Settings | Areas and Iterations
-

-
Figure: Create Iteration in TFS
-

-
Figure: Add the Iteration
- 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)
-
-
Figure: Use the SSW Agile Template and fill in Baseline work and Remaining work
fields
- Open "SSW Release Plan" report in your team project of TFS
-
-
Figure: Use the SSW Agile Template report to generate Release Plan
- Copy the content of Release
Plan Report
- Update the information in < > and [ ]
- 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
-
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:
-
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.
-
Do you know how to find the URL of a task?
- Open the TFS Web Access in browser (tfs.ssw.com.au/tfs)
- Find and click on your task
-

-
Figure: Find your task
-

-
Figure: Click on your task and see the detail
- Get the URL in the address bar
-
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
-

- Figure: Create nice URL by TSWA Link Auditor
-
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!!!
-

-
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):
- Open IIS Manager
- Go to "Team Foundation Server"
- Open the feature "Directory browsing"
- "Enable"
- Back to "Team Foundation Server"
- "Browse website"
- Browse to http://localhost:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx
-

-
Figure: You will need to call 2 of these web services
- Invoke "ProcessWarehouse" with the parameter "DefaultCollection" (or whatever your
collection is called)
-

-
Figure: Call "ProcessWarehouse" web service with paramter "DefaultCollection"
- Invoke "ProcessAnalysisDatabase" with parameter "Full"
-

-
Figure: Call "ProcessAnalysisDatabase" with paramter "Full"
- 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.
-
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
-
Do you explain the 3 concepts to a client?
Step 1: Line up some ducks
-

Lining up the ducks means to get ready. To get the project ready you need to know the client's requirements. The best way to track requirements is through User Stories. Present the client with these User Story Cards and get them to start filing in what they want to get out of the application.
-

- Figure: Clear concise requirements captured in a User Story Card
Step 2: Do a few practice shots
-

Start preparing. Get the user story cards and enter them into TFS. Pick the high priority ones to do in this iteration and start the mockups and test cases.
Step 3: Do it for real (start the race)
-

Once everything has been prepared you can start the real development work.
-
Do you know how to create your Project Portal (for existing TFS Team Projects)
Unfortunately the TFS team did not have time to build the feature to create a SharePoint site, after the project is created. Next version, we hope.
There is a goofy work around.
- Create a new temporary project (with a SharePoint site for it)
- Disable the site for the new project, by checking off '[x] Enable team project portal'
- Go back to the old TFS project
- Enable the site for the original one (pointing to that newly created site)
- Finally, delete the temporary project you created
More info at http://www.ewaldhofman.nl/post/2009/08/13/Configure-TFS-portal-afterwards.aspx
-
Do you know how to get SharePoint 2010 working with TFS 2010?
There are some steps to getting Sharepoint 2010 working with Team Foundation Server 2010 to get some lovely dashboards
-

- Figure: Dashboards take the guessing out of Project Planning and estimation. Plus writing these reports would be boring!
Follow Integrate SharePoint 2010 with Team Foundation Server 2010
-
Do you know how to make a better subject and keep threading using TeamCompanion?
For the most of time, when we put email as an attachment in TFS via TeamCompanion, we keep the original email subject and the Title in TFS consistent so the threading won抰 be lost.
However, sometimes we need to change the Title when the original email subject is not crystal clear or redundant.
We need to follow the pattern if we need to change the Title as below.
[New Subject] WAS: [Old Subject]
-
-
Figure: Bad Example - The Title is totally changed and the treading is broken.
-
-
Figure: Good Example - Keep the old Title to keep the threading.
-
Do you check that the 3 services are running on their own AD accounts
-
- Figure: Bad example ?using the default Administrator account
-
- Figure: Better example - At least don't use the Administrator account, create a new account
-
- Figure: Best example - A specific AD account for each major server
-
- Figure: Bad example - using the network admin's name
-
- Figure: Good example - a specific SQL Server account being used (Suggestion: Make the text box wider and link to the one in 'Services')