My first exposure to BizTalk happened when I was tasked to design a cross-agency messaging solution for a government department several years ago. The task seemed simple enough at first: we needed to accept data packages as XML messages delivered from an external agency via Web Services, and then load them into our backend Oracle system.

Sounds like a job for a simple Web Service, MSMQ and a couple of stored procedures, right? That's what I thought initially. Then came all the ancillary requirements, and suddenly it wasn't so simple:

  1. The Oracle system wasn't a 24/7 system (it went down every night for cold backups and batch processing), but the messages came constantly, even overnight.
  2. We couldn't guarantee a size limit on the messages, and MSMQ doesn't do so well with message > 4MB in size.
  3. Then there was the asynchronous response message, which had to be correlated with the original message, and handled differently depending on whether it was successfully loaded or not.
  4. Finally, the business wanted some major aspects of the solution (such as down times, etc) to be configurable.

Just as I was starting to panic at the prospect of using my relatively green .NET skills to write thousands of lines of code, along came Mick Badran saying, "Why Dan, we can do all that in BizTalk Server 2004!" A day and a half later, Mick had setup a working prototype for us! Later on, Bill Chesnut helped me put in the finishing touches, and now the system is still running today, supporting multiple applications within a critical interface.

Moreover, the solution has provided an opportunity to streamline and consolidate a plethora of existing disparate interfaces using multiple technologies such as FTP, flat files, etc. Many of these interfaces utilise C++, ProC or VB6 code that can't be easily maintained by the current developers' skill sets, and they offer little or no tracking and/or error handling capability.

Among the many BizTalk features that were used: orchestration logic, schema maps, rules engine, message correlation, atomic & long running transactions, exception handling, custom .NET class invocation, and FILE, SQL, SOAP and SQL adapters.

Once I saw what BizTalk was capable of as an integration provider and business process manager, I was hooked! (and that was long before I ever saw the sleek new admin console in BTS 2006, or even dreamed of the capabilities you get OTB  in the latest R2 release!)