BizTalk 2004: Orchestration: Relationship of Receive port shape and Receive shape, Send port shape and Send shape

I don’t know would it be useful for somebody…
I’m constantly trying to understand the rules for different BizTalk tools.
For example, BizTalk Orchestration Designer:

Can I receive one message with the same type from different Receive port to one Receive shape?




Can I receive the same message with the same type to several Receive shapes?




Can I send the same message to the different Send ports?





Can I send the different messages with the same type to several Send ports?



Why there are these limits?

Quite obvious (??):

Inside Message Box the different messages with the same type transfered in the same manner. That’s why for the messages with the same type permitted only one receive and one send endpoint.

Rule: “Links for the messages with the same type are always gathered in one received/send point on the port panel


Try to link different Ports with the same message type with different Reseive shapes:


We’v got an error #1:

…odx…: error X2214: you must specify at least one already-initialized correlation set for a non-activation receive that is on a non-selfcorrelating port
    : for example, mark the receive Activate property as True
    : or, mark the port Binding property as Direct and the Partner Orchestration Port as Self Correlating
    : or, check a correlation on the receive Following Correlation Sets property


If we’ve tried to mark (as recomended) the second Reseive shape with Activate property as True we got the different error #2:

…odx…: error X2071: an activatable receive must be the first executable statement in a service

ok. The second error message did not “correlate“ with first one. Sure, the error message #1 is not about my stupid changes 🙂

If I tried to mark the first Receive shape with “Initializing Correlation Sets“ and the second one with “Following  Correlation Sets“, (It’s not so stupid) I’ve got the error #3:

…odx…: error X2259: in a sequential convoy receive the ports must be identical
    …Accounting.odx(353,22): could be ‘R_Schema1’
    …Accounting.odx(357,13): or ‘R_Schema1_2’

Excelent! That’s mean “my“ rule works!

If you have comments, please, give me a feedback!

Leonid Ganeline
BizTalk Developer