Orchestration Questions & Answers

What change will require on send port action when communication to SQL or SOAP web service from orchestration

Operation Name in orchestration port is replace with operation name on send port

e.g. <BtsActionMapping> <Operation Name=”Op1″ Action=”TableOp/Insert/dbo/Employee” /> <Operation Name=”Op2″ Action=”TableOp/Update/dbo/Employee” /> </BtsActionMapping>

Types of scopes in orchestration and what are the deference among them

The scope shape provides access to an exception handler that can be used to deal with exceptions. An Orchestration Scope shape can be configured with a transaction type

  • None (Default)
  • Atomic
  • Long Running

Difference between Atomic & Long Running scopes:

Atomic ScopeLong Running scope
Atomic support ACID properties-Atomicity, Consistency, Isolation, DurabilityLong running supports only Consistancy and Durability- No automatically roll back
calling non-serializable .net call or Dllscalling serializable .net call or Dlls. It doesn’t support non-serializable
Doesn’t support nesting of transactionsSupports nesting of transactions
can have only compensation blocksCan have both exception & compensation blocks
Short execution timelong execution time
Managed via MSDTCNo transaction manager required

What is binding and types of binding?

A port binding is the configuration information that determines where and how a message will be sent or received. Depending on its type, a port binding might refer to physical locations, pipelines, or other orchestrations.

There are three types of port binding for ports that receive messages:

  • Specify now
  • Specify later
  • Direct

There are four types of port binding for ports that send messages:

  • Specify now
  • Specify later
  • Direct
  • Dynamic

Click here for more details of bindings

What is the difference between static, dynamic and direct binding?

  • Static binding specifies particular port address,
  • Dynamic gives address of the port at runtime,
  • Direct binding sends messages to messagebox.

What is XLANG and where it is used?

XLANG/s can be viewed as a messaging language with some of the expression capabilities of C#. However, code is not portable between XLANG/s and C#. The language is used for orchestrations. XLANG/s statements generally fall into one of two categories: simple statements that act on their own, such as receive or send, and complex statements that contain or group either simple statements or other complex statements, such as scope, parallel, and listen. The semantics embodied in XLANG/s are a reflection of those defined in the Business Process Execution Language for Web Services (BPEL4WS) specification published by Microsoft, IBM, and BEA for the definition of business process semantics.

What is persistence point?

At various points within a running orchestration the state can persist. Persistence points are those points in the orchestration that save the orchestration state to the database. the less Persistence point you have in your orchestration the more efficient it works. Each persistence point hits the database to store the current instance state. Click here for more details.

Which scope can have an Exception Handling?

A scope configured with the transaction type of None or Long running can have exception handling added but not Atomic scope.

Is it possible to get an exception object from General Exception?

No. General exception in BizTalk is like writing a Try-Catch block but without the exception object thus not possible to get the exception object.

What’s the main difference between Call and Start Orchestration?

Call Orchestrations:

The Call Orchestration shape can be used to synchronously call an orchestration that is referenced in another project. This allows for reuse of common orchestration workflow patterns across BizTalk projects. When you invoke another nested orchestration synchronously with the Call Orchestration shape the enclosing orchestration waits for the nested orchestration to finish before continuing.

Start Orchestration

You use the this shape to invoke another orchestration—that is, the flow of control in the invoking orchestration proceeds beyond the invocation, without waiting for the invoked orchestration to finish its work.

Call OrchestrationStart Orchestration
Calling an orchestration will use the same thread to run another orchestrationStart Orchestration will create a new thread to run the started orchestration
A Call Orchestration returns the control back to the callerStart Orchestration shape starts the orchestration in a non-deterministic way.
Calling an Orchestration will be synchronous operation where the caller waits for a responseStart Orchestration is asynchronous operation
Will reduce latency as call orchestration doesn’t go via MessageBoxWill increase latency as start orchestration call goes via MessageBox
Possible to pass all types of parametersPossible to pass all types of parameters. No return param is supported

Difference between Listen shape & Parallel shape

Parallel Action shape is used for a AND situation whereas Listen shape is used for OR situation.

Parallel Shape: This shape is used to execute multiple flows paralleled in the orchestration

Parallel shape in BizTalk is NOT used for concurrent processing. The Parallel shape enables you to complete different stages of business process without having to wait for another part of the business process to complete. It does not provide a separate thread per branch.

When we drop a file at receive location Orchestration in instantiated and when control reaches the parallel shape, it starts it execution from left to right i.e. the 1st expression shape runs firstly and then rest of them. Even if we insert delay shape after 1st expression shape the 2nd expression shape does not get starts.So therefore parallel shape is not about concurrent execution.

  1. The Parallel Actions shape does NOT mean you get any multi-threading execution environment.
  2. Think of the Parallel Actions shape as a way of letting multiple Business Activities happen and you don’t know in what order they will occur.
  3. The Delay shape does not use Thread.Sleep, but instead handles things internally.

Listen Shape: This shape is used to listen for a particular message based on Follow Correlation Set property. If the required message is received, it will continue for further process with in Listen block. We need to keep a receive shape in one side and Delay shape other side. If we don’t receive/listen the message with in the timeline mentioned in the delay shape then shapes which are mentioned under delay shape will be executed.

Define BizTalk Server Convoy and correlation sets.

BizTalk server detects the potential for specific race conditions, which ensures that all correlated messages are received by the same orchestration instance. The potentiality of these race conditions is sensed by BizTalk server. These messages are treated as a convoy. All such messages which match with the general subscription are evaluated against the convoy set and the matched convoys are routed through an existing port.

For more details and samples click the below links:

How to Promote Property inside an Orchestration?

The Orchestration cannot promote the properties to message context by default like pipelines can do by using the msg.Context.Promote() method. Inside Orchestration one has to create a correlation set and initialize that correlation set while publishing the message. Then the BizTalk Engine will promote the property to the message context.

List the persistent Points

The procedure of saving your running orchestration states ate certain point is called persistence. Orchestration Engine persist a running instance which is based on the design of orchestration. There are few events or stages which triggers the persistence operation called persistence points.

    Following is the list of persistent points:

  1. Orchestration instance is suspended or finished
  2. System shutdowns in a controlled manner
  3. Engine determines it want to dehydrate
  4. Atomic or long running transnational scope ends
  5. At debugging breakpoints
  6. Execution of other orchestrations through the start orchestration shape
  7. At the send shape.
  8. When the Orchestration Engine is shut down; through the controlled shutdown of the host or abnormal circumstances. The engine tries to persist but if that fails, the Orchestration instance will resume from the last successful persistence point.

Can persistence point occur in the Delay or Receive shape?

Yes, but only if the Orchestration Engine determines that the instance needs to be dehydrated.

What is Correlation in BizTalk servers?

An Orchestration can have more than one instance running simultaneously. Even though each of those multiple instances perform the same action, it does it on different data contained within a message. Correlation is a process of associating an incoming message with the appropriate instance of an orchestration.

For Example: If your orchestration issues a purchase order, receives an invoice, and sends a payment, the developer must make certain that the invoice message is received by the orchestration instance which corresponds to the orchestration that sent the Purchase Order. Without correlation, it would be possible to send out an invoice for thousands of items even though the purchase order is for one. Click here to setup correlation

What is a business Orchestration Dehydration and Re-hydration Process?

Dehydration is a situation when the orchestration has been idle for a while, the orchestration engine will save the state information of the instance and free up memory resources

Rehydration is a message when received or else when a timeout has expired, the orchestration engine can be automatically triggered to rehydrate the instance – it is that point that the orchestration engine loads the saved instance of the orchestration into memory, restores the state and runs it’s from the point it left off.

What is atomic Transaction?

It follows full ACID properties Atomicity, Consistency, Isolation and Durability. If you require full ACID properties on the data—for example, when the data must be isolated from other transactions—you must use atomic transactions exclusively. When an atomic transaction fails, all states are reset as if the orchestration instance never entered the scope. There is no catch block in atomic scope. there is compensation block to redirect the message in case of failed.

What is long running transaction?

Long running transaction support CD (Consistency & Durability) properties of ACID. It is not practical to lock transaction for a long time. This transaction can run indefinitely and can be dehydrated also.

How do you call a .Net helper class inside orchestration

Click here for details

How do you call a Non-Serializable .Net helper class inside an Expression Shape?

  • Add a reference to that class.
  • Make sure your Orchestration is Long Running transnational.
  • Add an Atomic scope.
  • Create an Orchestration variable of that class inside the scope.
  • Create an instance on that object inside the scope.
  • Call the method.
  • Note: Mention the class must be strongly signed and in the GAC.

What is the difference between a “Message Assignment” shape and an “Expression” shape?

A “Message Assignment” shape is used to create a new message and assign values to it. A Expression shape is used to assign values to variables and also write ‘if’ conditions.

How to handle Delivery Failures? or How do you ensure that a message is delivered to the destination?

Delivery Notifications: It is a property which is set to indicate that the Send Port adapter will send delivery notification back to the orchestration to indicate the successful transmission of a message.

BizTalk has the ability to automatically publish positive acknowledgments (ACK) when it has succeeded transmitting a message or negative acknowledgments (NACK) in case of a transmission failure. Orchestrations can use delivery notifications to subscribe to those ACKs and NACKs in order to know if a message sent on a one-way send port has been successfully transmitted

It’s important to note that delivery notification works only when the ‘Retry count’ property on the send port is set to 0. for more details click here

How can you build a Singleton Pattern in Orchestration?

 A singleton pattern is used to restrict the number of instances of a class to only one object. This means there can be only one instance of a class at any time. All the requests for an instance of the class would point to the same object that was created earlier.

In BizTalk Orchestrations, a new instance of an Orchestration is created every time a message arrives at the Receive Port. In a Singleton Orchestration, there would always be only one instance of the Orchestration irrespective of the number of messages that arrive at the Receive Port. All the messages that arrive at the Receive Port are processed by the same instance of the Orchestration. Click here for how to implement singleton pattern in BizTalk.

Race Condition and Zombie /Orphaned messages

Zombie: A zombie message is a message that was routed to a running orchestration from the message box and was “in flight” when the orchestration ended. An “in flight” message is a message that has been routed to a service instance and so is in a message box queue destined for the service instance. Since the message can no longer be consumed by the subscribing orchestration instance, the message is suspended and marked with a Service Instance/State value of “Suspended (Non-resumable)”. Click here for more details.

Orphaned Messages: Orphaned messages are messages that have completed in the BizTalk messagebox but for some reason failed to update the tracking database that it was completed. Click here for more details.

Race Condition: Under certain conditions, an orchestration instance might receive a group of correlated messages all at the same time. In this situation, a race condition might occur, in which one of the messages in the group must initialize a correlation set in the orchestration instance before the other messages can be correlated to that orchestration instance. For more details click here

How do you debug an Orchestration?

Click here for details

How do you trace the messages processed by an Orchestration?

You can use the BizTalk Server Administration Console to enable message body and message property tracking. There you can also view the tracked message body, including schema information, strong name, and all the promoted properties for the generated message. Click here for more details.

Below screen shows Orchestration tracing data.

What is a Multipart Message? How do you use that?

Each message has a multi-part message type, a description of the message structure that consists of zero or more message parts. The parts are defined by XML Schema Definition (XSD) language schemas or .NET classes. You can define your own multi-part message types, or you can use existing .NET classes and schemas. A multi-part message type does not necessarily contain multiple parts. Click here for more details. And click here for how to implement the multipart message in BizTalk Orchestration.

What is the use of Compensate shape?

Compensation is a way to correct or undo logical piece of work that have previously. committed.Long Running transactions have no automatic rollback, and although atomic transactions provide automatic rollback in case of failure, sometimes you need to undo what happened inside a transactions that has committed. This is called compensation. Compensation can take place only for transnational scopes and not for scopes that are not transnational.

Difference between using XPath and using Distinguished fields.

Distinguished fields are message elements that are written into the message context. Xpath consider to be slower, because when we get value using xpath, the whole message will be loaded into memory, so Xpath is memory hungry solution. Distinguished field return value faster then xpath. Distinguished filed has limitation. It failed to returning value when message contains multiple node contains the value. In this case Xpath works. So its all depend on how the solution require to get the value from message. if element is unique then go for distinguish field of not then go for XPath.

What happens when to try to use the Promoted Property whose value (missing element/node) is not present in the message? (Missing Property Exception)

Promoted properties are used in Content Based Routing and to access a frequently used value easily instead of loading the Full Message into Memory. Generally we promote a property assuming that value for that Property exists at all the time. But what happens when a Promoted Property doesn’t exist? Answer is MissingPropertyException. Click here for more details about how to handle this.

How to Promote Property inside an Orchestration?

The Orchestration cannot promote the properties to message context by default like pipelines can do by using the msg.Context.Promote() method. Inside Orchestration one must create a correlation set and initialize that correlation set while publishing the message. Then the BizTalk Engine will promote the property to the message context.

What is the difference between an Exception block and a Compensation block? Is it the equivalent of try-catch-finally?

Exception block can be termed as a catch block. But compensation is different. It’s like reversal of a committed transaction. When do we need set the property “Synchronized” = true for a scope? In case we want to share a variable between parallel scopes.

Below links are available for other segment of Interview questions and Answers:

BizTalk Server Monitoring

2 responses to “Orchestration Questions & Answers”

  1. Thankyou for such a nice blog. I don’t think there is anything that is not covered under this. It is very helpful.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: