How to achieve parallel processing in BizTalk Orchestration

Problem

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

 image

Solution

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

 image

  • the port has following setting

image

  • In summary the main orchestration looks like below

image

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

image

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

Advertisements