BizTalk Server 2004 has a very cool architecture that allows it to balance the processing of a workload across many BizTalk Servers when they are configured to function as a group. When we use this "Group", or "Farm" configuration, all the BizTalk Servers share the same configuration and message box database. As workload increases or, for high availablity, we can push "BizTalk" applications (in the form of .Net assemblies) out to additional servers in the farm. In most cases, "pushing out" really just means "GAC'ing" the custom BizTalk application assemblies on the target BizTalk Servers within the farm.

What does this architecture give us?  If the Orchestrations fail on one server, they can easily start up where they left off on the other server as all the state is managed in the database (not local machine queues).  All we need to do is make sure that the application assemblies are GAC'd on all the servers we want to fail over to.

Today, people either have to do that manually or or use a third party tool to GAC assemblies.  

But lets dream for a moment....wouldn't it be cool if we had a tool that would allow us to manage all the assemblies deployed within the BizTalk group?  Imagine,  that we could use this tool to list out all the assemblies registered in the BizTalk Management database, then check to see if they've been deployed to other servers within the BizTalk group.  Then, when we find one that wasn't GAC'd on a specific server, we could press a button and wholla (did I spell that right :) ), the assemblies get deployed and GAC'd on the remote server and we didn't even have to leave our desks.

Well...this is possible now because of a BizTalk Escalation Engineer that works for Microsoft Premier Services, Rick Caudle.  He wrote the BizTalk Assembly Checker, which does exactly what I described above. 

When we launch the tool, we'll see a view that allows us to specify the SQL Server that the Management database is located on and connect to it.  Once we connect, it will list all the BizTalk Servers and deployed application assemblies registered in the BizTalk Group.  The tool allows us to select each server and check to see the assemblies are deployed.

If we need to copy and GAC the assemblies on one of the servers, we just click the GAC Tool button which brings up the dialog box below:

Check whether we want to copy the assemblies locally and GAC them and click the OK button.....the tool does the rest: 

You can download the tool as well as the latest build source code from here.