Skip to content
Art2link ESB HomeDocumentationBlogContact
Updated May 5, 2026
Monitor & operate/Tracking
Preview · this screen is evolving

Tracking

A historical, searchable view of every step of every integration that has run on the platform, a capability no other middleware, BizTalk included, offers. Turn it on per port to record full step-by-step detail, then query it from a single screen.

Tracking is what makes a finished run inspectable. The runtime always keeps a thin internal record of in-flight messages so a suspended run can be resumed, a running run can be observed, and an errored run shows up where you would expect, that lightweight travel is independent of Tracking and is always on. Tracking is the historical layer on top of it: per-port, opt-in, and once enabled it persists the full step-by-step record of each run for later search and analysis.

Tracking is enabled per port, not per integration. Each port carries a single tracking-level setting with three values, ordered from lightest to most detailed:

LevelWhat is recorded
Only on ErrorNothing is written for successful runs. On failure, the full step history is persisted including the message body at each step, there is no separate Only on Error + Body level; failure recording always includes the body. Cheapest level when failures are rare.
EnabledEvery run through this port is recorded, timestamps, step identifiers, message type, adapter. Message bodies are not stored.
Enabled + BodyEvery run is recorded, including the full message body at each step. Most diagnostic, most expensive in storage.
Only on Error SUCCESSFUL RUN Nothing persisted FAILED RUN Run record Full step history Message body at each step Body included automatically on failure Enabled EVERY RUN Run record Full step history Message body Body excluded to keep storage cost down Enabled + Body EVERY RUN Run record Full step history Message body at each step Fullest view highest tracking-DB cost
!
Set the level on every port the integration touches. A flow with three ports configured at three different levels will produce a tracked record that is detailed where one port enabled it and silent where the others did not. To see the full end-to-end execution of an integration, set the level uniformly across every port of that flow.

The tracking level toggle lives on the port itself, alongside the Exceptions option. See PortsOptions available on every port for the port-side description.

Tracking is filtered by the Selected Application. With a Selected Application set, every count and every row on the Tracking screen is restricted to that Application. With no Selected Application, the screen spans every Application the user has access to. The behaviour matches every other artifact list in the platform.

The Tracking screen is laid out in three regions, top to bottom, status boxes, a filter strip, and a results grid.

REGION 1 Status boxes, click to filter the grid, or use the menu to act on the whole count SUCCESSFUL 12,481 RUNNING 7 SUSPENDED 14 EXCEPTIONS 63 ERRORS 3 REGION 2 Filter strip, composes with the active status box and the Selected Application TRACKING ID 8f3b-a91c-d4e7-… START DATE 2026-05-15 00:00 END DATE 2026-05-15 23:59 MESSAGE TYPE OrderCreated REGION 3 Results grid, one row per run; expand a row for full step history START PORT MESSAGE TYPE TRACKING ID 2026-05-15 14:02:11 rcv-orders-edi OrderCreated 8f3b-a91c-d4e7 2026-05-15 14:02:09 snd-erp-orders OrderCreated 7a22-bb19-c0c4 STEP-BY-STEP HISTORY (this run) 14:02:09.140 Receive #1 Adapter, API OrderCreated «body» 14:02:09.310 Receive #4 Inbound map OrderCreated «body» 14:02:09.612 Send #1 Open Variables OrderCreated «body» 14:02:09.901 Send #5 Adapter, SQL OrderCreated «body» 2026-05-15 14:01:58 loop-enrich-eu OrderCreated 3d11-eaa0-9b2f

1. Status boxes. Five boxes at the top, each showing a status name and a live count: Successful Running Suspended Exceptions Errors. Clicking a box loads the matching records into the grid below; the same box also exposes an action menu that applies to the entire count at once (see Actions).

2. Filter strip. A row of filters that narrow what the grid shows: Tracking ID, Start Date, End Date, and Message Type. Filters compose with the active status box and with the Selected Application.

3. Results grid. One row per integration run, sortable by start time, with the originating port, message type, and start timestamp visible. Expanding a row reveals the run's full step-by-step history, see Step-by-step drill-down.

StatusMeaning
SuccessfulThe run completed end-to-end without raising an error.
RunningThe run is currently in flight on one or more ports. Counts in this box are live and can change between refreshes.
SuspendedThe run is paused and waiting on operator action. Resumable, or terminable, from this screen.
ExceptionsThe run failed, and the failure was handled by the port's configured exception: the port had a Message Type assigned for the failure path, the runtime emitted a message of that type onto the bus, and any subscriber to it (an alert send port, a log writer, a downstream compensation flow) picked it up. See PortsOptions available on every port for how to configure an exception path.
ErrorsThe run failed and the failure was not handled, either the port had no configured exception, or the configured exception itself raised an uncaught fault.

Actions are identical whether triggered on a single row or on the whole status box. The box variant applies the action to every record currently in that status, scoped by the active filters.

StatusAvailable actions
SuccessfulNone, the record is final and read-only
RunningTerminate Suspend
SuspendedTerminate Resume
ExceptionsNone, the record is final and read-only
ErrorsNone, the record is final and read-only
!
Acting on Running is racy. A bulk Terminate or Suspend against the Running box is queued against the records that match at the moment the command lands. Some of those runs may have already completed, errored, or moved to Suspended between the user clicking the action and the runtime processing it. Treat the outcome of a bulk action on Running as best-effort, not exact.

Expanding a row in the results grid exposes the full step-by-step history of that run, one line per step, in execution order, across every port the run touched. The columns are:

ColumnWhat it shows
TimestampWhen the step executed, to the millisecond.
PortThe port that owned this step.
Step IDA numbered identifier for the lifecycle stage (adapter, pipeline, map, open or close variables, and so on). Hover the badge to see the stage's human-readable name; see Step IDs below for the full list.
TypeThe port type the step belongs to, with a color matching the Ports palette. See Ports for the port-type model.
AdapterThe adapter bound to the port, when relevant. Loopback and null ports have no adapter and leave this column blank.
Message TypeThe Message Type carried by the run at this step.
BodyA preview of the message body at this step. Populated only when the originating port was set to Enabled + Body; otherwise the column is blank for that step. Clicking the preview opens the full body.

Each step in the drill-down carries a numeric Step ID, and the badge tooltip shows the stage it marks. A full two-way round trip spans two ports joined by the bus: the request enters through a receive port, is published, a send port picks it up and calls the external endpoint, and the reply returns through the send port and back out to the caller. The Step ID sets execution order, so the map and pipeline stages list in the order they run (a receive leg runs its pipeline before its map; a send leg runs its map before its pipeline). Most runs use only a subset.

Step IDPhaseStage
20Pre-flight checkNo partner configuration matches the incoming message type
40Receive port, request legEnvelope created; receive port flow started
43Run stateResumed
47Receive port, request legReceive solicit pipeline
50Receive port, request legReceive solicit map
60Request handoffRequest
70Send port, request legSend solicit map
80Send port, request legSend solicit pipeline
100Send port, request legAdapter call to the external endpoint
205Send port, response legSend response map
208Send port, response legSend response pipeline
210Run stateSuspended
215Receive port, response legReceive response map
218Receive port, response legReceive response pipeline
500Run stateTerminated

Every integration run is stamped with a single Tracking ID when it enters the platform. The same ID flows through every port the run touches, which is what lets the screen reassemble one logical run from steps recorded by different ports. Use the Tracking ID filter on the top strip to recall the complete history of one specific run, even months later.

RUN ENTERS SAME ID, EVERY STEP RECEIVE PORT rcv-orders-edi stamp Tracking ID TRACKING ID 8f3b-a91c-d4e7-22a0 Bus SEND PORT snd-erp-orders id: 8f3b-a91c-d4e7-22a0 LOOPBACK PORT loop-enrich-eu id: 8f3b-a91c-d4e7-22a0 NULL PORT null-archive-test id: 8f3b-a91c-d4e7-22a0 TRACKING SCREEN: ONE RUN FILTER · tracking_id = 8f3b-a91c-d4e7-22a0 rcv-orders-edi · step #1 snd-erp-orders · step #5 loop-enrich-eu · step #3 reassembled end-to-end One ID, stamped at entry. Every port that touches the run records its own steps under it, the Tracking screen joins them back into a single logical run.

That's Tracking

Set the level you need on each port, run integrations, and the Tracking screen is where the history of every run lives, searchable, drillable, and bulk-actionable.