Carolina Code Camp

Recently I gave a presentation on BizTalk Server 2009 at the Carolina Code Camp. The presentation covered the basics of BizTalk as well as the new features of BizTalk Server 2009.

I showed a short demonstration of a sample Purchase Order process. The components used were the Schema Designer, the Mapper, the Orchestration Designer, and the Consume WCF Service Wizard.

PowerPoint slides and demo code are available upon request.

REST Services in BizTalk

After many hours of research and blog reading, I came to the conclusion that there is no out-of-the-box or additional download (from an Adapter Pack or similar) support for REST services in BizTalk 2009. My recommendation is to have a C# helper class make the call for you. This is not what I was hoping to discover, although it does make sense.

REST services do not employ formal contracts, while BizTalk relies heavily on strong-typing of messages, these two philosophies contradict.

The other issue is that BizTalk needs two pieces of data for message delivery, destination URI and the Message. REST embeds the message as part of the URI. Again, this is a contradiction in philosophies.

We can create a Dynamic Send port with the correct URI (message embedding included), however BizTalk must send a message along with the URI and REST services reject this additional payload. Also, Dynamic Send ports do not support two-way communication so there is no way to correlate the response message, even if we were to actually be able to get one from the REST Service.

Until Microsoft adds support for REST in BizTalk, the workaround is to use a .NET Helper Method to make the REST call for us.

BizTalk Benchmark Wizard Released

One of the most common questions I get asked when looking at a BizTalk server project is what type of hardware is required and how many servers are needed.

This is often a black art.

Microsoft has stepped in to help with the release of a BizTalk Benchmark Wizard:

http://msdn.microsoft.com/en-us/biztalk/ee946766.aspx

Basically this tool is intended to work along side the BizTalk Server 2009 Scale-Out Testing Study:

http://msdn.microsoft.com/en-us/library/ee377068(BTS.10).aspx

Comparing the results of the study to your own running production environment can provide valuable insight into the performance of a BizTalk server farm and point to places where optimization is needed

BizTalk 2009 and SQL 2008 - Simple recovery mode breaks agent

I learned something today about SQL 2008 and BizTalk's SQL agent jobs. You must leave all BizTalk databases recovery model to "Full". I encounted a database set with the recovery model that was changed to "Simple" and it caused the agent's jobs to fail.

The reason for this is that "TRUNCATE_ONLY" has been deprecated for SQL Server 2008. This flag forces you to keep the recovery model as full. When I changed it back everything began funtioning normally again.

How to solve "Unable to determine if the owner has server access" error

This error message popped up all of a sudden during a load test with heavy volume.

Turns out to be a well known culprit to lots of BizTalk errors: the SQL Agent jobs were not running. Since we had just deployed to a test environment, and it was a new server, I didn't check to the Agent to see if it was running.

When I teach the class, I always mention this check, so I didn't follow my own advice. Anyway, the database server logs grew wildly and caused a shutdown.

When I configured and ran the jobs everything was fine, but it took a while for everything to complete.