ITSM

Change Management

Complete field reference, approval workflow, CAB process, state machine, and role-based access for Change Management.

What is a Change?

A change request is a formal proposal to add, modify, or remove anything that could affect IT services. FlowOS implements the ITIL change management process including risk assessment, CAB review, scheduled implementation windows, and rollback planning.

Change Types

Standard

Pre-approved, low-risk, routine changes. No CAB review required. Examples: password resets, routine patching.

Normal

Non-urgent changes requiring CAB review and approval. Full lifecycle: draft → review → approve → implement → complete.

Emergency

Urgent changes required to resolve a major incident. Emergency CAB review. Accelerated approval process.

Field Reference

FieldTypeRequiredDefaultDescription
idstring (chg_...)requiredautoUnique identifier. Format: chg_ + ULID.
numberstringrequiredautoHuman-readable number (CHG-NNNN). Auto-incremented.
titlestring (max 255)requiredShort summary of the change.
descriptiontextrequiredDetailed description of what is being changed and why. Supports Markdown.
typeenumrequirednormalstandard · normal · emergency
categorystringoptionalhardware · software · network · database · security · process · other
riskenumrequiredmediumlow · medium · high · critical. Used for CAB routing and approval requirements.
impactenumrequiredmediumlow · medium · high · critical. Business impact if change fails.
statusenumrequireddraftdraft · review · approved · rejected · scheduled · implementing · completed · rolled_back · cancelled
implementationPlantextrequiredStep-by-step implementation plan. Required before submission.
rollbackPlantextrequiredSteps to undo the change if something goes wrong. Required before submission.
testPlantextoptionalHow the change will be validated after implementation.
businessJustificationtextoptionalBusiness reason for the change. Required for high/critical risk changes.
scheduledStarttimestampoptionalPlanned start of implementation window (UTC).
scheduledEndtimestampoptionalPlanned end of implementation window (UTC).
actualStarttimestampoptionalWhen implementation actually began. Auto-set on implement action.
actualEndtimestampoptionalWhen implementation completed or was rolled back. Auto-set.
assignedTeamstringoptionalTeam responsible for implementing the change.
assignedTostring (usr_...)optionalIndividual responsible for implementation.
requestedBystring (usr_...)optionalactorUser requesting the change. Defaults to the creating user.
cabReviewersstring[] (usr_...)optional[]List of users who must approve this change. All must approve for status to advance.
approvalsobject[] (read-only)optionalcomputedApproval records: [{ userId, status, comment, timestamp }]. Read-only.
cmdbItemsstring[] (ci_...)optional[]CMDB items that will be changed (hosts, services, network devices, etc.).
relatedIncidentsstring[] (inc_...)optional[]Incidents this change addresses.
relatedProblemsstring[] (prb_...)optional[]Problems this change resolves.
releaseIdObjectIdoptionalnullThe release this change is bundled into, if any. See Release Management.
tagsstring[]optional[]Free-form labels for filtering and reporting.
conflictsWithstring[] (chg_...)optional[]Other changes that cannot run in the same window. Enforced by the change calendar.
customFieldsobject (jsonb)optional{}Workspace-configured custom fields.
createdAttimestampoptionalautoRecord creation timestamp.
updatedAttimestampoptionalautoLast modified timestamp.

Status Lifecycle

StatusDescriptionValid TransitionsWho Can Transition
draftBeing authored. Not visible to CAB reviewers.review, cancelledCreator, Admin
reviewUnder CAB review. Reviewers can approve/reject.approved, rejected, draftSystem (on all-approved), Admin
approvedAll required approvers have approved.scheduled, implementing, cancelledCreator, Admin
rejectedOne or more reviewers rejected. Must be revised.draftCreator, Admin
scheduledApproved and placed on change calendar.implementing, cancelledAssignee, Admin
implementingImplementation actively in progress.completed, rolled_backAssignee, Admin
completedSuccessfully implemented and verified.— (terminal)
rolled_backImplementation was reversed.— (terminal)
cancelledChange abandoned before implementation.— (terminal)

CAB Approval Process

When a change is submitted for review (POST /submit-to-cab), FlowOS creates an approval record for each user in cabReviewers. The change remains in cab_review status until all reviewers have approved. A single rejection moves the change to rejected.

Approval decisions are recorded in the cabApprovals / cabRejection fields and triggerchange.approved / change.rejected events. Rejection requires a reason; approval takes no body.

bash
# Submit for CAB review
POST /api/itsm/changes/:id/submit-to-cab

# Approve (CAB member)
POST /api/itsm/changes/:id/cab-approve

# Reject (CAB member)
POST /api/itsm/changes/:id/cab-reject
{ "reason": "Rollback plan is insufficient. Need step-by-step revert procedure." }

Change Calendar & Conflict Detection

FlowOS checks for scheduling conflicts when a change is set to scheduled. A conflict exists when two changes overlap in their scheduled window AND share one or more CMDB items. Conflicts produce a warning (not a block by default; configurable to hard-block under Settings → Change Management).

Releases

A change can be bundled into a release via its releaseIdfield, grouping several related changes into one deployment with its own approve/deploy/rollback lifecycle and ITIL release phases. Changes are linked and unlinked through the release's own API, not the change endpoints below.

API Quick Reference

GET
/api/itsm/changes

List changes with filters

POST
/api/itsm/changes

Create a change request

GET
/api/itsm/changes/:id

Get change with approvals and timeline

PATCH
/api/itsm/changes/:id

Update change fields (draft status only) — also used to set scheduledStart/scheduledEnd

POST
/api/itsm/changes/:id/submit-to-cab

Submit for CAB review

POST
/api/itsm/changes/:id/cab-approve

Approve (CAB member)

POST
/api/itsm/changes/:id/cab-reject

Reject with reason

POST
/api/itsm/changes/:id/implement

Mark implementation started

POST
/api/itsm/changes/:id/complete

Mark implementation complete

POST
/api/itsm/changes/:id/cancel

Cancel the change