QM
Quartz Manager
Operations Console

### Live channel

WebSocketOPEN

# Quartz Operations Console

quartz-manager-scheduler / compact context
RUNNING
Instance IDnode-a7f3
Cluster2 nodes
WebSocketOPEN

## Scheduler Command Center

Expanded controls live on Dashboard and Scheduler / Settings only
Global scheduler operations are intentionally centralized here because they affect every job and trigger. Object pages keep only compact scheduler context.
Running since 2026-05-11 08:14:03
Quartz version 2.3.2
Job store JDBC / clustered
Thread pool 8 / 12 active
Persistence enabled
Instance ID node-a7f3
NORMAL
42
Jobs scheduled across 7 groups
BLOCKED
3
Currently executing jobs
MISFIRE
5
Misfires in the last hour
THREADS
8 / 12
Thread pool active capacity

## Next Scheduled Fires

LIVE

Trigger | Group | Type | State | Job | Next fire
--- | --- | --- | --- | --- | ---
invoice-sync-5m | billing | SimpleTrigger | NORMAL | InvoiceSyncJob | 09:45:00 Europe/Rome
daily-ledger-close | finance | CronTrigger | NORMAL | LedgerCloseJob | 18:00:00 Europe/Rome
tenant-cleanup | maintenance | DailyTimeInterval | PAUSED | TenantCleanupJob | paused
erp-retry-window | integrations | CalendarInterval | ERROR | ErpRetryJob | requires reset
cache-warmup | platform | SimpleTrigger | BLOCKED | CacheWarmupJob | 09:47:30 Europe/Rome
welcome-email-once | crm | SimpleTrigger | COMPLETE | WelcomeEmailJob | complete

NORMAL

## invoice-sync-5m

billing / linked to InvoiceSyncJob
Overview
Executions
Logs
Previous fire 09:40:00
Next fire 09:45:00
Priority 5
Calendar business-days
Misfire FIRE_NOW
Repeat Every 5 min
Current run progress
72% / fireInstanceId: node-a7f3-119238

## Execution Load

Last 30 minutes
Total jobs executed 18,942
Recent errors 2
Paused groups maintenance
Recovering jobs 1

## Event Stream

STREAMING
TimeSeverityTypeSourceMessage
09:44:18INFOJOB_PROGRESSbillingInvoiceSyncJob processed 144 of 200 invoices for trigger invoice-sync-5m.
09:43:56WARNMISFIREfinancedaily-ledger-close missed scheduled fire; policy SMART_POLICY resolved to FIRE_ONCE_NOW.
09:42:31ERRORTRIGGER_ERRORintegrationserp-retry-window moved to ERROR after job threw ResourceAccessException.
09:41:05INFOSCHEDULERnode-a7f3Cluster check-in completed. 2 scheduler instances active.

## Jobs

Jobs become first-class Quartz objects: class, group, durability, recovery, concurrency, data map, associated triggers, and execution history are visible in one operational surface.

## Job Registry

42 JOBS

Job key | Group | Class | Durable | Recovery | Concurrent | Triggers | Next run
--- | --- | --- | --- | --- | --- | --- | ---
InvoiceSyncJob | billing | it.fabioformosa.jobs.InvoiceSyncJob | YES | YES | DISALLOW | 3 | 09:45
LedgerCloseJob | finance | it.fabioformosa.jobs.LedgerCloseJob | YES | NO | ALLOW | 1 | 18:00
TenantCleanupJob | maintenance | it.fabioformosa.jobs.TenantCleanupJob | YES | YES | DISALLOW | 2 | paused
ErpRetryJob | integrations | it.fabioformosa.jobs.ErpRetryJob | YES | YES | ALLOW | 4 | error
CacheWarmupJob | platform | it.fabioformosa.jobs.CacheWarmupJob | NO | NO | DISALLOW | 1 | 09:47
WelcomeEmailJob | crm | it.fabioformosa.jobs.WelcomeEmailJob | NO | NO | ALLOW | 0 | complete

RUNNING

## InvoiceSyncJob

billing / DisallowConcurrentExecution
Overview
Triggers
Data Map
Executions
Logs
Job class InvoiceSyncJob
Trigger count 3
Last execution 09:40:03
Next execution 09:45:00
Persist data true
Requests recovery true

    JobDataMap
    tenant = eu-west
    batchSize = 200
    source = invoice-api

Danger zone Interrupt running executions or delete the job only after explicit confirmation. Durable jobs may outlive their triggers.

## Triggers

The trigger page expands beyond SimpleTrigger: every row shows type, state, linked job, fire times, calendar, priority, and misfire policy, with operational actions exposed close to the selected trigger.

## Trigger Inventory

38 ACTIVE4 PAUSED1 ERROR

Trigger | Group | Type | State | Job | Next fire | Previous fire | Misfire
--- | --- | --- | --- | --- | --- | --- | ---
invoice-sync-5m | billing | SimpleTrigger | NORMAL | InvoiceSyncJob | 09:45 | 09:40 | FIRE_NOW
daily-ledger-close | finance | CronTrigger | NORMAL | LedgerCloseJob | 18:00 | yesterday | SMART
tenant-cleanup | maintenance | DailyTimeInterval | PAUSED | TenantCleanupJob | paused | 08:30 | DO_NOTHING
erp-retry-window | integrations | CalendarInterval | ERROR | ErpRetryJob | reset | 09:20 | FIRE_ONCE
weekly-report | analytics | CronTrigger | NORMAL | ReportJob | Mon 07:00 | Mon 07:00 | SMART
cache-warmup | platform | SimpleTrigger | BLOCKED | CacheWarmupJob | 09:47 | 09:42 | IGNORE

NORMAL

## invoice-sync-5m

SimpleTrigger / billing
Overview
Schedule
Calendar
Executions
Linked job InvoiceSyncJob
Priority 5
Final fire none
Timezone Europe/Rome
Repeat interval 5 minutes
Calendar business-days

#### Schedule summary

Runs every 5 minutes indefinitely. If a misfire occurs, execute once immediately and continue the cadence from the next scheduled fire time.
09:45:00 Europe/Rome09:50:00 Europe/Rome09:55:00 Europe/Rome
Danger zone Unschedule removes this trigger from its job. Reset from ERROR should require the operator to confirm the failed cause was handled.

## Calendars

Quartz calendars are exclusion rules, not date pickers. This page makes the calendar type, base calendar, trigger usage, excluded windows, and next included time testable before operators attach them to triggers.

## Calendar Registry

7 CALENDARS21 TRIGGERS USING CALENDARS

Calendar | Type | Base calendar | Triggers | Next excluded | Description
--- | --- | --- | --- | --- | ---
business-days | WeeklyCalendar | company-holidays | 14 | 2026-05-16 00:00 | Exclude Saturday and Sunday.
company-holidays | HolidayCalendar | none | 9 | 2026-06-02 00:00 | Italian public holidays.
month-end-freeze | MonthlyCalendar | business-days | 3 | 2026-05-31 00:00 | Exclude month-end close window.
batch-window | DailyCalendar | business-days | 4 | 2026-05-11 20:00 | Allow 06:00 to 20:00 only.
cron-blackout | CronCalendar | none | 1 | Fri 23:00 | Exclude release windows.

ACTIVE

## business-days

WeeklyCalendar / base: company-holidays
Overview
Rules
Triggers
Test
Calendar type WeeklyCalendar
Base calendar company-holidays
Triggers using 14
Timezone Europe/Rome
Mon 11
Tue 12
Wed 13
Thu 14
Fri 15
Sat 16
Sun 17

#### Test timestamp

Input: 2026-05-17 09:00 Europe/Rome
Included: false
Next included time: 2026-05-18 00:00 Europe/Rome

## Weekly Time Grid

A visual editor for DailyCalendar / WeeklyCalendar windows
MonTueWedThuFriSat 06:00openopenopenopenopenclosed 12:00openopenopenopenopenclosed 20:00closedclosedclosedclosedrelease freezeclosed

## Executions

Currently executing jobs are treated as live operational objects with fire instance id, scheduled versus actual fire time, run time, refire count, recovery state, and node ownership.

## Currently Executing Jobs

3 RUNNING1 RECOVERING

Fire instance | Job | Trigger | Scheduled | Actual | Run time | Refire | Node
--- | --- | --- | --- | --- | --- | --- | ---
node-a7f3-119238 | InvoiceSyncJob | invoice-sync-5m | 09:40:00 | 09:40:03 | 04:21 | 0 | node-a7f3
node-b912-119239 | CacheWarmupJob | cache-warmup | 09:42:30 | 09:42:31 | 01:53 | 0 | node-b912
node-a7f3-119240 | ErpRetryJob | erp-retry-window | 09:43:00 | 09:43:08 | 00:46 | 2 | node-a7f3

RUNNING

## node-a7f3-119238

InvoiceSyncJob / billing
Overview
Progress
Logs
Data Map
Recovering false
Refire count 0
Scheduled fire 09:40:00
Actual fire 09:40:03
Run time 04:21
Instance node-a7f3
Live progress from WebSocketProgressNotifier
144 / 200 invoices processed
Interrupt confirmation Interrupt by job key affects all matching running instances when the scheduler supports interruption. Prefer fire-instance interruption where available.

## Recent Execution History

Completed | Job | Trigger | Duration | Result | Node | Message
--- | --- | --- | --- | --- | --- | ---
09:39:58 | ReportJob | weekly-report | 00:11 | SUCCESS | node-b912 | Report generated for analytics group.
09:38:22 | ErpRetryJob | erp-retry-window | 00:31 | FAILED | node-a7f3 | ResourceAccessException from ERP endpoint.

## Event Stream

The old logs and progress panels become one observable stream with live mode, pause, text search, severity filtering, event-type filtering, and export for incident review.

## Live Events

STREAMING142 EVENTS / HOUR
TimeSeverityTypeSourceMessage
09:44:18INFOJOB_PROGRESSbillingInvoiceSyncJob processed 144 of 200 invoices for fireInstanceId node-a7f3-119238.
09:43:56WARNMISFIREfinancedaily-ledger-close missed fire at 09:30; SMART_POLICY resolved to FIRE_ONCE_NOW.
09:42:31ERRORTRIGGER_ERRORintegrationserp-retry-window entered ERROR after ErpRetryJob threw ResourceAccessException.
09:41:05INFOSCHEDULERnode-a7f3Cluster check-in completed. 2 scheduler instances active.
09:40:03INFOJOB_STARTEDbillingInvoiceSyncJob started from trigger invoice-sync-5m.
09:39:58INFOJOB_COMPLETEDanalyticsReportJob completed in 11 seconds on node-b912.

### Filters

Severity
Event type
Job / trigger / group
Scheduler instance
Time range

#### Saved view

Production incident filter: ERROR + MISFIRE across integrations and finance groups, last 4 hours.

## Scheduler / Settings

The full scheduler command surface belongs here: global lifecycle actions, delayed start, shutdown, clear, cluster metadata, nodes, currently executing jobs, and safety warnings for destructive operations.

RUNNING

## Lifecycle Controls

Global actions affect all jobs, triggers, calendars, and running executions
Strong confirmation required Shutdown stops the scheduler instance. Clear removes all scheduling data from the scheduler. Both actions should require typed confirmation and role checks.

## Scheduler Metadata

JDBC JOB STORE
Scheduler name quartz-manager-scheduler
Instance ID node-a7f3
Quartz version 2.3.2
Started 2026-05-11 08:14:03
Thread pool class SimpleThreadPool
Thread count 12
Job store class JobStoreTX
Clustered true

## Cluster Nodes

2 ACTIVE
node-a7f3
last check-in 2s ago / 8 active threads
LOCAL
node-b912
last check-in 4s ago / 4 active threads
REMOTE
node-c401
last check-in 19m ago / stale
STALE

## Global State Overview

3 EXECUTING4 PAUSED GROUPS1 ERROR TRIGGER

Area | Current state | Count | Representative key | Recommended action
--- | --- | --- | --- | ---
Executing jobs | RUNNING | 3 | InvoiceSyncJob | Open Executions before interrupting anything.
Paused groups | PAUSED | 4 | maintenance | Resume group only after maintenance window closes.
Error triggers | ERROR | 1 | erp-retry-window | Resolve root cause, then reset from Triggers page.
Misfires | MISFIRE | 5 / hour | daily-ledger-close | Review thread pool saturation and misfire policy.

## Create Trigger

Wizard keeps Quartz precision while removing raw-form friction.
Identity
Type
Schedule
Advanced
Preview

### Identity

Trigger key
Use Quartz key naming directly: name + group. Grouping becomes important once jobs and triggers scale.
Target job
Jobs are first-class objects. Pick an existing job or create one from the Jobs page.

### Trigger Type

Simple Repeat every fixed interval.
Cron Calendar expression builder.
Daily Time Run in a daily time window.
Calendar Interval Every N days, weeks, months.

### Schedule Editor

Start
Repeat interval
No raw milliseconds. Persist as Quartz repeatInterval, but edit in operational units.
Repeat count

### Advanced

Misfire policy
If a fire is missed, run once immediately, then keep the original five-minute cadence.
Priority
Calendar
Job data map override{ "tenant": "eu-west", "batchSize": 200 }

#### Plain-language summary

Run billing.InvoiceSyncJob every 5 minutes, starting today at 09:45 Europe/Rome, excluding non-business days, and fire once immediately if a misfire occurs.
1. 2026-05-11 09:45:00 Europe/Rome 2. 2026-05-11 09:50:00 Europe/Rome 3. 2026-05-11 09:55:00 Europe/Rome 4. 2026-05-11 10:00:00 Europe/Rome 5. 2026-05-11 10:05:00 Europe/Rome
Confirmation required before create This trigger will be attached to a durable job and may execute immediately if the start time is in the past.