Saturday, January 12, 2013

Parallel Convoy in BizTalk example


What is Parallel convoy ?


Parallel convoy in BizTalk is used to receive messages in any order. The Orchestration process does not start its execution further until all the messages in parallel convoys are received. In Parallel convoy we have a parallel shape as the first shape in the Orchestration and multiple receive shapes for receiving multiple messages.
                        For example if there is a Online shopping portal which sends several messages to BizTalk like ShoppingDetails, CustomerDetails, BillingAddress and they all need to be received in BizTalk and then only process should continue further and these messages can be receied in any order into BizTalk. This situation can be implemented using Parallel convoy :



SourceSchema for ShoppingDetails message:















SourceSchema1 for BillingAddress messages:


















SourceSchema2 for CustomerDetails message:



















NOTE : CustID is promoted in all the three schema's. Here is Property schema for CustID :



PropertSchema for CustID:


















DestinationSchema :




















Orchestration :

















In Orchestration we have a Parallel shape with three receive branches and three receive ports for receiving three different types of messages. Now for parallel convoy we have to create Correlation set and correlation type which is done on CustID. All three receive shapes initialize the correlation set because any message can arrive at an time. Suppose 2nd parallel branch's message arrives then the 2nd receive shape initializes the correlation set and the other two follows the correlation set. When all the three messages arrives then only further execution of the Orchestration takes place.



14 comments:

  1. Hi Rahul,

    As new to biztalk its given me alot of clarification.Please send me the code to my mail id sathish.gdk34@gmail.com.

    Thanks advance

    Regards,
    Sathish

    ]

    ReplyDelete
  2. Good explaination, keep posting like this posts ........ this will more helpful to beginners and please send like this to my mail sushma.reddy532@gmail.com

    ReplyDelete
    Replies
    1. Thanks Sushma..unfortunately I can not send the code...
      But if u need any help regarding Biztalk contact me at rahul.madanin@gmail.com

      Thanks,
      Rahul Madaan

      Delete
  3. hi
    rahul
    i have lot dout
    what i will write in expression shape .
    litille bit confution on correlation as well
    if it is posible
    pls send me code and discription

    ReplyDelete
    Replies
    1. Hi Ashish,
      I will not be able to send the code....but yeah I can publish a nice article on Correlation. You first need to learn Correlation then Convoys as convoys are special cases of correlation.

      Thanks,
      Rahul Madaan

      Delete
    2. how can we achieve parallel convoy without using parallel action shape?

      Delete
  4. Rahul..
    I have two questions here. I am bit new Biztalk. But have loads enthu to learn it.
    So, please help me with my questions.
    1. How do you relate the field CustID in property schema with all the other document schemas in your example.
    2. What did you write in expression shapes?

    Looking forward to your response.

    Thanks
    Mahendra

    ReplyDelete
  5. Sandeep KhubchandaniNovember 16, 2016 at 5:57 AM

    Hi Rahul,

    This indeed is a very good post and gives a good understanding of BizTalk Convoy patterns. You are a BizTalk champ. Microsoft should be proud of you......

    ReplyDelete
  6. can we set any other other unique property which is same for all parallel shapes

    ReplyDelete
  7. Hello Rahul,

    I tried with above solution but the messages are staying in dehydrated state.The issue is becuase you were created three corelation set and applied on 3 recieve shapes respectively.
    The point here to noted that when i received three messages there will be three orchestration instances are created as it should not create these instances. We are using parallel convoy to receive multiple messages within the same orchestration instance for particulare corelation id.
    To avoild dehydration of the messages, i have created a single corelation set and appiled this on all the receive shapes. Now its working fine.

    Please correct me in case i am wrong.

    Thanks and Regards,
    Shambhu

    ReplyDelete
  8. Hello Rahul,

    I tried with above solution but the messages are staying in dehydrated state.The issue is becuase you were created three corelation set and applied on 3 recieve shapes respectively.
    The point here to noted that when i received three messages there will be three orchestration instances are created as it should not create these instances. We are using parallel convoy to receive multiple messages within the same orchestration instance for particulare corelation id.
    To avoild dehydration of the messages, i have created a single corelation set and appiled this on all the receive shapes. Now its working fine.

    Please correct me in case i am wrong.

    Thanks & Regards,
    Shambhu

    ReplyDelete