Thursday, January 31, 2013

Just yesterday I had a discussion with a client of mine about some of their teams that would prefer to use GIT as apposed to TFS. I mentioned that TFS will definitely be moving that way (looking at GIT-TFS that was brought out a while back), it is just a matter of time.

Monday, January 7, 2013

One of the cool new features in Team Explorer 2012 is the My Work page. It has a bunch of useful and context specific functions that makes interacting with TFS a lot more streamlined.

One of these features that has been introduced is the ability to “Start” and “Stop” or even “Suspend” work. You can decide on a work item query that displays the available work for an iteration and then with a single click, you can “start” working on the work item.

It works very well if you are using tasks for your work backlog. When you start a work item, Team Explorer will change the task to “active” and assign that task to you.

There are however two instances where things may need a little manual intervention:

1) When you are not using Tasks

I always recommend using Tasks to break down User Stories or Product Backlog Items, but I do have a client that breaks up the work into fairly fine grained User Stories and they don't see the need to create additional Tasks. We found that creating a query to return the current iterations User Stories allowed you to “start” the User Stories, but it did not change state or assign the user to the work item.

After a little digging I found that unlike the Task definition, the User Story does not define the “StartWork” action on the transition between the “New” and “Active” states. Luckily it is a fairly simple process to update the work item definition.

Use the witadmin to export the work item definition, update the “New” to “Active” transition to include the “Microsoft.VSTS.Actions.StartWork” action and, hey presto, when you start work though the My Work page, it automatically assigned the User Story and sets its state into “Active”. Take a loot at the “Adding the StartWork and StopWork action” section of this post for step by step instructions.

2) Upgrading from a previous version of TFS

When upgrading a project collection instance, a lot of the “new” functionality needs to be added manually.This post does a very good job of taking you though the steps to enable some of the new features in TFS 2012.

Thursday, January 3, 2013

Recently I spent quite some time getting to grips with Microsoft System Center (SC). I have a client that has a very large IT infrastructure environment and relies quite heavily on SC to monitor and manage it.SC is one of those products where the question “What does it do” will prompt an answer “What do you want it to do?”. If you have not heard of System Center before, it is basically a suite of products specifically aimed at corporate IT administrators, assisting them in managing Microsoft server and desktop infrastructure.

This means that you can leverage SC (making use of the various aspects or applications ) to do everything from AD account provisioning to virtual machine creation and deployment.

TFS does have a management pack which integrates TFS very nicely with System Center Operations Manager (SCOM).

So we can monitor TFS and report failures and even go as far as “escalating issues” to TFS in the form of work items.

This post however, centres around System Center Services Manager (SCSM). SCSM with its “out of the box” integration with a number of SC applications, including Orchestrator, makes it a very capable application for managing, automating and adapting your IT services.It also provides built-in processes for incident and problem resolution, change control, and asset lifecycle management.Has the penny dropped? What if I mention that TFS work items provide built-in processes for incident and problem resolution, change control, and application lifecycle management.

The client that I mentioned earlier is using SCSM to manage everything from infrastructure to software requirements and changes. The development team is using TFS and they wanted to “integrate” SCSM with TFS, reducing the effort involved to manually copy work items and progress from one system to the other. They also wanted to reduce the context switching between the applications, specifically in the development environments.

So where to start…

As I mentioned earlier, SCSM integrates very comfortably (using connectors) with a number of the SC applications. One of which, Orchestrator (previously Opalis), is basically a workflow management system. In SCSM you can invoke and execute Orchestrator workflows through a number of processes and via a number of hooks, and in Orchestrator you can configure “monitors” that poll target systems. Through Orchestrator and custom “Integration Packs” (IP) you can basically have SCSM integrate with any number of 3rd party applications.

The guys over at the Orchestrator Codeplex project had already built some IP’s for various applications and fortunately for me there is even one for TFS.

So, how did we get this going..

Firstly you need to get hold of the Integration Packs and deploy them to the Orchestrator “Runbook” server. Then we can create the workflows that monitor SCSM for any changes in the Requirements and Manual Activities.When a requirement is created or changed we push over that change to TFS as a User Story.Next we find associated Manual Activities and then create or update them in TFS as Tasks that are linked to the User Story.

The same approach is followed when a change is made to a work item which is then updated in SCSM.

One problem that I did have was that the TeamFoundationServer IP was built using TFS 2008 and updated to TFS 2010. This means that work item links were not taken into account when the initial activities were created.

Fortunately it is very easy to code these custom activities (think activities in Windows Workflow Foundation) in the IP’s, and being a codeplex project I was able to grab the code and create the additional activities (I did submit a patch with the changes)

This was a very interesting learning experience, delving into yet another one of Microsoft’s application suites. This also takes TFS’s capability and makes it available into areas that you would not necessarily have considered possible, further establishing TFS as a true ALM suite.

If you would like to know more, or would like TFS integrated into SCSM. Give us a shout..