Having experience of working on large BizTalk implementations in healthcare, the one thing I realized is that monitoring of the data flows in receive ports and send ports is crucial.
MLLP Receive Locations
Sometimes upstream systems may stop sending messages to the receive locations due to application issues or connectivity issues. Although we do not see any problems in the BizTalk environment, this might be a potential issue which may affect the overall business and needs to be reported to the support teams. Monitoring such events is called Non-Event monitoring.
MLLP Send Ports
Since the send ports are generally configured for ordered delivery, messages start queuing up when a downstream system goes down or is facing issues in sending HL7 ACKs back. It is very important to keep an eye on the queue growth to identify a potential problem. Also If the queue length exceeds the thresholds in the throttling settings, then BizTalk may get into throttling state which can badly affect the server performance.
Traditionally people were writing custom scripts or BizTalk monitoring portals to address these two issues. I remember writing a custom portal to monitor these ports using WMI scripts and ExplorerOM. Recently I learned that BizTalk360 supports these scenarios out of the box. In this blog I will try to explain how to set up BizTalk monitoring in BizTalk360 for above discussed scenarios.
This blog assumes that you have installed BizTalk360 successfully and understand the basic concepts of monitoring and alerting using BizTalk360.
Monitoring the MLLP Receive Port
Let us say we have a receive location named RcvLociPM_ADTs to receive ADT HL7 messages from a Patient Information System and we expect the below volumes in business hours.
Warning Alert When
Error Alert When
|Mon-Friday||8.00AM -11.00 AM (Peak Hours)||<50 messages received in 15 minutes||<10 messages received in 15 minutes|
|Mon-Friday||11.00 AM – 5 PM
|<5 messages received in 15 minutes||No messages received in 15 minutes|
In order to set up BizTalk monitoring on these volumes in BizTalk360, we need to create an alarm and start adding data monitoring alerts.
Creating the Alarm
An alarm is a logical container to hold various monitoring configurations. Let us create a data monitoring alarm named “ReceiveLocationsExpectedVolumeAlarm” by following steps in the article How to create a data monitoring alarm in BizTalk360 .
Creating the Process Monitoring
We need to create four Process Monitors listed below and map them to an alarm “ReceiveLocationsExpectedVolumeAlarm”.
Expected number of messages
|RcvLociPM_ADTs_PeakHoursVolume_Warning||8 AM to 11 AM||50|
|RcvLociPM_ADTs_PeakHoursVolume_Error||8 AM to 11 AM||10|
|RcvLociPM_ADTs_NonPeakHoursVolume_Warning||11 AM to 5 PM||5|
|RcvLociPM_ADTs_NonPeakHoursVolume_Error||11 AM to 5 PM||1|
Follow the steps below to create process monitoring alerts and map them to “ReceiveLocationExpectedVolumeAlarm”
- Navigate to “Data Monitoring”, select “Process Monitoring” and click “Add New”.
- In the “Basic Details” select the alarm “ReceiveLocationExpectedVolumeAlarm”, and give a friendly name ”RcvLociPM_ADTs_PeakHoursVolume_Warning”. Set greater than fifty as expected number of messages.
- In the “Choose Ports to Monitor” section select the receive location “RcvLociPM_ADTs”
- In the “Set Monitoring Times” section select the Business hours 8 AM to 11 AM as shown in picture below
- Click Save and Close. Follow the steps mentioned in this section to create three more data monitoring alerts as listed in table above.
Once the monitoring is set up, we will start seeing email notifications triggered from BizTalk360 when there is a violation.
Monitoring the MLLP Send Port Queue
When the send port is configured for ordered delivery and is retrying or waiting for a long period to get the HL7 ACK back from the downstream system, messages start queuing up in a single instance of the send port with status “Queued (awaiting processing)” as shown below.
It is important to keep an eye on the build-up of this queue. Let’s consider a send port named SendPortPathologyXYZ which is configured for ordered delivery and the queue is growing because of some issues at a downstream system.
Creating the Alarm
In order to start monitoring, first of all we need to create an alarm. Alarm is a logical container to hold various monitoring configurations. Follow steps in BizTalk360 article How to create a data monitoring alarm in BizTalk360 to create a data monitoring alarm. After following above article, I was able to create a data monitoring alarm with name MLLPSendPortQueueAlarm.
Creating the Message Box Data Monitor
Follow the steps below to create a message box data monitoring and associate it with MLLPSendPortQueueAlarm.
- Navigate to Data Monitoring, select “Message Box Data” and click “Add New”.
- In the “Basic Details” section, choose MLLPSendPortQueueAlarm as the alarm and give a friendly name. Since I want to monitor the queue length in the send port SendPortPathologyXYZ , will name it as SendPortPathologyXYZ_DataMonitor.
- In the “Set Data Filter” section, create a query which selects all “Queued (Awaiting Processing)” messages for the Service Name SendPortPathologyXYZ.
- I would like to send out a warning if the queue length grows to more than 200 and an error if the queue length grows above 500. This is configured in “Set the Notification Condition” section.
- Configure “Set Monitoring Times” section based on how frequently you want to receive alerts
- When you save the monitor, data monitoring is set on your send port.
Once monitoring is setup, you will start receiving a rich colour coded email alert whenever a violation happens.
BizTalk360 has out of the box support for monitoring:
- processing by the ports –Process Monitoring,
- message processing – Message Box Data, Tracking Data
- BAM, EDI and ESB exceptions data –BAM Data, EDI Data and ESB Data
You should take full advantage of these data monitoring capabilities to ensure support teams know any potential issues as soon as they occur.