lumnik. / scenarios All scenarios · Français

A critical incident is left without a technician

Goal Warn the maintenance manager as soon as a critical incident has no technician.

A CMMS exports its incidents as CSV. The conveyor on the gummy candy line has stopped, with no technician. The CMMS warns no one.

incidents-declared.csv
incident_id,line_id,line_name,equipment_id,equipment_name,severity,status,technician_id,reported_at,summary
INC-2026-0042,CANDY-LINE-07,Gummy candy moulding line,CNV-07-TRANSFER,Transfer conveyor,CRITICAL,DECLARED,UNASSIGNED,2026-10-19T06:15:00Z,Transfer conveyor stopped and the moulding line cannot discharge trays
calibration.csv
incident_id,line_id,line_name,equipment_id,equipment_name,severity,status,technician_id,reported_at,summary
CAL-0001,CANDY-LINE-00,Calibration line,EQ-CAL-01,Calibration conveyor,CRITICAL,ASSIGNED,TECH-CAL,2026-10-19T05:00:00Z,Critical severity domain witness
CAL-0002,CANDY-LINE-00,Calibration line,EQ-CAL-02,Calibration motor,INFO,DECLARED,TECH-CAL,2026-10-19T05:01:00Z,Declared status domain witness
CAL-0003,CANDY-LINE-00,Calibration line,EQ-CAL-03,Calibration sensor,INFO,ASSIGNED,UNASSIGNED,2026-10-19T05:02:00Z,Unassigned technician domain witness
manifests/20-incident-workflow.yaml
apiVersion: apps.lumnik.io/v1kind: Workflowmetadata:  name: scenario-gmao-incident-lifecyclespec:  scope: maintenance  provenance: declared  on:    table: connector.t_scenario_gmao_incidents    column: status    key: incident_id  dormancy:    after: 1m  states:    - code: DECLARED      label: Declared      initial: true    - code: ASSIGNED      label: Assigned    - code: IN_PROGRESS      label: In progress    - code: RESOLVED      label: Resolved    - code: CLOSED      label: Closed      terminal: true
manifests/30-unassigned-critical-process.yaml
apiVersion: apps.lumnik.io/v1kind: Processmetadata:  name: scenario-gmao-critical-unassignedspec:  scope: maintenance  on:    event: data.row.changed    table: connector.t_scenario_gmao_incidents  when:    - severity=CRITICAL    - status=DECLARED    - technician_id=UNASSIGNED  emit:    type: decision.gmao-critical-unassigned    message: "Critical incident {incident_id}: {equipment_name} stopped on {line_name}; no technician is assigned"
incidents-assigned.csv
incident_id,line_id,line_name,equipment_id,equipment_name,severity,status,technician_id,reported_at,summary
INC-2026-0042,CANDY-LINE-07,Gummy candy moulding line,CNV-07-TRANSFER,Transfer conveyor,CRITICAL,ASSIGNED,TECH-SMARTIN,2026-10-19T06:15:00Z,Transfer conveyor stopped and the moulding line cannot discharge trays

Limits

  • Read-only: no assignment written back to the CMMS.
  • Process flags. It does not dispatch or remind anyone.
  • Dormancy threshold declared, dormancy alert not shown.
  • Synthetic data.

Maintenance · CMMS

A conveyor stops. The manager is not told.

Critical incident, declared, no technician.

Gummy candy moulding line.

Fictional plant · synthetic data

The problem

The CMMS records. It does not alert.

  • The incident is in the CSV export.
  • No technician is assigned.
  • The maintenance manager does not know.

Nothing is changed

The CMMS stays as it is.

  • lumnik reads the export.
  • It does not write to the CMMS.
  • The rule is declared in lumnik.

What had to be written

when:
  - severity=CRITICAL
  - status=DECLARED
  - technician_id=UNASSIGNED

Three conditions, one decision.

The whole scenario fits in 3 declaration files, 57 lines.

What the manager receives

One decision, only one.

Decision inbox
Critical incident INC-2026-0042: Transfer conveyor stopped on Gummy candy moulding line; no technician is assigned

Real message, replay of 28 October 2026.

The next export

Technician assigned. No second alert.

  • The incident moves from DECLARED to ASSIGNED.
  • lumnik observes the move.
  • The Process stays silent.

The limits

lumnik flags. People act.

  • No assignment written to the CMMS.
  • No technician dispatched or reminded.

Try it

The scenario replays end to end.

Export, declaration, decision, assignment: each step is published with its output.

This scenario runs on lumnik Open, free and open source.

Try lumnik Open →