Introduction

Being able to track messages is convenient for developers and administrators for debugging/analysis purposes. BizTalk enables you to track message content and context on ports, pipelines and orchestrations. Depending on your goal you can turn on/off different tracking options. These tracking options can be exported and imported through binding files. 

This article contains the tracking options for Receive/Send Ports, Pipelines and Orchestrations as they may occur in binding files.

The article can also be downloaded in PDF format from the Gallery:
Deployment of tracking options

Given the performance penalty of using much tracking, you’ll want less tracking in your Live environment than in your Development/Test environment. If you use BTDF for deployment of BizTalk applications you can easily add variables to the Settings file, so you can automatically apply different tracking options per environment. Below some suggestions on how you could name these variables:

  • tracking_oneway_ports
  • tracking_twoway_ports
  • tracking_pipelines
  • tracking_orchestrations

Send/Receive Ports (One-Way)

Track Message Bodies

Request message before port processing

1

Request message after port processing

2

 

Track Message Properties

Request message before port processing

16

Request message after port processing

32


Example

Say you want to track messages and properties before and after port processing. You need:

  • Request message before port processing = 1
  • Request properties before port processing = 16
  • Request message after port processing = 2
  • Request properties after port processing = 32
  • Tracking setting (1 + 16 + 2 + 32) = 51

In Binding file

<ReceivePort Name="ReceivePort1" IsTwoWay="false" BindingOption="0">
   <Description xsi:nil="true" />
   ...
   <Tracking>51</Tracking>
   ...
</ReceivePort>

Send/Receive Ports (Request/Response)

Track Message Bodies

Request message before port processing

1

Request message after port processing

2

Response message before port processing

4

Response message after port processing

8

 

Track Message Properties

Request message before port processing

16

Request message after port processing

32

Response message before port processing

64

Response message after port processing

128


Example

Say you want to track messages and properties as they enter/leave the port. You need:

  • Request message before port processing = 1
  • Request properties before port processing = 16
  • Response message after port processing = 8
  • Response properties after port processing = 128
  • Tracking setting (1 + 16 + 8 + 128) = 153

In Binding file

<SendPort Name="SendPort1" IsStatic="true" IsTwoWay="true" BindingOption="0">
   <Description xsi:nil="true" />
   ...
   <Tracking>153</Tracking>
   ...
</SendPort>

Pipelines

Track Events

Track Events

Port start and end events

ServiceStartEnd PipelineEvents

Message send and receive events

MessageSendReceive

 

Track Message Bodies

Message before pipeline processing

InboundMessageBody

Message after pipeline processing

OutboundMessageBody


Example

Say you want to track port start and end event and message receive and send events. You need:

  • Port start and end events: ServiceStartEnd PipelineEvents
  • Message send and receive events: MessageSendReceive
  • Tracking setting: ServiceStartEnd PipelineEvents MessageSendReceive

In Binding file

<ReceivePort Name="ReceivePort1" IsTwoWay="true" BindingOption="1">
   <Description xsi:nil="true" />
   <ReceiveLocations>
      <ReceiveLocation Name="ReceiveLocation1">
         <Description xsi:nil="true" />
         ...
         <ReceivePipeline Name="ReceivePipeline1" FullyQualifiedName=" ReceivePipeline, Pipelines, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f4747cde3b0ad4ae" Type="1" TrackingOption="ServiceStartEnd MessageSendReceive PipelineEvents" Description="" />
         ...
      </ReceiveLocation>
   </ReceiveLocations>
   ...
</ReceivePort>

Orchestrations

Track Events

Orchestration start and end

ServiceStartEnd

Message send and receive

MessageSendReceive

Shape start and end

OrchestrationEvents

 

Track Message Bodies

Before orchestration processing

InboundMessageBody

After orchestration processing

OutboundMessageBody

 

Track Message Properties

Incoming messages

TrackPropertiesForIncomingMessages

Outgoing messages

TrackPropertiesForOutgoingMessages


Example

Say you want to track orchestration instances when they start and end, when messages are received and send and you want to see which shapes are started and ended in the Orchestration Debugger. You need:

  • Orchestration start and end: ServiceStartEnd
  • Message send and receive: MessageSendReceive
  • Shape start and end: OrchestrationEvents
  • Tracking setting: ServiceStartEnd MessageSendReceive OrchestrationEvents

In Binding file

<Service Name="Orchestration1" State="Started" TrackingOption="ServiceStartEnd MessageSendReceive OrchestrationEvents" Description="">
   <Ports />
   <Roles />
   <Host Name="ProcessingHost" NTGroupName="BizTalk Application Users" Type="1" Trusted="false" />
</Service>

See also

Another important place to find a large amount of BizTalk related articles is the TechNet Wiki itself. The best entry point is BizTalk Server Resources on the TechNet Wiki.