How to achieve parallel processing in BizTalk Orchestration


The requirement is very straight , I need to start/execute two sub processes or BizTalk Orchestrations in parallel. Then wait for the response from each orchestration, and then proceed to end. If there is a sequence diagram it would be something



The first thing which came into my mind is using parallel shape in BizTalk , but they do not start or execute two processes in parallel , Its a common mistake, there is a blog post The parallel shape DOES NOT give you concurrent parallel processing – a common mistake.

Also there is a very good blog post How Parallel Shape works , this is a very good read and explained in much detail about execution of parallel shape.

The solution was to use parallel shape to start two Orchestrations at same time and use ports to pass the response back from the child orchestrations back to the main orchestration.

Using parallel shape with self correlating ports and start orchestration

In Summary

In summary the solution looks like below

  • Main Orchestration Uses a parallel shape to starts two sub orchestrations
  • Main orchestration has two ports for each sub orchestrations to pass back the response. The Post gets passed as parameter in start orchestration shape


  • the port has following setting


  • In summary the main orchestration looks like below


  • I have used some trace entries in both sub orchestrations so when they starts following comes in the trace


both the sub process gets started almost same timestamp .

Hope this helps to someone.

There is more to read

  1. How to Use Self-Correlating Direct Bound Ports

  2. Enterprise Integration Patterns Part-1 – Scatter and Gather using Self Correlating Port