Messages (UCA events, timers, asynchronous steps) are processed by the Event Manager: a scheduler per cluster member picks tasks from the event manager tables (LSW_EM_TASK and related) and runs them. When "messages are not processed":
- Is the event manager running? Process Admin > Event Manager > Monitor: every scheduler must show running; a paused scheduler (someone paused it for maintenance) or a member that is down keeps its queue. Resume it. The Operations REST GET /ops/std/bpm/event_manager/monitor shows the same on BAW 20+.
- Are the tasks on hold? Process Admin > Event Manager > Tasks (or GET /ops/std/bpm/event_manager_tasks?states=on_hold): tasks go on hold after repeated failures - open one, read the error, fix the cause (usually the UCA's service throws), then replay or delete.
- Did the message reach BAW? For JMS: the queue depth in MQ / the SIBus (admin console > Buses > ... > Queue points), the message driven bean / activation spec started, the eventmsg XML well-formed with the right processApp acronym and ucaname; wrong names end in SystemOut.log as CWLLG0xxx "no UCA found".
- Correlation: the message arrived and the UCA ran, but no instance was waiting with a matching key - check the UCA's output mapping and the intermediate message event's correlation variable; a message that arrives before the instance reaches the event is kept only when the message event is configured as durable subscription (BAW 8.6+), otherwise it is lost.
- Load: the EM thread pool is exhausted (a few long-running UCAs block the rest) - PMI / thread dump; increase Event Manager thread pool (100Custom.xml <event-manager><thread-pool>) or fix the slow service.
- Clock and database: tasks scheduled in the future because of clock skew between members / database; lock waits on the EM tables (long transactions).
-- quick look at the event manager backlog (BPMDB)
select task_status, count(*) from lsw_em_task group by task_status; -- status codes: scheduled / on hold / executing
select task_id, task_status, task_group, next_execution_time from lsw_em_task where task_status = 4 order by next_execution_time; -- 4 = on hold on most levels
References