Technology Toolbox

Your technology Sherpa for the Microsoft platform

Jeremy Jameson - Founder and Principal

Search

Search

"TFS Lite" for WSS v3

Note
This post originally appeared on my MSDN blog:

Since I no longer work for Microsoft, I have copied it here in case that blog ever goes away.

In my previous post, I introduced my "TFS Lite" SharePoint site template that I've been using for years as a simple scenario/task/bug/risk/milestone tracking "application" with various projects and customers. In today's post, I'll discuss some of the important changes in Windows SharePoint Services (WSS) v3 that impacted TFS Lite, such as the fact that all SharePoint lists now support versioning, not just the Issues list, as was the case in WSS v2 and SharePoint Portal Server (SPS) 2003.

As I noted in the earlier post, the Work Items list at the heart of TFS Lite was originally based on the Issues list in order to maintain a history as items are modified. When you are dealing with sensitive items like bugs and risks, a simple snapshot of the latest item simply won't do. You need traceability to determine who said what and when. Granted, there are times when I wish I could "undo" or "rollback" a change to a list item -- for example, when I enter comments on a bug like "Fixed in 3.0.220.0" but neglect to change the Status to Resolved. However, dealing with goofs like that just comes with the territory when you need a detailed audit history of every change to an item.

When working with the previous versions of WSS and SPS, the various views used to render snapshots of the Work Items list specified Current is equal to Yes in order to show only the latest version of each work item. Since any list in WSS v3 can now inherently support versioning, it is no longer necessary to base the Work Items list on the Issues list, nor is it necessary to include the Current is equal to Yes criteria in each view.

The other significant change in WSS v3 that impacted TFS Lite is the way related items are entered. In WSS v2 and SPS 2003, the Issues list allowed you to simply type in the ID for a related issue to associate two or more items together. Furthermore, in WSS v2 when you added, for example, issue 1 as a related item to issue 2, then when you viewed issue 1, you would see issue 2 as a related item, and vice-versa. The net result in WSS v2 was that if you related issue 1 to issue 2 and then subsequently related issue 2 to issue 3, then issues 1, 2, and 3 were all interrelated. This is not the case in WSS v3.

In WSS v3, however, when you add issue 1 as a related item to issue 2, the related item only shows up on issue 2 (in other words, issue 1 does not show that it is related to issue 2). Also note that the user interface changed from a simple textbox in WSS v2 (in which you simply type the ID of the related issue) to a pair of lists in WSS v3 (in which you select one or more items in the list on the left and then click Add > to associate them to the current item). These changes can be considered good or bad -- depending on your perspective.

If you like the fact that you can now associate multiple issues at a single time (and also view the title of each item when selecting related issues), then this is great. However, if you liked the "bidirectional association" in WSS v2 or if you have many items in your list (say, around 2,500) then:

  1. The user experience of having to select from a list containing thousands of items leaves much to be desired.
  2. There is definitely a performance impact when you create or edit an item (since SharePoint has to fetch all items in the list to allow you to possibly associate any one of them to the current item).

With these WSS v3 changes in mind, let's "upgrade" the TFS Lite site template accordingly...

Here is a step-by-step guide for creating the TFS Lite site template for WSS v3:

  1. Create a new site collection using the Team Site template.
  2. Optionally delete the Tasks list that is automatically created as part of the Team Site template (since a "task" is simply a work item where Category = "Task").
  3. Create a new list called WorkItems based on the Tasks list and select Yes for the Send e-mail when ownership is assigned? option.
  4. Rename the WorkItems list to Work Items. (I prefer to avoid spaces when creating lists to avoid "garbage" in the URLs as a result of URL encoding.)
  5. Enable versioning on the Work Items list to create a version each time someone edits an item in this list.
  6. Add the columns specified in the following table:
    Column Name Description Type Required Additional Information Default Add to Default View
    Category Choice Yes Choices:
    • Bug
    • Quality of Service Requirement
    • Risk
    • Scenario
    • Task
    Bug Yes
    Area Choice Yes Choices:
    • Project
    • Project\Area1
    • Project\Area2
    • Project\Area3
    Yes
    Iteration Choice Yes Choices:
    • v1.0
    • v1.0\M0
    • v1.0\M1
    • v1.0\M2
    • v1.0\RC1
    • v1.0\RC2
    • v1.0\RTM
    • v1.1
    • v2.0
    • v2.0\M0
    • v2.0\M1
    • v2.0\M2
    • v2.0\RC1
    • v2.0\RC2
    • v2.0\RTM
    • vNext
    v1.0 * Yes
    Triage Choice Yes Choices:
    • 1 - Needs Review
    • 2 - Investigate
    • 3 - Reviewed
    • 4 - Recommend Approve
    • 5 - Recommend Reject
    • 6 - Approved
    • 7 - Not Approved
    1 - Needs Review Yes
    Priority ** Choice Yes Choices:
    • 1 - High
    • 2 - Normal
    • 3 - Low
    2 - Normal Yes
    Severity Choice Yes Choices:
    • 1 - Critical
    • 2 - Important
    • 3 - Nuisance
    • 4 - Useful
    4 - Useful Yes
    Status ** Choice Yes Choices:
    • Active
    • Resolved
    • Closed
    Active Yes
    Comments Multiple lines of text Yes Append Changes to Existing Text: Yes No
    Exit Criteria Indicates if the work item is a key deliverable for the iteration or milestone. If the field is set to Yes, the work item displays in the project summary view. Yes/No (check box) No No No
    Blocked Indicates if the work item is blocked in some manner. If the field is set to Yes, the work item displays on the project summary view. Yes/No (check box) No Yes
    KPI Key Performance Indicator representing the status of a key deliverable or milestone. Choice Yes Choices:
    • Green
    • Yellow
    • Red
    • Complete
    No
    CreatedFilter Calculated field used to filter recently created items (for example, to show items submitted during the last week). Calculated (calculation based on other columns) Formula:
    =Created+7

    The data type returned from this formula is: Date and Time

    Date and Time Format: Date Only
    No
    ModifiedFilter Calculated field used to filter recently modified items (for example, to show accomplishments over the last week). Calculated (calculation based on other columns) Formula:
    =Modified+7

    The data type returned from this formula is: Date and Time

    Date and Time Format: Date Only
    No
    * You should actively change the default value for this column based on the target iteration for completing work items.
    ** Modify the out-of-the-box column accordingly.

  7. Configure the following views:
    View Columns Sort Filter Group By
    All Work Items
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Blocked
    • Assigned To

    ID

    My Work Items
    (default view)
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Blocked

    Severity

    Status is not equal to Closed
    And
    Assigned To is equal to [Me]
    Priority
    Active Bugs
    • ID
    • Title
    • Priority
    • Severity
    • Area
    • Assigned To
    Severity Status is equal to Active
    And
    Category is equal to Bug
    Priority
    Resolved Bugs
    • ID
    • Title
    • Priority
    • Severity
    • Area
    • Assigned To
    Severity Status is equal to Resolved
    And
    Category is equal to Bug
    Priority
    Open Issues
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Assigned To
    Severity Status is not equal to Closed
    And
    Blocked is equal to Yes
    1. Category
    2. Priority
    Open Scenarios
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Assigned To
    Severity Status is not equal to Closed
    And
    Category is equal to Scenario
    Priority
    Open Tasks
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Assigned To
    Severity Status is not equal to Closed
    And
    Category is equal to Task
    Priority
    Open Work Items
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Blocked
    • Assigned To
    Severity Status is not equal to Closed
    1. Category
    2. Priority
    Project Checklist
    • ID
    • Title
    • Category
    • Status
    • Priority
    • Severity
    • Area
    • Assigned To
    • KPI
    1. Priority
    2. Severity
    Status is not equal to Closed
    And
    Exit Criteria is equal to Yes
    1. Iteration
    2. Category
  8. Create a new document library named Pages and select Web Part page as the document template.
  9. In the Pages library, create a new page called ProjectSummary.aspx using the Header, Footer, 3 Columns layout.
  10. Create and configure the various project summary Web Parts based on the underlying Work Items list:
    Web Part Columns Sort Filter Group By Item Limit
    Project Summary
    • KPI
    • Title

    ID

    Iteration is equal to v1.0\M0 * 100
    Top 10 Issues
    • Title
    • Assigned To
    1. Priority
    2. Severity
    Blocked is equal to Yes 10
    Accomplishments (Last 7 Days)

    Title

    Modified
    (descending)
    Status is equal to Closed
    And
    ModifiedFilter is greater than [Today]
    Category
    (Expanded)
    20
    (Display items in batches of the specified size.)
    Priorities/Milestones

    Title

    ID Status is not equal to Closed
    And
    Exit Criteria is equal to Yes
    Iteration
    (Expanded)
    100
    (Display items in batches of the specified size.)
    * Change the filter as necessary to match the current iteration.

  11. (Optional) Modify the Project Summary Web Part to display an image corresponding to the designated KPI value (using SharePoint Designer and a tiny bit of XSLT as described in my previous post).
  12. In the Links list, add a link to the Project Summary page.

Project Summary "dashboard"
Figure 1: Project Summary "dashboard"

You might be wondering why I chose to base the Work Items list on Tasks instead of just creating a custom list from scratch. Aside from the fact that the Tasks list saves me from having to create a few columns, the real reason is to automatically e-mail team members when a work item is assigned to them. If you simply create a custom list and add an Assigned To column, you'll find that the option to Send e-mail when ownership is assigned? is conspicuously absent from the Advanced Settings page for the list.

You certainly don't have to implement the list this way. Alternatively, you could choose to use alerts instead and have people "subscribe" to changes in the My Work Items view. However, I chose a "push" model instead of a "pull" model to ensure people are always alerted right away when they are responsible for working on something.

You also might be wondering how work items can be related to each other since I chose not to base the new Work Items list on the Issues list. Given the change in behavior in the WSS v3 Issues list for related items, I recommend simply adding a section to the Description field name named Related Items and then insert hyperlinks to other items. The primary reason for this is to avoid the performance impact as the number of work items grows large.

Important
There appears to be a bug in WSS v3 (and MOSS 2007) where the Web Parts on the Project Summary page are not configured with the correct views after creating a new site from the attached site template. Consequently you will need to spend a few minutes reconfiguring the Web Parts using the settings specified in step 10 above. The Web Parts are created, but the columns, sort, filter, and group by settings revert to the default values. Fortunately it only takes a few minutes to workaround this bug.
Update (2008-04-08)
The issue noted below by Dragan has been corrected. The fix is described in a subsequent post. However, as I originally suspected might be the case, the KPI images that I use in the project dashboard view are only available in MOSS 2007. Consequently you will need to substitute your own images (or simply revert to displaying the status as text).

Attachment

TFS Lite for WSS v3.zip (363.44 KB)

Comments

  1. # re: "TFS Lite" for WSS v3

    April 8, 2008 4:31 AM
    Dragan Panjkov

    Jeremy,

    I receive error "the template you are chosen is invalid or cannot be found" when I try to create site based on this template, in wss 3.0 sp1

  2. # re: "TFS Lite" for WSS v3

    April 8, 2008 9:50 PM
    Jeremy Jameson
    Gravatar

    Dragan,

    Thanks for identifying the issue. The problem has been fixed. Let me know if you encounter any other problems.

    Jeremy

  3. # re: "TFS Lite" for WSS v3

    April 9, 2008 9:10 AM
    Dragan Panjkov

    It is OK now! Is it possible to set project summary page in wss as welcome page (similar to MOSS Publishing)? I don't have much experience with wss, but I have with MOSS publishing sites.

  4. # Random Musings of Jeremy Jameson : "TFS Lite" for WSS v2

    April 7, 2008 2:06 PM
    blogs.msdn.com
  5. # Creating a Site Template in MOSS 2007 that Works in WSS v3

    April 8, 2008 9:35 PM
    blogs.msdn.com
  6. # SharePoint Kaffeetasse # 57

    April 15, 2008 3:53 AM
    feeds.feedburner.com
  7. # Versioning Blogs Posts in WSS v3 and MOSS 2007

    April 23, 2008 11:09 AM
    blogs.msdn.com

Add Comment

Optional, but recommended (especially if you have a Gravatar). Note that your email address will not appear with your comment.
If URL is specified, it will be included as a link with your name.

To prevent spam from being submitted, please select the following fruit: Watermelon

Grapes
Watermelon
Pear
Cherries
Strawberry
Apple
 
Please add 2 and 6 and type the answer here: