Hi Sathwik, Thank you for taking time to suggest these ideas.
I was thinking on the same line but did not implement because I was not sure about calling <receive /> in a loop. Since <receive /> is a blocking activity, I thought the loop will stop during the first iteration when it executes the first <receive /> activity and will not not complete. I have few queries. 1) Iterative forEach parallel='yes' In my case I would like to collate the result of all sub-processes in the main process. So in the first approach (forEach) do you think I can add a <receive /> after <invoke /> as shown below <bpel:forEach parallel='yes' ...> initialize the counter here <scope> <partnerlink .. /> access the EPR array using the index counter and assign it to the partnerlink. <invoke .../> <receive .../> to receive the response from above invoke </scope> </bpel:forEach> 2) While loop with async communication and explicit correlation In case of while loop, the execution is sequential. This is ok for <invoke /> activities. But may not work for <receive /> activities because there is no guarantee that the responses will be received in the same order of invoke. Or putting <receive /> in <while> will create an implicit <flow> like <forEach> loop? Thank you once again. JK