none
SQL Port Error due to Blank Xml Biztalk Orchestration RRS feed

  • Question

  • HI All..

    I have query regarding Biztalk Orchestration ...i have developed Biztalk solution in which i invoke SAP RFC to get data and that data i need to insert in SQL table..if suppose in RFC table there is no data then blank xml will go to fire SQL stored procedure...now if blank xml will to SQL port, the request xml will go in suspend mode as Stored Procedure expects parament @a,@b

    Error i am getting is :

     

    There was a failure executing the response(receive) pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "XML disassembler" Send Port: "SendPort_SQL_Hiring_PersonToPos" URI: "SQL://XYZ/DB01/" Reason: The body part is NULL.

     

    Pls provide me with the solution...as this Biztalk Solution is getting into production server

     

     

    Thanks

    Sandeep

     

    Thursday, December 4, 2008 10:13 AM

All replies

  •  

    You can create a new message out of the input XML that you get (with empty data for the nodes what want to be populated) using a ConstructMessage and MessageAssignment Shapes. Before doing this, you need to promote the properties that you want to set.
     
    Let us say you get a input XML like this:
     
    <ns0Big Smileata xmlns:ns0="http://ChangeMessageDatainOrchestration.SimpleSchema">
    <v_int></v_int>
     <v_char></v_char>
    </ns0Big Smileata>
     
    1) promote the properties that you want to set (In above v_int and v_char)
    2) You can create a new message for the same schema
    3) Add a Construct Message Shape after you receive the input message
    4) add a Message Assignment Shape inside the Construct Message Shape
    5) Set the Expression value to

    outMessage = inMessage;

    outMessage(ChangeMessageDatainOrchestration.v_char) = "Data";

    outMessage(ChangeMessageDatainOrchestration.v_int) = 12;

     

    This will emit a output XML :

    <?xml version="1.0" encoding="utf-8"?><ns0Big Smileata xmlns:ns0="http://ChangeMessageDatainOrchestration.SimpleSchema">
    <v_int>12</v_int>
     <v_char>Data</v_char>
    </ns0Big Smileata>

     

    The above XML has all valid data.

     

    Let me know if this serves your purpose

     

     

    Friday, December 5, 2008 5:51 AM
  • Hi Abhinav..

    Thanks for your reply..ya we can construct the message but the Xml i am getting from SAP RFC if no data is there in RFC table is somewhat like..

     

    <ns0:Z_BC_H_FETCH_Response xmlns:ns0="http://schemas.microsoft.com/BizTalk/2003">
             
     </ns0:Z_BC_H_FETCH_Response>

    Then i am using transform shape so that i can able to send this xml to SQL port..as we can see no tags are there so Xml won't validate aganist schema and i get error as mentioned above....

    Also inserting default data is not acceptable to client..as crucial data is going to SQL table..

    I am also thinking why not we restrict the xml going further when we get response of SAP RFC if it is Blank Xml..

     

    Pls Advice..

    Thanks

    Sandeep

    Friday, December 5, 2008 6:40 AM
  • If you are not going to do anything with the blank XMl then it's fine to restrict the XML going forward. You can have a decision shape and there you can check for the existence of some property and take necessary action (Of course you need to promote the properties before you do this)
    • Proposed as answer by edhickey Monday, December 22, 2008 11:00 PM
    Friday, December 5, 2008 8:25 AM