none
I am trying to save a copy of the incoming 850 EDI and keep getting "Unable to read the stream produced by the pipeline." Thoughts??? RRS feed

  • Question

  • We have a BizTalk 2010 environment which is running fine. We receive EDI 850s via AS2, process them in various orchestrations and send back the 855 via AS2. What I am trying to do is save a copy of the incoming 850 so I have it for reference should I need it. We have an orchestration that takes the incoming 850 and captures the GS02 value. What I did was add a second send port to the orchestration and then tied that send port to a new send part in my BizTalk Server Administration Console. That send port uses the EDI Send pipeline to send a file to a folder I set up for 850 copies.

    Like I mentioned, the overall flow of our process works fine, except for this send port. It doesnt fail every time, but it fails 95% of the time. When it fails, I get the error "Unable to read the stream produced by the pipeline" with various field level errors. I am guessing it is doing some kind of EDI validation which is failing and suspending the message. The few that actually do make it to the copy folder just must pass the validation.

    In my send port I have tried tweaking the settings in the EDI Send pipeline - turning EDIDataValidation off and turning on AllowTrailingDelimiters. Still fails.

    Any ideas how I can just get it to not error out?

    Am I missing something and is there a much easier way to just take a copy of the incoming EDI via AS2 and save it as a file in a folder?

    Wednesday, July 18, 2012 4:06 PM

Answers

  • This will be trickier because the routing from a receive port happens after disassembly (normalization to XML).  I can think of 3 possibilities:

    1. Use the tracking feature of EDI which I believe will allow the native message to be tracked (I can't answer this definitively, so you will need to determine if this is possible).
    2. Create a custom pipeline component that executes after the AS2 decoder that simply dumps the message to a file (I may have a template custom pipeline component that can easily be modified to accomplish this).
    3. Execute the AS2 Decode separately from the EDI using two receive pipelines (this could be problematic, but should be possible).

    Others on this forum may have additional suggestions.

    Let me know if you would like any additional information or the sample custom pipeline component.


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

    Friday, July 20, 2012 5:15 PM

All replies

  • You might be able to send the 850 copies without routing them through the orchestration.  Try creating a filter on your file send port of "BTS.ReceivePortName" = <receive port name>.

    You should be able to do this without changing your existing deployment just to see if it works.  Create a new send port for testing.


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


    Thursday, July 19, 2012 2:34 PM
  • This might be done by saving/archiving the incoming message(EDI here) even before EDI Disassembler processes the message.
    You can do this by placing the  message archive PC as first component in your custom pipeline.

    Thanks
    Bhava

    Thursday, July 19, 2012 10:51 PM
  • You might be able to send the 850 copies without routing them through the orchestration.  Try creating a filter on your file send port of "BTS.ReceivePortName" = <receive port name>.

    You should be able to do this without changing your existing deployment just to see if it works.  Create a new send port for testing.


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



    I have tried this. When I do, it gets suspended with the same errors (EDI validation)
    Friday, July 20, 2012 2:15 PM
  • In your new send port (assuming FILE) did you get an output message?

    Look at the content of the suspended message body and message context.  If possible can you include the message context in your post.


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

    Friday, July 20, 2012 2:26 PM
  • I have also tried using a PassThruTransmit Pipeline. That never errors out, however the file is creates is in XML format... I need it in the original EDI format.
    Friday, July 20, 2012 4:30 PM
  • This will be trickier because the routing from a receive port happens after disassembly (normalization to XML).  I can think of 3 possibilities:

    1. Use the tracking feature of EDI which I believe will allow the native message to be tracked (I can't answer this definitively, so you will need to determine if this is possible).
    2. Create a custom pipeline component that executes after the AS2 decoder that simply dumps the message to a file (I may have a template custom pipeline component that can easily be modified to accomplish this).
    3. Execute the AS2 Decode separately from the EDI using two receive pipelines (this could be problematic, but should be possible).

    Others on this forum may have additional suggestions.

    Let me know if you would like any additional information or the sample custom pipeline component.


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

    Friday, July 20, 2012 5:15 PM