Search code examples
biztalkbiztalk-orchestrations

Should I use BizTalk Orchestration


I am currently in the process of porting an existing application (BizTalk 2004) to a newer version of BizTalk. The current solution takes multiple types of EDI documents, modifies it if its necessary and sends it to our legacy system to be loaded and processed.

This process is developed using a combination of Receive Ports, Pipeline component, Send Ports and Maps, Schema and Message Queue Components. This solution uses 10 send & receive ports to handle various aspects of the process such as Bursting EDI into individual messages, Transforming Messages, Error handling, EDI Validation and Batching of EDI Messages. All the modification of EDI is done using Message Queue Components.

This solution does NOT use orchestration at all. I am considering implementing the current solution as a BizTalk orchestration. I have read up a bit on orchestrations and worked through few sample applications. But I am still very confused over what benefit of using orchestration, if a solution can be developed without it. I am sure I am missing something here. What additional benefit orchestration gives that the current solution does not?

Edit:...I should clarify the question...I can do this app without using Orchestration using content based routing & maps. My question is, if I am missing something by not using Orchestration?


Solution

  • If you can perform your task at hand with message based routing, an orchestration is overkill.
    Orchestrations will help you with calling rules, or handling transactions. The following points can help you decide whether to use orchestration or not:

    1. Is the handling Transactional
    2. Is ordering of messages important
    3. Are you going to process the message using business rules
    4. Do you have to call external assemblies

    A quote from "Microsoft BizTalk Server Pattern"

    Orchestrations come at a considerable cost. Many of these costs manifest themselves as roundtrips to the messagebox, which means crossing a process boundary and writing to and reading from a database -the messagebox

    An orchestration can potentially take twice as long for the same process. For example: A simple process of receiving a message and sending it will make 2 message hops with the messaging approach vs 4 with the orchestration. Here are the steps for a messaging only solution

    1. Receive the message via the adapter save it to the message box
    2. Retrieve the message for the send port

    vs:

    Steps for Orchestration approach

    1. Receive the message via the adapter and save it to the message box
    2. Retrieve the message to start the orchestration
    3. Do your mapping if you need to
    4. Retrieve the item again for the send port.

    Choose wisely