Hotfix for Team Build 2008 SP1: Reducing project-to-project references in build log (KB958845)

From Aaron Hallberg blog:VS08-TeamSys-TFS_v_rgb_2

[…] change in TFS Build SP1 which reduced build log noise by cutting out the build steps for project-to-project references […] the fix in SP1 didn’t actually fix the problem, at least not completely.

[…] As such, if a project was referenced by 10 other projects the fix in SP1 would reduce the number of spurious build steps from 10*3 to 9*3 rather than removing them altogether.

A hotfix is finally available that will address the remaining parts of the problem […]

VSTS MVP colleague Mathias Olausson reports:

“before SP1 the build time was about 2h 30 min, with SP1 build time in average 65 minutes and with the build hotfix we’re now down to less than 40 minutes. The build log has changed from 5500 lines down to 550.”

Download hotfix: TFSBuild TargetsNotLogged property fails to cut down noisy builds

Additional Info: KB article 958845

Security Update for TSWA 2008 SP1

protected_83f8084f-8b20-45d5-8b17-67b0b449e38cFrom Hakan Eskici’s blog:

A security issue has been identified with Team System Web Access 2008 SP1 and we have recently published an update that fixes it.

Installation Notice

Please note that this is a full release, so you will need to uninstall any existing versions of Web Access before installing this update.

Update: Instructions to patching your installation without the need to uninstall/reinstall TSWA)

Update #2: KB article 961267 is now available.

Determining if the update is installed

Take a look at the About page (Help > About) in Web Access.
The version number will be 9.0.3275 for TSWA 2008 SP1 Update.

Download: Visual Studio Team System Web Access 2008 SP1 Power Tool

How many users can Team System Web Access support?

A: Microsoft posted a white paper on this.

TSWAScalability

From the whitepaper:

"Test results indicate that Web Access starts to hit the upper limits once the total number of work item objects in the memory is around 180. This translates to approximately 100 concurrent users with typical usage patterns."

"Test results indicate that Web Access can support up to approximately 500 users." (working with a minimum amount of data)

Download: Team System Web Access 2008 Scalability Limits White Paper

VSTS Whitepapers by Microsoft

Planning

Installation, Configuration & Administration

Requirements Management

Version Control

How TFSDeleteProject Works

There are some areas where data may remain behind after you use TFSDeleteProject.

  • The TFS Warehouse is untouched. In order to remove the data from the warehouse, it must be rebuilt. (It is important to notice that, when the warehouse is rebuilt all the historic build data that has been trimmed from the system will be removed.) Rebuilding the warehouse is accomplished using the command SetupWarehouse. For more information, see SetupWarehouse.
  • The build drop locations (i.e., the location where the build binaries, build log files, and test results log files are published during the build process) are untouched. Removing the build drops must be done manually.
  • Any work item tracking metadata that is shared between projects will not be deleted.
  • The version control shelve set may not be deleted if there is code in the shelve set from multiple projects.

Read the full story by Aaron Block.

Download: Visual Studio 2008 Project Template for TFS Utilities

If you develop small utilities for Team Foundation Server a lot you might want to save some time and use a project template (see bottom for file attachment) that already comes equipped with the correct references to the Team Foundation Object Model (Microsoft.TeamFoundation.*.dlls) as well as the most important using statements and a few lines of code to get started.

Installation

Copy the ZIP file to {MyDocuments}\Visual Studio 2008\Templates\ProjectTemplates.

Usage

Create a new project and select “TFS Utility” from the “My Templates” list.

TFS Utility Project Template

The template creates a new Windows Forms application with references to the Microsoft.TeamFoundation.*.dlls (btw: the C# compiler gets rid of all references that were not used in the project during compilation)…

References to Team Foundation Object Model 

… as well as a a few using statements and some code to start from.

Generated code in Form1.cs

Happy TFS tool development!

 

Download: TfsUtility.zip

Update (Nov 13, 2011): There is an updated version available for VS 2010.

Specifying a user upfront or: How is the developer supposed to know who will be the responsible tester?

In a small team this sounds like oversize, but in mid-sized large teams it’s common that you do not know who is going to be the tester.

Looking at the Bug workflow from MSF Agile:

  1. while "Active" the project lead decided if and when the bug is going to be fixed and assigns it to the responsible developer.
  2. between "Active" and "Resolved" is where the developers implements the fix.
  3. between "Resolved" and "Closed" is where the tester verifies the fix.

MSF Agile Bug workflow

When the developer finishes coding he changes the state from "Active" to "Resolved", e.g. by checking in and associating the changeset with the work item.

But by doing so the work item is still assigned to him. In our scenario he doesn’t know who will be the responsible tester to verify the fix. So who knows?

The project lead might have that information. So either we assign it back to the project lead to make him assign it to as tester or we make the project lead specify the tester upfront (with the ability to change it afterwards if necessary).

In this example we’ll implement the second approach.

Objective

Ask for the Tester when creating the bug and automatically u.se it for the transition from "Active" to "Resolved"

Required Work Item Customization

Step 1: Add a new string field to hold the tester
In this example we will make it a required field (<required/>) and ensure that it contains a valid user (<validuser/>).

<FieldDefinition> type="String" name="Tester" refname="TeamSystemPro.Samples.Tester">
  <REQUIRED />
  <VALIDUSER />
</FieldDefinition>

Step 2: Add a rule to the transition from "Active" to "Resolved"
Automatically copy the value of the tester field to the Assigned to field.

<FieldReference refname="System.AssignedTo">
  <COPY from="field" field="TeamSystemPro.Samples.Tester" />
</FieldReference>

Result

When creating a new bug it’s now required to select a Tester before it can be saving.

Creating a new bug requires a tester to be specified

When choosing "Resolved" for the state "Assigned to" will be automatically filled with the contents from the "Tester" field.

Transitioning to resolved copies the tester to the Assigned to field

The history correctly shows the change in the "Assigned To" field from the developer (here: "Neno Loje" to the tester (in this case: "Administrator")

History displays the change in Assigned to field

Happy Customizing!

Using TFS for non-development projects

Team Foundation Server is easily customizable and equipped with a general purpose workflow or state machine. So you might ask yourself: why not put a non-development or rather related process in TFS instead of using separate software.

Showcase #1: Lead Management

AIT_TeamSystemPro_Team_klein_120x58Since here at AIT TeamSystemPro Team we are TFS consultants we decided to not use a commercial CRM tool for managing our leads but rather customize a team project in TFS for this matter.

Here are a few impressions of the experience:

Leads in Excel 

Work Item queries:

Work Item Queries for our Leads

Work Item layout:

Leads - Work item Layout

in Outlook (via TeamCompanion)

Leads in Outlook

Leads in Outlook (2)

The pretty simple workflow behind it:

lead workflow 

Showcase #2: Customer Support

Needless to say that the TFS support that we offer is tracked using work items as well:

Support Case work item

Customer Support Queries

Showcase #3: List of managed TFS instances

Every TFS instance that we manage has a corresponding record:

TFSInfo7880

Your Feedback

Do you have an interesting idea or have you used your TFS to support a non-dev related process? Feel free to leave me a comment or use the contact link – thanks!

Changing TFS emails to link to Team System Web Access – Part 2

If you click on a hyperlink in an TFS notification mail the following (read-only) web page comes up instead of a nice looking Team System Web Access dialog. Let’s change that!

The days before Team System Web Access

Objective

Make sure all links in the notification mails sent by TFS point to Team System Web Access (TSWA) rather than the integrated read-only web pages from TFS.

There are fourareas to look at:

  1. Work Item notification mails (has already been discussed here)
  2. Build notification mails
  3. Check-in notification mails
  4. Mails sent by Team Explorer (feature of TFS 2008 SP1)

Area 1 is part of a separate blog post, for Area 2 there are currently no equivalent steps (as stated in KB956761). Areas 3 and 4 can be accomplished through the following steps:

Step 1: Specify TSWA Uri using tfsadminutil

Set TSWA uri (as described on MSDN):

tfsadminutil configureconnections /TSWAUri:http://MyTFS:8090/

tfsadminutil configureconnections /TSWAUri

Verify URIs:

tfsadminutil configureconnections

Verify URIs

From now on all your check-in notification mails as well as mails sent via Team Explorer link to TSWA.

Unfortunately there’s one problem if we look at the check-in notification mail we’ll read:

"Details about his check-in were not available when this alert was prepared.
Select the link above to view more details about the check-in."

Before applying the hotfix

Microsoft released a hot fix to correct this behavior.

Step 2: Install hot fix

The hot fix is publically available at: http://code.msdn.microsoft.com/KB957196

Install Hotfix - Step 1 Install Hotfix - Step 2

Install Hotfix - Step 3 Install Hotfix - Step 4

Result

After applying the hot fix

Way better, don’t you think?

Be aware: don’t use underscores in server names

An underscore ("_") is not a supported character for a server name according to the RFC standards and therefore Windows will warn you when trying to use it as part of a DNS name.

Symptoms

ASP.NET applications that use session state, like Team System Web Access, will work when invoked using the IP (http://1.1.1.1:8090/) but will fail after some crazy redirecting with a DNS error when using the server name (http://my_tfs:8090/).

Workaround

You can add a DNS alias and avoid using underscores in server names in the future.

 

(Thanks to Hakan Eskici from Microsoft for pointing this out.)

Update: Hakan now blogged about this: Strange TSWA connection issue if the server name contains an underscore character.

Update #2: Microsoft published KB article 968549 about this.