TFS 2012 Update to the Deploying Process Template Changes Build XAML



Just wanted to provide a quick update to the popular blog post around deploying TFS process template changes using TFS BuildNeno Loje, one of the awesome Visual Studio ALM Microsoft MVPs, was able to update the build process template .XAML file to now work with TFS 2012!  Thanks a ton Neno!

Check it out!

Ed Blankenship



Visual Studio and TFS Updates through Windows Updates



I have run into a new situation more often that caused a few concerns for me that I thought I would discuss it some here.  Let’s face it:  there are bugs in the Visual Studio family of products.  People have reported performance problems (and thankfully PerfWatson has been helping out tremendously with rich actionable data for the Visual Studio product teams.)  However, did  you know that a ton of these bugs are resolved & released after initial release?  There are been great stability and performance improvements that have been released since the initial RTM of each of the Visual Studio versions.

Starting with the Visual Studio 2010 and Team Foundation Server 2010 release cycle, Microsoft has started to put more and more of these updates through the Windows Updates distribution system.  It’s great!  They are easily discoverable and can be part of your regular updating schedule.  However, this only works if they are actually available to you.

I have found more and more that people aren’t actually seeing these Windows Updates for Visual Studio and TFS in corporate environments.  When I started looking into this with a few companies, I discovered that IT departments are purposely either ignoring anything “developer” related in the Windows Updates system or rejecting them completely.  What?!  There were some that didn’t even know to look at these important categories. 

If they do see them but have been ignoring them, the reasoning has typically been because IT groups don’t understand the impact of those changes so they just would rather ignore them until they understand them more.  I think that’s fair but there didn’t seem to be any drive for already over-burdened IT teams to actually figure out those impacts.  IT departments are not traditionally using Visual Studio from day to day and don’t typically have the right expertise to understand the impacts.  There has traditionally been a gap between Software Engineering groups and IT departments at companies.  That’s a bigger problem to tackle for a different day. Smile  However, this is where a software engineering team can collaborate and help IT departments out.

Distributed Updates in Corporate Environments

You may have been asking, “why would my IT department have anything to do with the Windows Updates on my development or testing machines?”  That’s a great question.  In some corporate environments, you can actually setup internal servers to act as an intermediary between the machines on the internal network and the central Windows Update system.  IT departments do this for many reasons including making sure that certain updates won’t impact existing applications on business users machines.  Let’s face it – your VB6 invoicing & order processing app that you built 15 years ago that is still limping along but vitally important to your business may or may not get impacted by a new update that’s available for Windows 7.  It happens, right?

To help you feel better about the updates we’re discussing in this blog article: there is a very high cost internally for anyone on the Visual Studio product teams to push an update through the Windows Updates system.  There’s a very high quality bar before they are approved internally.  They also wait for several weeks to a couple of months to make sure that no critical issues are reported from early adopters of those updates.  Not every update is sent through the Windows Updates system so the ones that do really are important.  There are many updates that are beneficial that never get released through Windows Updates.

There are many commercially available tools for “pushing” updates to customers.  Off the top of my head, Microsoft has a high-end version called System Center Configuration Manager and a free version included with Windows called Windows Server Update Services (WSUS).  Additionally, there are group policies in Active Directory that IT Administrators can apply to have machines in the domain talk back to one of these servers for their updates.  You can usually tell if you are in this situation by heading to Windows Updates from your Control Panel and checking to see if it says something like “Managed by your system administrator.”

Check out the Best Practices for Group Policies when using WSUS

Windows Updates Managed by System Administrators or IT Departments

You could click the link that says “Check online for updates from Microsoft Update” but some IT departments have even disabled that link from working through Global Policy.  If any of this is setup internally, it means that all updates basically go through a gatekeeper which is someone who is actively (or inactively) managing the updates in your IT department in one of these internal update servers.  This can be a good thing or a bad thing from what I am seeing more often.

Approve the Visual Studio Family Updates

This is the time when you might want to setup a meeting with your IT department to indicate that your software engineering teams actually do care about these updates and want them approved or even delivered automatically.  They may not even know that they even exist now with this new release.  Here are the categories that the teams should think about covering:

  • Visual Studio (including Agents)
  • Team Foundation Server
  • Expression
  • .NET Framework

There was improvements that helped performance in the Workflow Designer when editing TFS Build process templates in Visual Studio 2010.  These improvements were actually delivered as a .NET Framework QFE.  BTW, There are also additional steps that you could take that I have discussed previously on my blog.  My point by mentioning this is that IT Departments still need to monitor for even .NET Framework updates to help improve the stability and performance for the development environment for software engineering teams.


Enabling Microsoft Update

If your machine isn’t dictated by an internal Windows Updates server by global policy (or if you use check for updates online using the central Windows/Microsoft Updates infrastructure) you may still not see the Visual Studio updates.  This is because by default Windows only checks for Windows Updates.  If you want to check for updates for all Microsoft software then you actually need to enable Microsoft Update.  There is a small distinction but has a large impact on what’s available for your machine.  Smile

Enabling Microsoft Update to Receive Additional Updates for Microsoft Products


Product Updates Improvements in Visual Studio vNext

For those that seem to still have issues with Windows Updates internally, you’ll like seeing that Visual Studio “11” now has Product Updates shown with other types of tools & extensions updates in the Extension Manager.  I doubt that this will include Microsoft Test Manager or Team Foundation Server updates though. Sad smile  I hope I am very wrong about it though and would be very happy if they do send those types of updates down through this new mechanism!

You can see these by heading to Tools –> Extension Manager and then look at the Updates section of the window as shown below.  I can imagine us seeing all sorts of new updates that will come through this system including feature packs, power tools, cumulative updates, etc.  I would imagine that there will be quite a few more updates then would even traditionally be sent through Windows Updates.  That’s a big win for us especially when you want to have the latest features & stability improvements available for your development environment.

Visual Studio Product Updates in Extension Manager

Go have that discussion with your IT department now and if you can see what might be missing by checking for updates from Microsoft’s centralized Windows or Microsoft Update.

Ed Blankenship



Feature Request: Treat TFS as an Enterprise Symbol Server



If you haven’t talked to me before, I am a serious fan of the Symbol Server and Source Integration in Team Foundation Server.  Recently, I thought about reducing the complexity of the entire story especially for those using Team Foundation Server.  You still have to have a file share available for symbols which is just something else to have to request, manage, deal with for disaster recovery, and is particularly problematic when users are in geographically remote offices.  Individual developers also have to manually register the symbol server in the Visual Studio options for each of the development machines they ever use.  Why though?  It shouldn’t be this difficult especially when you have already adopted TFS.

User Voice LogoI submitted a new feature request on the Visual Studio Team Foundation Server product team’s User Voice site specifically for assisting with this complexity.  I would like TFS just to be treated like an enterprise symbol server and Visual Studio can just take advantage.  My good friend and colleague, Adam Cogan, encouraged me to share with my blog readers more details about this feature request.

I would also like to ask for your help with voting on the feature request if you like the idea and would be important for your team & organization.

VOTE HERE

User Voice Feature Request Details - Treat TFS as an Enterprise Symbol Server

Additional Details for the Feature Request

Version Control Folder to Hold Symbol Server Files

The main part of this would be something like a version control folder to hold the symbol server files such as $/Symbols.  This would be a special folder that would only be used for Symbols.  You would then be able to have a URL endpoint that TFS recognizes and handles appropriately (i.e. https://tfs.myserver.com/tfs/DefaultCollection/Symbols).

With this type of feature in TFS you can take advantage of many side benefits including:

· No file share to worry about getting provisioned by IT or backed up

· Takes advantage of TFS Proxy caching for geographically distributed locations

· This could be a special version control folder type where it doesn’t have to keep history – only the latest version (T)

· Would work out really well for those using TFS on Azure (especially with on-premises build servers)

· Potentially Symbol Server for CodePlex projects!

· IntelliTrace & the VS Profiler benefits greatly from this as well!

clip_image002

Automatic TFS Build Configuration

If this feature is setup & configured, then why not just go ahead and auto-configure new TFS build definitions as well?  Pop it right in there…

clip_image004

Automatic Client-Side Configuration

If I connect to a Team Project Collection, I want my Visual Studio (and other clients that use symbol server) to be auto-configured for the symbol server to be used.  It should just be automatic!  This would be very similar to how the client auto-configuration for TFS Proxy just works for anyone doing a version control get.

clip_image006

Build Retention Policies

If you have symbols turned on for TFS builds to handle when retention policies are run, you could configure it to either destroy or delete the symbols from the special version control folder.  As an administrator, I may want to actually destroy the symbols with retention policies for some of my build definitions just to save on space.

clip_image008

 

Help me everyone out with your votes!

Ed Blankenship



Using Exchange Server with TFS for Delivering E-Mail Alerts



Team Foundation Server has the ability to deliver e-mail alerts.  I have talked about this feature a few times (like here, here,  and here) and it’s a very handy feature of any work item tracking system let alone version control, automated builds, test case management, etc.  In the TFS Administration Console window, you just need to enable and specify the e-mail alert settings from the Application Tier node.

Enabling E-Mail Alerts in TFS Administration Console

Here’s the one caveat about this functionality:  TFS needs the SMTP server to allow unauthenticated requests.  Notice that TFS doesn’t allow you to specify a user name and password.  Other applications do allow this -- for example, my Windows Home Server 2011 instance at home asks for additional information.

Specifying E-Mail Alert SMTP Settings for Windows Home Server 2011

Several e-mail servers on the market, including Microsoft Exchange Server, do not allow unauthenticated SMTP requests by default.  In general, you actually don’t want to open up your SMTP server for unauthenticated requests or have an open SMTP server on your network.  This can open you up to security issues and would allow malware or compromised servers to use it as a relay.  Not fun stuff at all.

The preferred approach would be to let your e-mail server know to allow unauthenticated e-mails from each of your TFS application tier servers.  (Note:  You may have multiple application tier servers if you have setup your TFS environment to be highly available using network load balancing and created an AT web farm.)  Since most of the customers I visit have adopted Microsoft Exchange Server, here are the steps for you to pass on to your Exchange Administrator to take to “trust” TFS to deliver e-mail alerts.  As a TFS Administrator, you will not like have the permissions necessary to make these changes in your internal Exchange environment.

Thanks to the Imaginet Infrastructure team (specifically Kelsey Epps)  for help with these instructions!


Configuring the Exchange Hub Transport for TFS E-Mail Delivery

Your first step is to open the Exchange Management Console and head to the Hub Transport node underneath Server Configuration.  This will show you all of the receive connectors that are currently defined when you select the appropriate hub transport server from this list.

Hub Transport Receive Connects in Exchange Management Console

What we will end up doing is creating a new receive connector specifically for use by each of the TFS application tier servers.  In the Actions pane for the Exchange Management Console, choose “New Receive Connector…”

Creating a New Hub Transport Receive Connector in Exchange Management Console

On the Introduction page for the New Receive Connector wizard, enter a friendly name to help other Exchange Administrators understand the purpose of this receive connector and choose “Custom” for the intended use.

New Exchange Hub Transport Receive Connector Wizard - Introduction Page

On the next page for specifying the Local Network Settings, you’ll likely just want to leave the defaults and specify the fully-qualified DNS entry that will be used in the SMTP response when a client like TFS connects to it.

New Exchange Hub Transport Receive Connector Wizard - Local Network Settings Page

The next screen for specifying the Remote Network Settings is the important one.  This tells Exchange server which IP addresses should be allowed to use this receive connector.  You’ll want to remove the default entry that exists in the list and then add each of the IP addresses of each of the TFS application tier servers.  (Remember from above, you might have multiple application tier servers in your TFS environment.)

New Exchange Hub Transport Receive Connector Wizard - Remote Network Settings Page

At this point, you are ready to complete the wizard and it will create the new custom receive connector to be used by the TFS application tier servers.  Once the wizard has completed and created the new receive connector, you’ll want to open the properties dialog window for the new receive connector and enable “Anonymous Users” on the Permissions Group tab.

Enabling Anonymous Users on Custom Exchange Hub Transport Receive Connector

Now, give the fully-qualified DNS name for the Exchange hub transport server to the TFS Administration and they will be able to enter it in the TFS Administration Console in the appropriate spot.  The TFS Administrator will want to monitor the event logs for any error messages after this has been enabled in TFS to make sure that the e-mail delivery TFS jobs that run periodically when there are new e-mail alerts complete successfully.

Using an Office 365 Hosted Exchange Instance

If you happen to be using Office 365 for your Exchange instance, then you will have to setup a local SMTP Relay.  Here are a few online resources for how to do that:

Ed Blankenship



Creating E-Mail Alerts for Team Members in TFS



In TFS 2005, TFS 2008, and TFS 2010, the alerting system has always been based on a “self-subscription” model which means if you want an e-mail alert then you need to create it for yourself.  This could be problematic if new team members didn’t know about the self-subscription model.  Now, you could use the Alerts Explorer from the TFS Power Tools to create e-mail alerts for other people but then those alerts are actually owned by the person creating them and not able to be managed, edited, or disabled for the person they are intended.  There are other potential workarounds that people have discussed for any of the TFS versions I mentioned above.  A good question on Stack Overflow has some discussion as well.

Team Foundation Service Preview LogoIn the latest builds of the Team Foundation Service Preview (which ultimately will be features we will see in the next version of TFS – TFS 11), we can now see that administrators are able to create team alerts that help the scenario I described above.  Managing personal and team alerts are exposed in Team Web Access.  Notice in this Work Item alert, the new [Me] value that is available for the filter clauses.

Creating a Team Work Item Alert in TFS

You can also create other types of alerts like Build Alerts and Code Review Alerts.

Creating a Team Build Alert in TFS

image

What I also noticed is that administrators can view & troubleshoot other user’s e-mail alerts that they have created including personal alerts.  That was particularly troublesome for TFS Administration in the past but should help out quite a bit for user’s who report problems in the future.  An administrator can now even help craft the appropriate e-mail alert for the user using the right filters and grouping of clauses which I find to be the most commonly reported issues with creating alerts.

Administering TFS Alerts for Other Users

Ed Blankenship



Source Server and Symbol Server Support in TFS 2010



As Jim Lamb announced in June 2009, TFS 2010 introduces support for Source Server and Symbol Server as part of the default automated build process template. This is a really key feature addition but I have found that many developers ask about why it would be so important and why it would help them. Ultimately, we are starting to have more and more tools that need access to the symbol file information and the original source code that was used for compilation. For example, some of the tools that come to mind are:

By setting up Source Server and Symbol Server support during your build process, you’ll be able to work with assemblies & executables that come from the build servers and still use tools that need information from them.

What are Symbols?

imageJohn Robbins has an excellent blog post to get started about learning what symbols are titled: “PDB Files: What Every Developer Must Know.” I highly recommend you take a moment to read through it.

So to summarize from John’s article, the symbol files are the .PDB files that match a particular assembly and contain important information that’s necessary for debugging tools. Specifically for .NET assemblies, the symbol files include:

  • Source File Names and Line Numbers
  • Local Variable Names

He also reminds us one very important statement about symbol files: “PDB files are as important as source code!” That is absolutely true! I cringe any time I hear from a developer that says “oh, those .PDB files take up so much space so I’m going to delete them.” Ouch – The sad thing is those are developers that keep people like John in business whenever they run into problems in production. Smile Save yourself some time, money, and effort and keep your symbol files around. Not to say that John doesn’t earn every penny but I’m sure his life is much better whenever you do have your symbols!

This is exactly where Symbol Server helps out. Essentially, the Symbol Server is a central location for your company that keeps the .PDB files for you. Therefore, you can install your application (without symbols) that was compiled from a build server and whenever you want to use a debugging tool like Visual Studio, it will know how to contact the Symbol Server location to get the matching set of symbols. More about how to configure Visual Studio to look for a Symbol Server further down in this blog post.

John also mentions how to manually perform the steps necessary for completing the loop with Source Server and Symbol Server. Thankfully, since you are using TFS 2010 Build, you don’t have to go through those steps. The functionality is included in the default build build process template (but not the Upgrade Template).


Aside: If you are performing obfuscation using your favorite .NET obfuscation utility, you will want to make sure you produce symbol files that match the newly created assemblies. This is because the variable names and other information change by the obfuscator. What I will normally do will do is keep both the original assemblies with their matching symbol files in addition to the obfuscated assemblies with match symbol files. I store the artifacts for the obfuscated assemblies in a sub-folder called “Obfuscated.”

imageimage


How to Setup Symbol Server

A common misconception about Symbol Server is that you actually have to set up a server and install the Symbol Server software. Not at all! All you have to do is setup a file share on another server. If you are using my suggestion about using friendly DNS names with TFS, you might extend that for the symbol server as well:

\\symbols.contoso.local\Symbols

On my particular demonstration machine, I have a local file share that contains some of the symbols that were published from my TFS 2010 Builds:

image

How to Configure Build to Index for Source Server and Publish to Symbol Server

Configuring the build definition to use the new Symbol Server location, couldn’t be easier. Open up the build definition editor and navigate to the Process tab. There, you will see all of the process parameters. If you are using the default build process template then you will find the Source Server and Symbol Server settings underneath the “2. Basic” category as shown below.

image

The build process will then do all the work for you!

Source Server Indexing

What actually happens when the build process is actually running it’s Source Server indexing? Let me first start by discussing the problems with symbols that come from a build server (or another machine.) One of the pieces of information that is stored inside of the symbol file is the location of the original source file that was used for compilation into the assembly you are debugging. This can be a problem because for my particular case, the local location of the source code file on the build server is:

C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Form1.cs at version 32 from the MAIN branch

Not only do you to have put all of the source files in the same exact spot but you would have to get it from the right branch and even the exact same changeset version from the TFS version control repository. That’s a lot of manual work… This is where the indexing for Source Server helps you out. You’ll also notice that if you are producing symbols from your obfuscation utility, those can indexed for Source Server support as well.

image

When the TFS 2010 Build runs the source indexing for Source Server, it writes an alternate stream of information in the symbol files that will provide the following information for each source file:

  • Source Control provider’s information and the command-line utility to use to get the file (In our case that would be using tf.exe)
  • Full TFS Version Control Repository Server Path including the branch name
  • Version

The default build process template uses the srctool.exe command-line utility first to list all of the local source file locations that are stored in the symbol file. Then, it generates a temporary file that contains the exact alternate stream information for Source Server. The Source Server stream is named srcsrv. Finally, the build process uses the pdbstr.exe command-utility to add that stream information to write the relevant information. If you are ever curious about what that srcsrv stream actually contains, you can run this command-line utility:

C:\Builds\Calculator MAIN\Calculator MAIN_11.02.11.06\Debug\Obfuscated>pdbstr.exe –r -p:Calculator.pdb -s:srcsrv
SRCSRV: ini ------------------------------------------------
VERSION=3
INDEXVERSION=2
VERCTRL=Team Foundation Server
DATETIME=Fri Feb 11 00:41:58 2011
INDEXER=TFSTB
SRCSRV: variables ------------------------------------------
TFS_EXTRACT_CMD=tf.exe view /version:%var4% /noprompt "$%var3%" /server:%fnvar%(%var2%) /console >%srcsrvtrg%
TFS_EXTRACT_TARGET=%targ%\%var2%%fnbksl%(%var3%)\%fnfile%(%var5%)
SRCSRVVERCTRL=tfs
SRCSRVERRDESC=access
SRCSRVERRVAR=var2
VSTFSSERVER=http://localhost:8080/tfs/DefaultCollection
SRCSRVTRG=%TFS_extract_target%
SRCSRVCMD=%TFS_extract_cmd%
SRCSRV: source files ---------------------------------------
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Form1.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Form1.cs*32*Form1;C32.cs
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Form1.Designer.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Form1.Designer.cs*30*Form1.Designer;C30.cs
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Program.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Program.cs*30*Program;C30.cs
C:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\Properties\Settings.Designer.cs*VSTFSSERVER*/Calculator/MAIN/Source/Calculator/Calculator/Properties/Settings.Designer.cs*11*Settings.Designer;C11.cs
SRCSRV: end ------------------------------------------------

Publishing to Symbol Server

Publishing the symbols is the easier part of it. Essentially, the default build process template calls the symstore.exe add utility to publish the symbol files to the specified symbol server path. Additionally, there is some metadata added for the build information in TFS that will specify that symbols were published. This will be useful whenever the build retention policies kick in which we’ll cover further down.

Configuring Visual Studio to Use Symbol Server and Enabling Source Server Support

The next step is for each of the developers to configure Visual Studio 2010 to look for symbols if they aren’t found in the symbol server location for the company. You can get to it by going to Tools –> Options and then the Debugging –> Symbols options pages as shown below. Other debugging tools have similar options.

SNAGHTML23f64f5

The next thing you will want to do is to enable source server support in Visual Studio. You can do that by going to the Debugging –> General options tab as shown below.

SNAGHTML243d0c1

Now, just start using your debugging tool and in my case I have attached my Visual Studio Debugger to the process of my application that came from the build drop folder. Visual Studio gives me a small warning before it attempts to grab the source code from the TFS Version Control repository as shown below. You can see the exact command-line utility including arguments that is used by the debugger to retrieve the correct version of the file. Pure magic…

SNAGHTML226bcf3

Update:  (2/14/2011) John Robbins has helped out by letting us know how we can disable this really annoying Source Server security dialog any time the debugger wants to get something from Source Server.  Thanks John!


Aside: If you notice, in my situation I have a particular problem. Since the TFS 2010 Build services are installed on the same machine as my application tier on my laptop, the default configuration for the build service to connect to TFS used http://localhost. Sad smile That’s not going to be good whenever I have another developer start debugging using the assembly from my build server and the symbols. Their Visual Studio Debugger instance will try to hit localhost on their machine (where the source doesn’t exist).

For this reason, it’s important to make sure when you are configuring the build service to use the fully-qualified friendly DNS name for your application tier server. (Check out the blog post that’s linked to find out more information about this topic).

image


How Does Visual Studio Know Which Symbols Match for the Executable?

You have to always have symbol files that exactly match the assemblies you are debugging. How does Visual Studio know this though? There is actually a GUID that is embedded to both the assembly and the symbol file. You can find out what that GUID is by running the DUMPBIN command-line utility as shown below.

C:\Builds\Calculator MAIN\Calculator MAIN_11.02.11.06\Debug>dumpbin Calculator.exe /HEADERS

Microsoft (R) COFF/PE Dumper Version 10.00.31118.01
Copyright (C) Microsoft Corporation. All rights reserved.


Dump of file Calculator.exe

Debug Directories

Time Type Size RVA Pointer
-------- ------ -------- -------- --------
4D54CC09 cv 69 00003864 1A64 Format: RSDS, {B7C62014-02BD-4F35-9718-104CE8CFB14C}, 1, c:\LocalBuilds\1\2\Sources\Source\Calculator\Calculator\obj\Debug\Calculator.pdb

You can see the GUID highlighted above. If you were to go check out the Symbol Server file share, you can also find the GUID used to differentiate between all of the different versions of the symbol files that are stored for a particular assembly.

Update:  (2/15/2011) I learned something new from Chris Schmich from the Visual Studio Diagnostics team.  He indicated that the PDB age (which is highlighted above in green) is also used to match the symbols.  You’ll notice that the PDB age for all of my symbols is 1 and is appended to the end of the GUID when stored in Symbol Server.  Thanks Chris for the extra information!

image

IntelliTrace Files and Symbol Server

I also wanted to mention that when testers use Microsoft Test Manager and run manual test cases where they have collected IntelliTrace logs, you’ll notice that when you open one of those IntelliTrace logs (for example attached to a bug work item) you will see the Symbol Server location that was collected from the assembly being tested as well:

image

This green-light should be awesome for you as a developer now because you can connect to the Symbol Server location and start debugging using the IntelliTrace log and the Source Server information contained inside of the symbols.

Retention Policies

One other thing to consider: as you have more and more builds performed using TFS 2010 Build, you’ll want to set up your retention policies. The Symbol Server file share can start to go up in size pretty quickly so you can have the retention policies also delete the corresponding symbols from Symbol Server if you choose by setting the “What to Delete” option.

image

SNAGHTML25e109f

You want to also make sure, however, that any “Released” builds should be marked as “Retain Indefinitely” to ensure that the retention policies never delete the symbols (or anything else about the build for that matter!)

image

Summary

There you go! Your developers will be very appreciative whenever all of this is setup. You’ll have a system that stores your symbols for whenever you need them and those symbols will have information to let the debugging utilities know where to grab the original source code from the TFS version control repository.

Ed Blankenship



Replying to TFS E-Mail Alerts



If you have been using the Alerts Editor that is part of the TFS Power Tools, you will notice that you can get e-mail alerts from the TFS server based on subscriptions that you create.  You may not have noticed but there is a subtle feature that allows you to easily reply to the person who made the change (such as creating a new work item).

I just got a notification that my colleague Chris at Notion has just confirmed a task for me to go to the ALM Roadshow in Dallas next month.  I have a few questions about the assignment so if I click “Reply” in my e-mail program, you’ll notice that the new e-mail doesn’t reply to the TFS Service Account but instead to the person who made the change that triggered the e-mail.  Quite handy.

SNAGHTML1463597

image

Ed Blankenship



Using Friendly DNS Names in Your TFS Environment



Over the past few years of dealing with plenty of TFS environments, one thing that I am glad to have done is setup friendly DNS names for TFS to use for it’s individual parts. This has helped extremely to make for a smooth transition for administrators & end users when needing to move TFS to a new hardware environment, upgrading TFS to a new version, or in several disaster recovery scenarios. Not to mention having to tell new users to connect to some odd server with a weird name like ADGKSDFU308234NT. Smile You can obfuscate all of the connection points that TFS uses. The concept is easy and if you haven’t done it already, it’s never too late.

Why use Friendly DNS Names?

I mentioned a few examples above but let me expand on it a little further by presenting two scenarios that I have run across. There are plenty of other scenarios that have been handy in the past as well. You’ll be surprised the options you have for different types of changes to the infrastructure and topology that you’ll run across in the future by using friendly DNS names.

Hardware Migration Upgrade

During a future upgrade, it is decided that new hardware is to be used for scaling out to increase the availability and performance of the TFS environment. By using friendly DNS names, end users and custom tools can continue to point to the same address (tfs.contoso.local) without making any changes. This allows for having the old environment up at the same time as having the new upgraded environment up. This helps out with rollback plans in case the upgrade was not successful.

Scale Out Analysis Services

A company has noticed that heavy usage of the OLAP warehouse cube in SQL Analysis Services has started to use a lot of the RAM on the data tier server. They would like to separate SQL Analysis Services from the database services in SQL Server to a separate server. By changing the friendly DNS name (warehouse.tfs.contoso.local) to the new Analysis Services instance, end users who have created custom Excel pivot table reports in workbooks won’t have to update each workbook.

Any others you can think of?

DNS Entries

First, you will want to create either A or CNAME records in your DNS infrastructure. If you are using Active Directory then your DNS infrastructure will more than likely be managed by your domain controller(s).

This guide assumes that you are using the following friendly DNS names throughout the configuration. In this example, the internal network uses the DNS suffix of contoso.local. You could also have contoso.com addresses point to internal servers if they are setup appropriately in DNS. Check with your DNS administrator to discuss which format should be used. Be sure to use fully-qualified DNS names especially for those clients that use VPN or have remote offices. You will want to be sure to follow the guide in order since some steps are dependent on previous steps to have been performed.

DNS Entry

Points To

tfs.contoso.local

Application Tier or Network Load Balance IP for TFS AT Farm

Used For: TFS Web Services, Team Web Access, SQL Reporting Services, and SharePoint (if on same box)

data.tfs.contoso.local

Data Tier or SQL Server Cluster IP

Used For: Location of Configuration, TPC, and Relational Warehouse Databases

warehouse.tfs.contoso.local

SQL Analysis Services Instance

india.proxy.tfs.contoso.local

One friendly DNS entry for each remote location. (Optional)

sharepoint.tfs.contoso.local

Separate friendly DNS entry for the SharePoint server if separate from the application tier. (Optional)

lab.tfs.contoso.local System Center Virtual Machine Manager Server for TFS Lab Management (Optional)
builds.tfs.contoso.local Drop folder share for build outputs.  When setting up a build definition I will use a file share like this in the settings:  \\builds.tfs.contoso.local\Builds
symbols.tfs.contoso.local Symbol Server file share for builds.  When setting up a build definition, I will use a file share like this in the settings:  \\symbols.tfs.contoso.local\Symbols

In my particular example below, I have a single server that has both the application tier components and the data tier components. SQL Analysis Services is also installed on the same server. However, I am using a separate SharePoint server and a different server for TFS Lab Management.

SNAGHTMLf5981e

Disable Loopback Check

Often when you are logging into a server and using a friendly DNS name that resolves back to itself (localhost) you will find that you end up having authentication issues because of a security feature in Windows Server. You can disable this security feature by following the directions in this KB support article: http://support.microsoft.com/kb/896861. You will want to do this for each of the servers that may resolve back to itself using the friendly DNS name. For example: application tier servers, data tier, Analysis Services server, SharePoint servers, etc.

To set the DisableLoopbackCheck registry key, follow these steps:

  1. Click Start, click Run, type regedit, and then click OK.
  2. In Registry Editor, locate and then click the following registry key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  1. Right-click Lsa, point to New, and then click DWORD Value.
  2. Type DisableLoopbackCheck, and then press ENTER.
  3. Right-click DisableLoopbackCheck, and then click Modify.
  4. In the Value data box, type 1, and then click OK.
  5. Quit Registry Editor, and then restart your computer.

Installing TFS to use the Friendly DNS Name for the Data Tier

When initially configuring Team Foundation Server, use the fully-qualified friendly DNS name for the data tier server: data.tfs.contoso.local. If this is done correctly, then the Application Tier information page on the TFS Administration Console will show that friendly DNS name in the connection string.

image

Also use this location for each team project collection that is created as well. If it done correctly then you will see it shown for the connection string to the team project collection database.

image

If TFS has already been setup and configured not using the friendly DNS name, you can alternatively use the TFSConfig.exe RemapDBs and RegisterDB command on each application tier server to update its data tier server connection string to use the friendly DNS name.

tfsconfig.exe remapdbs /DatabaseName:data.tfs.contoso.local;Tfs_Configuration /SQLInstances:data.tfs.contoso.local

More information about the RemapDBs command can be found on MSDN: http://msdn.microsoft.com/en-us/library/ee349262.aspx

image

tfsconfig.exe registerDB /SQLInstance:data.tfs.contoso.local /DatabaseName:Tfs_Configuration

More information about the RegisterDB command can be found on MSDN: http://msdn.microsoft.com/en-us/library/ms252443.aspx

image

Configuring Reporting Services to Use Friendly DNS Name

  1. Open the Reporting Services Configuration Manager by clicking Start –> All Programs –> Microsoft SQL Server 2008 R2 –> Configuration Tools –> Reporting Services Configuration Manager
  2. Connect to the appropriate SQL Reporting Services instance.
  3. Click on Report Manager URL settings page.
  4. Click on the Advanced button.

image

  1. In the Advanced Multiple Web Site Configuration dialog click on the Add button.
  2. Enter the fully-qualified DNS name: tfs.contoso.local. You can optionally remove the other entry if it is not needed.

image

image

  1. Click OK and the URL should be reserved.

image

  1. Go to the Web Service URL settings and repeat steps 4-7 and use the same fully-qualified friendly DNS name: tfs.contoso.local.
image

Configuring SharePoint to Use Friendly DNS Name

  1. Open SharePoint Central Administration by clicking Start –> Administrative Tools –> SharePoint Central Administration
  2. Click on the Configure alternate access mappings command under the System Settings section

image

  1. Click on Edit Public URLs in the toolbar.

image

  1. On the Edit Public Zone URLs page, enter the fully-qualified friendly DNS name into the Internet field for the separate SharePoint server or the friendly DNS name for the application tier server if it is installed there.

image

  1. Click on Save
  2. Verify that you are able to resolve the friendly DNS address and that the SharePoint web application recognizes it appropriately. You can do this by opening an Internet Explorer browser and navigating to http://tfs.contoso.local or http://sharepoint.tfs.contoso.local depending on your configuration.

You may want to also update the public URL for SharePoint to use for the Central Administration site as well. Perform the same steps except choose the SharePoint Central Administration in the Alternate Access Mapping Collection combo box.

image

Configuring TFS to Use Friendly DNS Name

  1. Open the TFS Administration Console and navigate to the Application Tier settings page.
  2. Click on the Change URLs action.

image

  1. On the Change URLs dialog, enter the fully-qualified friendly DNS name: http://tfs.contoso.local:8080/tfs.

image

  1. Don’t change the Server URL since it is used for intra-server communication (like warehouse adapter jobs, etc.)
  2. Click OK. Verify that the TFS Administration Console page has been updated and that e-mail alerts now use the friendly DNS name in the URL links within the e-mail.

Configuring TFS Reporting to Use Friendly DNS Name

  1. Open the TFS Administration Console and navigate to Application Tier –> Reporting.
  2. Click the Stop Jobs action before editing the configuration.

image

  1. Click OK on the warning dialog.

image

  1. Click on the Edit action.
  2. On the Warehouse tab, type the fully-qualified friendly DNS name for the data tier server that houses the relational warehouse database: data.tfs.contoso.local.

image

  1. Click on the Analysis Services tab and enter the fully-qualified friendly DNS name for the Analysis Services server: warehouse.tfs.contoso.local.

image

  1. Re-enter the password for the Account for accessing data sources.
  2. Click on the Reports tab and click on the Populate URLs button.
  3. In the URLs for Report Server group, select the URLs that were setup in the Reporting Services Configuration utility that were setup earlier.

image

  1. Re-enter the password for the Account for accessing data sources.
  2. Click OK.
  3. Click the Start Jobs action.

The Team Foundation Server Administration Console should now display the appropriate information as shown below.

image

Configuring TFS SharePoint Integration to Use Friendly DNS Name

  1. Open the TFS Administration Console and navigate to Application Tier –> SharePoint Web Applications.
  2. Click on the SharePoint Web Application item in the list box and click Change.

image

  1. On the SharePoint Web Application Settings dialog box, change the Web Application URL to the fully-qualified friendly DNS name you used earlier. (You can optionally set the Friendly Name to this address as well but this is more for a friendly label that distinguishes the SharePoint web application from multiple SharePoint web applications if configured.) Click OK.

image

  1. You should receive an information dialog box. Click OK on that dialog.
  2. The SharePoint Web Applications list should be updated with the entry that lists the friendly DNS name.
image

Build Servers & Proxy Servers

Be sure to also configure all of the build servers and proxy servers to point to the friendly DNS name when connecting to the application tier server(s). This will allow for the same type of flexibility whenever you need to make any TFS environment topology changes.

image

Let me know if you have any additional questions!

Ed Blankenship



Set Associate to Default Action Instead of Resolved for TFS Work Item Changeset Associations



In Team Foundation Server 2010, a new registry key was added to provide the ability to specify that “Associate” should be the default when associating work items to a changeset instead of the “Resolve” action.  This needs to be applied to each development machine that would like to change the default instead of editing the process template and work item type definitions.

image

All you have to do is set the ResolveAsDefaultCheckinAction value to False in this registry key:  HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\TeamFoundation\SourceControl\Behavior

 

Nice!

Ed Blankenship



Raffle for Two MSDN Subscriptions with Visual Studio 2010 Ultimate at Charleston Bar Camp



Charleston Bar Camp Logo

Earlier this year following the Visual Studio 2010 release, I got a great package from Microsoft (MVP Program and Visual Studio Product Team) that included some complimentary Visual Studio 2010 Ultimate with MSDN Subscription activation cards to give away.  I hadn’t found the right opportunity but this Saturday I will be attending (and have submitted a session proposal) the Charleston Bar Camp.  This should be a very interesting experience since it will be my first bar camp.  Anyhow, I have been looking for ways to contribute and foster our local software development community in Charleston and decided I would like to give two MSDN subscriptions out during the event.

What is Included?

Two winners will receive a prize package that contains:

Professional Application Lifecycle Management with Visual Studio 2010 Book Cover

One (1) copy of Professional Application Lifecycle Management with Visual Studio 2010 by Wrox

VS_2010_ALM_Book_2010111117313

http://bit.ly/VS2010ALMBook

clip_image001

One (1) MSDN Subscription with Visual Studio 2010 Ultimate (Not for Resale) Includes:

· Team Foundation Server 2010

· SQL Server 2008 R2

· Windows 7

· Windows Server 2008 R2

· Office 2010

· Office 2011 for Mac

· One-year of updates

Professional Team Foundation Server 2010 Book Cover

One (1) copy of Professional Team Foundation Server 2010 by Wrox

(When Released)

TFS_2010_Book_20101111185155

http://bit.ly/TFS2010Book

 

 Total Retail Value for Prize Packages: $24,007.96

 

Option 1 - Lab Management Session Attendees

Attendees to the Virtual Lab Management with Team Foundation Server 2010 session (if selected and scheduled) will have an opportunity to win one of the prize packages. Bring a business card with your name, company/occupation, city, e-mail address, and Twitter account. One lucky winner will be selected from the submitted business cards after the session has completed.

 

Option 2 - All Bar Camp Charleston Attendees

On the back of this page, write your “pitch” for why you think you should win one of the prize packages and what you would do with it if you were to win. The best pitch, as determined by the judge(s) will be selected to win the prize package. Bonus points are given for impactful local projects, giving back to the local developer community, or volunteering time & talents for a local non-profit organization.

 

Good luck!

Download Flyer

 

MSDN Subscriptions donated by the Microsoft MVP Program, Visual Studio Product Team, and...

MVP_FullColor_ForScreen

Ed Blankenship

Microsoft MVP of the Year, Visual Studio ALM
Co-Author, Professional Team Foundation Server 2010 by Wrox

 

Application Lifecycle Management & Team Foundation Server Consultant
Notion Solutions

Blog: http://www.edsquared.com
Twitter: @EdBlankenship
LinkedIn: http://www.linkedin.com/in/edblankenship
E-Mail: edb@notionsolutions.com

MCTS(rgb)_1390



DevSmackdown Podcast Episode about TFS Migrations with Ed Blankenship



Awesome!    I found out over the weekend that the Developer Smackdown podcast show where I was a guest has been posted online!  Go check it out.  Clark Sell and Mark Nichols are the co-hosts for the show and it was a fun chat about migrating to Team Foundation Server from legacy systems.

Show: TFS Migrations with Ed Blankenship

image

Here is the list of sites and\or resources mentioned in this show:

When doing a TFS Migration make sure you think about some of the following items:

  • Are you a big TFS project or little TFS Project kind of guy?  Think about your organization and their reporting structures when considering "the size" of your TFS projects.
  • Think about how you would report on things?  What types of questions are you trying to answer with your reports?
  • Did you know that Branch Visualization doesn't work across Team Projects ( at least as of the time of writing this )
  • Treat the migration just like any other product development you would do.
  • 1 GB of source typically takes 24 hours to migrate.  That is execution time.  (Conservative Estimate)
  • How much history do you really need?  Was it worth the cost to migrate?

Follow Show On Twitter

Subscribe to Podcast in Zune

Subscribe to Podcast in iTunes

 

 

Ed Blankenship



Deploying Process Template Changes Using TFS 2010 Build



UPDATED (24 June 2013):  This should work now with TFS 2012 as well.  Have included a download link to the SkyDrive folder with both versions of the build process template XAML file.  Thanks a ton to Neno Loje for figuring out what updates were necessary to get it to work for TFS 2012!

 

I mentioned in my last blog post about using TFS to manage TFS that I’d talk a little about how I use TFS 2010 to manage and deploy process template changes. I’m excited to be able to provide some more details about it!

Background

I use to create batch files for deploying process template changes and store them in version control. There’s certainly nothing wrong with that approach but I really wanted have an easier way to maintain this process that allowed reusability and even continuous integration. Whenever I checked in a change to the process template branch for the test environment, I wanted it to immediately deploy those changes to that environment. I also wanted to make it super easy for others to be able to make changes and then queue a deployment.

I need a build definition using TFS 2010 Build!

Build Process Template

So I have created a build process template that does exactly this. My goals for this process template were to not require any custom workflow activities or custom assemblies to be required to get the build process template to work. You simply only need to check-in the XAML file and begin using it. That one requirement ended up being tougher to follow than I originally thought. I had to take a few alternate methods that didn’t always end up with the best user experience but I think you’ll see that the template is still helpful. (If you have ideas for improvements, please let me know!)

I hope you’ll see it as an example for creating “builds” that don’t necessarily compile & run tests. Using Windows Workflow Foundation in Team Build 2010 makes it extremely useful for any type of process you want to automate.

Overview

At a high level, here is what this build process template attempts to accomplish:

  • Standard Build Features:
    • Build Versioning
    • Label the source using the version number
    • Getting Latest Version or Specific Version
    • Associate Changesets & Work Items
    • Gated Check-In, Continuous Integration, etc.
  • Ability to specify multiple team projects to update
  • Ability to specify multiple work item types to update
  • Backup each of the the work item type definitions that are currently being used in each team project (just in case!)
  • Copy the version of the work item type definitions that are used and backups to a drop folder

Disclaimer: I’m going to give this template the “works on my machine” label. This template may not perform as advertised including blowing up your server, deleting everything on your hard drive, or cause your hair to fall out. Use at your own risk! You have been warned. If it works for you, awesome! If not, please let me know about any issues or areas of improvement.

How to Use the Build Process Template

After you downloaded the template and check the XAML file into your build process templates folder, you’ll want to create a new build definition to use it. Make sure you have also checked in your process template to a version control folder.

Workspace Definition

Specify the version control folder that contains your process template. By default it will download the entire team project and scoping down the build process template allows your build to run quicker since it is not downloading everything in the team project.

image

Process Tab

Choose the new build process template file from the available process templates:

Note: If you don’t see the build process template as an available item in the combo box, you’ll want to click New and then choose the XAML file you checked in as the existing build process template.

image

The next thing you’ll want to do is specify the team projects you want to update and the URL for your TFS 2010 team project collection.

image

The last two required process parameters are extremely important. You need to specify the work item type names and the server path locations to the work item type definition (XML) files. Each of the process parameters are string lists so you’ll want to make sure you match them up in the exact order in both lists.

Work Item Type Names (for MSF Agile)

SNAGHTML996183

Work Item Type Definition Files

Make sure you specify the server path location for each of the WITD files! I ended up reusing a dialog for this purpose that you may have been used to seeing in other builds you have configured. It’s the same editor that allows you to choose solution and project files to build. We can use it for this purpose too! Just be sure to select the “All files (*.*)” filter for the Items of Type combo-box.

SNAGHTMLa1fa96

Again – make sure you put each of the XML files in the same order that you used for the work item type names. For example, your Bug.xml file will be the first in the collection and UserStory.xml will be the last if we are using the same WITs as the figure above.

Other Details

Make sure that your build agents have Visual Studio Team Explorer 2010 installed so that witadmin.exe will be located. You can always use the new build agent tagging functionality to identify which agents have Team Explorer available and then use the Agent Settings process parameters to limit the build to only reserve agents with the tags you specify.

Finally, make sure your build service account has the appropriate permissions to be able to import new work item type definitions to your team projects.

[Updated – 6/24/2013]

Thanks for reporting feedback and bugs! Latest version includes the following bug fixes and improvements:

  • 10/26/2010: Will properly associate work items and changesets correctly now.
  • 10/26/2010: Discovers location of witadmin.exe on build servers with a 32-bit OS installed.
  • 10/26/2010: Detects error on import and writes as build error instead of message. Allows for the build to not succeed in this circumstance.
  • 3/24/2011: Reduced the verbosity of some of the build workflow activities. This should reduce the noise in the build log and show what is most important. Be sure to set the entire build’s verbosity higher if you need to troubleshoot issues. (If you are interested in how to lower a particular workflow activity’s tracking verbosity, check out page 402 in our new TFS 2010 book).
  • 6/24/2013Neno provided an update of the build process template .XAML that works with Team Foundation Server 2012 as well.  Check out our new TFS 2012 book!

Download the Build Process Template for TFS 2010 or TFS 2012

Let me know if you have any feedback about things you like or areas for improvement! Feel free to comment below so I don’t lose track of the suggestions. Smile

Ed Blankenship



Managing TFS Artifacts Using TFS



Many years ago, I really thought the fact that SQL used itself to manage itself was pretty cool (i.e. master database.)  For the past several years, I have been doing something pretty similar and someone just reminded me that it was an interesting concept.  I use TFS to manage the artifacts needed to manage TFS.

TFS Team Project

The first thing I end up doing is creating a team project usually named “TFS” to hold all of the artifacts.  I personally only give the TFS Administrator permissions to the project.  As you’ll see, there may be security sensitive content that may be stored in this team project.  From time to time, other developers may help out with some of the custom tools that can be created to extend TFS.  I’ll create special team project security groups and permissions to those security groups for those particular scenarios.

Reporting Service Encryption Key Backup

After I have setup the TFS team project, the first thing I check-in is the backup of the encryption key from SQL Reporting Services.  It’s extremely important for disaster recovery scenarios that you have a backup of the key since the encrypted contents of SQL Reporting Services won’t be recovered if you don’t have the key.  By checking the key file into version control, you can always make sure you’ll have it backed up with the regular SQL backup process of the databases.

image

See for more information:  Back Up the Reporting Services Encryption Key

Process Templates

image Managing changes to process templates is one of the main reasons I had originally had the idea of creating a team project to manage TFS artifacts.  I think version control is the perfect place to manage changes to all parts of your process templates, especially work item type definition files.  I even create two branches of the process template folders:  one for the production environment and one for the test environment.  This allows you to manage changes just as you would your software releases.  Work item type definition changes definitely require some testing especially since there are risks in causing issues with certain changes.  (Has anyone ever messed up the warehouse?) :)

Build Process Templates

I keep all of the “golden” copies of build process templates in this team project.  I usually perform my actual development work for build process templates in this team project as well and will usually have some test build definitions to try them out.  You could also easily use your staging or test TFS server for this effort too.

Custom Build Assemblies for Build Controllers

One of the awesome new features for TFS 2010 is the ability to store custom build assemblies (like workflow activities, build tasks, build process parameter custom editors, etc.) in a version control folder that the build controller can notify build agents to monitor to deploy those assemblies to each of the build servers in your build lab.

If you want to deploy a new version of those assemblies, just check in the new version and all of the controllers & agents will use them for the next build they perform.  Pretty awesome if you ask me.  I create a folder in the TFS team project just for this purpose.

SNAGHTML6d53cc

Source Code

imageThe TFS team project is usually the main location where I will store source code for all of the different extensibility points for TFS and Visual Studio.  This list of custom tools isn’t exhaustive by any means but should give you some ideas of the type of source code that could be contained in this team project:

  • Custom Check-In Policies
  • Custom Build Workflow Activities and Build Tasks
  • Custom Work Item Controls
  • Web Service Event Handlers for TFS Events
  • Custom Testing Data Collectors (Diagnostic Data Adapters)
  • Migration Utilities and Adapters
  • Custom Code Analysis Rules
  • Global Code Analysis Spelling Dictionary
  • Custom IntelliTrace Event Collectors
  • Other Visual Studio or TFS Tools

Builds

As I already mentioned above with testing out build process templates, I have several build definitions in this team project:

  • Testing Team Build 2010
  • Deploying Process Template Changes to Test & Production TFS Servers (I plan on having more information about this process in a future blog post.)
  • Custom Tool Builds

Other

Don’t stop with this list.  If it’s something that helps to manage TFS, feel free to store it in this team project.  Here are a few other examples of the types of artifacts I use this team project for:

  • SQL Queries to manage the data tier
  • Custom SQL Reporting Services Reports

 

What other types of things do you think, dear reader, are important to store in this team project for managing TFS?

Ed Blankenship



TFS 2010 Microsoft Certification Exam (70-512) Available



Looks like this past weekend Don from Microsoft Learning announced the public availability of the Team Foundation Server 2010 Microsoft certification exam.  I had several people ask about what happened to the Beta exam for 70-512 and the only thing I can see is that it was released directly to the public without a Beta phase.

If you pass this exam, you will receive the Microsoft Certified Technical Specialist certification for TFS 2010.  Officially it will indicate:
MCTS: Visual Studio 2010 Team Foundation Server, Administration

I’ll be taking the exam this weekend so I’ll let everyone know how it goes.  Well… as much as I can!  Exam candidates agree not to disclose details about the exam when they take it.

There aren’t any preparation materials available just yet as listed on the Exam Details site.  It does however list the topics that are covered on the exam:

About this Exam

This exam is designed to test the candidate's knowledge and skills on installing, configuring and maintaining Visual Studio 2010 Team Foundation Server.

Audience Profile

This exam is intended for candidates who install, configure, and manage a Microsoft Visual Studio Team Foundation Server (TFS) 2010 implementation. Candidates typically work in an enterprise development organization that provides process automation services by using TFS.

The qualified candidate has:

  • a solid understanding of the TFS architecture and components.
  • experience installing and configuring a TFS in both single-server and multi-server configurations.
  • experience managing security for TFS components.
  • experience configuring and using Team Build.
  • experience adapting process templates to an organization.
  • experience managing project artifacts with TFS version control.
  • experience configuring and using work item tracking.

Skills Being Measured

This exam measures your ability to accomplish the technical tasks listed below.The percentages indicate the relative weight of each major topic area on the exam.

Installing and Configuring TFS (27%)

  • Install TFS.

    This objective may include but is not limited to: SQL Server version support, installing TFS in a multi-tier or multi-machine environment, installing TFS in a load-balanced environment, setting up version control proxy

  • Configure application tier

    This objective may include but is not limited to: validating an installation, configuring SMTP for TFS, changing the URL (friendly name), changing the default SharePoint Web application, setting up reporting (SQL Server Analysis Services)

  • Migrate and upgrade TFS.

    This objective may include but is not limited to: upgrading TFS 2005 or TFS 2008 to TFS 2010, importing a source base from Microsoft Visual Source Safe (VSS), a third-party revision control system, or a sub-version

  • Install and configure team lab.

    This objective may include but is not limited to: set up environment templates, installing and configuring test agents, installing and configuring Virtual Machine Manager (basic Virtual Machine Manager installation), creating library shares or resource pools

  • Install and configure multiple build agents and controllers.

    This objective may include but is not limited to: tagging, binding a controller to a project collection, adding as build agent

Managing TFS (27%)

  • Manage Team Project Collections.

    This objective may include but is not limited to: moving project collections, managing team collections and projects, creating and configuring team project collections, moving team projects from one collection to another, creating a team project with SharePoint and SQL Server Reporting Services, cloning (splitting team project collections, partitioning)

  • Configure for backup and recovery. 

    This objective may include but is not limited to: backup and recovery of TFS and related components, recover a failed application tier, recover a failed database tier, implement a disaster recovery plan

  • Monitor server health and performance.

    This objective may include but is not limited to: application tier logs, monitoring the server for performance issues (monitoring activity logging database and TFS server manager), monitoring job infrastructure for failed jobs (monitoring warehouse adapters and warehouse jobs), cleanup of stale workspaces and shelvesets, cleanup builds (applying retention policies), setting up team build to use a version control proxy server

  • Administer TFS application tier.

    This objective may include but is not limited to: retiring or archiving projects and purging the system, rebuilding a warehouse, configuring user permissions by using Active Directory Domain Services  and TFS groups, moving a TFS instance to a new server or a new domain, configuring security for TFS Work Item Only View

  • Manage reporting for TFS.

    This objective may include but is not limited to: basic reporting using Microsoft Office Excel Services, adding a custom report to a SharePoint project portal, uploading a new SQL Server Reporting Services TFS report, configuring to enable a report to appear in a SharePoint project portal

  • Set up automated functional and UI tests.

    This objective may include but is not limited to: setting up a build definition, configuring the build definition to use the proper lab environment, setting up tests to work on an installed agent, setting up a service as interactive, setting up data collectors

Customizing TFS for Team Use (24%)

  • Configure a team build definition.

    This objective may include but is not limited to: setting up for a Symbol Server and Source Server, setting up for test impact analysis, setting up for custom build numbers, configuring build log verbosity, setting up for code analysis, setting up for automated unit testing, setting up for architecture validation

  • Configure and execute a build. 

    This objective may include but is not limited to: queuing a build with parameters, reconciling workspaces as part of a gated check-in workflow, setting up build triggers (gated check-in, continuous integration, scheduled build)

  • Modify a process template.

    This objective may include but is not limited to: customizing a process template by changing the workflow for a work item, adding a new work item type as a child of an existing work item (WI), uploading and downloading process templates

  • Configure a team project.

    This objective may include but is not limited to: areas and iterations, default security groups, portal settings (team project portal site URL, process guidance URL)

  • Apply work item customizations.

    This objective may include but is not limited to: link types, Global list, creating a new WI category and adding existing WI types to the new category, adding or removing fields, transitions, queries, customizing a workflow, creating or editing a work item type, importing and exporting work item types, renaming work item types

  • Create Work Item Query Language (WIQL) queries.

    This objective may include but is not limited to: query folders and permissions, query types (tree, flat, directed), defining WIQL keywords, adding fields to a query, creating a WIQL query by using Team Explorer, identify built-in macros

  • Configure client connectivity to TFS.

    This objective may include but is not limited to: configuring Visual Studio, Team Explorer, Microsoft Excel, Microsoft Project, and other tools to connect to TFS, configuring clients for proxy server

Administering Version Control (23%)

  • Create and manage workspaces.

    This objective may include but is not limited to: cloaking, undo delete, modifying a workspace, deleting a workspace, specifying the workspace visibility, restoring deleted items, unlocking other users’ checkouts, pending changes, and code

  • Configure shelvesets. 

    This objective may include but is not limited to: private builds, creating a shelveset, deleting a shelveset, opening another user’s shelveset

  • Branch and merge source artifacts.

    This objective may include but is not limited to: track change visualizations, converting a folder into a proper branch and creating a new branch, merging and resolving file conflicts, viewing branch hierarchy, creating a branch, deleting a branch

  • Configure version control proxy.

    This objective may include but is not limited to: cache hit ratio, setting up the cache size, setting up for multiple TFS servers

  • Configure team project version control settings.

    This objective may include but is not limited to: enable multiple checkout, enable get latest on checkout, configuring check-in policies for a team project (work items, builds, code analysis, testing policies)

Good luck!  Let me know how you end up doing on the exam.

Ed Blankenship



Book Review for Wrox Professional Application Lifecycle Management with Visual Studio 2010



During the first week of April, a little package was sitting on my front porch with the first book to be released on the Visual Studio 2010 release that deals with the new Application Lifecycle Management (ALM) features.  For those of you who don’t know, this essentially means the former “Team System” line of products as we were exposed to it in the 2005 and 2008 releases.  Although the entire Visual Studio suite of products is considered something that helps you with ALM, the book primarily focused on Visual Studio 2010 Ultimate, Visual Studio 2010 Premium, Visual Studio 2010 Test Professional, Visual Studio 2010 Lab Management, and Team Foundation Server 2010.  During the Introduction, I even appreciated how the authors discussed about “where Team System went.”  It’s the best explanation of the branding change that I’ve seen to date.

I was extremely excited to start immediately reading the book.  Even though I have been closely involved with the 2010 release as a Microsoft MVP, when I started to read this book my goal was to be exposed deeper in the feature set being introduced in the 2010 release.

At the time of writing this blog post, the book was selling for $34.64 at Amazon.  The suggested retail price is $54.99.  It is currently #7 in the Software Development books category!

Strengths

If you are new to the ALM features in Visual Studio, I felt this book really offered you the ability to get the high-level overview of all of those features.  It’s essentially similar to a “survey” course that you would have taken in college.   It’s 696 pages that ends up going through all of the Visual Studio client and server features at just the right level of detail. There were even some areas that I felt that I learned more about and hadn’t been exposed to heavily in the past.

The architecture features were something that I had hoped to learn the most from.  They have just never been something that I dived into great detail during the 2010 release cycle.   All of the new UML diagrams that are available including the new architecture features like Use Case, Activity, Sequence, Component, Class, Dependency, and Layer Diagrams.  There was a also a great introduction to the Architecture Explorer.

The testing features have really been what has made up a majority of the Visual Studio 2010 release and the book definitely reflects that.  Going through the testing features, I really felt like I understood the end to end story.  It felt very rounded out!  These chapters are where I picked up a majority of the nuggets of information.  I can’t tell you how many times I said “wow, I didn’t know you could do that.”  I also feel like this is a great place to pick up some introductory knowledge about how Visual Studio Team Lab Management fits into the ALM story.  I also kept thinking how great this book would be for the testers on your team that are new to the Microsoft testing platform and Team Foundation Server.

There are so many changes to TFS, I can’t even begin to start describing them.  Thankfully, the book did a great job.  Especially with the revamp of Team Build to use Windows Workflow Foundation.  You can even download the Team Build chapter from the book for free here:  Team Foundation Build.  Other than automated builds, you’ll get a good pass by all of the rest of the new TFS 2010 features and architecture/topology changes.

There was a whole chapter dedicated to debugging with IntelliTrace!  That’s awesome.  I’m very much a fan of IntelliTrace and think that will truly change the way you develop.

Criticisms

I have been hoping to have a book available out there that really only discusses TFS.  The book definitely has a few chapters available on TFS and spends a good amount of time but that discussion is not the nitty gritty that I think some readers out there are really looking for.  With that said, I don’t think this book was positioned for the “TFS Administrator” exclusively.  Again, I really think this is a survey-level review of the entire ALM stack of features for Visual Studio.  That doesn’t allow you to go into the depths of any particular product.  There currently isn’t a book available for TFS 2010 with the level of detail that I am sure some readers out there are hoping for.  We’ll see what happens in the months to come…

My next criticism isn’t so much for the content of the book as what is media choices are available.  I own a Kindle DX and I imagine a few other techies in the world have some type of eBook reader as well.  I was hoping to have a CD that contained a DRM-free PDF that I could copy over to my Kindle DX whenever I’m traveling and need a quick resource for reference.  Wrox certainly does allow you to get a PDF of books but you have to order them separately even if you had purchased the hard copy.

Finally, the only other thing that I noticed was in that chapter about IntelliTrace (see above) there wasn’t a mention of Symbol & Source Server.  I couldn’t believe it.  There is definitely a discussion later in the book about Team Build’s integration with Symbol & Source server but I was hoping to have seen some more detail in the IntelliTrace chapter about the importance of having them setup for your organization.  You’ll want to put two and two together.

 

Now that I’m finished scrounging from the bottom of the barrel to find some criticisms… :)

My Recommendation

Hands down, get this book.  I think it’s well worth it.   I know each of the authors and it really looks like they put a tremendous amount of effort into writing the book.  The topics are really presented well and at the right level of detail for someone really wanting a crash course in all of the Visual Studio ALM features.  I can’t even tell you how many new nuggets of information that I ran across of things that I didn’t even realize were in the product.

It certainly gets my stamp of approval! :)  Kudos to the authors.

 

Very respectfully,

Ed Blankenship

Microsoft MVP of the Year, Visual Studio ALM and Team Foundation Server



Easily Show and Track Dependencies for Work Items in TFS 2010



Dependency management can be tough.  One way you can help visualize dependencies is by using the new Predecessor & Successor link type in TFS 2010 Work Item Tracking.  The way this particular link type works is that it is of type “Dependency” topology.  Here’s some more information about the Dependency topology:

Link types of this topology are like Directed Network links in that they have directionality, but an additional constraint to prevent circular relationships.

image

Example XML:

   1: <LinkTypes>
   2:     <LinkType ReferenceName="MyLinks.LinkTypes.MyPred" ForwardName="My Successor" ReverseName="My Predecessor" Topology="Dependency" />
   3: </LinkTypes>

You can list the link types currently on your TFS server by using the following command at a Visual Studio command prompt:

witadmin listlinktypes /collection:http://YourTfsServerName:8080/tfs/YourTeamProjectCollectionName

The details about the dependency link type that we’re interested as listed from witadmin.exe is:

Reference Name: System.LinkTypes.Dependency
Names: Successor, Predecessor
Topology: Dependency
Is Active: True

Gregg Boer has some more great information about customizing link types in TFS 2010 available here:  http://blogs.msdn.com/greggboer/archive/2010/03/01/tfs-2010-customizing-work-item-link-types.aspx

Adding a Dependencies Tab on the Work Item Form Layout

If you would like to add a tab in the layout for the work item type definition, you can add the following XML segment to the WITD Layout Section:

   1: <Tab Label="Dependencies">
   2:   <Control Type="LinksControl" Label="Dependencies Information for this Bug:" LabelPosition="Top" Name="Dependencies">
   3:     <LinksControlOptions>
   4:       <LinkColumns>
   5:         <LinkColumn RefName="System.Id" />
   6:         <LinkColumn RefName="System.WorkItemType" />
   7:         <LinkColumn RefName="System.Title" />
   8:         <LinkColumn RefName="System.AssignedTo" />
   9:         <LinkColumn RefName="System.State" />
  10:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.OriginalEstimate" />
  11:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.RemainingWork" />
  12:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.CompletedWork" />
  13:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.StartDate" />
  14:         <LinkColumn RefName="Microsoft.VSTS.Scheduling.FinishDate" />
  15:         <LinkColumn LinkAttribute="System.Links.Comment" />
  16:       </LinkColumns>
  17:       <WorkItemLinkFilters FilterType="include">
  18:         <Filter LinkType="System.LinkTypes.Dependency" />
  19:       </WorkItemLinkFilters>
  20:       <ExternalLinkFilters FilterType="excludeAll" />
  21:       <WorkItemTypeFilters FilterType="includeAll" />
  22:     </LinksControlOptions>
  23:   </Control>
  24: </Tab>

It will then show up on your work items something like this:

Dependencies Tab for Work Items in TFS 2010 

New Links Control Options

The LinksControl work item control has always existed but now that we have link types in TFS 2010, you can specify multiple links controls in the layout but have them specify certain filters.  Notice the User Story/Requirement, Test Case, and Bug in the MSF Agile and MSF CMMI process templates all take advantage of specifying multiple links controls.

There is more very early information about the new options of this control here:  http://blogs.msdn.com/teams_wit_tools/archive/2007/08/20/rosario-filtering-link-types-on-a-work-item-form.aspx

Dependencies Integration with Microsoft Office Project

One of the benefits of using the built-in Predecessor/Successor link type is that if you are pulling your work items into Microsoft Office Project, you end up seeing those dependencies in the project plan.  You can even change the dependencies in Project and publish your changes back to the TFS where they’ll show up on the new Dependencies tab you just created.  They are essentially round-tripped between Project and TFS 2010.

Microsoft Office Project Integration with TFS 2010 Tasks and Dependency Links Predecessor Successor

More Resources

 

Take care,

Ed Blankenship



geekSpeak: Migrating from Visual SourceSafe to Team Foundation Server 2010



Tomorrow, I’ll be presenting in this month’s geekSpeak about migrating from Visual SourceSafe to Team Foundation Server 2010.  I’m sure we’ll get through the VSS content pretty quickly so with the time left we’ll talk about new branching & merging features, branch visualization, and gated check-in.

In this geekSpeak, Microsoft Most Valuable Professional (MVP) Ed Blankenship discusses migrating source code from Visual SourceSafe, including the history. There has not been a better time to migrate to the newest Microsoft source control offering, Microsoft Visual Studio 2010 Team Foundation Server, because Microsoft Visual SourceSafe support is ending soon and Team Foundation Server will be part of Microsoft Developer Network (MSDN) subscriptions in 2010. Ed discusses specific version-control features to help you become more productive like branching and merging visualization, annotate, shelving, and gated check-in. This geekSpeak is hosted by Glen Gordon and Brian Hitney.

Registration for the event available here:  http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032438525

BTW – The end-of-life support date for Visual SourceSafe is mid-year 2011.  Don’t get stuck on an unsupported product :) especially one that’s holding your source code!

 

Update:  The recording of this presentation is now available on Channel 9 here:  http://channel9.msdn.com/shows/geekSpeak/geekSpeak-Recording-Migrating-to-Team-Foundation-Server-from-Visual-SourceSafe/ .  Sorry about the dropped call in the middle of the presentation.  Also, here’s some links that I mentioned during the talk:

 

Ed Blankenship



Pricing Announced for TFS and Visual Studio 2010



I'm pleased to announce that we now have pricing information that is publicly available for the Visual Studio 2010 and Team Foundation Server 2010 products!  Remember, these are Retail prices and if you are in a company you should never be paying retail :)  Always talk to your Microsoft Sales team and ask for volume licensing deals.

Also, if you didn’t hear, a production license for TFS 2010 and a TFS 2010 CAL is included with every MSDN subscription!

 

Suggested Retail Pricing (USD) for Visual Studio 2010

With 1-Year MSDN Subscription*

Product

Buy

Upgrade

Buy

Renew

Visual Studio 2010 Ultimate

-

-

$11,899

$3,799

Visual Studio 2010 Premium

-

-

$5,469

$2,299

Visual Studio 2010 Professional

$799

$549

$1,199

$799

Visual Studio Test Professional 2010

-

-

$2,169

$899

Visual Studio Team Foundation Server 2010

$499

$399

-

-

Visual Studio Team Foundation Server 2010 CAL

$499

-

-

-

Visual Studio Load Test Virtual User Pack 2010 (1000 Virtual Users)

$4,499

-

-

-

* Subscription contents vary by purchased product.

 

Ed Blankenship



TFS 2010 Branching Guidance



Thanks to the Visual Studio ALM Rangers, we have a new release of the TFS Branching Guidance!  Think of it like TFS Branching Guidance 3.0… it was developed specifically for TFS 2010 including tidbits on best practices using all of the new branching & merging hierarchy and visualizing change features.

I often talk about branching & merging strategies with my clients and it’s always great to have some diagrams and content to go back to and leave with them so that they can delve into Configuration Management a little more.

TFS 2010 Branch Hierarchy Visualization TFS 2010 Tracking Changes Merge Visualization

Head on over to their CodePlex site:  http://tfsbranchingguideiii.codeplex.com/

Project Description
The purpose of this project is to build some insightful and practical guidance around branching and merging with Visual Studio Team Foundation Server 2010. The new release focuses on Hands on Labs and includes lots of lessons learnt from the community Q&A.
Visual Studio Team Foundation Server Branching Guide 2010
Branching and merging of software is a very large topic. It is an area where there is a lot of maturity in the software industry. This Ranger solution focuses on applied and practical examples of branching that you can use right now. The 2010 release includes discussions around branching concepts and strategies but also focuses on practical hands-on labs.
Visual Studio ALM Rangers
This guidance is created by the Rangers who have the mission to provide out of band solutions for missing features or guidance. This content was created with support from Microsoft Product Group, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.
What is in the package?
The content is packaged in 8 separate zip files to give you the choice of selective downloads but the default download is the TFS_Branching_Guide_2010_Complete_Package_v1 if you are interested in all parts.

  • TFS_Branching_Guide_Main_2010_v1.zip --> Start here
  • TFS_Branching_Guide_Scenarios_2010_v1.zip
  • TFS_Branching_Guide_Scenarios_2010_Poster_v1.zip
  • HOL_Quick_Start_Basic_Branch_Plan_2010_v1.zip
  • Lab_Files_HOL_Quick_Start_Basic_Branch_Plan_v1.zip
  • TFS_Branching_Guide_Q&A_2010_v1.zip
  • TFS_Branching_Guide_Diagrams_2010_v1.zip
  • TFS_Branching_Guide_2010_Complete_Package_v1
Team
Bill Heys, James Pickell, Willy-Peter Schaub, Bijan Javidi, Oliver Hilgers, Bob Jacobs, Sin Min Lee, Neno Loje, Mathias Olausson, Matt Velloso
How to submit new ideas?
The recommended method is to simply post ideas to the community or to contact the Rangers at http://msdn.microsoft.com/en-us/teamsystem/ee358786.aspx.

Ed Blankenship



geekSpeak: Migrating from Visual SourceSafe to Team Foundation Server 2010



Tomorrow, I’ll be presenting in this month’s geekSpeak about migrating from Visual SourceSafe to Team Foundation Server 2010.  I’m sure we’ll get through the VSS content pretty quickly so with the time left we’ll talk about new branching & merging features, branch visualization, and gated check-in.

In this geekSpeak, Microsoft Most Valuable Professional (MVP) Ed Blankenship discusses migrating source code from Visual SourceSafe, including the history. There has not been a better time to migrate to the newest Microsoft source control offering, Microsoft Visual Studio 2010 Team Foundation Server, because Microsoft Visual SourceSafe support is ending soon and Team Foundation Server will be part of Microsoft Developer Network (MSDN) subscriptions in 2010. Ed discusses specific version-control features to help you become more productive like branching and merging visualization, annotate, shelving, and gated check-in. This geekSpeak is hosted by Glen Gordon and Brian Hitney.

Registration for the event available here:  http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&EventID=1032438525

BTW – The end-of-life support date for Visual SourceSafe is mid-year 2011.  Don’t get stuck on an unsupported product :) especially one that’s holding your source code!

 

Ed Blankenship



User Display Name Changes and New Attribute for Work Item Type Definitions in TFS 2010



If you’ve had the responsibility of administering a TFS 2005 or TFS 2008 server you may have run in the “Display Name” problem before.  In March 2007, the TFS Work Item Tracking team put a great post together about what’s exactly going on and it’s available here:  http://blogs.msdn.com/teams_wit_tools/archive/2007/03/15/handling-display-name-changes-in-team-foundation-server.aspx

Basically, in TFS work item types, you can specify a field to hold the name of a user like in the Assigned To field.  The value that gets stored is basically just a string value of the person’s Display Name in Active Directory.  Not so bad except it’s not a strongly-typed object of a user but is just a string.  The problem comes when the user’s display name gets changed in Active Directory like when an employee gets married and take’s their spouse’s last name.  This causes a problem because all of the work items are still assigned to “Jane Doe” instead of “Jane NewLastName".  Even worse, “Jane Doe” is not even a valid user any longer so the work item becomes in an invalid state.  It’s kind of a maintenance nightmare.

Background:  Every hour an Active Directory synchronization job gets queued up and processes changes to Active Directory like new users, group membership changes, etc.  TFS keeps a cache of AD locally to help with operations across several subsystems.  For users, it caches certain information like the primary e-mail address, display name, domain/user name, SID, distinguished name, etc.

Thankfully there was something that helped us out available in the TFS Power Tools release called “TFS Users.”  You had to know about the display name change so working closely with your IT department was important.  Thankfully, it looks like TFS 2010 has added some abilities to notice those display name changes and proactively help you out within your system.  One of those changes is a new attribute in your work item type definitions that tells TFS which fields to automatically update.  I’ve bolded and underlined all of the changes from the previous default definition of the MSF Agile Bug.

<FIELD name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
  <VALIDUSER />
  <HELPTEXT>The person currently working on this bug</HELPTEXT>
</FIELD>
<FIELD name="Activated By" refname="Microsoft.VSTS.Common.ActivatedBy" type="String" syncnamechanges="true" reportable="dimension">
  <WHENNOTCHANGED field="System.State">
    <ALLOWEXISTINGVALUE />
    <READONLY />
  </WHENNOTCHANGED>
</FIELD>
<FIELD name="Changed By" refname="System.ChangedBy" type="String" syncnamechanges="true" reportable="dimension">
  <ALLOWEXISTINGVALUE />
  <VALIDUSER />
</FIELD>
<FIELD name="Closed By" refname="Microsoft.VSTS.Common.ClosedBy" type="String" syncnamechanges="true" reportable="dimension">
  <WHENNOTCHANGED field="System.State">
    <ALLOWEXISTINGVALUE />
    <READONLY />
  </WHENNOTCHANGED>
</FIELD>
<FIELD name="Created By" refname="System.CreatedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Authorized As" refname="System.AuthorizedAs" type="String" syncnamechanges="true" />
<FIELD name="Resolved By" refname="Microsoft.VSTS.Common.ResolvedBy" type="String" syncnamechanges="true" reportable="dimension"> <WHENNOTCHANGED field="System.State"> <ALLOWEXISTINGVALUE /> <READONLY /> </WHENNOTCHANGED> </FIELD>

If you have custom process templates or you have modified the out of the box process templates, you’ll have to do some maintenance to your existing team projects to light up the new TFS 2010 features available including the ability to automatically sync the name changes from Active Directory.  If you are using the MSF Agile template you will want to update the following fields:

  • Assigned To
  • Activated By
  • Changed By
  • Closed By
  • Created By
  • Authorized As
  • Resolved By

For all other process templates, you’ll want to update the work item types that have fields that hold display name values.  There is actually some great information already available about this particular topic available in the MSDN Library:  http://msdn.microsoft.com/en-us/library/dd286562(VS.100).aspx

One of the other things we notice from the changes are the addition of the ALLOWEXISTINGVALUE rule to some of the fields.  This rule allows a previously entered value to still be valid even if that value is no longer a valid value.  In addition, there are also some state/transition rule changes for allowing the existing value.  Be sure to do a diff against your current work item type definition and the new MSF Agile work item type definitions to find all of the new changes.

For more information about managing work item type fields in TFS, see this MSDN Library Article:  http://msdn.microsoft.com/en-us/library/dd236909(VS.100).aspx

 

Ed Blankenship

TeamPrise Assets Purchased by Microsoft



I don’t know how many times I’ve heard this suggestion from people:  “Microsoft should just buy TeamPrise and make the Eclipse and non-Windows clients just part of the TFS product.”

That day is finally here.  Microsoft has purchased the TeamPrise-related assets from SourceGear.  More details about the acquisition announcement are available at Microsoft’s PressPass site and also the Pathways site for TeamPrise and Visual Studio.

Also, in addition to purchasing the TeamPrise assets, Microsoft has also hired a majority of the development team including, most notably, Martin Woodward who has been an absolutely fantastic part of the “Team System” MVP group.  It will be really sad to see Martin leave the group (as of today) but something tells me that he won’t be hiding :)  Congratulations to him and the entire team!

Now the one thing that i think people might be worried about will be what will happen to the future of the TeamPrise clients and will that development team be able to innovate as quickly as they had before?  I’m pretty sure the same “mission” will be in place and the team will be able to more closely leverage the other team members and assets within the Team Foundation Server product team.  As far as speed of innovation, that’s tough to tell.  Most other Microsoft products have tons of release requirements that slow them down such as localization, security reviews, etc.  All of which are great things but do end up slowing you down if you have to support those requirements.  Who knows if the TeamPrise development team will have to support them?  My guess is that if they’re going to be part of the “Visual Studio” product line that they will have the very similar if not the same requirements as the rest of the stack.  We will definitely see…  Another possible hang up is that Microsoft (specifically Developer Division) will have to learn how to sell & market a Java/non-Windows based product.  I can only imagine there will be some growing pains.

As far as licensing, right now you’ll need to still purchase the TeamPrise clients and get support from TeamPrise directly.  A Microsoft-branded “TeamPrise” client will become available with the 2010 release.  If you own a current license of the TeamPrise 3.3 software it looks like you’ll be upgraded to the new version when it is released.  Also, if you own a Visual Studio 2010 Ultimate with MSDN license at the time you’ll get access to download the new clients from MSDN Subscriber Downloads.  After the 2010 release, it looks like there will be a new SKU available to be able to purchase just the new clients that will also include a CAL for Team Foundation Server that will run somewhere around $799 retail.

I’m excited about the decision and it looks like both Martin and Brian Harry are as well.  I’m excited to see the platform broaden and truly support teams who have heterogeneous development environments!

 

Ed Blankenship



Test Case Migration Tool for TFS 2010 and Excel



Looks like there is a new migration tool being made available that helps you with importing test cases into TFS 2010 which now has Test Case Management as one of it’s new features.  It’s now available on CodePlex and works with the Beta 2 release.  Here’s some of the features available:

  • Imports Test case information (along with Test Steps) present in Excel into TCM/TFS server – Note: This is ONE way migration only
  • Provides a wizard based UI to run the tool one file at a time
  • Provides a command line support to run the tool in a batch mode
  • Allows you to save your selections/configurations into a mappings file to be reused later
  • Default mapping file that works across both Agile based and CMMI based projects are shipped along with the tool

http://tcmimport.codeplex.com/

I believe some systems allow you to export your test cases into Excel (HP Quality Center?) so this might be a good migration option.  You can also use the TFS 2010 SDK to build a custom migration utility that will import from another system without having to go through Excel at first.  Take a look at it and see if it might be helpful for you!

 

Ed Blankenship



Workflow TFS Custom Work Item Control



Now this is really cool!  There is a really cool visualization when using Team System Web Access that shows the workflow of the work item that I thought would be really cool if we could have in the Team Explorer client inside Visual Studio.  Well thankfully, Michel Perfetti (author of Fissum) just released a custom work item control that does exactly what TSWA does…

clip_image002

Remember, you can have different work item form layouts based on what client it is going to be loaded in so you could specify a layout for “WinForms” that would be the only one that would load this custom control.  Check out Neno’s blog post about this topic for more information.

 

Check it out on CodePlex:  http://tfsworkflowcontrol.codeplex.com/

 

Ed Blankenship



PowerPoint Slide Deck for Real World TFS Sessions



Just wanted to take a few seconds to post the slide deck I’m using for my Real World TFS sessions.  I’ll post a link to the recording of the MVP TV session earlier today when it’s made available!

 

Ed Blankenship



MVP TV with Ed Blankenship on July 15



Also really excited about doing my first ever MVP TV set up by the Microsoft MVP program.  Hope to see you there!  We have an extra thirty minutes at the end so be sure to bring your questions.

MVP TV: Real World TFS: Tips for a Successful Team System Implementation

Wednesday, July 15th, 2009 | 9:00am – 10:30am (PDT, Redmond time) or 12:00pm – 1:30pm (EDT, New York City time)

Targeted: This Product Group Interaction is open to  all Developer MVPs in all Technical Expertise and  public audience.

So you’ve decided that Visual Studio Team System & Team Foundation Server is going to bring your organization added value (because it will :)) but what do you do now?  Please join Ed Blankenship as he covers the 2.5 years of successful implementation of VSTS and the experience of that journey at Infragistics, the world’s leading maker of software development tools.  The session intends to cover each phase of the implementation of all affected areas for a smooth adoption:  Version Control, Builds, Work Item Tracking, global deployment, moving multiple teams, training, automated testing, migration from legacy systems, and integration with other systems and TFS.  The goal will be to go through at a high-level of what it takes to make you successful by learning from the challenges and obstacles overcome.  We’ll also look in the future with VSTS 2010 and see how strategic planning will help make a successful adoption of the new features in the upcoming 2010 release.  The session is led by a Microsoft MVP (Team System) & Champ who has been in the trenches during the whole implementation.

Prerequisites:  A healthy attitude in learning from other peoples challenges and a strong desire to make real change within your organization!

About Ed Blankenship: Ed is a Microsoft MVP, Microsoft Certified Application Developer, and works as the Release Engineering Manager at Infragistics, makers of the world's leading presentation layer tools and components. His expertise consists of Microsoft Visual Studio Team System and Team Foundation Server. He is also a technical evangelist for Rich Client applications (primarily Windows Forms & Windows Presentation Foundation.) He has been a technical editor for several Silverlight books, an article author, and has spoken at various user groups, events, and conferences.

PJ Forgione has invited you to attend an online meeting using Live Meeting.
Join the meeting. (Link: https://www.livemeeting.com/cc/mvp/join?id=NP5FQZ&role=attend&pw=A49410Y0D )
Audio Information
Computer Audio
To use computer audio, you need speakers and microphone, or a headset.
Telephone conferencing
Use the information below to connect:
Toll-free: +1 (866) 500-6738
Toll: +1 (203) 480-8000
Participant code: 5460396

 

Ed Blankenship

Speaking at NYC VSTS User Group on July 28



While I’m up in New Jersey working at the Infragistics headquarters office, I’m going to have the privilege of speaking at the New York City VSTS User Group on July 28, 2009 at 6:30 PM.  Come see me if you’re in the area!  Because of security concerns at the building, you do need to register ahead of time if you’re planning to attend.

VSTS User Group

Real World TFS: Tips for a Successful Team System Implementation

Description:
So you've decided that Visual Studio Team System & Team Foundation Server is going to bring your organization added value (because it will :)) but what do you do now? Please join Ed Blankenship as he covers the 2.5 years of successful implementation of VSTS and the experience of that journey at Infragistics, the world's leading maker of software development tools. The session intends to cover each phase of the implementation of all affected areas for a smooth adoption: Version Control, Builds, Work Item Tracking, global deployment, moving multiple teams, training, automated testing, migration from legacy systems, and integration with other systems and TFS. The goal will be to go through at a high-level of what it takes to make you successful by learning from the challenges and obstacles overcome. We'll also look in the future with VSTS 2010 and see how strategic planning will help make a successful adoption of the new features in the upcoming 2010 release. The session is led by a Microsoft MVP (Team System) & Champ who has been in the trenches during the whole implementation.

Presenter: Ed Blankenship

Bio:
Ed is a Microsoft MVP, Microsoft Certified Application Developer, and works as the Release Engineering Manager at Infragistics, makers of the world's leading presentation layer tools and components. His expertise includes Microsoft Visual Studio Team System and Team Foundation Server. He is also a technical evangelist for Rich Client applications (primarily Windows Forms & Windows Presentation Foundation.) He has been a technical editor for several Silverlight books, an article author, and has spoken at various user groups, events, radio shows, and conferences.

Date/Time:  07-28-2009 6:30 - 8:00 PM

Location: Microsoft Offices in NYC at 1290 Avenue of Americas, 6th Floor

Click here to Register

 

Ed Blankenship



Radio TFS Interview – Using TFS at Infragistics with Ed Blankenship



I’m up really early this morning.  I’m about to head to the airport to spend my Independence Day weekend in the Carolinas for some much needed beach vacation and visit with friends.  Thankfully, I didn’t miss Martin Woodward letting me know that the latest Radio TFS episode was made available just a few moments ago that includes my interview about our use of TFS and Visual Studio Team System at Infragistics.  It’s a longer episode than normal so it’s perfect if you’re going to be spending some time at the beach like me and listen to a fun talk.  We both really enjoyed chatting for this episode so we hope you enjoy it as well!

Using TFS with Ed Blankenship

In this episode we sit down and chat with Ed Blankenship about the use of Team Foundation Server at Infragistics. Ed has had some interesting challenges and experiences in running their TFS instance.  Additionally they have done some fairly advanced integration work which we discuss in detail.  This is a double-length show, so hopefully plenty of stuff to enjoy if you are sunning yourself on a beach somewhere.

Ed is the Release Engineering Manager at Infragistics, makers of the world's leading presentation layer tools and components.  He is also a Microsoft MVP in Visual Studio Team System.

     Play Now: Using TFS with Ed Blankenship

As the Release Engineering Manager, he leads the Release Engineering Department which is responsible for automated builds, creating product installers, packaging source code for customers, source configuration management/version control, metrics, release management, work item tracking, licensing enforcement, and development of internal productivity tools.  The department also is responsible for TFS Operations & Maintenance.

Ed has been a technical editor for the Wrox Silverlight 1.0, Silverlight 2 Developer's Guide, and Silverlight 2 Bible books, author of numerous articles, and has spoken at various user groups, events, and conferences.

Links from the show:

As usual send any feedback to radiotfs@gmail.com.

 

Feel free to let me know if you have any questions based on the Radio TFS chat.  I’m more than happy to get them answered for you!

 

Take care,

Ed B.