locked
Outbound Map not getting executed on Req Resp Port. RRS feed

  • Question

  • Hi All,

    I am using BizTalk 2013 R2 and have a direct bound Req Resp Port . I have a outbound map on the port and it is not getting executed. If I create a Static Port and subscribe to the same message the outbound map is getting executed , but same map is not getting executed on the req Resp port.

    I am promoting the message Type by calling a pipeline in orchestration and using Correction set ( did verified it by stopping the port).  There is no error its just the map is not getting execuete..

    Thanks

    Tuesday, June 14, 2016 12:13 PM

Answers

  • sorry it took a while getting back on this. couple of things here worth noting -

    "ReqResp Port --(direct bound) Orchestration -- Orchestration Dymaic mapping and other logic -- Publish the XML Doc Type to messgae box along with other prperties used for routin back to req resp port---> req resp port --> outbound Map---> XML\Pass through pipeline --> out to soapui"-

    1. ReqResp Port --(direct bound) Orchestration --

    can you try once with 'Specify later'  port and do it the usual way to check what is the difference.

    2. Publish the XML Doc Type to messgae box --

    are you using untyped message here? when you are publishing back with the context, is that original context props that came in. Try that once

    mostly, it seems like your default correlation (from bts adapter) is getting lost and your msg is not able to correlate back. As far as using another static SP with subscription goes - it makes sense because since the msg is getting completed through your orch and all. however, this does not gurantee that it is actually getting correlated back to original Req-Resp port. Do you get where I am going with this....let us know your progress. I would try #1 as a first step

    Thursday, June 16, 2016 7:44 PM

All replies

  • Hi 

    Can take the output XML file and try to validate it against the input schema of your map in Visual Studio?

    Even though you are force promoting MessageType property, the output message type may not conform to the source schema type. .NET type of the output Message and Map's input schema must match.


    Thanks Arindam


    Tuesday, June 14, 2016 12:25 PM
    Moderator
  • Thanks for the reply .. yes i did it ot works .. Also  have the same message subscribed by static send port with map and it works .. just this req resp does not work...
    Tuesday, June 14, 2016 12:27 PM
  • It must be something that is different between the Static and Dynamic Port, or the message content that each is receiving - dynamic port cannot alter mapping behavior.

    Also note that MessageType doesn't determine which map is applied as noted earlier-

    .NET type of the output Message and Map's input schema must match.

    In the schema properties page in Visual studio, you would get the Namespace and Type Name properties. The .NET type is combination of the two. This is the indoc_docspec_name value that is used to determine which map to apply from the bt_MapSpec table in MgmtDb database.


    Thanks Arindam




    Tuesday, June 14, 2016 12:39 PM
    Moderator
  • Its an Outbound map .. 

    Yes i am also confused as in why the map is not getting executed on the req resp port.. 

    Tuesday, June 14, 2016 12:49 PM
  • In addition to my earlier reply, is there any real need to promote MessageType property on the message? If you return a strongly-typed message (by creating an orch message of a schema type) from your orchestration you can avoid this, as then you will ensure that your orch is creating the correct output messageType. 

    If you are constructing the message using XmlDocument, assign that XmlDocument variable to your strongly-typed MessageType in the orchestration - the above issue should be avoidable with this approach.


    Thanks Arindam


    Tuesday, June 14, 2016 12:58 PM
    Moderator
  • I am using BizTalk 2013 R2 and have a direct bound Req Resp Port . I have a outbound map on the port and it is not getting executed. If I create a Static Port and subscribe to the same message the outbound map is getting executed , but same map is not getting executed on the req Resp port.

    "If I create a Static Port and subscribe" - do you mean you subscribe to the o/p dest msg? and is that working?

    What is the endpoint of the Req-Resp port actually doing? Can you shed some more details for instance, transport type, et. al

    Also, take the same message and test it in Visual studio. let us know your progress

    Tuesday, June 14, 2016 1:38 PM
  • HI,

    Why do you promote with a pipeline the message type? because the pipeline is I think executed after the map in an inbound operation.

    Try the following : 

    Track your messages, and visualize the message content and context before entering the Receive Port, and analyze its context, and verify the the MessageType exists and is pormoted.

    Regards,


    Reporting Solution for BizTalk | follow-us on twitter

    Tuesday, June 14, 2016 2:09 PM
  • Hi,

    I think only problem here is with your filter condition .

    When you work with direct bound ports in request response scenario, it is recommended to have a filter condition based on certain field .

    The best approach is to use correlation . You can use Correlation which can be initialized on send shape and put a filter condition on physical Request Response port based on Correlation set .

    You can go through a old article

    http://blogs.biztalk360.com/property-promotion-inside-orchestration/

    Thanks

    Abhishek


    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply


    Tuesday, June 14, 2016 2:35 PM
  • Thanks all for the reply .. Below are the details..

    I am promoting the messageType since i have untyped messages in the orchestration as i am using dynamic mapping .. 

    I am able to validate the output message with the map in visual studio.. below is the flow 

    ReqResp Port --(direct bound) Orchestration -- Orchestration Dymaic mapping and other logic -- Publish the XML Doc Type to messgae box along with other prperties used for routin back to req resp port---> req resp port --> outbound Map---> XML\Pass through pipeline --> out to soapui

    the entire flow works as expected except the outbound map is not getting executed ... I have the correct map ( verified 10 times) and corret message coming out.... 

    I created a static port with the subscription to this outbound message and the map was able to execute..

    Tuesday, June 14, 2016 2:52 PM
  • Simple Solution :

    Following are the steps :

    • Create a Property Schema in your solution .
    • Add a element to the property schema name it at routingElement .
    • In Orchestration have a message assignment shape before send shape
    • Have a below expression in MessageAssignmentShape
    SndMessage(SampleSolution.routingElement) = "MySampleService" 

    • Create A correlation type and set  of routingElement
    • Initialize Correlation on your send shape
    • Use SampleSolution.routingElement = MySampleService as Filter condition

    Check for the outgoing subscription  routingElement should be promoted in message context property . 


    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply

    Tuesday, June 14, 2016 3:04 PM
  • Sorry i did not understand why i need to sue a routing schema for this .. I need to promote the below properties for my request response port to subscribe it back which is working .. 

    I am assignign these in message assignment and am using a correlation set to promote these .. I also included MessageType to see that the map gets executed which is not working..

    BTS.RouteDirectToTP)

    BTS.ReqRespTransmitPipelineID)
    BTS.CorrelationToken) 
    (BTS.IsRequestResponse) 

    Tuesday, June 14, 2016 3:48 PM
  • Hi ,

    Have you validated the subscription for your send port and the context of the suspended message ?

    The main issue is when you publish message from Orchestration to message box,it does not contain the exact subscription context properties for your send port to subscribe the message .

    The easy way is to promote the context property on outgoing message and put the filter condition based on promoted property .

    Thanks

    Abhishek


    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply

    Wednesday, June 15, 2016 4:11 PM
  • sorry it took a while getting back on this. couple of things here worth noting -

    "ReqResp Port --(direct bound) Orchestration -- Orchestration Dymaic mapping and other logic -- Publish the XML Doc Type to messgae box along with other prperties used for routin back to req resp port---> req resp port --> outbound Map---> XML\Pass through pipeline --> out to soapui"-

    1. ReqResp Port --(direct bound) Orchestration --

    can you try once with 'Specify later'  port and do it the usual way to check what is the difference.

    2. Publish the XML Doc Type to messgae box --

    are you using untyped message here? when you are publishing back with the context, is that original context props that came in. Try that once

    mostly, it seems like your default correlation (from bts adapter) is getting lost and your msg is not able to correlate back. As far as using another static SP with subscription goes - it makes sense because since the msg is getting completed through your orch and all. however, this does not gurantee that it is actually getting correlated back to original Req-Resp port. Do you get where I am going with this....let us know your progress. I would try #1 as a first step

    Thursday, June 16, 2016 7:44 PM