Change Management
Change Management protocol schemas
Source: packages/spec/src/system/change-management.zod.ts
import { ChangeImpactSchema, ChangePrioritySchema, ChangeRequestSchema, ChangeStatusSchema, ChangeTypeSchema, RollbackPlanSchema } from '@objectstack/spec/system';
import type { ChangeImpact, ChangePriority, ChangeRequest, ChangeStatus, ChangeType, RollbackPlan } from '@objectstack/spec/system';
// Validate data
const result = ChangeImpactSchema.parse(data);
| Property | Type | Required | Description |
|---|
| level | Enum<'low' | 'medium' | 'high' | 'critical'> | ✅ | Impact level |
| affectedSystems | string[] | ✅ | Affected systems |
| affectedUsers | number | optional | Affected user count |
| downtime | { required: boolean; durationMinutes?: number } | optional | Downtime information |
| Property | Type | Required | Description |
|---|
| required | boolean | ✅ | Downtime required |
| durationMinutes | number | optional | Downtime duration |
| Property | Type | Required | Description |
|---|
| id | string | ✅ | Change request ID |
| title | string | ✅ | Change title |
| description | string | ✅ | Change description |
| type | Enum<'standard' | 'normal' | 'emergency' | 'major'> | ✅ | Change type |
| priority | Enum<'critical' | 'high' | 'medium' | 'low'> | ✅ | Change priority |
| status | Enum<'draft' | 'submitted' | 'in-review' | 'approved' | 'scheduled' | 'in-progress' | 'completed' | 'failed' | 'rolled-back' | 'cancelled'> | ✅ | Change status |
| requestedBy | string | ✅ | Requester user ID |
| requestedAt | number | ✅ | Request timestamp |
| impact | { level: Enum<'low' | 'medium' | 'high' | 'critical'>; affectedSystems: string[]; affectedUsers?: number; downtime?: object } | ✅ | Impact assessment |
| implementation | { description: string; steps: object[]; testing?: string } | ✅ | Implementation plan |
| rollbackPlan | { description: string; steps: object[]; testProcedure?: string } | ✅ | Rollback plan |
| schedule | { plannedStart: number; plannedEnd: number; actualStart?: number; actualEnd?: number } | optional | Schedule |
| securityImpact | { assessed: boolean; riskLevel?: Enum<'none' | 'low' | 'medium' | 'high' | 'critical'>; affectedDataClassifications?: Enum<'pii' | 'phi' | 'pci' | 'financial' | 'confidential' | 'internal' | 'public'>[]; requiresSecurityApproval: boolean; … } | optional | Security impact assessment per ISO 27001:2022 A.8.32 |
| approval | { required: boolean; approvers: object[] } | optional | Approval workflow |
| attachments | { name: string; url: string }[] | optional | Attachments |
| metadata | Record<string, any> | optional | Custom metadata key-value pairs for extensibility |
| Property | Type | Required | Description |
|---|
| level | Enum<'low' | 'medium' | 'high' | 'critical'> | ✅ | Impact level |
| affectedSystems | string[] | ✅ | Affected systems |
| affectedUsers | number | optional | Affected user count |
| downtime | { required: boolean; durationMinutes?: number } | optional | Downtime information |
| Property | Type | Required | Description |
|---|
| description | string | ✅ | Implementation description |
| steps | { order: number; description: string; estimatedMinutes: number }[] | ✅ | Implementation steps |
| testing | string | optional | Testing procedure |
| Property | Type | Required | Description |
|---|
| description | string | ✅ | Rollback description |
| steps | { order: number; description: string; estimatedMinutes: number }[] | ✅ | Rollback steps |
| testProcedure | string | optional | Test procedure |
| Property | Type | Required | Description |
|---|
| plannedStart | number | ✅ | Planned start time |
| plannedEnd | number | ✅ | Planned end time |
| actualStart | number | optional | Actual start time |
| actualEnd | number | optional | Actual end time |
| Property | Type | Required | Description |
|---|
| assessed | boolean | ✅ | Whether security impact has been assessed |
| riskLevel | Enum<'none' | 'low' | 'medium' | 'high' | 'critical'> | optional | Security risk level |
| affectedDataClassifications | Enum<'pii' | 'phi' | 'pci' | 'financial' | 'confidential' | 'internal' | 'public'>[] | optional | Affected data classifications |
| requiresSecurityApproval | boolean | optional (default: false) | Whether security team approval is required |
| reviewedBy | string | optional | Security reviewer user ID |
| reviewedAt | number | optional | Security review timestamp |
| reviewNotes | string | optional | Security review notes or conditions |
| Property | Type | Required | Description |
|---|
| required | boolean | ✅ | Approval required |
| approvers | { userId: string; approvedAt?: number; comments?: string }[] | ✅ | Approvers |
| Property | Type | Required | Description |
|---|
| name | string | ✅ | Attachment name |
| url | string | ✅ | Attachment URL |
draft
submitted
in-review
approved
scheduled
in-progress
completed
failed
rolled-back
cancelled
standard
normal
emergency
major
| Property | Type | Required | Description |
|---|
| description | string | ✅ | Rollback description |
| steps | { order: number; description: string; estimatedMinutes: number }[] | ✅ | Rollback steps |
| testProcedure | string | optional | Test procedure |
| Property | Type | Required | Description |
|---|
| order | number | ✅ | Step order |
| description | string | ✅ | Step description |
| estimatedMinutes | number | ✅ | Estimated duration |