MOC Workflow
A Management of Change (MOC) follows a six-step lifecycle. Each step is handled by a specific role and has its own form, validation rules, and approval logic.
Lifecycle Overview
Step A Step B Step C Step D Step E Step F
Originator → Implementer → HSEQ Review → Approver → Implementation → Verification
(status "a") (status "b") (status "c") (status "d") (status "e") (status "f")
At any step from B to D, the assigned user may decline the MOC, which halts progression and notifies stakeholders.
Step A — Originator (Part A)
Actor: Any user initiating the change.
Form fields:
- Description of the change (rich text)
- Reason for change (dropdown with predefined options such as "Regulatory requirement", "Safety improvement", "Cost reduction", etc.)
- Department of change
- Affected departments and vessels (tag input)
- Implementer assignment (user selector)
- Departments to be informed (tag input)
- Supporting attachments
Route: POST /api/newmoc
What happens on submission:
- A serial number is generated in the format
{count}-{year}(e.g.,15-2026) - An originator form document is created
- A chat room is created for the MOC
- The MOC document is created with
status: "a" - The implementer receives an email notification
- The MOC advances to
status: "b"
Page: src/app/dashboard/Moc/create/page.tsx
Form component: src/components/forms/mocForms/originatorForm.tsx
Step B — Implementer Assessment (Part B)
Actor: The user assigned as Implementer.
Form fields:
- Has the change been adequately detailed and assessed? (Yes/No)
- Is the change necessary and justified? (Yes/No)
- Change category (multi-tag)
- Permanent or Temporary change
- Target timeline (date picker)
- Does it involve law/regulation?
- Certification/PMS amendment required?
- Legal review needed?
- Training needs identified?
- Business and public impact assessment
- Approver and HSEQ reviewer assignment (user selectors)
- Action plan and manuals/drawings plan
Route: POST /api/submit/implementer
Decline logic: If either "details assessed" or "necessary justified" is answered "No", the MOC is declined at stage B with a mandatory decline reason.
On approval: MOC advances to status: "c" and the HSEQ team receives an email.
Form component: src/components/forms/formComponents/implementerFormTable.tsx
Step C — HSEQ Review (Part C)
Actor: HSEQ department user assigned to the MOC.
Form fields:
- Has the change been adequately defined? (Yes/No)
- Is the justification satisfactory? (Yes/No)
- Has the risk assessment been adequately covered? (Yes/No)
- Comments
- Attachments
Route: POST /api/submit/hseq
Decline logic: If any of the three questions is answered "No", the MOC is sent back to status: "b" (Implementer) for revision.
On approval: MOC advances to status: "d" and the Approver receives an email.
Form component: src/components/forms/formComponents/hseqForm.tsx
Step D — Approver Review (Part D)
Actor: The user assigned as Approver.
Form fields:
- Have all changes been reviewed? (Yes/No)
- Is the MOC approved? (Yes/No)
- Has the implementer been informed? (Yes/No)
- Comments
- Attachments
Route: POST /api/submit/approver
Decline logic: If "MOC approved" is answered "No", the MOC is declined with a mandatory reason.
On approval: MOC advances to status: "e" for implementation.
Form component: src/components/forms/formComponents/approver.tsx
Step E — Implementation (Part E)
Actor: The Implementer.
Form fields:
- Has the MOC been circulated?
- Was the implementation carried out as planned?
- Was there any deviation during implementation? (triggers deviation sub-form)
- Temporary MOC review details
- Completion date
- Does the MOC require an extension? (triggers extension sub-form)
- When was the verifier informed?
Route: POST /api/submit/implementation
Deviation/Extension handling:
- If a deviation or extension is flagged, the MOC returns to
status: "b"for the implementer to address. A separate approval cycle is initiated. - Deviations and extensions are tracked in the
extentionsAndDeviationsfield on the MOC document. - The endpoint
POST /api/submit/deviation-extentionhandles marking individual deviations/extensions as resolved.
On completion (no deviations): MOC advances to status: "f".
Form component: src/components/forms/formComponents/implementation.tsx
Step F — Verification and Close-out (Part F)
Actor: The HSEQ / Verifier user.
Form fields:
- Is the action plan correct and complete?
- Have manuals and plans been changed?
- Have required trainings been completed?
- Has feedback been completed?
- Is the MOC effective?
- Any improvement suggestions?
- Close MOC confirmation
- Comments and date
Route: POST /api/submit/verifier
On submission: MOC is marked as completed: true with status: "f". Completion emails are sent to all stakeholders.
Form component: src/components/forms/formComponents/verification.tsx
MOC Detail Page
The central page for viewing and editing a MOC is located at:
src/app/dashboard/Moc/list/[moc_id]/page.tsx
This page orchestrates all six form steps. It determines which form the current user can edit vs. preview based on their role and the MOC's current status. A draggable navigation panel allows jumping between steps.
Key logic in this page:
previewOrEdit(moc, currentForm)— Returns whether the current user sees a read-only preview or an editable formvalidate(formType, form)— Validates required fields before submissionsubmit(index, state, moc_id)— Routes the submission to the appropriate API endpoint
Cloning a MOC
Any MOC can be cloned to create a new instance with pre-filled data:
- Endpoint:
POST /api/cloneMoc - Creates new originator, implementer, and implementation documents
- Generates a new serial number
- Sets
cloned: trueand links to the previous MOC - Starts the new MOC at
status: "b"