none
Need access to EDI message when sending without calling EDISend in Orchestration RRS feed

  • Question

  • I am building a EDI XML message in an orcheatration. I can use a port with EDISend pipeline that will convert XML to EDI and send the EDI message to the other system. I have a requirement to send the EDI message to image server for archiving before sending the EDI message to the other system. The image needs to be archived with a reserved image id which I have stored in the context.

     

    1. Microsoft officially does not support calling EDI pipeline in Orchestration. Just for fun, I tried it and it works. I would prefer not to go this route.

    2. Create a custom pipeline component that will call a wcf service to image the EDI message. I can then build a custom pipeline with EDIAssembler component and my custom pipeline component after it. I heard calling wcf services from pipeline components is strongly discouraged.

    3. I have read through other questions on this forum where it was suggested to use a send port to file using EDISend to generate EDI message and use a receive port with passthrough pipeline to take the file back in to the Orchestration. I am not able to figure out a way how this can be achieved. The Orchestration instance that generates the EDI message through the send port to a file, the EDI file needs to be sent to the same orchestration instance. And I am not able to figure out the properties to include in the correlation. If the EDI message can retrieved in the Orchestration, then I can call the image server for imaging.

     

    Any other suggestions?

     

    Thank you.

     

    Monday, May 2, 2011 7:29 PM

Answers

  • The loopback adapter is a very old approach here so I would stay away from it and I have not heard of anyone updating the code. There are other mechanisms that can be used instead.

    Splitting up the process into 2 steps is what you should do.

    Thanks,

     


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    Thursday, May 5, 2011 2:07 PM
    Moderator

All replies

  • I would suggest using a custom pipeline component that executes after EdiSend in your custom pipeline and have it log the message to a folder for another process (maybe Windows Service) to pick up an handle the archiving. If you do not want to call a WCF service in the pipeline this would be an alternate approach.

    For your 3 options,

    1. Interesting you tried. There are probably other impacts of doing this that is why this is not supported.

    2. You might also look at what is possible with the ESB Toolkit components, these provide a lot of additional flexibility.

    3. The correlation/EDI parsing is difficult due to the way the EDI messages are processed. I would try to avoid this if possible, it could be too difficult to maintain. I would break up the process into 2 steps rather than 1 orchestration if possible. Maybe 1 orchestration and then 1 custom pipeline with a couple custom components.

    Thanks,


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    Tuesday, May 3, 2011 3:00 AM
    Moderator
  • Thanks for the reply.

     

    Since we are just starting to use BizTalk at our company, ESB Toolkit is not an option right now. We would like to get some experience with BizTalk in production before introducing ESB Toolkit.

     

    In custom pipeline component, how can I call a wcf service. Do you example or links to help me.

    Without adding a service reference in studio, I can create a proxy client using svcutil and add it to the solution. What about configuration in app.config. I was thinking in the direction of not adding the config to BTSNTsvc.exe.config. How about providing a per instance property where the user can provide the config for it. Then use that config to dynamically create a proxy and call wcf service. Thoughts or ideas?

     

    Loopback adapter would be a great choice for my situation. The loopback adapter I found is for previous version of BizTalk. Without the code, I cannot confidently use it in our environment. Hopefully in the near future, I can be given some time to create it, since this scenario is going to occur in many projects.

     

    Tuesday, May 3, 2011 2:05 PM
  • Another option will be to send the XML from your orchestration to Message Box using Direct binding and create 2 send ports that subscribe to the XML with EDI send pipeline. First send port to archive the EDI file and another to send the EDI message to your other system.

    Sathish - http://blog.tsathish.com - Please Indicate "Mark as Answer" if this Post has Answered the Question
    Thursday, May 5, 2011 3:25 AM
  • The loopback adapter is a very old approach here so I would stay away from it and I have not heard of anyone updating the code. There are other mechanisms that can be used instead.

    Splitting up the process into 2 steps is what you should do.

    Thanks,

     


    If this answers your question, please use the "Answer" button to say so | Ben Cline
    Thursday, May 5, 2011 2:07 PM
    Moderator
  • Hi Anantapur,

    I would like to execute an EDI pipeline in an orchestration, but I always get the error “Microsoft.BizTalk.Edi.DefaultPipelines.EdiSend”. Error details: “Specified method is not supported.”. What I do is more or less the same as you can find in this post (http://blog.tallan.com/2011/01/14/calling-edi-pipelines-from-orchestrations/).

    You said you executed an EDI pipeline in an orchestration, right? Which steps did you do in order to execute an EDI pipeline in an orchestration?

    Thanks you in advance.

    Monday, September 12, 2011 8:20 AM
  • Executing a EDI Send pipeline component in an orchestration is not supported. Look at the note in this article.


    Cheers,
    Bali
    MCTS: BizTalk Server 2010,BizTalk Server 2006 and WCF
    Blog: http://dpsbali-biztalkweblog.blogspot.com
    -----------------------------------------------------
    Mark As Answer or Vote As Helpful if this helps.
    Monday, September 12, 2011 10:00 AM