locked
The published message could not be routed RRS feed

  • Question

  • Hi All,

    I have a custom recieve pipeline that archives received files to a network location.  I have verified that this pipeline works by setting a simple message routing using a recieve port and send port with a filter.

    When I try to use this recieve pipeline with an orchestration, I am getting the error "published message could not be routed because no subscribers were found".  What I am trying to accomplish is:

    1.  Receive a file (xml file representing an order).

    2.  Archive the file using the recieve pipeline.

    3.  Process the order using the orchestration.

    If I change the receive pipeline to "XMLRecieve", the message gets routed to the orchestration and everything works.  Am I missing something? 

    Thanks.

    Monday, March 26, 2012 6:54 PM

Answers

  • Hi,

    I think within your custom pipeline you will have to promote the message type:

    yourMessage.Context.Promote("MessageType", "http://schemas.microsoft.com/BizTalk/2003/system-properties", xmlDoc.DocumentElement.NamespaceURI + "#" + xmlDoc.DocumentElement.LocalName.ToString());

    You have to promote MessageType in order for  Biztalk to have a unique key for evaluating the subscription.

    HTH

    Steef-Jan Wiggers

    MVP & MCTS BizTalk Server 2010

    http://soa-thoughts.blogspot.com/ | @SteefJan

    If this answers your question please mark it accordingly

    BizTalk Server 2010 Cookbook



    BizTalk


    Monday, March 26, 2012 8:02 PM
    Moderator
  • When you are using Send port the subscription is the Receive Port name. It is not good test for the Orchestration subscription.

    Usually subscription in orch includes the MessageType. Your receive pipeline definitely doing something unusuall with MessageType because XMLReceive works fine. XMLReceive promotes MessageType which then is used in subscription successfully.

    So change the subscription in SendPort to the MessageType and test again.


    Leonid Ganeline [BizTalk MVP] BizTalkien: Advanced Questions: have fun - test your knowledge

    Monday, March 26, 2012 9:04 PM
    Moderator
  • How you are binding the orchestration to your message?

    • Try to edit the orchestration, set the filter property on the receive shape of the orchestration with the message type of your input xml message. e.g. BTS.MessageType=rootname#targetnamespace
    • Refer Using Filters With the Receive Message Shape  article for more details about setting the filter property in orchestration

    I hope it helps!


    HTH,
    Naushad Alam

    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer
    alamnaushad.wordpress.com |

    My new TechNet Wiki "BizTalk Server: Performance Tuning & Optimization"

    Monday, March 26, 2012 6:59 PM
    Moderator
  • If your custom pipeline component is not in the disassembler stage, simply include the XML disassembler in your custom pipeline.  This will allow all BizTalk related properties to be written and promoted to the message context, and they will be available in the orchestration.

    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.

    Monday, March 26, 2012 8:55 PM

All replies

  • How you are binding the orchestration to your message?

    • Try to edit the orchestration, set the filter property on the receive shape of the orchestration with the message type of your input xml message. e.g. BTS.MessageType=rootname#targetnamespace
    • Refer Using Filters With the Receive Message Shape  article for more details about setting the filter property in orchestration

    I hope it helps!


    HTH,
    Naushad Alam

    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer
    alamnaushad.wordpress.com |

    My new TechNet Wiki "BizTalk Server: Performance Tuning & Optimization"

    Monday, March 26, 2012 6:59 PM
    Moderator
  • Another option would be 

    • Open Admin Console
    • Go to the orchestration select the binding properties
    • In the receive port , select the receive port which you are using to pick your xml files

    HTH,
    Naushad Alam

    When you see answers and helpful posts, please click Vote As Helpful, Propose As Answer, and/or Mark As Answer
    alamnaushad.wordpress.com |

    My new TechNet Wiki "BizTalk Server: Performance Tuning & Optimization"

    Monday, March 26, 2012 7:02 PM
    Moderator
  • Naushad is pointing you in right direction.

    You can check the value promoted in the context of the suspended message and can then change the subscription for the orchestration. You can get all these details in this blog post.


    Please mark the post answered your question as answer, and mark other helpful posts as helpful, it'll help other users who are visiting your thread for the similar problem, Regards -Rohit Sharma (http://rohitt-sharma.blogspot.com/)

    Monday, March 26, 2012 7:20 PM
    Moderator
  • Hi,

    I think within your custom pipeline you will have to promote the message type:

    yourMessage.Context.Promote("MessageType", "http://schemas.microsoft.com/BizTalk/2003/system-properties", xmlDoc.DocumentElement.NamespaceURI + "#" + xmlDoc.DocumentElement.LocalName.ToString());

    You have to promote MessageType in order for  Biztalk to have a unique key for evaluating the subscription.

    HTH

    Steef-Jan Wiggers

    MVP & MCTS BizTalk Server 2010

    http://soa-thoughts.blogspot.com/ | @SteefJan

    If this answers your question please mark it accordingly

    BizTalk Server 2010 Cookbook



    BizTalk


    Monday, March 26, 2012 8:02 PM
    Moderator
  • If your custom pipeline component is not in the disassembler stage, simply include the XML disassembler in your custom pipeline.  This will allow all BizTalk related properties to be written and promoted to the message context, and they will be available in the orchestration.

    David Downing... If this answers your question, please Mark as the Answer. If this post is helpful, please vote as helpful.

    Monday, March 26, 2012 8:55 PM
  • When you are using Send port the subscription is the Receive Port name. It is not good test for the Orchestration subscription.

    Usually subscription in orch includes the MessageType. Your receive pipeline definitely doing something unusuall with MessageType because XMLReceive works fine. XMLReceive promotes MessageType which then is used in subscription successfully.

    So change the subscription in SendPort to the MessageType and test again.


    Leonid Ganeline [BizTalk MVP] BizTalkien: Advanced Questions: have fun - test your knowledge

    Monday, March 26, 2012 9:04 PM
    Moderator
  • Hi,

    I agree with David here. You need to add a XML disassembler component in your custom pipeline.

    This will promote the default properties like messagetype in the msg context (This is done by XML Disassembler component). As you are replacing the XMLReceive pipeline there should be some equivalent component in your pipeline for replacing same functionality.

    Other option would be to promote the required properties as suggested bt Steef-Jan within your component in that case you need not have the XML disassembler component.


    Thanks With Regards,
    Shailesh Kawade
    MCTS BizTalk Server
    Please Mark This As Answer If This Helps You.
    http://shaileshbiztalk.blogspot.com/

    Tuesday, March 27, 2012 5:50 AM