- TFS Adoption at Microsoft
-
It’s been 12 months since Brian blogged about Team Foundation Server adoption across all of Microsoft (not just Developer Division Dogfood Statistics). Since I’m now on the team responsible for internal adoption I’ll share some of the numbers that we publish every month.
- The growth of unique active users across all TFS servers in August was 582, totaling 14,684 at Microsoft.
- We’ve also surpassed 40 million source code files stored.
Now, for the summary of key growth indicators for the month:
|
July 2008 |
Growth |
Totals |
|
Unique Active Users |
+582 |
14,684 |
|
Total Active Users |
+824 |
16,492 |
|
Projects |
+124 |
2,370 |
|
Work Items |
+85,867 |
2,607,100 |
|
Source Code Files |
+1,848,683 |
40,790,715 |
|
Total Builds |
+20,052 |
464,879 |
We now have 27 TFS instances in production. 20 are running TFS 2008 RTM, 4 are running TFS 2008 SP1 Beta, 3 are running a preliminary Rosario build. We’re in the process of upgrading the 2008 RTM + SP1 Beta instances to SQL 2008 RTM and TFS 2008 SP1.
This graph shows the number of active users per division within Microsoft. Each division is at a different stage of TFS adoption (Source control, Bug tracking, Feature tracking, Task tracking, Team Build, or any combination of each) which is why the numbers don’t correlate well with the size of the teams.
You may notice a ‘dip’ in the June/July numbers - Historically, we’ve reported a rollup of unique users per instance which is a true representation of instance activity but not unique users of TFS across the entire company. For example, since MSIT has multiple instances of TFS, a single user may be working on projects on 2 or more separate instances. The data now reflects unique users per division instead of per instance.

The number of team projects across all instances continues to grow at a steady rate of ~200 projects a month.

I hope you find this useful and if you have any other questions or numbers that you’d like to see, let me know and I’ll see what I can do.
- Book Review of Team Foundation Server 2008 in Action
-
Earlier in the year I was contacted by Manning Publications to participate in the Manning Early Access Program (MEAP). They provided me with an unedited draft of a new book "Team Foundation Server 2008 in Action" (ISBN 1933988592) by Jamil Azher and asked me as a TFS subject matter expert to post a review to my blog and Amazon.
Contents:
- Chapter 1: TFS and the practice of software development (free download)
- Chapter 2: Exploring the Changes in TFS 2008
- Chapter 3: Introducing VSTS 2008 Database Edition
- Chapter 4: Understanding branching in Version Control
- Chapter 5: Understanding Branch Policies
- Chapter 6: Understanding Merging in Version Control
- Chapter 7: Understanding Team Build
- Chapter 8: Versioning Assemblies using Team Build
- Chapter 9: Configuring and Extending TFS
- Chapter 10: Using workflow with TFS
After reading through the 10 chapters (~500 pages) of the draft I can recommend the book to these groups of people:
- You're using TFS on a day-to-day basis but you want to know "more" without having to spend hours scouring MSDN and learning it yourself.
- You've been using TFS 2005 and you're about to (or already have) upgraded to TFS2008. This book has a focus on the changes and new features introduced in TFS2008.
- There is a strong focus on Team Foundation Build. One of the biggest investments in TFS2008 was Team Build, so it's understandable that Jamil has 3-4 chapters that are build related.
- Extensibility. The book explains all the different extensibility points in TFS and provides original and practical code samples for building your own extensions.
One of the challenges for all technical books is that sometimes the information is out of date by the time your book goes to print. From the screenshots I can see that Jamil started writing when TFS 2008 was in it's "Beta 2" release. Since then, the product and a Service Pack have shipped to address some of the most common issues. There has also been work by the community and product team to improve guidance and documentation.
The real value in the book for me was the practical examples. Even as somebody who has been deeply involved in the TFS community and now the product team there are plenty of examples in the book that I haven't seen before:
- Building code from multiple team projects
- Patterns for centralized / distributed team build systems
- Code submissions system (gated checkin)
- Custom controls to show the build status in a work item
- Integrating with SharePoint KPI dashboards
- Using Windows Workflow with Team Build
With everything considered this is a book worth reading if you want to further leverage your existing investment in Team Foundation Server 2008 and learn more about Team Foundation Build 2008. Great work Manning and Jamil!
- What happens if I delete the TFSSETUP account?
-
In the TFS Installation Guide (TFSInstall.chm) for Visual Studio Team Foundation Server 2008 and 2005, we use the placeholder of “TFSSETUP” for the administrative user that is performing the TFS installation.
In TFS 2008, it’s safe to delete this account from Active Directory without impacting future patching or upgrades of TFS.
In TFS 2005 there was a problem that the TFS maintenance jobs in SQL were owned by the user who installed TFS – this meant that if you deleted the account, the jobs would fail to run because the identity no longer exists. The workaround for this in TFS2005 is to set the job owner to ‘sa’. You don’t need to be running mixed-mode authentication for this to work, as ‘sa’ just maps to the account that SQL is running as (whether it be a domain account or Network Service). Once you have changed the job owner, you can safely delete the TFSSETUP account.
- TFS 2008 and Visual Studio 2008 SP1 are RTM
-
Following the release of SQL Server 2008 last week comes the final SP1 release of the following products:
You can read more about what’s in the TFS SP1 release on Brian’s blog or MSDN.
TFS improvements
A number of improvements have been made to Visual Studio Team System 2008 Team Foundation including:
- Version Control
- Simplified the user experience through cleaner “Add to Source Control” dialogs, drag and drop support to the Source Control Explorer and a much easier to use “Workspace” dialog for working folder mappings.
- Version control now automatically supports non-solution controlled files.
- Various changes to the Source Control Explorer such as a new checkin date/time display column, local path hyperlink support and en editable source location field.
- Work Item Tracking
- Microsoft Office 2007 integration is now done using the standard Office “Ribbon” delivering a cleaner and easier to use integration to the different Microsoft Office 2007 products.
- Email integration for work items and links for Team system Web Access to make it easier to use email as part of the development lifecycle.
- Visual SourceSafe migration tool
- The migration tool has been dramatically improved through many performance and reliability improvements. SP1 provides support for the elimination of namespace conflicts, automatic solution rebinding, improves timestamp coherency and increases the amount of migration logging information available.
- Additional Features
- Support for using SQL Server 2008 with Team Foundation Server.
- Team System Web Access provides “live” links to work items and checkin emails. This improves the customer experience for users who do not use Team Explorer.
- Scripting support for the creation of Team Projects.
- Performance and scalability
- With SP1 a large part of the focus was to improve the performance and scalability of Team Foundation Server through changes such as faster synchronization with Active Directory, improved checkin concurrency, a faster way to create source tree branches, online index rebuilding for less maintenance downtime and better support for very large checkin sets.
- Improvements in the number of projects a server can support that make not only the scalability of the server better but also the client experience when connecting to a server with a large number of projects on it.
Installation
- If you previously installed a Visual Studio 2008 Hotfix, you must run the Hotfix Cleanup Utility before installing Visual Studio 2008 SP1. For more information, see Visual Studio 2008 Hotfix Cleanup Utility for Installing Visual Studio 2008 SP1.
- If you have multiple Visual Studio products installed, you must upgrade all of them to SP1. If you have Visual Studio 2008 and one or more 2008 Express Editions, you cannot upgrade the Express Editions until you have upgraded Visual Studio.
- Prior to installation, you should carefully review the included readme file to be aware of any known issues with this release.
To understand how the SP1 installer works, have a read of Heath Stewart’s blog on the topic:
Visual Studio 2008 SP1 includes over 250 new features and improvements to existing features, including SQL Server 2008 support. .NET 3.5 SP1 also includes many new features on which VS 2008 SP1 is dependent. Because of this, VS 2008 SP1 chains .NET 3.5 SP1 and other necessary components.
This means the complete download for VS 2008 SP1 is large - almost twice as large as VS 2005 SP1. The full beta download is about 831 MB which contains the 231 MB full redistributable for .NET 3.5 SP1. However, because of changes we made for VS 2008 SP1 the patch installs in about half of the average time it took for VS 2005 SP1. In addition, we made some additional changes we're sure you'll like.
Feedback
To provide feedback on the Service Pack, please visit https://connect.microsoft.com/VisualStudio
- How do I find the Cache Hit Ratio on my TFS AT server?
-
Both a TFS Proxy server and a TFS Application Tier include a Version Control cache on disk. This allows each of the servers to service simple Download() requests without having to go to the Data Tier.
A “Cache Hit Rate” is represents as a percentage how many requests were able to be served from the cache, instead of going to the Data Tier (or in the case of the Proxy – to the Application Tier). A higher percentage is better.
If you have a TFS Proxy server, you can use TfsServerManager from the Team Foundation Power Tools to find out the Cache Hit Rate.
What I didn’t know is that you can also call a web service on the Application Tier server to get the same numbers. This is the same web service and instructions detailed on this MSDN page How to: Examine Cache Performance for Team Foundation Server Proxy – but use it on the AT.
You should get a response with the following attributes:
CurrentCacheSize
NoOfRequests
OverallCacheHits
NoOfFilesInCache
OverallCacheMisses
CacheHitsPercentage="96.6"
CacheMissPercentage="3.4"
ServerId=
ServerUrl=http://tfsserver:8080/
You could also write a utility that calls this webservice for you instead of logging on to the server directly.
- How do you test code that uses the TFS Object Model?
-
I know a number of people who have considered mocking the TFS OM. They've all given it up and put it in the “too hard” basket. The WIT is particularly tricky due to the amount of processing that goes on in the client.
They end up using a real TFS Server in a VPC (such as the VSTS 2008 Trial VPC) with snapshots/undo disks to rollback to a sane state.
- What product key do I use for TFS Proxy?
-
TFS Proxy uses the same product key that you use to install Team Foundation Server.
If you are a volume licensed customer and you are using the volume license media, then the product key will be filled out automatically and the input boxes will be disabled.
If you are a volume licensed customer and you're upgrading from trial edition, then you will need to download your volume license media from your volume licensing reseller and obtain your volume license product key.
- Open the media in explorer
- Open up the 'AT' directory
- Use notepad to open the setup.sdb file
- Search for "Product Key" in that file
- That product key can be used to turn TFS Proxy into a fully licensed copy
Don't forget to refer to your Team Foundation Server 2008 EULA and the Team System Licensing Whitepaper for how TFS Proxy server is licensed.
Team Foundation Server Proxy is licensed on a per-device basis. A full Team Foundation Server license is required for installation; however, additional Team Foundation Server CALs are not required. You may not use a license of Team Foundation Server Workgroup Edition to satisfy this requirement.
- How do I do a full text search of TFS Work Items?
-
The easiest way to do this is to use the search functionality built into Team System Web Access (TSWA). This uses the SQL Server Fulltext search engine in the back-end. This will find all matches of the string in not just the title of the work item, but the description as well.
One of the questions I've seen a few times now about this functionality is "Where is it??". This is because the search box looks disabled, so people tend to overlook it.

The 2008 SP1 version (CTP here) of TSWA includes improved search support. Read more on Hakan and Buck's blogs.
Now it's even easier to search for work items with the advanced search syntax. Similar to Outlook search syntax, you can reference any work item field by either using the field name, or by using some shortcuts.
Here's a simple search example that searches for resolved bugs assigned to me which contain the word "northwind" in the Title or Description.:
northwind a=@me s=resolved t=bug
Another way to quickly search work items within Visual Studio is to use Corneliu's TFS Quick Search Addin for Visual Studio. It reflects over the .NET controls and searches for the string that you type in. This means that it will only work for fields that are visible in your query. It's very quick at doing that though.

- TF30321: The name you typed is already used for another team project
-
Recently I helped a customer who was having trouble creating a team project.
- They tried to create a project by name “Project1”
- It failed saying that it could not connect to Windows SharePoint Services (WSS)
- They fixed the permissions to sharepoint
- They can create a new team project by the name “Project2"
But, when they try to create a project by name ”Project1”, it failed with the following error:
TF30321: The name you typed is already used for another team project on the team foundation server. Type a unique name for the new team project.
In the past, I've seen this error if you don't close the Project Creation Wizard dialog and try to use a name that you've just deleted using tfsdeleteproject.exe. But that wasn't the problem in this case.
The usual fix to remove a partially created team project is to run:
tfsdeleteproject /force /server:http://tfs-server:8080 Project1
There are three ways to manually delete a WSS site:
Hope this helps!
- How does the TFS Proxy Server work?
-
Q. How often does the proxy server synchronize with the server? Is it a continuous synchronization as soon as a change happens, or do the contents get transferred to the proxies when they’re required for synching the first time?
A. The proxy gets populated with an item the first time someone requests that item at a particular version. It's not a continuous synchronization/replication.
The first time a proxy user gets a version of an item that doesn't exist in the cache yet, it will obviously take longer than if it is in the cache already (a "cache hit").
You can monitor how much work your proxy server is doing by using the Performance Monitor Counters included in the product. See Monitoring Performance.
| Counter Name | Description |
| Current Cache Size(Bytes) | The current cache size. |
| Total Download Requests | The total number of download requests that come to the proxy server. |
| Total Cache Hits | The total number of download requests served from the file cache. |
| Total Files in Cache | The total number of files available in the cache. |
You can also use the TfsServerManager.exe tool included in the latest Team Foundation Power Tools. You'll find it at:
C:\Program Files\Microsoft Team Foundation Server 2008 Power Tools\TfsServerManager.exe
Q. Does the data to be synced get compressed/uncompressed before/after the transfer?
A. The answer to this is in Buck's post on Working remotely with TFS Version Control.
Every file that we upload as part of checking in or shelving is compressed using GZip. If a file is larger after being compressed, which may be due to it being in a compressed format (e.g., ZIP or JPEG) already or being encrypted, the file will be uploaded without being compressed. When files are downloaded, they are still compressed as they were when they were uploaded.
Communication between the client and server in TFS uses HTTP for everything, and it uses SOAP for everything other than file uploads and downloads. We support IIS 6 compression of the SOAP, so the communication with the remote server is compressed. Since SOAP is XML, responses compress very well.
- TF84034: Team Foundation was unable to initialize the workbook
-
If you insert a column into an Excel workbook that is bound to TFS, you may get the following error:
TF84034: Team Foundation was unable to initialize the workbook. This document will no longer be associated with a Team Foundation server.
When I first heard about this error, the customer had moved the workbook between machines. I assumed that the workbook had lost it's bindings to the TFS server and it just needed to be rebound using the "tfpt changedocurl" command from the latest Team Foundation Power Tools.
Update the server information. TFS server information is stored as metadata in TFS bound Excel or Project files. But there might be cases where server is renamed, port number is changed, or the protocol is changed (i.e. https instead of http). This command updates the server information on existing files.
Usage: tfpt changedocurl filespec /server:serverurl
However it wasn't this problem. After searching the knowledge base I came up with this article:
FIX: You can no longer connect to a Team Foundation server from Excel after you insert a column in a worksheet
After checking some more with the customer, they realised that they had in fact added a column and this hotfix fixed their issue.
In the article it tells you to contact Microsoft Customer Service & Support to obtain the hotfix. However in this case you don't need to, since VSTS advertise their hotfixes and make them public. You can download the KB946458 update from MSDN Code Gallery.
- Scripting TFS workspace creation
-
I've worked with teams that have a common way of configuring workspace and working folder mappings. Although you could save these mappings to a wiki and let people copy-and-paste them into the workspaces dialog, there is another way.
A great way to share these mappings would be to script them using the tf.exe command line tools.
Workspaces are created using the "tf workspace" command.
tf workspace /new /server:http://tfs-server:8080 MyWorkspace
Working folder mappings are created using the "tf workfold" command. It's easiest to change to the local directory that you want to work from and run:
mkdir D:\Code\ProjectX
cd /d d:\code\ProjectX
tf workfold /server:http://tfs-server:8080 $/ProjectX
Enjoy.
- tf.exe: Unable to determine the workspace
-
Sometimes when you're working with the tf.exe and tfpt.exe command-line tools you'll come across this error:
D:\code\ProjectX>tf.exe checkout MyFile.cs
Unable to determine the workspace.
This error happens when the command can’t find which local directory maps to which server path.
Obviously, the first thing to check is your workspace mappings. Is the local folder actually mapped? You can do this two ways:
- Open Visual Studio | File | Source Control... | Workspaces, or
- Open a command prompt and type: tf workspaces /server:http://tfs-server:8080 /owner:domain\username
Each of these will show you all the available workspaces and their mappings.
===============================================================================
Workspace: MyWorkspace_ProjectX
Owner : user
Computer : MYCOMPUTER
Comment :
Server : tfs-server
$/ProjectX: D:\code\ProjectX
If the workspace mapping exists on the server, then your mappings cache file may need to be refreshed. Try running this command to populate/refresh the cache:
tf workspaces /s:http://tfs-server:8080
This will force your machine to update its local server-to-folder mappings cache file. This file is located at %LOCALAPPDATA%\Microsoft\Team Foundation\2.0\Cache in Vista.
- TF30076: Confirm that the server name is correct
-
If you are using the command line TFS tools, you may have come across this error:
TF30076: The server name tfs-server provided does not correspond to a server URI that can be found. Confirm that the server name is correct.
Usually you'll come across this after you've rebuilt your machine or you're working on a build box or something.
Try specifying the full server url address, instead of just the hostname. For example:
tf.exe get . /server:http://tfs-server:8080
When you don’t specify the full URL, the tf command line tools will try and resolve the address using the registry entries in HKCU\Software\Microsoft\VisualStudio\9.0\TeamFoundation\Servers.
If they don't find a matching key, they will throw this error.
You can also add this key by opening Visual Studio Team Explorer and going to Tools | Connect to TFS | Servers.. | Add.
- Upgrading Team Foundation Power Tools
-
If you have a previous release of the Visual Studio Team System 2008 Team Foundation Power Tools (TFS Powertools for short) installed and you try and install a later release, you’ll be prompted with this windows installer error:
Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.
Sure, you can go to Add/Remove Programs (or Programs and Features in Vista/Windows 2008) on the Control Panel, search for the power tools and uninstall them. The simple solution is to open a command prompt and run the following command:
msiexec /x {FA564F28-4D97-411F-80C4-645E619552B8}
This will uninstall the currently installed version of the power tools, allowing you to install the new version.
The current version is the March 2008 Power Tools release. Don’t forget to have a look at what’s coming in the July 2008 Power Tools release.
Update: The July 2008 Power Tools release is now available from MSDN downloads.