The Event Manager (EM) is the scheduler that executes timers, UCA invocations, asynchronous system tasks and BPD navigation work. It runs in every cluster member; its capacity is a thread pool per member and its behaviour is configured in 100Custom.xml (Process Server) and partially in Process Admin.
<properties>
<server merge="mergeChildren">
<event-manager merge="mergeChildren">
<thread-pool merge="mergeChildren">
<max-threads merge="replace">30</max-threads> <!-- default 10; raise when tasks queue up but CPU / DB are idle -->
<min-threads merge="replace">10</min-threads>
</thread-pool>
<loader-long-period merge="replace">15000</loader-long-period> <!-- ms between scheduler polls when idle (default 15 s) -->
<loader-short-period merge="replace">2000</loader-short-period> <!-- ms between polls when work exists -->
<loader-advance-window merge="replace">60000</loader-advance-window> <!-- ms: how far ahead tasks are loaded -->
<sync-queue-capacity merge="replace">200</sync-queue-capacity>
<async-queue-capacity merge="replace">200</async-queue-capacity>
<task-blackout merge="mergeChildren"> <!-- no EM execution during backups -->
<daily merge="replace">02:00-02:30</daily>
</task-blackout>
</event-manager>
</server>
</properties>How to find values: Process Admin > Event Manager > Monitor shows queued vs executing tasks per scheduler (or GET /ops/std/bpm/event_manager/monitor) - a growing "scheduled in the past" backlog with idle threads means the loader period / advance window is too slow; all threads busy means the pool is too small or the tasks are slow (look at the tasks: a slow UCA service or a system task calling a slow API - fix that first, more threads only move the bottleneck to the database). Every EM thread needs a JDBC connection - size the data source pool accordingly (question on JVM settings). Blackout periods stop timers during backups so that no half-written work exists. Timer accuracy is bounded by the loader period (a 15 s poll means timers fire up to 15 s late); keep it ≥ 2 s to avoid database load. On CP4BA the same XML goes into the custom 100Custom.xml secret and applies to every replica; the number of replicas multiplies the EM capacity.
References