none
Error executing EdiSend Pipeline using WFC-Custom for Oracle and Stored Proc RRS feed

  • Question

  • Text of error:

    A message sent to adapter "FILE" on send port "S2KAES601ProcOut" with URI "C:\CFData\MsgTo\USCustoms\EDI601\CFS2KProc.USC.601%MessageID%.edi" is suspended.
     Error details: There was a failure executing the send pipeline: "Microsoft.BizTalk.Edi.DefaultPipelines.EdiSend, Microsoft.BizTalk.Edi.EdiPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "EDI Assembler" Send Port: "S2KAES601ProcOut" URI: "C:\CFData\MsgTo\USCustoms\EDI601\CFS2KProc.USC.601%MessageID%.edi" Reason: A message was encountered with root element name of BZT_CREATEUSC601. It could not be classified as an X12 or Edifact message. The root namespace was http://Microsoft.LobServices.OracleDB/2007/03/S2KDBA/PollingProcedure 

    BizTalk (2010, VS 2010, running on win 2008 R2 server) set up.

    Receive port - no maps, no authentication, static one-way; Receive location WCF-Custom, PassThruReceive PipeLine. Adapter is configured to poll (URI = oracledb://pulplocal) PolledDataAvailableStatement:

     select count(ie.export_invoice_id) from s2kdba.invoice_export ie, s2kdba.invoice i where ie.aes_status = 'SEND TO AES' and  i.invoice_id = ie.export_invoice_id and i.invoice_category = 'ORIGINAL' and  ie.sed_transport_mode <> 'AIR'

    pollingAction:

    http://Microsoft.LobServices.OracleDB/2007/03/S2KDBA/PollingProcedure/BZT_CREATEUSC601

    pollingStatement:

     <BZT_CREATEUSC601
    xmlns="http://Microsoft.LobServices.OracleDB/2007/03/S2KDBA/Procedure">
    </BZT_CREATEUSC601>

    There is a corresponding static, one-way send port subscribing to this receive port (plus an extra send port just to save the xml from the receive port)

    Send port is a file type subscribing to the receive port. Send pipeline is EdiSend. The Outbound Map is a map connecting the Schema for the stored procedure to the EDI X12_00405_601 schema. The map tests fine with validation turned off when I use the xml from the receive Port  - I can generate the EDI 601 file (sans ISA header of course)

    xml snippet:

    <BZT_CREATEUSC601 xmlns="http://Microsoft.LobServices.OracleDB/2007/03/S2KDBA/PollingProcedure">

    <REC_601_DATA><REC_601_DATARECORD xmlns="http://Microsoft.LobServices.OracleDB/2007/03/S2KDBA/Procedure/BZT_CREATEUSC601">

    If we use an Oracle package and create a schema it works fine but with the stored procedure by itself it pretty much ignores the map.

    Anyone have any suggestions? Thanks

     


    Harold Rosenkrans
    Friday, June 17, 2011 5:33 PM

Answers

  • Thanks Ben - Actually, it turned out to be a bone-headed error. I had configured the receive port to be pass through transmit instead of XML transmit. As soon as I changed that configuration everything went through as desired. At least I know what the error was trying to tell me now :>)
    Harold Rosenkrans
    • Marked as answer by Hal Rose Friday, June 24, 2011 4:52 PM
    Friday, June 24, 2011 4:52 PM

All replies

  • Hi, Hal

    Is it the only one message that will generate this error?

    ->"Reason: A message was encountered with root element name of BZT_CREATEUSC601. It could not be classified as an X12 or Edifact message. The root namespace washttp://Microsoft.LobServices.OracleDB/2007/03/S2KDBA/PollingProcedure "
    Have you checked this.

    Regards
    MSDN Community Support
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    This posting is provided "AS IS" with no warranties, and confers no rights. My Blog: http://xhinker.com
    Microsoft Windows Workflow Foundation 4.0 Cookbook
    Monday, June 20, 2011 6:19 AM
    Moderator
  • My collegue is also developing against the Oracle WCF adapter and he get the same error calling stored procedures (he happens to be working on an EDI 300 doc right now).

    So in Visual Studio 2010 we create the schema by using the add generated items wizard, we connect to the database, select the procedure (inbound service because we are using the polling on the receive port/location) and the schema gets generated. Then we create the map using the polling procedure schema generated. We then set up the receive port and location and then a send port. The send port subscribes to the receive port. So what happens is that the polling query (it is querying for a count of eligible records) sees there are records ready to process, fires the polling action (the stored procedure) and passes-through the xml coming from the adapter (the returned record set from the stored procedure - strongly typed reference cursor) the send port has an outbound map (and we configured an extra send port to save the xml as a file for testing purposes).

    We can supply the xml (returned from the calling the stored procedure through the WCF adapter) to the map and it succeeds. We have tested the map ouputting xml and native (The actual EDI document stuff).

    But the error occurs in the edi send pipeline. It acts like the map isn't being invoked. The way I understand this works on the Send port is that the receive port gets the message (the xml from the adapter). The send port has subscribed to the message and then applies the outbound map to the xml and sends that result to the edi send pipeline.

    Does that help? I think you were asking if only my message from the stored procedure was causing the error. and my answer is that other messages cause the same error.

    Thanks, I hope I have provided sufficient information so you can provide some insight into my issue. Please feel free to ask additional questions.


    Harold Rosenkrans
    Monday, June 20, 2011 6:21 PM
  • Yes, the map is not invoked in the order you are expecting. I think the outbound map executes last, after the send pipeline. You could move it to an orchestration so it executes after the EdiReceive. The inbound map requires the use of XmlReceive so you could not use it and EdiReceive.

    Or you could use the ESB toolkit and execute the ESB dispatcher component in a custom receive pipeline, This component can take the map type details and process this before hitting the messageBox for routing to the send port. Here is an article on this: http://msdn.microsoft.com/en-us/library/ee250024(v=BTS.10).aspx.

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline

    Friday, June 24, 2011 1:17 AM
    Moderator
  • Thanks Ben - Actually, it turned out to be a bone-headed error. I had configured the receive port to be pass through transmit instead of XML transmit. As soon as I changed that configuration everything went through as desired. At least I know what the error was trying to tell me now :>)
    Harold Rosenkrans
    • Marked as answer by Hal Rose Friday, June 24, 2011 4:52 PM
    Friday, June 24, 2011 4:52 PM