BizTalk Bootcamp - Day 3b Diary: Nuggets (Orchestrations)
Continued from http://dotnet.org.za/willy/archive/2008/05/14/biztalk-bootcamp-day-3a-diary-nuggets-lab.aspx. We continued with Orchestrations.
After today my brain really hurts suffering from absolute information overload with John not slowing down throughout the day ... anyway here we go with the notes on the theory and an orchestration lab:
Orchestration Theory
Orchestration Types
Types include:
- Message Type, defining messages used by the process
- Port Type, defining port operations used across multiple ports
- Correlation Type, which defines the routing mechanism and dispatching of messages
- Role Link Type (aka Service Link), defining logically consistent group of ports
- Orchestration Variables, which are instances of types
BizTalk Host
- Represents runtime processes into which we deploy services, pipelines, etc.
- One host can have one or more instances
- There is a limit of 20 threads per host
- Multiple hosts are useful to:
- Separate receive, processing (orchestration), sending
- Define different host identities needed
Orchestration Persistence Points
Defines points within an orchestration where persistence is written out to the MessageBox.
Deterministic persistence points occur with:
- Send shape within a non-atomic scope
- At the end of each transactional scope
- When starting a new orchestration instance
- At debug break points
- At system shutdown
- With Orchestration dehydration
Immutability
- Messages received by an orchestration are immutable, which means that a new message must be created when changes are needed.
- Changes to messages can only be done within construct shapes.
Scope
- Scope is a framework for organising actions, acts as a container for variables and is used for exception handling. IN fact, if you know C#, you can relate the orchestration scope with the {}.
- Scopes can be nested up to 44 levels deep.
Correlation
Correlation is a messaging pattern matching incoming messages to the appropriate orchestration instance.
Transactions
BizTalk orchestrations support:
- Atomic transactions which are ACID (atomic, consistent, isolated, durable)
- Long running transactions which are CD (consistent, durable)
The following extracts shows the properties of the transactions for none, long running and atomic:
Orchestration Lab
Scenario
Serial uniform convoy that will gather all received messages into a single variable. You will then execute the XmlAssembler send pipeline component to create a single aggregated message.
Main Steps
- Build a serial convoy that will correlate line item messages by supplier information
- Create Orchestration AggAggregateOrders
- Create Orchestration Variables
- Create Orchestration Messages
- Create a Property Schema for Supplier Correlation
- Design a Uniform Convoy
- Configure the orchestration to collect multiple messages, and then send the messages to a pipeline, which will create a single aggregate message.
- Reference the Pipeline Assembly
- Define the Orchestration Process
- Call a Pipeline from the Orchestration
- Configure the AggregateOrders orchestration to receive XML messages from LineItemsIn and send the results to the SupplierOrdersOut folder.
Illustration - Orchestration

Illustration - Send Pipeline
Schemas
Schema - Supplier Correlation Property Schema
Schema - Line Item
Note that supplier element has been promoted to the property schema.
Input Message Example
Output Message Example
Well, it is 3AM ... need some sleep before John starts the next Tsunami of information.