Have you been looking for how to find the string text specified in the BizTalk Terminate Shape? I hadn’t used this shape in a long long time, and had to check it out again this week. This blog show you you where the Terminate Shape text goes.
After your orchestration has hit a Terminate statement, you can do the following two steps:
1. In BizTalk Admin, go to the group hub, and click on “Terminated Instances”.
2. Find the terminated instance of your orchestration.
The text does NOT appear in the application EventLog. You would have to do a System.Diagnostics.Write.EventLog in an “Expression Shape” to do that.
The orchestration is terminated, not suspended, so there is nothing to be seen in the “Suspended” query.
In this blog by Yossi Dahan, he talks about how there should perhaps be an “End” shape that doesn’t imply a termination/error.
By the way, even thow there is a “Throw” shape in BizTalk Orchestrations, there’s nothing to stop you from doing a .NET “Throw” in an “Expression Shape”, for example:
if (vCO_HeaderUpdateResult != "Ok")
strSoapFaultMessage = "2240:msgCO_Header_Update_Response:" + vCO_HeaderUpdateMessage;
throw new System.ApplicationException(strSoapFaultMessage);
In the program above, I caught a “soft error”, i.e. the I called a web service that completed without a hard Soap error, but it set an error in the variables that it returned. Thus, I raised an error via the “Throw” keyword, then caught the error in the Exception Handler of a scope. This allowed me to have one common error handling routine for the 10 different web services that I was calling in the one orchestration. That common routine wrote to the EventLog, Sends and Email via an email send port, writes to a Trace, and then does ends the orchestration, probably via the Terminate statement (still need to discuss with my colleagues).