Skip to main content

Event monitor

The Event Monitor shows the event log: every event the system has written, with its delivery state. It is a read-only list. You use it to check that an event was written and what became of it.

How to open it​

  1. Switch to Enterprise. See Enterprise sidebar.
  2. Open Integration > Event Monitor.

The menu item is ent_integration_event_menu. It opens the list ent_integration_event_list_form. The card is ent_integration_event_normal_form. The data object is integration_event (table enterprise.integration_event).

How events get here​

Events are written by the system, never by hand. Two sources write them:

SourceEvent codeWhen
Business commandsprocess.*, for example process.receipt.closedIn the same database transaction as the business change. If the change is rolled back, the event is rolled back with it (crates/libs/wms-lib-core/src/model/integration/event_publisher.rs, publish_typed_in_txn).
Generic record savesbio.{table}.{operation}, for example bio.receipt.after_insertAfter a record is created, changed or deleted, only if the Event registry has an active row with that code (crud_fns.rs:669).

A background job in the app server (the delivery worker) reads new events and hands them to the Subscribers. It wakes every DELIVERY_WORKER_POLL_SEC seconds (5 by default; crates/services/app-server/src/config.rs:217) and takes up to 100 events that are new or partial, oldest first (crates/services/app-server/src/services/integration_delivery.rs, function poll_and_deliver).

The list​

LabelColumnTypeFilterWhat it shows
IDidWhole numberNumberThe event id.
Event Codeevent_codeText, up to 100 charactersTextThe event type.
Entityentity_nameText, up to 100 charactersTextThe kind of record, for example receipt.
Keykey1Text, up to 100 charactersTextThe first key of the record, for example the receipt number. The columns key2 and key3 are stored but not shown.
Statusevent_statusText, up to 10 charactersTextWhere the event is in delivery: new, partial, sent, failed or skipped. See Event and delivery statuses.
Failuresfailure_countWhole numberNumberSee the note below.
WarehousewarehouseText, up to 20 charactersTextThe storage name (schema) of the warehouse that wrote the event, for example wh1. Empty for events with no warehouse.

All columns are read only. The only button is Refresh (btn_refresh). Click a row to open the card.

The card​

All fields are read only. There are no buttons.

LabelColumnTypeWhat it shows
Event Codeevent_codeTextAs in the list.
Entityentity_nameTextAs in the list.
Statusevent_statusTextAs in the list.
Internalinternal_statusText, up to 10 charactersThe state of in-house handling: new at first, done after an internal subscriber has handled the event (IntegrationEventBmc::record_internal_result). It stays new for events no internal subscriber handles, and when the internal handler failed.
Failuresfailure_countWhole numberSee the note below.
Last Errorlast_errorTextSee the note below.
WarehousewarehouseTextAs in the list.

The payload of the event (payload) and the result of internal handling (internal_result) are stored but not shown on this screen.

Failures and Last Error stay empty. The columns failure_count and last_error of the event row have no writer in the code: the delivery worker writes its counts and errors to the delivery row, not to the event row. To see attempts and errors, use the Delivery log.

Not confirmed by code: how you go back from the card to the list. The card has no toolbar. To verify: click a row, and look for a back control or use the breadcrumb.

What it affects​

  • Nothing by itself. The screen only reads.
  • Terminal events are kept for 30 days for investigation. The clean-up job then deletes sent, failed and skipped rows. It preserves new and partial events that may still require delivery work.

Who can use it​

list_integration_event, get_integration_event and count_integration_event are open to the default roles ADMIN, MANAGER, OPERATOR and VIEWER (crates/services/app-server/src/web/rpcs/integration_event_rpc.rs:11). There is no method to create, change or delete an event through the API. In Enterprise only ADMIN reaches the screen.