BizTalk will process multiple orchestrations concurrently. I believe it uses multiple threads and can take advantage of multi-proc servers. However, each orchestration has it’s own data structures, so you don’t need to worry about race conditions or locking objects. The best advice I can give is to make your orchestrations as granular as possible so you can take advantage of multi-proc and multi-server environments. If you write one big orchestration, it will probably be stuck on one proc in one thread, but if you break it into a bunch of smaller ones they can be distributed.