ITSM

Event Management

Ingest monitoring alerts as first-class events, correlate them against CMDB configuration items, group them into incidents automatically, and track acknowledgement.

Overview

Event Management gives external monitoring tools a single ingestion point for raw signals — an Event record — independent of whether or how that signal eventually becomes an incident. Events carry a severity, an optional link to a CMDB configuration item, and a lifecycle of their own (openacknowledgedresolvedclosed). Correlation rules can then group related events and, when a threshold is crossed, automatically open an incident.

Not the same as MSP alert ingestion
This module is the ITSM-side event pipeline (/api/event-management/...). It is separate from the RMM-tool alert webhook documented under MSP Platform (POST /api/alerts/ingest), which targets a client workspace directly rather than creating an Event record.

Event Fields

FieldTypeRequiredDefaultDescription
numberstringrequiredauto (EVT-...)Human-readable event number.
sourcestringrequiredName of the monitoring tool or system that sent the event.
severityenumrequiredcritical · major · minor · warning · info
ciIdstring (ObjectId)optionalnullCMDB configuration item this event correlates to.
messagestringrequiredEvent message / description.
statusenumoptionalopenopen · acknowledged · resolved · closed
correlatedIncidentIdstring (ObjectId)optionalnullIncident this event was correlated/grouped into, if any.
receivedAttimestampoptionalnowWhen the event was ingested.
acknowledgedAttimestampoptionalnullWhen the event was acknowledged.
acknowledgedBystring (usr_...)optionalnullUser who acknowledged the event.
resolvedAttimestampoptionalnullWhen the event was resolved.
metadataobjectoptional{}Arbitrary payload passed through from the monitoring tool (raw alert fields, tags, etc.).

Alert Ingestion

External monitoring tools post events to a single authenticated ingest endpoint. source, severity, and message are required; everything else is optional.

POST
/api/event-management/ingest

Create an event from an external monitoring signal

json
POST /api/event-management/ingest
{
  "source": "datadog",
  "severity": "critical",
  "message": "CPU usage above 95% on db-primary-01",
  "ciId": "665f1e2a9c1d4a0012ab34cd",
  "metadata": {
    "host": "db-primary-01",
    "metric": "cpu.usage",
    "threshold": 95
  }
}

A sequential number (EVT-...) is generated and the event is stored with status: "open" and receivedAt set to the current time.

CI Correlation

An event links to a CMDB configuration item through its ciId field, set at ingest time by the caller (the monitoring tool or an integration is responsible for resolving its own device/host identifier to a FlowOS CI). See CMDB for configuration item records. Once set, ciId is used to:

  • Filter events by CI in GET /api/event-management (?ciId=...).
  • Carry impact context onto an incident created from the event — both the manual create-incident action and rule-based auto-creation copy ciId onto the resulting incident’s ciId and affectedCiIds.
  • Scope correlation rules to a specific CI via a rule’s matchCiId condition.

Auto-Incident Creation

An event can turn into an incident in two ways:

1. Manual, per-event

An agent reviewing a single open event can promote it directly:

POST
/api/event-management/:id/create-incident

Create an incident from this event and mark the event acknowledged/correlated

This creates an incident titled Event: {message}, maps the event's severity to an incident priority (critical→critical, major→high, minor→medium, warning→low, info→low), sets contactType: "alert", and copies ciId onto the incident. The source event is then updated with correlatedIncidentId and moved to status: "acknowledged".

2. Automatic, via correlation rules

Event Correlation Rules (/api/event-management/correlation-rules) match a window of recent open events by severity, source (regex), CI, and/or message pattern, and trigger when at least thresholdCount matching events land within thresholdWindowMinutes. A rule with action: "create_incident" auto-creates an incident (title from the incidentTitle template, priority from incidentPriority) and marks every matching event's correlatedIncidentId, so the same burst of events is not correlated into a second incident. Rules also support group, suppress, and escalate actions. Evaluation runs via:

POST
/api/event-management/correlation-rules/evaluate

Evaluate all active correlation rules against recent events (called on ingest, or manually for testing)

Acknowledge

Moves an open event to acknowledged, recording who and when. Only succeeds on events currently status: "open".

POST
/api/event-management/:id/acknowledge

Acknowledge an open event

Stats

Summary counters for dashboards — total events, currently open, and open events at critical/major severity.

GET
/api/event-management/stats

Get event counts: total, open, critical (open), major (open)

json
// GET /api/event-management/stats
{
  "success": true,
  "data": { "total": 1842, "open": 37, "critical": 4, "major": 11 }
}

API Quick Reference

POST
/api/event-management/ingest

Ingest an event from an external monitoring tool

GET
/api/event-management

List events (filter by status, severity, ciId)

GET
/api/event-management/:id

Get a single event

POST
/api/event-management/:id/acknowledge

Acknowledge an open event

POST
/api/event-management/:id/create-incident

Manually create an incident from this event

GET
/api/event-management/stats

Event count summary

GET
/api/event-management/correlation-rules

List correlation rules

POST
/api/event-management/correlation-rules

Create a correlation rule

GET
/api/event-management/correlation-rules/:id

Get a correlation rule

PATCH
/api/event-management/correlation-rules/:id

Update a correlation rule

DELETE
/api/event-management/correlation-rules/:id

Delete a correlation rule

POST
/api/event-management/correlation-rules/evaluate

Evaluate active rules against recent events