Yesterday is an article published on the Microsoft side. This article deals with BizTalk and its integration with SharePoint. You can find the document here. Gijsbert and Wesley also gave some presentations on this topic earlier this year (eg. Microsoft Application Platform days in March in the Netherlands).
Monthly Archives: September 2009
Using an HL7 multi-part message in an Orchestration
I receive a flatfile HL7 message with the next records: MSH, EVN, PID and PV1. This message goes thru the pipeline component BTAHL7 2.X Disassembler. After the disassembler the BizTalk message contains 3 message parts: MSHSegment, BodySegments and ZSegments (which is empty in my case).
To use this message in an Orchestration you have to define a message as a multi-part message with these three parts. If you don’t do any processing in your Orchestration then you can use System.Xml.XmlDocument as message part type (it is only a reference).
You have to define these parts in the right order, so MSHSegment, BodySegments (with “Message Body Part” set to True) and ZSegments. If you don’t define these in the right order, you will receive an xlang/s error in the EventLog:
xlang/s engine event log entry: Uncaught exception (see the ‘inner exception’ below) has suspended an instance of service ‘MyCompany.MyOrchestration(da177201-2c29-4fbd-56f9-ad118705a27b)’.
The service instance will remain suspended until administratively resumed or terminated.
If resumed the instance will continue from its last persisted state and may re-throw the same unexpected exception.
InstanceId: 233a2806-2f36-46f2-9204-f8bfb2fc5403
Shape name: Receive_1
ShapeId: 160d728f-0375-4445-b21c-6e56d665eccc
Exception thrown from: segment 1, progress 3
Inner exception: Multi-part message ‘InboundMsg’ has body part ‘BodySegments’, expected body part ‘MSHSegment’.
Exception type: WrongBodyPartException
Source: Microsoft.XLANGs.BizTalk.Engine
Target Site: Void ReadMessageState(Microsoft.XLANGs.Core.Envelope, Microsoft.XLANGs.BaseTypes.XLANGMessage)
The following is a stack trace that identifies the location where the exception occuredat Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.ReadMessageState(Envelope env, XLANGMessage msg)
at Microsoft.BizTalk.XLANGs.BTXEngine.BTXPortBase.ReceiveMessage(Int32 iOperation, Envelope env, XLANGMessage msg, Correlation[] initCorrelations, Context cxt, Segment s)
at ‘MyCompany.MyOrchestration.segment1(StopConditions stopOn)
at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
You can find some more information here.
“The itinerary header could not be found”
I received the next message in the EventLog:
The itinerary header could not be found.
Source: Microsoft.Practices.ESB.PipelineComponents.Dispatcher
Method: Microsoft.BizTalk.Message.Interop.IBaseMessage Execute(Microsoft.BizTalk.Component.Interop.IPipelineContext, Microsoft.BizTalk.Message.Interop.IBaseMessage)
Error Source: Microsoft.Practices.ESB.Itinerary
Error TargetSite: Microsoft.Practices.ESB.Itinerary.IItinerary Create(Microsoft.BizTalk.Message.Interop.IBaseMessage)
Error StackTrace: at Microsoft.Practices.ESB.Itinerary.ItineraryOMFactory.Create(IBaseMessage msg)
at Microsoft.Practices.ESB.PipelineComponents.Dispatcher.Execute(IPipelineContext context, IBaseMessage msg)For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
I’m using the ESB Toolkit 2.0 (BizTalk Server). I’ve created a custom pipeline which uses the pipeline components:
- ESB Itinerary Selector (Decode)
- BTAHL7 2.X Disassembler (Disassemble)
- ESB Dispatcher (ResolveParty)
The error occurs in the ESB Dispatcher. If I look at the context properties then the ItineraryHeader is available and filled with the Itinerary defined in the ESB Itinerary Selector. Why do I get this error? Another strange thing what I see is that the message (body) is my HL7 flatfile (so it is not disassembled to Xml yet).
The solution for my scenario is to not use the pipeline component ESB Dispatcher (or disable it). Then my scenario works fine. In other scenarios I’m using the default pipeline ItinerarySelectReceivePasshrough (or ItinerarySelectReceivePassThrough) and just Xml files as input and these work fine with the ESB Dispatcher.
Is this a problem of the BTAHL7 2.X Disassembler or ESB Dispatcher or a combination of?
stored procedure call failed: bts_UpdateMsgbox_BizTalkServerApplication
I received the next message in the EventLog:
The following stored procedure call failed: " { call [dbo].[bts_UpdateMsgbox_BizTalkServerApplication]( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}". SQL Server returned error string: "Warning: The join order has been enforced because a local join hint is used.;Warning: The join order has been enforced because a local join hint is used.;Duplicate key was ignored.".
It seems that when SQL Server is very busy, these errors can occur. I’m working with BizTalk Server 2009, SQL Server 2008 and Windows Server 2008. When I solved the performance problem, these messages disappeared.
Test tool MllpSend.exe blocks SQL Server?
I’m using MllpSend for simulating my HL7 ADT system. When I use this tool and wait for an ACK (which I don’t get in a particular test scenario), then my BizTalk Server 2009 Administration Console gives no response (except for this message box
:
I’m using the command:
“C:\Program Files\Microsoft BizTalk 2009 Accelerator for HL7\SDK\MLLP Utilities\MllpSend.exe" /I 127.0.0.1 /P 11001 /TWOWAY /F "C:\temp\BizTalk\validHL7Message.txt" /sb 11 /eb 28 /cr 13
Probably it has to do with the Mllp adapter, because the MllpSend is just listening to a socket.
Do you have any idea?
BTAHL7 2.X Assembler – strange behavior
I have an HL7 scenario where an ADT-system stub is transmitting a non-valid HL7 message into BizTalk. In BizTalk this message is transformed to a valid HL7 message. The MessageHeader is created as message part in an Orchestration. This MSH looks like:
In the first place this looks fine, but my flatfile (created by the pipeline component BTAHL7 2.X Assembler) doesn’t look very well:
A new row is created with four spaces. When validating the MSH (Xml variant) against the schema MSH_25_GLO_DEF.xsd I received the message:
error BEC2004: The ‘MSH.13_SequenceNumber’ element is invalid – The value ‘
‘ is invalid according to its datatype ‘http://microsoft.com/HealthCare/HL7/2X:NM’ – The Pattern constraint failed.
That makes sense (except for the four spaces
). I didn’t receive any warning or error message in the EventLog, so the header is not validated against the schema in the pipeline component. To fix this, I had to enter a valid number for the sequence number and the output looks like:
That’s better.
Tracking in BizTalk Server – nothing tracked
When you run into this:
Make sure you enabled tracking on the events you want to track, but also important is to have a look at the SQL job TrackedMessages_Copy_BizTalkMsgBoxDb (and of course your SQL Agent must be running). If the interval is too small, then it is possible your messages have been purged (“(3) the Message Box tracking tables have been automatically purged”). Decrement your interval (default is 1 minute):
I’ll give a presentation at the BTUG NL…
See: http://www.sogeti.nl/Home/Events/index.jsp?uEve_nr=446 (also for subscribing) and http://www.btug.biz/Home/NL/tabid/81/Default.aspx/
Before and after me Brain Loesgen will be speaking. Will be an interesting day.
How to link records automatically? (BizTalk Mapper)
I’m really ashamed; I’m working with BizTalk Server since 2002. I worked with BizTalk Server 2002, 2004, 2006, 2006/R2 and 2009. But, now I learned that you can map schemas very easily by using the SHIFT key. The only disadvantage of this feature is that it is mapping also all records below the selected record. Maybe you didn’t know, so that is why I’m sharing it with you
See also: http://msdn.microsoft.com/en-us/library/aa561425(BTS.10).aspx
Agile and Scrum Videos
Some great videos on Agile and Scrum can be found on this site. Especially the first two are great. If you haven’t use or heard of scrum or agile yet, this is a great point to start. Also a comparison with waterfall is used. But is Waterfall really that bad?




