I just caught up with Eric Lee and we spoke about the abundant (will expatiate on this in further posts) business opportunities that Team Foundation Server and Visual Studio Team System have created since their release. But one that I really wanted to report was the concept of using BizTalk Orchestrations to create complex build and release solutions.

The context of this conversation is the strong (if not immediately apparent) relationship between BizTalk and Team System. There are some great opportunities for partners and ISV’s to build true value-up offerings upon these two technologies in the areas of:

  • Importing the SDLC into the wider business process landscape
  • Orchestrating complex integration (as in source integration) and release scenarios
  • Managing BizTalk solution development using Visual Studio Team System and Team Foundation Server

So back to the topic, what are some of the hot areas of this opportunities?

  1. Team Foundation Server exposes a range of entry points via web services
  2. BizTalk Server supports send and receive ports as web services (including publishing orchestrations as web services)
  3. BizTalk provides the Business Rules Engine for decoupling business rules from values

So with these together, I propose that you could create a set of custom BizTalk orchestration components (similar to the ones that come out of the box) to provide common Team Foundation Server tasks such as check-in/check-out, unit test, work item, and builds.

You also create a Team Foundation Server adapter for BizTalk, and use this to communicate with TFS using the web services API.

You are then in a position to represent complex build and release scenarios using BizTalk orchestrations, and have them run as managed integration processes.

So:

  1. You create an Orchestration in BizTalk
  2. Drop on the check-in shape
  3. Configure it for your TFS project
  4. Drop in a build type shape
  5. Configure it for a particular Team Foundation Server project build
  6. Set up your send and receive ports and locations to point to your TFS environment and any forward environments
  7. Wire up some compensation and error shapes to deal with build failures
  8. Some business policies that set what percentage of errors stop a build being released into a forward environment
  9. Wire that up through the business rules engine
  10. Then deploy the mutha!

Now, as this orchestration runs, you can examine what is happening from a process perspective through all the cool BizTalk tools. And should you want to change the quality threshold for releasing builds, you just change it using the BRE editor!

And you could then create another integration that extracts work item information for each final release and feed that into the invoicing system so that upon a completed, successful, quality (based on your business rules) build, you send the customer an invoice through the invoice system!

Arghhh! I love it! Someone out there, build this and embed my face (or at least a vague ASCII representation) into the user guide (it’s all I ask!).