Search code examples
biztalkpublish-subscribebiztalk-orchestrations

How Subscription works in case of multiple calls to a service having RequestResponse Port as Direct Bound


I have BizTalk Orchestration hosted Schema as a Service named as "MainService"

It has RequestResponcePort which is Direct bound with Multiple Receive Shapes with Different Filter like one Receive Shape has filter as Bts.Operation='ABC'. Its workflow has below steps

  1. Receive Request schema - Schema1
  2. Run some business logic
  3. Respond with schema - schema2

Now I have two other services which calls above service,

Service1-

  1. Receive message of type 'X'
  2. Transforms 'X' to Schema1
  3. Call "MainService" -> RequestResponsePort (Direct bound and Operation='ABC')
    Request Schema - Schema1
    Response schema - schema2
  4. Transform Schema2 to 'Y' and send out as a response

Service2-

  1. Receive message of type 'C'
  2. Transforms 'C' to Schema1
  3. Call "MainService" -> RequestResponsePort (Direct bound and Operation='ABC') Request Schema - Schema1
    Response schema - schema2
  4. Transform Schema2 to the message type of 'D' and send out as a response

I know in this scenario Service1 & Service2 will get their responses correctly but I want to understand how the subscription will work here based on what the subscription will be decided as both the services Service1 and Service2 are expecting same messageType as response from "MainService". e.g. subscription based on interchangeId or correlationToken etc

If you could advise me where can I find the exact subscriptions criteria for them in DB or in AdminConsole (I try to check but I could not understand)

I have created same scenario to understand, it worked however I could not understand based on what subscription criteria it correctly returns responses to corresponding services


Solution

  • You can query the subscriptions from the BizTalk Admin console. From New Query, select Subscriptions, on the second line select Service Name, and in the drop down to the right select the service name you want and click Run.

    enter image description here

    Then you will see results like below, and you can expand it to see the exact subscription details.

    enter image description here

    They will either be an Activation Subscription i.e. those that will trigger of the Orchestration, or Instance Subscription, on where an Orchestration is waiting for a (auto)correlated response. Quite often these will look like

       http://schemas.microsoft.com/BizTalk/2003/system-properties.CorrelationToken == {GUID}