Zombie Instances of BizTalk Orchestration when Delivery Notification is set to Transmitted

Here is an article on one of the Scenarios of Zombie message occurrences.

The Instances of the Orchestration which is having the Delivery Notification Property set to Transmitted started to suspend when there are more than one Send ports trying to subscribe the Instance of the Message which is published .Here is a sample orchestration which was can receive Input Message and does  basic Transformation and then publish the message though the logical send port.

IMG1

The following basic Orchestration needs to be deployed  along with this one Receive location needs to be created for posting the data to the orchestration along with Two send ports.

SendPort :: Send Port for sending the Transformed Output xml to the destination folder which will be directly bound to the orchestration with xmlTransmit pipeline.

Archive Port :: Archive folder which is having filter expression on the Out folder Schema type so  that it can be archived in a folder location here the Archive Port is not Tightly bound to Orchestration but bound to the message box database with xmlTransmit pipeline

When we drop a sample Input Message for Processing then the Input Message gets Transformed to the Output format and delivered to the Send port and also the Output Message will also get delivered to the Archive location.we need to notice that in the BizTalk admin console even though the Orchestration has completed all the Stages , we see one of the Orchestration Instance as suspended non-resumable.

IMG2

Please find screen shots of the Orchestration suspended with the following error

IMG3

The instance completed without consuming all of its messages. The instance and its unconsumed messages have been suspended.

And also there will be only message and the body of the message would be single empty string.

IMG4

Here goes the explanation::

In the Orchestration for the send port which is publishing the message has Delivery Notification property set to Transmitted.There are 2 Send Ports which are subscribing for the message published by the Orchestration, so both of them will try to generate the Functional Ack.The Orchestration gets successfully completed after receiving the first Successful Ack, so the Send Ack generated by the port doesn’t get consumed and which turns out to be Zombie Message.

Since Ack was requested by the Orchestration it would seem like the Orchestration is suspended in Zombie State.

So whenever there is Zombie Instances of the Orchestration which occur one of the possible cause would be there is delivery Notification is set to Transmit and there are multiple send Ports which are Trying to Subscribe for the same Message.

Leave a comment