Coflyr · WorkStep model consolidation review

WorkStep

One model and one table containing all mapped WorkStep fields.

Under development · HTML review only. All other WorkStep model/table definitions are marked Dropped and merged here. The current backend has 152 shared-table columns across eleven typed roles; phase/reference tables and C# model consolidation await implementation after complete review.

Model index · Merge scope and adoption

105 proposed combined fields14 source model inventories

Unified field inventory

Duplicate physical fields appear once. ActionType merges into its existing EntryType column. Role-specific values remain separate rows; shared nullable fields retain required checks for the applicable RecordKind. Types, values, links and source meanings are retained for review.

FieldCombined typeStorage / role requirementsPurposeSource fields
ActionEndDate
DateTime?
Nullable
Required for: ResourceAssignment
End/completion timestamp of the activity represented by this WorkStep row. On a FailureConfirmation execution entry, records when the failure was confirmed and is required. Keep that entry separate from the main executable step and resource-allocation rows, preserving their own work/allocation intervals. Also consolidates former ActionDate and EndAt; reconcile differing historical timestamps and signing behavior during deferred adoption. Rename ActionDate to ActionEndDate and merge with the existing ActionEndDate field. Backend/database adoption is pending complete review. Merge EndAt into ActionEndDate for this ResourceAssignment row; preserve the allocation interval, duration and request-window/overlap validation. Backend/database adoption deferred.
WorkStep.ActionEndDate, WorkorderExecutionEntry.ActionEndDate, WorkStep.ActionDate, WorkorderExecutionEntry.ActionDate, WorkpackageOrder.FailureConfirmedAt, WorkStepResourceAssignment.EndAt
ActionRemarks
String
Nullable
Optional
Records action remarks for this work step. Used by: WorkStep, WorkStepMaterialDemand, WorkStepMeasurementDefinition, WorkStepResourceRequest, WorkStepSoftwareChangePlan, WorkorderExecutionEntry.
WorkStep.ActionRemarks, WorkStepMaterialDemand.ActionRemarks, WorkStepMeasurementDefinition.ActionRemarks, WorkStepResourceRequest.ActionRemarks, WorkStepSoftwareChangePlan.ActionRemarks, WorkorderExecutionEntry.ActionRemarks
ActionSigner
String
Nullable
Optional
Records action signer for this work step. Used by: WorkStep, WorkorderExecutionEntry.
WorkStep.ActionSigner, WorkorderExecutionEntry.ActionSigner
ActionStartDate
DateTime?
Nullable
Required for: ResourceAssignment
Start timestamp for the activity represented by this WorkStep row: work start for execution/action rows, or the booked allocation start for ResourceAssignment rows. Required for ResourceAssignment. Each linked row retains its own interval; RequestedStart remains the requested planning window. Replaces StartAt on allocation rows during deferred adoption. Merge StartAt into ActionStartDate for this ResourceAssignment row; preserve the allocation interval, duration and request-window/overlap validation. Backend/database adoption deferred.
WorkStep.ActionStartDate, WorkorderExecutionEntry.ActionStartDate, WorkStepResourceAssignment.StartAt
ActionText
String
Nullable
Required for: Execution
Standard description/text of the activity represented by this WorkStep row. On a FailureConfirmation execution-entry child, records the failure description; preserve the main executable step instructions on their own row. Replaces the separate FailureDescription field. Preserve all legacy failure text, including values up to the existing 2000-character limit, during later adoption. TemplateStep rows use ActionText for reusable instructions. Preserve the full formatted legacy InstructionHtml, including long instructions; adapt storage/rendering capacity before adoption rather than truncating it. Instructions remain separate from actual performed-action and failure-entry text.
RepositoryWorkStepRevision.ActionText, WorkStep.ActionText, WorkorderExecutionEntry.ActionText, WorkpackageOrder.FailureDescription, WorkTemplateItem.InstructionHtml
ActionTitle
String
Nullable
Required for: Repository, RepositoryRevision, MeasurementDefinition, Phase, TemplateStep
Human-readable title of this WorkStep row. Use the existing ActionTitle for executable actions, repository/revision definitions and measurement definitions; merge the former WorkStepPhase.Name into this same title field for Phase-role rows. For example, a Phase row can be titled Removal while an executable row is titled Remove hydraulic pump. Keep each row's own title; do not overwrite a task/action title with its phase label. Preserve existing ActionTitle values and phase names during later adoption, reconcile any conflicting values explicitly, and retain role-specific required validation. Backend/database adoption remains pending complete review. TemplateStep rows use ActionTitle for the required item heading. Preserve all legacy titles and the existing 250-character item capacity during adoption. Records action title for this work step. Used by: RepositoryWorkStep, RepositoryWorkStepRevision, WorkStep, WorkStepMeasurementDefinition, WorkorderExecutionEntry. Merge the phase display name into ActionTitle on its Phase-role WorkStep row. Preserve existing phase names; backend/database adoption pending complete review.

Merge pending complete review · Reuse existing ActionTitle; preserve titles and phase names per row

RepositoryWorkStep.ActionTitle, RepositoryWorkStepRevision.ActionTitle, WorkStep.ActionTitle, WorkStepMeasurementDefinition.ActionTitle, WorkorderExecutionEntry.ActionTitle, WorkStepPhase.Name, WorkTemplateItem.Title
ActivatedAt
DateTime?
Nullable
Optional
Records the activated at for this work step.
RepositoryWorkStepRevision.ActivatedAt
ActualManpower
Single?
Nullable
Optional
Records actual manpower for this work step. Used by: WorkStep.
WorkStep.ActualManpower
AdditionalInfo
String
Nullable
Optional
Records additional info for this work step.
WorkStepMaterialDemand.AdditionalInfo
AtaId
Guid?
Nullable
Optional
Selects the related ata record. Used by: WorkStep.
WorkStep.AtaId
AuthorizationId
Guid?
Nullable
Optional
Selects the related authorization record.
WorkStepResourceRequest.AuthorizationId
BookingEnd
DateTime?
Nullable
Required for: Execution
Labor-time booking end timestamp associated with this executable WorkStep. Retain the nullable timestamp; null means no stop has been recorded and does not alone prove a booking is active. Book-off must use each StaffTimeBooking record's own end timestamp. Define any step-level summary for multiple staff and repeated sessions during later implementation. Renamed from LiveBookingStoppedAt; moved from WorkorderMaster. Backend/database adoption pending complete review.
WorkpackageMaster.LiveBookingStoppedAt
BookingStart
DateTime?
Nullable
Required for: Execution
Labor-time booking start timestamp associated with this executable WorkStep. Retain the nullable timestamp; null means no start has been recorded. Individual StaffTimeBooking records remain the source of booking start times. Define derivation or synchronization for multiple staff and repeated sessions during later implementation. Renamed from LiveBookingStartedAt; moved from WorkorderMaster. Backend/database adoption pending complete review.
WorkpackageMaster.LiveBookingStartedAt
CertifiedHumanResourceId
Guid?
Nullable
Optional
Nullable UUID lookup to StaffMember in Human Resources identifying the person certifying this work or execution entry. Replaces the free-text CertificationNumber field. Display the selected staff code/name and use linked staff licence/authorization records for credential details; this ID identifies the person and does not by itself verify certification privileges. Preserve legacy credential evidence and reconcile it to staff/authorization records during later adoption.
WorkStep.CertificationNumber
ChangeReference
String
Nullable
Optional
Optional reference identifying the planned software change, such as an engineering order or change request. Final field design and retention will be decided after review. Optional software-change reference. Under review; the final field design and retention will be decided later. Backend/database unchanged.

Under review · Decision pending

WorkStepSoftwareChangePlan.ChangeReference
ClassificationCode
String
Nullable
Optional
Optional classification code for the resource requested by this WorkStep. Review the category definitions, lookup design and relationship to resource and authorization frameworks before later implementation. Optional resource-request classification. Under review for later implementation; category definitions, lookup design and resource/authorization integration remain to be decided.

Under review · Later implementation

WorkStepResourceRequest.ClassificationCode
ComponentActionRole
ComponentActionRole? { Subject, Removed, Installed, Source, Destination }
Nullable
Optional
Role of this component identity row within its owning action: Subject for a single-unit action, Removed/Installed for replacement, or Source/Destination for paired moves and swaps. The parent action is identified by existing OwnerRecordId. This supports repeated child WorkStep rows rather than adding duplicate removed/installed identity columns.
ComponentActionType
ComponentActionType? { Install, Remove, Update, Replace, Swap, Inspect, Repair, Overhaul, Test, Service, Adjust, Modify, Calibrate, Other }
Nullable
Optional
Action performed on a part or serialized unit: Install, Remove, Update, Replace, Swap, Inspect, Repair, Overhaul, Test, Service, Adjust, Modify, Calibrate or Other. Replaces ComponentMovement; keep EntryType as the high-level execution classification. Preserve legacy Install=1 and Remove=2 during later adoption. Update describes an update to unit data/condition; software changes retain their existing SoftwareUpdate planning/execution rules. Replace ComponentMovement with ComponentActionType in the unified proposal; preserve legacy data and role-specific validation during later adoption.
WorkorderExecutionEntry.ComponentMovement
ConfigurationId
Guid?
Nullable
Optional
Nullable UUID lookup to Configuration selecting the functional position applicable to this WorkStep row. Source and destination are separate linked rows, each using its own ConfigurationId; ComponentActionRole identifies its role. For material demand, selects where the requested part will be used. Validate the position against ConfigurationMasterId and preserve legacy location text and both movement sides during deferred adoption.
RepositoryWorkStep.ConfigurationId, RepositoryWorkStepRevision.ConfigurationId, WorkStep.ConfigurationId, WorkStepComponentSelection.ConfigurationId, WorkStepExecutionOccurrence.ConfigurationId, WorkStepMaterialDemand.ConfigurationId, WorkStepMeasurementDefinition.ConfigurationId, WorkStepRecord.ConfigurationId, WorkStepResourceAssignment.ConfigurationId, WorkStepResourceRequest.ConfigurationId, WorkStepSoftwareChangePlan.ConfigurationId, WorkorderExecutionEntry.ConfigurationId, WorkStepMaterialDemand.AircraftLocationCode, WorkorderExecutionEntry.FromConfigurationId, WorkorderExecutionEntry.ToConfigurationId
ConfigurationMasterId
Guid?
Nullable
Optional
Nullable UUID lookup selecting the configuration master for the aircraft/component position applicable to this WorkStep row, including source, destination and material-demand rows. ConfigurationId must belong to this master. Together with ConfigurationId and LocationReferenceId, replaces AircraftLocationCode. Backend/database adoption deferred.
WorkStepMaterialDemand.AircraftLocationCode
CreationMode
WorkStepCreationMode? { Individual, Repository, Import, Link }
Nullable
Required for: Execution
Records creation mode for this work step. Used by: WorkStep.
WorkStep.CreationMode
CriticalEventId
Guid?
Nullable
Optional
Nullable UUID lookup to CriticalEvent selecting this WorkStep row's category, operational requirement flags and multi-select task controls. Display category Code and Name. Replaces TaskControlProfileId for WorkStep: use CriticalEvent.ControlOptions for critical-task classification and inspection, power, testing and other task-control requirements; derive the category's independent-inspection flag from the corresponding option. Applies to executable WorkSteps and repository/revision definitions; leave empty only when no category or controls apply. Map existing profile combinations and taskcard/maintenance-task inherited controls explicitly. Preserve current signed inspection, double-inspection and reinspection closure requirements and approved/historical requirement values. Keep WorkorderMaster.CriticalEventId as a separate header selection and define inheritance explicitly. Backend/database adoption remains pending complete review. Optional category lookup; backend/database adoption pending complete review.

New CriticalEvent lookup pending complete review · Replace WorkStep task-control profile selection; preserve inherited controls and closure validation during adoption

New WorkStep.CriticalEventId lookup proposal, WorkStep.TaskControlProfileId
DefectId
Guid?
Nullable
Optional
Nullable UUID lookup to the existing DefectDamageReport associated with this executable WorkStep. Select the defect by ReportNumber and Title to identify the condition being investigated or rectified. Several WorkSteps may reference the same defect; leave this empty for work unrelated to a defect. Keep defect details and reporting history on DefectDamageReport, and validate matching aircraft/component and workorder context during implementation. Applies to executable WorkSteps. Backend/database adoption pending complete review. The existing DefectDamageReport.WorkStepId identifies the originating/reporting step; preserve that separate meaning.

Add defect lookup · Backend / DB adoption pending complete review

New WorkStep.DefectId lookup proposal
DeferredDefectId
Guid?
Nullable
Optional
Nullable UUID lookup to DeferredDefectMaster identifying the deferred-defect case associated with this executable WorkStep. Select by DeferralCode and Title, displaying the case Status. Several WorkSteps can reference the same deferred defect; leave empty when no deferral applies. Use the selected case's DeferredReferenceItemId lookup to obtain DeferredReferenceItem.MelCategory rather than storing separate MelCategory text on WorkStep. Keep the existing DefectId lookup for the underlying defect; when both IDs are selected, validate that the case's DefectDamageReportId matches DefectId and that its WorkorderId is consistent with the step's owning workorder. Deferral approvals, limits, expiry and closure remain managed by the deferred-defect workflow. Reconcile legacy category values and applicable historical references during deferred implementation. Applies to executable WorkSteps. Replaces duplicated MEL-category handling with a case association; legacy category text is not a foreign-key value. Backend/database adoption pending complete review.

Add deferred-defect lookup · Backend / DB adoption pending complete review

New WorkStep.DeferredDefectId lookup proposal, WorkorderExecutionEntry.MelCategory
DurationHours
Decimal?
Nullable
Optional
Records duration hours for this work step.
WorkStepResourceRequest.DurationHours
EntryType
WorkStepEntryType? { Action, InspectionAction, Measurement, Transfer, Uplift, ComponentChange, Time, SoftwareUpdate, ComponentShopAction, DoubleInspectionAction, MechanicSign, Crs, ReinspectionAction, Sign, Inspect, FailureConfirmation }
Nullable
Required for: ExecutionEntry
Overall execution-entry category. Preserve all existing WorkStepEntryType values and add proposed FailureConfirmation for a linked entry recording failure confirmation using StaffMemberId and ActionEndDate. The entry belongs to the executable WorkStep through WorkStepId. Keep component operations in ComponentActionType and preserve current API compatibility during deferred adoption. FailureConfirmation is authoritative only when linked, attributable, dated and valid; derive any displayed confirmation summary from that evidence. Crs/release entries must satisfy authorization and release-scope validation; a generic sign is not release evidence. HTML review decision; backend / database adoption pending complete review.
WorkorderExecutionEntry.ActionType
EstimatedManHours
Decimal?
Nullable
Optional
Single nullable Decimal planned labor estimate in person-hours, merging PlannedManpower with repository EstimatedManHours. Example: two technicians working three hours represent six person-hours; headcount is two on the staff request Quantity. Preserve repository estimates and executable overrides on their respective rows, reconcile conflicting same-row values and explicitly convert finite Single estimates to Decimal without silent precision loss. ActualManpower remains actual effort; TotalHours remains the effort requested by a specific resource-demand row. HTML review decision; backend / database adoption pending complete review. Merge planned labor effort into EstimatedManHours. Current creation code populates PlannedManpower from task/repository estimated man-hours, so the retained unit is person-hours. Convert finite Single values to Decimal explicitly, preserving null/zero and documented precision. Reconcile differing estimates; do not sum duplicate estimates or reinterpret genuine legacy headcount as hours. Staff headcount belongs to a staff resource request Quantity. HTML review decision; backend / database adoption pending complete review.

Merge decision recorded; implementation pending · One authoritative field / workflow

RepositoryWorkStepRevision.EstimatedManHours, WorkStep.PlannedManpower
ExternalReference
String
Nullable
Optional
Records external reference for this work step.
WorkStepExecutionOccurrence.ExternalReference
FacilityId
Guid?
Nullable
Optional
Selects the related facility record.
WorkStepResourceAssignment.FacilityId
HeaderReference
String
Nullable
Optional
Header reference text applicable to this WorkStep.
WorkpackageOrder.HeaderReference
Id
Guid
Required
Required for: Repository, RepositoryRevision, Execution, ComponentSelection, ExecutionOccurrence, MaterialDemand, MeasurementDefinition, All record roles, ResourceAssignment, ResourceRequest, SoftwareChangePlan, ExecutionEntry, Phase
Stable identifier for this record. Used by: RepositoryWorkStep, RepositoryWorkStepRevision, WorkStep, WorkStepComponentSelection, WorkStepExecutionOccurrence, WorkStepMaterialDemand, WorkStepMeasurementDefinition, WorkStepRecord, WorkStepResourceAssignment, WorkStepResourceRequest, WorkStepSoftwareChangePlan, WorkorderExecutionEntry.
RepositoryWorkStep.Id, RepositoryWorkStepRevision.Id, WorkStep.Id, WorkStepComponentSelection.Id, WorkStepExecutionOccurrence.Id, WorkStepMaterialDemand.Id, WorkStepMeasurementDefinition.Id, WorkStepRecord.Id, WorkStepResourceAssignment.Id, WorkStepResourceRequest.Id, WorkStepSoftwareChangePlan.Id, WorkorderExecutionEntry.Id, WorkStepPhase.Id
IpcReference
String
Nullable
Optional
Records ipc reference for this work step.
WorkStepMaterialDemand.IpcReference
IsMandatory
Boolean?
Nullable
Required for: Execution
Indicates whether mandatory applies to this work step. Used by: WorkStep.
WorkStep.IsMandatory
IsRemovedServiceable
Boolean
Required
Required for: Execution
Indicates that the component removed by this WorkStep is in serviceable condition at removal, for example when transferring a working component to another aircraft. Preserve the required Boolean and existing default false during later adoption. This records removal condition only; it does not certify installation eligibility or release. Where one step removes multiple components, reconcile this flag with each component removal record rather than assuming all have the same condition. Moved from WorkorderMaster; backend/database adoption pending complete review. Merge the duplicate legacy RemovedInServiceableCondition flag into this existing WorkStep field; reconcile differing legacy values during backend/database adoption.
WorkorderMaster.IsRemovedServiceable, WorkpackageMaster.RemovedInServiceableCondition
LocationReferenceId
Guid?
Nullable
Optional
Single nullable UUID lookup to LocationReference identifying the area, panel, zone or other aircraft/component location applicable to this WorkStep row. Rename and merge the existing WorkStep.LocationId into LocationReferenceId; LocationId already targets LocationReference, so preserve its existing UUID values and relationship rather than creating a second lookup. Also replaces HeaderAreaCode, HeaderPanelCode and HeaderZoneCode, and replaces AircraftLocationCode together with ConfigurationMasterId and ConfigurationId. Display the selected reference code/name and location category. Resolve legacy text by category and aircraft/component context, reconcile any disagreement with an existing LocationId, and preserve multiple distinct locations through separate linked WorkStep rows. Validate consistency with the selected configuration and adapt API, graph links and validation references during later implementation. Backend/database adoption remains pending complete review. Drop the duplicate LocationId name from the unified WorkStep proposal by renaming/merging it into LocationReferenceId. Both names target the same LocationReference model. Carry existing UUIDs and the relationship into the retained field; reconcile legacy area/panel/zone/location text and preserve distinct locations during later adoption. Update API, graph-link and validation references together. Backend/database adoption remains pending complete review.

Rename and merge pending · Single lookup; preserve existing LocationId UUIDs and resolve legacy text during later implementation

WorkStepMaterialDemand.AircraftLocationCode, WorkStepReferenceDetails.HeaderAreaCode, WorkpackageOrder.HeaderAreaCode, WorkStepReferenceDetails.HeaderPanelCode, WorkpackageOrder.HeaderPanelCode, WorkStepReferenceDetails.HeaderZoneCode, WorkpackageOrder.HeaderZoneCode, WorkStep.LocationId
MaintenancePublicationId
Guid?
Nullable
Optional
Selects the related maintenance publication record. Used by: WorkStep.
WorkStep.MaintenancePublicationId
MaintenanceTaskId
Guid?
Nullable
Optional
Selects the related maintenance task record. Used by: WorkStep.
WorkStep.MaintenanceTaskId
MeasurementIdentifier
String
Nullable
Required for: MeasurementDefinition
Single local measurement code used on a planned MeasurementDefinition row and its corresponding measurement-result execution entries, replacing the separate MeasurementId name. Example: CLR identifies the clearance measurement within the owning executable WorkStep. Require a nonempty code on measurement definitions and on results associated with a planned measurement; definition codes must be unique within their owning WorkStep, while repeated readings may reuse the same code on separate result rows. Preserve formula references, case/normalization behavior and existing result-to-definition matching during adoption. MeasurementIdentifierId remains the separate UUID lookup to the reusable common measurement definition; this text code is not that master ID. Preserve every legacy code and repeated result, reconcile conflicts explicitly and adapt planning, result entry, formulas and closure validation before backend/database adoption. Backend/database changes remain pending complete review. Merge MeasurementId into the single MeasurementIdentifier text code for measurement definitions and corresponding execution results. Preserve per-workstep uniqueness of planned codes, formula references and repeated readings; keep MeasurementIdentifierId as the separate reusable definition lookup. Backend/database adoption remains pending complete review.

Merge pending complete review · One local code for definitions/results; MeasurementIdentifierId remains the reusable master lookup

WorkorderExecutionEntry.MeasurementIdentifier, WorkStepMeasurementDefinition.MeasurementId
MeasurementIdentifierId
Guid?
Nullable
Optional
Nullable UUID lookup to the common MeasurementIdentifier definition for the measurement associated with this WorkStep. Manage units through MeasurementIdentifier.Unit and UnitGroup, numeric limits through its limit fields, and custom allowed answers through its Values. Manage numerical/custom classification in the common definition during deferred implementation; review any required extension of MeasurementIdentifier rather than retaining a separate WorkStep MeasurementType. The separate MeasurementType, MeasurementUnit, MeasurementValue, NumericValue, PassFailValue, MeasurementsJson and MeasurementsPlanningRevisionId fields are marked Dropped. Manage values through the common measurement framework associated with this lookup. The current MeasurementIdentifier stores reusable definitions, so per-workstep result storage and association require review/implementation before retiring the old value fields. Preserve each actual reading and pass/fail outcome, including an unrecorded outcome, with its workstep and applicable definition/version; do not overwrite a shared definition with different steps' readings. Convert bundled JSON into structured linked measurement rows while preserving repeated measurements and repository/planning revision traceability. Reconcile legacy units, limits and readings, and preserve the definition/version applicable to historical results before adoption. Legacy ComponentTaskMeasurement IDs require explicit mapping to converted common definitions; measured values and numeric limits must never be copied into this UUID lookup. Backend/database adoption remains pending complete review. Replace the component-specific link through the common WorkStep measurement framework and existing MeasurementIdentifierId. Map legacy measurement definitions and preserve result types, limits, units, reporting/calibration settings; custom-answer links need explicit mapping. Backend/database adoption deferred.

Common measurement definition replacement pending · Manage definitions and values through the common MeasurementIdentifier framework; preserve per-workstep readings and historical revision context during adoption

WorkStepMeasurementDefinition.MeasurementIdentifierId, WorkStepMeasurementDefinition.LowerLimit, WorkorderExecutionEntry.LowerLimit, RepositoryWorkStep.ComponentTaskMeasurementId, RepositoryWorkStepRevision.ComponentTaskMeasurementId, WorkStep.ComponentTaskMeasurementId, WorkStepComponentSelection.ComponentTaskMeasurementId, WorkStepExecutionOccurrence.ComponentTaskMeasurementId, WorkStepMaterialDemand.ComponentTaskMeasurementId, WorkStepMeasurementDefinition.ComponentTaskMeasurementId, WorkStepRecord.ComponentTaskMeasurementId, WorkStepResourceAssignment.ComponentTaskMeasurementId, WorkStepResourceRequest.ComponentTaskMeasurementId, WorkStepSoftwareChangePlan.ComponentTaskMeasurementId, WorkorderExecutionEntry.ComponentTaskMeasurementId
MeasurementNotApplicable
Boolean?
Nullable
Required for: ExecutionEntry
Indicates whether measurement not applicable applies to this work step.
WorkorderExecutionEntry.MeasurementNotApplicable
MetadataJson
String
Nullable
Optional
Records metadata json for this work step.
RepositoryWorkStepRevision.MetadataJson
OwnerKind
WorkStepOwnerKind? { Workorder, TaskCard, Jobcard, CustomerRequirement }
Nullable
Required for: ExecutionOccurrence
Records owner kind for this work step.
WorkStepExecutionOccurrence.OwnerKind
OwnerRecordId
Guid?
Nullable
Required for: ComponentSelection
Selects the related owner record record. For TemplateStep rows, optional self-reference to the parent TemplateStep. Preserve nested grouping, require the same owning template and controlled revision context, and reject self/cyclic ownership. Preserve existing component-selection ownership for other roles.
WorkStepComponentSelection.OwnerRecordId, WorkTemplateItem.ParentItemId
PartId
Guid?
Nullable
Optional
Nullable UUID lookup to PartMaster identifying the part for this WorkStep row. Source and destination parts, including software before/after identities, belong to separate linked rows using this same field. ComponentActionRole identifies source/destination or removed/installed roles. Derive/validate PartId from a saved RotableId; otherwise use UndefinedPartNumber when unresolved. Adapt legacy mandatory checks and preserve both sides during deferred adoption; final fulfillment/configuration mutation requires resolved master records. For Uplift entries, reuse PartId to identify the uplifted material instead of UpliftPartId; require a saved PartMaster record for an accepted uplift. Preserve uplift part identities and reconcile any conflicting existing PartId on the same row before adoption. Do not overwrite separate component source/destination identities; preserve them in their own linked rows. Backend/database adoption remains pending complete review. Replace UpliftPartId with the existing PartId field on the same uplift execution row. Preserve original uplift values, reconcile conflicts explicitly and adapt API/UI validation during later adoption. The original field remains documented here for review; backend/database changes remain pending complete review.

Merge pending complete review · Reuse PartId for uplift entries; preserve role-specific validation and historical values

WorkStepComponentSelection.PartId, WorkStepMaterialDemand.PartId, RepositoryWorkStep.FromPartId, RepositoryWorkStepRevision.FromPartId, WorkStep.FromPartId, WorkStepComponentSelection.FromPartId, WorkStepExecutionOccurrence.FromPartId, WorkStepMaterialDemand.FromPartId, WorkStepMeasurementDefinition.FromPartId, WorkStepRecord.FromPartId, WorkStepResourceAssignment.FromPartId, WorkStepResourceRequest.FromPartId, WorkStepSoftwareChangePlan.FromPartId, WorkorderExecutionEntry.FromPartId, RepositoryWorkStep.ToPartId, RepositoryWorkStepRevision.ToPartId, WorkStep.ToPartId, WorkStepComponentSelection.ToPartId, WorkStepExecutionOccurrence.ToPartId, WorkStepMaterialDemand.ToPartId, WorkStepMeasurementDefinition.ToPartId, WorkStepRecord.ToPartId, WorkStepResourceAssignment.ToPartId, WorkStepResourceRequest.ToPartId, WorkStepSoftwareChangePlan.ToPartId, WorkorderExecutionEntry.ToPartId, WorkorderExecutionEntry.UpliftPartId
PartNumber
String
Nullable
Optional
Part-number display/history snapshot for the selected master or supplied undefined part identity. Preserve recorded evidence; PartId or UndefinedPartNumber supplies the input identity.
WorkStepComponentSelection.PartNumber
Quantity
Decimal?
Nullable
Required for: MaterialDemand, ResourceRequest
Quantity associated with this WorkStep row. On MaterialDemand and ResourceRequest rows, it is the positive planned/requested amount or resource count. On ExecutionEntry rows with EntryType Uplift, it is the positive recorded uplift amount, replacing UpliftQuantity; other entry types retain their own applicable validation. These amounts belong to separate rows: planned demand and recorded uplift must not overwrite each other. Preserve existing precision, original uplift quantities and their UpliftUnit context; reconcile conflicting values before adoption and adapt uplift input/validation to Quantity. Backend/database adoption remains pending complete review. Replace UpliftQuantity with the existing Quantity field on the same uplift execution row. Preserve original uplift values, reconcile conflicts explicitly and adapt API/UI validation during later adoption. The original field remains documented here for review; backend/database changes remain pending complete review.

Merge pending complete review · Reuse Quantity for uplift entries; preserve role-specific validation and historical values

WorkStepMaterialDemand.Quantity, WorkStepResourceRequest.Quantity, WorkorderExecutionEntry.UpliftQuantity
RecordKind
WorkStepRecordKind { Execution, Repository, RepositoryRevision, ExecutionEntry, ResourceRequest, MeasurementDefinition, SoftwareChangePlan, ComponentSelection, ExecutionOccurrence, ResourceAssignment, MaterialDemand, Phase, ReferenceDetails, TemplateStep }
Required
Required for: Repository, RepositoryRevision, Execution, ComponentSelection, ExecutionOccurrence, MaterialDemand, MeasurementDefinition, All record roles, ResourceAssignment, ResourceRequest, SoftwareChangePlan, ExecutionEntry
Role of the unified WorkStep row. Preserve existing numeric role values and review new Phase/ReferenceDetails values during implementation. Use one model while retaining different executable, repository, revision, entry, demand, assignment and definition records. Append TemplateStep as a definition-only role while preserving existing numeric roles. TemplateStep rows are owned by WorkTemplateMasterId; issuing creates separate Execution rows, and template edits must not rewrite existing issued work. Records record kind for this work step. Used by: RepositoryWorkStep, RepositoryWorkStepRevision, WorkStep, WorkStepComponentSelection, WorkStepExecutionOccurrence, WorkStepMaterialDemand, WorkStepMeasurementDefinition, WorkStepRecord, WorkStepResourceAssignment, WorkStepResourceRequest, WorkStepSoftwareChangePlan, WorkorderExecutionEntry.
RepositoryWorkStep.RecordKind, RepositoryWorkStepRevision.RecordKind, WorkStep.RecordKind, WorkStepComponentSelection.RecordKind, WorkStepExecutionOccurrence.RecordKind, WorkStepMaterialDemand.RecordKind, WorkStepMeasurementDefinition.RecordKind, WorkStepRecord.RecordKind, WorkStepResourceAssignment.RecordKind, WorkStepResourceRequest.RecordKind, WorkStepSoftwareChangePlan.RecordKind, WorkorderExecutionEntry.RecordKind
ReleaseSign
String
Nullable
Required for: Execution
Recorded release-sign text associated with this executable WorkStep. Preserve the existing nullable text during later adoption; review the exact legacy sign meaning and its relationship to staff identification, sign-off evidence and release records before implementation. Retained as legacy sign/reference text only; it does not establish release. Authoritative release evidence and the unified WorkStatus rule supersede the former ReleasedToService flag. HTML review decision; backend / database adoption pending complete review. HTML review decision; backend / database adoption pending complete review.

Merge decision recorded; implementation pending · One authoritative field / workflow

WorkpackageOrder.ReleaseSign
RequestDescription
String
Nullable
Optional
Optional detailed explanation of this material or resource request, including its purpose, requirements and requester instructions. Example: Provide a calibrated hydraulic test rig with the correct pump adapter for the requested planning window. Applies to MaterialDemand and ResourceRequest rows; keep structured part/resource selection, Quantity, RequestedStart, RequestedEnd and RequestStatus in their own fields. ActionRemarks remains separate execution/action commentary; review legacy request notes explicitly during later adoption without automatically overwriting them. Backend/database and UI adoption remain pending complete review. Applies to MaterialDemand and ResourceRequest rows; proposed field, not an existing backend column.

New request field pending complete review · Backend / DB and request UI adoption pending

New WorkStep.RequestDescription request proposal
RequestStatus
WorkStepResourceRequestStatus? { Requested, Cancelled, Fulfilled }
Nullable
Required for: ResourceRequest
Stored request lifecycle for ResourceRequest rows only: Requested, Cancelled or Fulfilled. For MaterialDemand rows expose a read-only summary derived from linked MaterialPartRequest fulfilment records and verified quantities; do not allow a second independently editable demand status. Fulfilled requires verified net fulfilled quantity covering the required Quantity; partial supply remains Requested. Cancelled requires an explicitly cancelled demand or cancellation of all unfulfilled requirement with no remaining active request. Otherwise the summary is Requested. Allocation, ordering and a Closed request alone do not prove fulfilment; preserve PreStepCloseStatus and transaction evidence when work-step closure changes request status. ResourceRequest Fulfilled requires confirmed delivery of the requested resource service, rather than allocation alone. HTML review decision; backend / database adoption pending complete review.

Merge decision recorded; implementation pending · One authoritative field / workflow

WorkStepMaterialDemand.RequestStatus, WorkStepResourceRequest.RequestStatus
RequestTitle
String
Nullable
Required for: MaterialDemand, ResourceRequest
Short title identifying this material or resource request on its own request row. Examples: Two replacement pump seals or Hydraulic test rig for pump testing. Required for MaterialDemand and ResourceRequest rows; nullable for other roles. Display beside RequestStatus in request lists. Keep the owning executable step's ActionTitle on that step; backend/database and UI adoption remain pending complete review. Applies to MaterialDemand and ResourceRequest rows; proposed field, not an existing backend column.

New request field pending complete review · Backend / DB and request UI adoption pending

New WorkStep.RequestTitle request proposal
RequestedEnd
DateTime?
Nullable
Optional
Requested end of the resource-demand planning window. Distinct from ActionEndDate on an action or resource-assignment row. Saved assignments must remain within their owning request window.
WorkStepResourceRequest.RequestedEnd
RequestedStart
DateTime?
Nullable
Optional
Requested start of the resource-demand planning window. Distinct from the actual action interval and the saved resource allocation interval, each on its own row.
WorkStepResourceRequest.RequestedStart
ResourceCode
String
Nullable
Optional
Records resource code for this work step.
WorkStepResourceRequest.ResourceCode
ResourceType
WorkStepResourceType? { Aircraft, ToolEquipment, Facility, Staff }
Nullable
Required for: ResourceRequest
Records resource type for this work step.
WorkStepResourceRequest.ResourceType
RestorationCounterpartStepId
Guid?
Nullable
Optional
Selects the related restoration counterpart step record. Used by: WorkStep.
WorkStep.RestorationCounterpartStepId
RotableId
Guid?
Nullable
Optional
Nullable UUID lookup to RotableMaster identifying the specific serialized unit involved in this component action or selection. Merge legacy ComponentId into RotableId. Derive PartId from the selected rotable and verify any supplied part agrees. Use UndefinedRotableNumber only when no saved unit is selected; reconcile conflicting existing ComponentId/RotableId values before adoption. Replace ComponentId with RotableId in the unified proposal; preserve legacy data and role-specific validation during later adoption.
WorkStepComponentSelection.RotableId, WorkorderExecutionEntry.ComponentId
RoutingStatus
ComponentRoutingStatus { AtCurrentShop, AwaitingRoute, InTransit, Arrived }
Required
Required for: Execution
Physical routing stage of the component associated with this executable WorkStep: at its current shop, awaiting routing, in transit or arrived. Preserve the existing AtCurrentShop default and all enum values. Merge the former package/order definitions and reconcile differing values during adoption; review how step-level routing links to component transfers and locations. Moved from WorkorderMaster; backend/database adoption and workflow integration pending complete review.
WorkpackageMaster.RoutingStatus, WorkorderMaster.RoutingStatus
ScheduledDateTime
DateTime?
Nullable
Optional
Records the scheduled date time for this work step. Used by: WorkStep.
WorkStep.ScheduledDateTime
ScopeCode
String
Nullable
Optional
Records scope code for this work step.
WorkStepResourceRequest.ScopeCode
Sequence
Int32?
Nullable
Required for: MeasurementDefinition, ExecutionEntry
Records sequence for this work step.
WorkStepMeasurementDefinition.Sequence, WorkorderExecutionEntry.Sequence
SerialOrBatchNumber
String
Nullable
Optional
Serial or batch identifier recorded for the action subject. Capture from the selected rotable or from supplied evidence for an undefined unit; preserve the value recorded at execution time.
WorkStepComponentSelection.SerialOrBatchNumber
ShopcardCollectionStatus
ShopcardCollectionStatus { NotRequired, Needed, Complete }
Required
Required for: Execution
Single required shopcard-collection state for this executable WorkStep: NotRequired means collection is not applicable, Needed means applicable collection remains outstanding, and Complete means the applicable shopcard collection is finished. Default NotRequired for new rows only when collection is genuinely not required. Replaces separate collection Boolean flags; derive header-level collection summaries and collected counts from applicable WorkStep states rather than storing parallel flags. Record collection transitions with their original timestamps and actor evidence in audit history instead of a separate ShopcardCollectedAt property. During adoption, map collected=true to Complete and required=true with IsShopcardCollected=false to Needed; determine NotRequired explicitly, reconcile conflicting enum/Boolean values and avoid treating an uncollected flag alone as evidence collection is unnecessary. Preserve package/header scope when mapping aggregate legacy flags to individual WorkSteps; a header-complete flag must not silently mark every step complete. Preserve existing collection timestamps, including those absent from audit history, and define collected-count behavior for NotRequired rows. Backend/database adoption remains pending complete review. Consolidated collection state; timestamp and transition evidence preserved through audit history during later adoption.

Merge pending complete review · One enum field; collection timestamps and evidence retained through audit history

WorkorderMaster.ShopcardCollectionStatus, WorkStep.IsShopcardCollected, WorkStep.ShopcardCollectedAt, WorkpackageMaster.ShopcardCollectionNeeded, WorkpackageMaster.ShopcardCollectionComplete
SpecialCode
String
Nullable
Optional
Single optional special classification/reference code for the owning executable WorkStep or linked reference row, merging HeaderSpecialCode. Preserve original code context and source provenance; reconcile conflicting values explicitly, preserving distinct contextual codes on separate linked reference rows. Retain the existing 250-character capacity and reject silent truncation. HTML review decision; backend / database adoption pending complete review.

Merge decision recorded; implementation pending · One authoritative field / workflow

WorkStep.SpecialCode, WorkStepReferenceDetails.HeaderSpecialCode, WorkpackageOrder.HeaderSpecialCode
StaffMemberId
Guid?
Nullable
Optional
Nullable UUID lookup to StaffMember for the person associated with this WorkStep row. On ResourceAssignment rows, the assigned staff member; on a FailureConfirmation execution entry, the person who confirmed the failure. Required for a failure-confirmation entry. Use a distinct linked entry row so the confirmer is not confused with assigned or certifying staff.
WorkStepResourceAssignment.StaffMemberId, WorkpackageOrder.FailureConfirmedByStaffId
SystemAuditId
Guid?
Nullable
Optional
Links to system audit history when this model stores the reference. Preserve former template-item audit references and source history when moving the definition rows. Links to system audit history when this model stores the reference. Used by: RepositoryWorkStep, RepositoryWorkStepRevision, WorkStep, WorkStepComponentSelection, WorkStepExecutionOccurrence, WorkStepMaterialDemand, WorkStepMeasurementDefinition, WorkStepRecord, WorkStepResourceAssignment, WorkStepResourceRequest, WorkStepSoftwareChangePlan, WorkorderExecutionEntry.
RepositoryWorkStep.SystemAuditId, RepositoryWorkStepRevision.SystemAuditId, WorkStep.SystemAuditId, WorkStepComponentSelection.SystemAuditId, WorkStepExecutionOccurrence.SystemAuditId, WorkStepMaterialDemand.SystemAuditId, WorkStepMeasurementDefinition.SystemAuditId, WorkStepRecord.SystemAuditId, WorkStepResourceAssignment.SystemAuditId, WorkStepResourceRequest.SystemAuditId, WorkStepSoftwareChangePlan.SystemAuditId, WorkorderExecutionEntry.SystemAuditId, WorkStepPhase.SystemAuditId, WorkTemplateItem.SystemAuditId
TaskCardId
Guid?
Nullable
Optional
Selects the related task card record. Used by: WorkStep, WorkStepExecutionOccurrence.
WorkStep.TaskCardId, WorkStepExecutionOccurrence.TaskCardId
TaskReferenceRemarks
String
Nullable
Optional
Task-reference remarks applicable to this executable WorkStep. Merge the legacy header remarks with the existing WorkStepReferenceDetails remarks into one nullable field; preserve the 2000-character maximum and reconcile differing legacy values during later adoption. Moved / merged from WorkorderMaster; backend/database adoption pending complete review.
WorkStepReferenceDetails.TaskReferenceRemarks, WorkpackageOrder.TaskReferenceRemarks
TechAssistanceRequested
Boolean
Required
Required for: Execution
Records that technical assistance has been requested for this executable WorkStep. Preserve the required Boolean and existing default false. This flag records the request; it does not identify the assigned assistance provider or mean assistance has been delivered. Workflow integration remains pending review. Moved / merged from WorkorderMaster; backend/database adoption pending complete review.
WorkorderMaster.TechAssistanceRequested
TextValue
String
Nullable
Optional
Textual result value for this WorkStep record, including a measurement execution entry. Merge the former MeasurementText into this single retained TextValue field. On measurement entries, store the actual text/discrete answer for that individual reading and associate it with the local MeasurementIdentifier code and selected reusable MeasurementIdentifierId definition. Validate custom answers against the applicable definition version; preserve exact original text and explicit mappings for historical Pass/Fail and custom labels. Keep results on their own execution rows rather than overwriting reusable master definitions, repository instructions or other readings. MeasurementNotApplicable remains separate so N/A, an empty/unrecorded answer and an actual text result remain distinguishable. Preserve legacy text up to the existing 1000-character limits and reconcile any differing TextValue/MeasurementText on the same row before adoption. Adapt result entry, formula handling where applicable and both generic/component measurement closure checks during later implementation. Backend/database adoption remains pending complete review. Merge MeasurementText into the retained TextValue property for individual textual/custom measurement results. Preserve original answers, repeated result rows, historical definition/allowed-answer context and explicit N/A handling. Reconcile conflicting values on the same legacy row and adapt measurement save/closure validation during adoption. Backend/database unchanged.

Merge pending complete review · One per-reading text result; preserve N/A distinction and definition/version context

RepositoryWorkStep.TextValue, RepositoryWorkStepRevision.TextValue, WorkStep.TextValue, WorkStepComponentSelection.TextValue, WorkStepExecutionOccurrence.TextValue, WorkStepMaterialDemand.TextValue, WorkStepMeasurementDefinition.TextValue, WorkStepRecord.TextValue, WorkStepResourceAssignment.TextValue, WorkStepResourceRequest.TextValue, WorkStepSoftwareChangePlan.TextValue, WorkorderExecutionEntry.TextValue, WorkorderExecutionEntry.MeasurementText
TimeOffsetHours
Decimal?
Nullable
Optional
Records the time offset hours for this work step.
WorkStepResourceRequest.TimeOffsetHours
TotalHours
Decimal?
Nullable
Optional
Records total hours for this work step.
WorkStepResourceRequest.TotalHours
TransferApprovalNumber
String
Nullable
Optional
Records transfer approval number for this work step.
WorkorderExecutionEntry.TransferApprovalNumber
TransferBaseline
DateTime?
Nullable
Optional
Records transfer baseline for this work step.
WorkorderExecutionEntry.TransferBaseline
TransferBaselineBlockHours
Decimal?
Nullable
Optional
Records transfer baseline block hours for this work step.
WorkorderExecutionEntry.TransferBaselineBlockHours
TransferBaselineCycles
Decimal?
Nullable
Optional
Records transfer baseline cycles for this work step.
WorkorderExecutionEntry.TransferBaselineCycles
TransferBaselineHours
Decimal?
Nullable
Optional
Records transfer baseline hours for this work step.
WorkorderExecutionEntry.TransferBaselineHours
TransferBlockHours
Decimal?
Nullable
Optional
Records transfer block hours for this work step.
WorkorderExecutionEntry.TransferBlockHours
TransferCheckOnlyActive
Boolean?
Nullable
Required for: ExecutionEntry
Indicates whether transfer check only active applies to this work step.
WorkorderExecutionEntry.TransferCheckOnlyActive
TransferCycles
Decimal?
Nullable
Optional
Records transfer cycles for this work step.
WorkorderExecutionEntry.TransferCycles
TransferDays
Decimal?
Nullable
Optional
Records transfer days for this work step.
WorkorderExecutionEntry.TransferDays
TransferDeferralKind
WorkorderTransferDeferralKind? { Ordinary, Defer }
Nullable
Optional
Records transfer deferral kind for this work step.
WorkorderExecutionEntry.TransferDeferralKind
TransferDueAt
DateTime?
Nullable
Optional
Records the transfer due at for this work step.
WorkorderExecutionEntry.TransferDueAt
TransferDueBlockHours
Decimal?
Nullable
Optional
Records the transfer due block hours for this work step.
WorkorderExecutionEntry.TransferDueBlockHours
TransferDueCycles
Decimal?
Nullable
Optional
Records the transfer due cycles for this work step.
WorkorderExecutionEntry.TransferDueCycles
TransferDueHours
Decimal?
Nullable
Optional
Records the transfer due hours for this work step.
WorkorderExecutionEntry.TransferDueHours
TransferHours
Decimal?
Nullable
Optional
Records transfer hours for this work step.
WorkorderExecutionEntry.TransferHours
TransferInputType
WorkorderTransferInputType? { ToGo, Due }
Nullable
Optional
Records transfer input type for this work step.
WorkorderExecutionEntry.TransferInputType
TransferReference
String
Nullable
Optional
Records transfer reference for this work step.
WorkorderExecutionEntry.TransferReference
TransferStation
String
Nullable
Optional
Records transfer station for this work step.
WorkorderExecutionEntry.TransferStation
TransferToMaintenanceTaskId
Guid?
Nullable
Optional
Selects the related transfer to maintenance task record.
WorkorderExecutionEntry.TransferToMaintenanceTaskId
TransferToTaskCardId
Guid?
Nullable
Optional
Selects the related transfer to task card record.
WorkorderExecutionEntry.TransferToTaskCardId
TransferToWorkorderId
Guid?
Nullable
Optional
Selects the related transfer to workorder record.
WorkorderExecutionEntry.TransferToWorkorderId
TransferType
WorkorderTransferType? { NewLimits, NoNewLimits, ExtendExistingLimits, AdjustExistingLimits }
Nullable
Optional
Records transfer type for this work step.
WorkorderExecutionEntry.TransferType
UndefinedPartNumber
String
Nullable
Optional
Part number supplied when the part is not yet defined in PartMaster. Mutually exclusive with PartId as an input identity. Trim and retain the original number; use existing PartNumber only as a display/history snapshot. Resolve to a saved part before stock or configuration changes. This text is not an invented UUID.
UndefinedRotableNumber
String
Nullable
Optional
Identifier supplied for a serialized unit not yet defined in RotableMaster. Mutually exclusive with RotableId as an input identity; capture its serial/batch separately in SerialOrBatchNumber where known. May accompany a saved PartId or UndefinedPartNumber. Resolve the unit before stock/configuration mutation; do not infer a master record solely from matching text.
UpdateId
Guid?
Nullable
Optional
Links to the preceding revision or update record. Preserve template-item update chains with explicit old/new identity mapping; do not rewrite existing execution update chains. Links to the preceding revision or update record. Used by: RepositoryWorkStep, RepositoryWorkStepRevision, WorkStep, WorkStepComponentSelection, WorkStepExecutionOccurrence, WorkStepMaterialDemand, WorkStepMeasurementDefinition, WorkStepRecord, WorkStepResourceAssignment, WorkStepResourceRequest, WorkStepSoftwareChangePlan, WorkorderExecutionEntry.
RepositoryWorkStep.UpdateId, RepositoryWorkStepRevision.UpdateId, WorkStep.UpdateId, WorkStepComponentSelection.UpdateId, WorkStepExecutionOccurrence.UpdateId, WorkStepMaterialDemand.UpdateId, WorkStepMeasurementDefinition.UpdateId, WorkStepRecord.UpdateId, WorkStepResourceAssignment.UpdateId, WorkStepResourceRequest.UpdateId, WorkStepSoftwareChangePlan.UpdateId, WorkorderExecutionEntry.UpdateId, WorkStepPhase.UpdateId, WorkTemplateItem.UpdateId
UpliftUnit
String
Nullable
Optional
Records uplift unit for this work step.
WorkorderExecutionEntry.UpliftUnit
WorkScope
WorkStepWorkScope? { Inspection, Repair, Overhaul, Modification, Testing }
Nullable
Optional
Records work scope for this work step. Used by: WorkStep.
WorkStep.WorkScope
WorkStatus
WorkStatus { Draft, Planning, Open, InProgress, Production, QualityReview, Released, Closed, Cancelled, Completed, NotPerformed, Ready, Paused, Removed, Testing, ApprovedForRelease }
Required
Required for: Execution
Single required lifecycle state for an executable WorkStep, merging WorkStatus, CompletionState, ExecutionStatus and the already retired ShopStatus. Use the WorkStatus enum with Draft as the default. Open/Ready identify preparation, InProgress/Production/Testing identify active work, Paused identifies suspended work, Completed identifies completion of physical work, QualityReview and ApprovedForRelease identify quality progression, Released requires valid release evidence, and Closed identifies final administrative closure. Planning, NotPerformed, Cancelled and Removed retain their distinct meanings. These are allowed states, not a compulsory linear sequence. The complete-work command performs signature, measurement, control and sequence validation before entering Completed; subsequent quality/release transitions require the recorded completion evidence. Use immutable transition/action evidence to report work performed after the current state advances beyond Completed. Never infer completion from ActionEndDate alone. Paused blocks execution changes; NotPerformed, Cancelled and Removed do not count as performed work. ApprovedForRelease is readiness, not release. Map legacy O/I/C/X to Open/InProgress/Closed/Cancelled; reconcile conflicting completion, shop and header states using evidence/history rather than enum order. Retain original source-state values in adoption history. Header aggregate states must not overwrite every child step. HTML review decision; backend / database adoption pending complete review. Moved from WorkorderMaster; backend/database adoption and workflow integration pending complete review. Merge this lifecycle field into WorkStatus. Preserve its original state and transition evidence, including physical completion versus quality/release progression; do not discard a completed-work fact when the current lifecycle state advances. HTML review decision; backend / database adoption pending complete review.

Merge decision recorded; implementation pending · One authoritative field / workflow

WorkorderMaster.WorkorderStatus, WorkorderMaster.WorkpackageStatus, WorkpackageMaster.WorkpackageStatus, WorkStep.CompletionState, WorkStep.ExecutionStatus, WorkpackageMaster.ShopStatus, WorkorderMaster.ShopStatus
WorkStepId
Guid?
Nullable
Required for: MaterialDemand, MeasurementDefinition, ResourceRequest, SoftwareChangePlan, ExecutionEntry, ReferenceDetails
Self-reference to the owning executable WorkStep for entries, resource/material demand, measurement/software definitions and reference details. Keep role-specific required ownership and uniqueness rules; the old reference-details primary key identifies its owner. Planned MaterialDemand and ResourceRequest child rows may belong to a TemplateStep as well as an executable WorkStep, with valid role-pair and template-scope checks. Execution entries, actual assignments, bookings and signatures remain attached to executable rows; template definitions do not receive actual execution evidence. Identifies the work step that owns this measurement definition; the AMOS Measurement ID is unique among measurements on this step.
WorkStepMaterialDemand.WorkStepId, WorkStepMeasurementDefinition.WorkStepId, WorkStepResourceRequest.WorkStepId, WorkStepSoftwareChangePlan.WorkStepId, WorkorderExecutionEntry.WorkStepId, WorkStepReferenceDetails.WorkStepId
WorkStepNumber
String
Nullable
Required for: Repository, Execution, TemplateStep
Single number/ordering field replacing the separate WorkStepSequence. Keep String storage to preserve repository workstep codes. For Execution-role rows, store a positive whole-number step value such as 1, 2 or 10 and use its parsed numeric value for ordering and sequence validation; never sort these values lexicographically. Derive the full display label from the owning workorder/occurrence reference plus this step number rather than persisting a second sequence field. Repository-role rows retain their existing alphanumeric WorkStepNumber codes and are not subject to numeric execution ordering. During adoption, use each existing execution WorkStepSequence as the numeric step value, reconcile disagreements with the old WorkStepNumber suffix, and preserve original full/custom numbers and external references in history or explicit compatibility mappings. Preserve UUID identity and ownership scope, define duplicate/concurrent-number allocation rules, and adapt creation, sequencing, counterpart generation, API/UI display and indexes before retiring WorkStepSequence. Backend/database adoption remains pending complete review. TemplateStep rows use positive whole-number text for ordering, derived from the former item Sequence. Compare numerically, enforce the intended sibling order within template ownership, and preserve hierarchy and old ordering. Issuing allocates executable numbers separately and remaps parent/child references. Merge WorkStepSequence into the single WorkStepNumber field. Preserve the existing positive execution sequence as the numeric step number; compare it numerically and derive the full owner-prefixed display label. Retain repository alphanumeric number codes, preserve old execution labels/history and reconcile mismatches during adoption. Update sequence-dependent lifecycle validation, generation and indexes before retiring this property. Backend/database adoption remains pending complete review.

Merge and role-specific validation pending complete review · One numbering field; numeric execution order and derived full display label

RepositoryWorkStep.WorkStepNumber, WorkStep.WorkStepNumber, WorkStep.WorkStepSequence, WorkTemplateItem.Sequence
WorkTemplateId
Guid?
Nullable
Required for: Execution
Nullable lookup to the selected work template for this executable WorkStep. Preserve existing template and active-revision validation during later adoption; review how this lookup relates to existing task/repository/revision references. Moved / merged from WorkorderMaster; backend/database adoption pending complete review.
WorkorderMaster.WorkTemplateId
WorkTemplateMasterId
Guid?
Nullable
Required for: TemplateStep
Nullable UUID foreign key to WorkTemplateMaster owning this reusable template instruction. Required for RecordKind TemplateStep; template-definition rows do not require WorkorderMasterId. Template-owned planned demand rows must resolve to the same template through their owning step. Execution rows remain owned by WorkorderMasterId and may retain this template reference as source context. Resolve each old WorkTemplateItem.WorkTemplateRevisionId through its revision to the correct template master; never copy revision UUIDs into this foreign key. Preserve exact controlled revision and repository provenance separately during later adoption; the master ID alone is not revision identity. Backend/database adoption pending complete review.
WorkStep.WorkTemplateMasterId (new foreign-key proposal), WorkTemplateItem.WorkTemplateRevisionId
WorkorderMasterId
Guid?
Nullable
Optional
Owning child WorkorderMaster from the reviewed parent/child header design. Executable steps belong to the child workorder; validate parent scope and aircraft/component context. Selects the related workorder master record. Used by: WorkStep.
WorkStep.WorkorderMasterId

Resolved workflow and field overlaps

Review decisions only. Backend services, APIs and database adoption remain pending complete review.

TopicDecisionWorkflow and preservation rules
WorkStatus / CompletionState / ExecutionStatus / ShopStatus
One WorkStatus lifecycle

Single required lifecycle state for an executable WorkStep, merging WorkStatus, CompletionState, ExecutionStatus and the already retired ShopStatus. Use the WorkStatus enum with Draft as the default. Open/Ready identify preparation, InProgress/Production/Testing identify active work, Paused identifies suspended work, Completed identifies completion of physical work, QualityReview and ApprovedForRelease identify quality progression, Released requires valid release evidence, and Closed identifies final administrative closure. Planning, NotPerformed, Cancelled and Removed retain their distinct meanings. These are allowed states, not a compulsory linear sequence. The complete-work command performs signature, measurement, control and sequence validation before entering Completed; subsequent quality/release transitions require the recorded completion evidence. Use immutable transition/action evidence to report work performed after the current state advances beyond Completed. Never infer completion from ActionEndDate alone. Paused blocks execution changes; NotPerformed, Cancelled and Removed do not count as performed work. ApprovedForRelease is readiness, not release. Map legacy O/I/C/X to Open/InProgress/Closed/Cancelled; reconcile conflicting completion, shop and header states using evidence/history rather than enum order. Retain original source-state values in adoption history. Header aggregate states must not overwrite every child step.

Allow only validated role-specific transitions. Completed may advance to QualityReview, ApprovedForRelease, Released and Closed; applicable work may use Testing before completion. Rework/reopen transitions require an authorized reason and preserve/invalidate dependent evidence explicitly.

Use one lifecycle policy for entry saves, complete-work commands, reports, shop readiness and release gates. Performed-work reporting reads validated completion history; quality readiness requires ApprovedForRelease or valid subsequent release/closure evidence. Historical Closed alone is insufficient to fabricate completion or release.

Two measurement-validation paths
One measurement validation pipeline

Resolve planned measurements to MeasurementIdentifierId and a frozen applicable definition/version. Use MeasurementIdentifier as the local code and preserve explicit legacy ComponentTaskMeasurement mappings.

Validate each reading once: ownership/code association, result type, unit, N/A policy, allowed answers, numerical limits, applicable formulas and required signatures. Result storage must preserve repeated observations and the definition/version used for each reading; never store readings on the reusable definition master.

Run the same validator on result entry and completion, then enforce required-result coverage at completion. Preserve component formulas, signed results and historical definitions; replace the parallel component/generic validators with adapters feeding the one framework.

MeasurementId / MeasurementIdentifier
MeasurementIdentifier retained

One local text code links planned definitions, results and formula references within the owning executable WorkStep. Planned codes are unique within that step; repeated readings may share the code. MeasurementIdentifierId remains the reusable definition UUID lookup.

MeasurementText / TextValue
TextValue retained

Store text/custom answers on the individual measurement-result row using TextValue. Preserve original answers and definition context; MeasurementNotApplicable remains distinct from an absent or empty result.

Material-demand / fulfilment status
MaterialPartRequest fulfilment is authoritative; demand summary is derived

Stored request lifecycle for ResourceRequest rows only: Requested, Cancelled or Fulfilled. For MaterialDemand rows expose a read-only summary derived from linked MaterialPartRequest fulfilment records and verified quantities; do not allow a second independently editable demand status. Fulfilled requires verified net fulfilled quantity covering the required Quantity; partial supply remains Requested. Cancelled requires an explicitly cancelled demand or cancellation of all unfulfilled requirement with no remaining active request. Otherwise the summary is Requested. Allocation, ordering and a Closed request alone do not prove fulfilment; preserve PreStepCloseStatus and transaction evidence when work-step closure changes request status. ResourceRequest Fulfilled requires confirmed delivery of the requested resource service, rather than allocation alone. HTML review decision; backend / database adoption pending complete review.

A demand may have multiple fulfilment requests. Calculate net fulfilled quantity using valid issued/serviced transactions after returns/reversals. Keep detailed Open/Allocated/Ordered/Serviced/Closed/Cancelled states on fulfilment requests; do not flatten them into independently editable demand states. Derived summaries refresh after transactions, cancellation, close and reopen.

FailureConfirmed / confirmation evidence
FailureConfirmation entry is authoritative

Remove the independently editable failure-confirmation Boolean. Confirmation is established by a valid FailureConfirmation entry linked through WorkStepId, with StaffMemberId, ActionEndDate and ActionText recording who, when and what was confirmed. Corrections invalidate/supersede evidence with audit history. A legacy true value without evidence remains unresolved historical data; never invent a signer or time. HTML review decision; backend / database adoption pending complete review.

ReleasedToService / release records / Released state
Release records are authoritative; WorkStatus reflects validated release

Remove the independently editable release Boolean. Determine release from valid, active, authorized release/sign records for the correct aircraft/component, work and quantity scope. Partial release does not release the whole scope; revoked/superseded records do not count. WorkStatus.Released is a validated projection of this evidence, not a second editable release assertion. Completion or a signature of another kind cannot imply release. HTML review decision; backend / database adoption pending complete review.

Keep ReleaseSign only as legacy sign/reference text; it must not independently authorize or assert release. Link/import it to validated release evidence during adoption, preserving unverified historical text without upgrading its meaning.

CloseWorkStep / completion transition
One complete-work command; no persisted command Boolean

Keep CloseWorkStep only as a transient request-command option, not a stored WorkStep property. The option and the direct complete-work endpoint invoke the same lifecycle validation and atomic transition into WorkStatus.Completed. Persist the signed action and transition audit; retries must not duplicate evidence. Quality approval, release and final administrative closure remain separately validated transitions in the same WorkStatus lifecycle. HTML review decision; backend / database adoption pending complete review.

Troubleshooting / CriticalEvent control
Requirement on CriticalEvent; performance in execution evidence

Manage the troubleshooting requirement through CriticalEvent.ControlOptions.RequiresTroubleshooting selected by CriticalEventId. Record actual troubleshooting and its outcome in the linked execution/component-removal action using ActionText and existing component identity fields. Preserve the legacy removal troubleshooting marker as historical action evidence. Selecting a requirement does not prove work was performed, and performed work must not create a requirement automatically. There is no second editable troubleshooting Boolean on WorkStep. HTML review decision; backend / database adoption pending complete review.

HeaderSpecialCode / SpecialCode
SpecialCode retained

Merge the header/reference special code into SpecialCode. Preserve scope and source provenance. If legacy codes differ for the same owning step, reconcile them explicitly or retain separate linked reference rows; never overwrite, concatenate into an ambiguous code or truncate historical values. HTML review decision; backend / database adoption pending complete review.

PlannedManpower / EstimatedManHours
EstimatedManHours retained as Decimal person-hours

Merge planned labor effort into EstimatedManHours. Current creation code populates PlannedManpower from task/repository estimated man-hours, so the retained unit is person-hours. Convert finite Single values to Decimal explicitly, preserving null/zero and documented precision. Reconcile differing estimates; do not sum duplicate estimates or reinterpret genuine legacy headcount as hours. Staff headcount belongs to a staff resource request Quantity. HTML review decision; backend / database adoption pending complete review.

Component actions and identity combinations

HTML proposal only. Existing backend validation and movement behavior are unchanged; unknown identities and extended actions await implementation after complete review.

Keep EntryType for the overall entry category and ComponentActionType for the component operation. Use separate source and destination child WorkStep rows linked to the same owning action through OwnerRecordId and WorkStepId. Each row uses the standard ConfigurationMasterId, ConfigurationId, PartId and RotableId fields, with ComponentActionRole identifying Source/Destination or Removed/Installed. Multiple units use additional separate child rows. PartNumber remains a snapshot; UndefinedPartNumber and UndefinedRotableNumber capture unresolved identities. The four From/To configuration and part fields are Dropped in this HTML proposal.

CasePart identityRotable identityHandling
Saved part and saved unit
PartId (derive/validate)
RotableId
Both master records exist; unit must belong to the selected part.
Saved part; undefined unit
PartId
UndefinedRotableNumber
Record unit reference plus known serial/batch; resolve the unit before physical mutation.
Undefined part and unit
UndefinedPartNumber
UndefinedRotableNumber
Retain supplied identity evidence; resolve both masters before physical mutation.
Saved nonserialized part
PartId
Neither unit field
Allowed for part-only/nonserialized actions with a positive quantity; no artificial rotable required.
Undefined nonserialized part
UndefinedPartNumber
Neither unit field
Capture planning/identification details; resolve the part before material fulfillment or physical mutation.
Saved unit only supplied
Derive PartId from RotableId
RotableId
Do not require repeated part entry; reject any conflicting part identity.
Saved ID and undefined text together
PartId + UndefinedPartNumber
RotableId + UndefinedRotableNumber
Reject competing input identities for the same role; display/history snapshots are separate.
Undefined part with saved unit
UndefinedPartNumber
RotableId
Derive the saved part from the unit; reject conflicting undefined part input.
No usable part or unit identity
Neither
Neither or undefined unit only
Incomplete draft only; require a resolvable saved unit or a saved/undefined part identity before accepting the component action.

Proposed validation and action rules

Template steps in WorkStep

WorkTemplateItem is Dropped in this proposal. Backend classes and physical tables remain unchanged pending complete review.

WorkTemplateMaster owns reusable TemplateStep-role WorkStep rows through WorkTemplateMasterId. Template steps can have parent/child instructions and structured planned material/resource demand. Issuing creates independent executable WorkStep rows owned by a WorkorderMaster, with copied definitions and demands and preserved template/source revision provenance.

Former item fieldWorkStep treatmentPreserved behavior
WorkTemplateItem.Id
Id
Preserve stable row identity or an explicit identity mapping if IDs collide.
WorkTemplateItem.WorkTemplateRevisionId
WorkTemplateMasterId + preserved revision provenance
Resolve revision to its owning template. Master FK does not replace exact controlled revision history; do not reactivate the previously Dropped revision field.
WorkTemplateItem.ParentItemId
OwnerRecordId
Keep nested TemplateStep rows in the same template/revision context; remap parents when issuing.
WorkTemplateItem.RepositoryWorkStepRevisionId
Controlled source relationship / history
Preserve the referenced repository instruction revision via explicit source relationship/history during adoption; no replacement revision-ID column is approved here.
WorkTemplateItem.Sequence
WorkStepNumber
Positive whole-number text, ordered numerically; preserve sibling order and hierarchy.
WorkTemplateItem.Title
ActionTitle
Required title on each TemplateStep row; preserve the existing item title capacity.
WorkTemplateItem.InstructionHtml
ActionText
Retain complete formatted instructions and review storage/rendering capacity before moving data.
WorkTemplateItem.PartRequestsJson
MaterialDemand child WorkStep rows
Expand every requested part, quantity and attribute into structured planned demand rows owned by the template step.
WorkTemplateItem.ResourceRequestsJson
ResourceRequest child WorkStep rows
Expand planned manpower, tools, facilities and timing/quantity details into structured child rows.
WorkTemplateItem.SystemAuditId
SystemAuditId / source audit history
Preserve audit references and historical evidence.
WorkTemplateItem.UpdateId
UpdateId
Preserve update-chain identity and source history.

Ownership and issuing rules

Dropped fields and later review

These fields are excluded from the proposed inventory. Backend/database changes remain deferred.

FieldDecisionFollow-upReview note
ActiveRevisionId
Dropped
Later review
Drop ActiveRevisionId from the unified WorkStep proposal. Review repository active-revision selection, publication and revision-history behavior later before backend/database adoption.
AircraftLocationCode
Dropped
Replaced by three lookups
Replace AircraftLocationCode with ConfigurationMasterId, existing ConfigurationId and LocationReferenceId (all nullable UUID lookups). Map legacy text and validate matching master/position/location during later adoption. Backend/database changes deferred.
AircraftTailId
Dropped
Drop AircraftTailId from the unified WorkStep HTML proposal; backend/database removal deferred until complete project review.
AppliedRepositoryRevisionId
Dropped
Future review
Drop AppliedRepositoryRevisionId from the unified WorkStep proposal. Review applied-revision traceability, section-specific planning revision references and synchronization behavior in future before backend/database adoption.
CalculatedValue
Dropped
Under review
Drop CalculatedValue from the unified WorkStep proposal. Formula calculation, result storage and limit evaluation remain under review before backend/database adoption.
CertificationNumber
Dropped
Replaced by CertifiedHumanResourceId
Replace CertificationNumber with nullable UUID CertifiedHumanResourceId lookup to StaffMember in Human Resources. Preserve credential history and reconcile legacy certificate/licence text during later implementation. Backend/database adoption deferred.
MaintenancePhase
Dropped
Task supplies phase; preserve historical assignments and phase rules during later implementation
Drop the separate MaintenancePhase field from the unified WorkStep proposal because the selected task will supply the maintenance phase. During later implementation, map historical phase codes and assignments to task-owned definitions and preserve aircraft/component applicability, revision context and related-phase/counterpart behavior. Task-owned phase selection and remaining phase relationships require implementation review; backend/database adoption remains pending complete review.

MaintenancePhase? { Preparation, Removal, Disassembly, Cleaning, Inspection, Repair, Assembly, Installation, Testing, Restoration, Other } · Nullable · Required for: Phase
Source definitions: WorkStepPhase.Code

ColorCode
Dropped
Phase colours defined in project code
Drop ColorCode from the unified WorkStep proposal. Define phase display colours directly in project code, keyed by MaintenancePhase, rather than storing a configurable colour field. Backend/database removal and colour implementation remain deferred.
ComponentTaskFormulaId
Dropped
Future review
Drop ComponentTaskFormulaId from the unified WorkStep proposal. Review common formula definitions, taskcard-based calculation and formula-result traceability in future, together with the deferred CalculatedValue design. Backend/database removal deferred until complete project review.
CrsReference
Dropped
Drop CrsReference from the unified WorkStep HTML proposal; backend/database removal deferred until complete project review.
ElbReference
Dropped
Drop ElbReference from the unified WorkStep HTML proposal; backend/database removal deferred until complete project review.
FailureConfirmedAt
Dropped
Reuse ActionEndDate on failure-confirmation entry
Remove FailureConfirmedAt as a separate WorkStep field. Reuse ActionEndDate on a dedicated FailureConfirmation execution entry linked to the owning WorkStep. Preserve who confirmed the failure and when without overwriting the executable step, allocation or certification records. Backend/database adoption deferred.
FailureConfirmedByStaffId
Dropped
Reuse StaffMemberId on failure-confirmation entry
Remove FailureConfirmedByStaffId as a separate WorkStep field. Reuse StaffMemberId on a dedicated FailureConfirmation execution entry linked to the owning WorkStep. Preserve who confirmed the failure and when without overwriting the executable step, allocation or certification records. Backend/database adoption deferred.
FailureDescription
Dropped
Reuse ActionText on failure-confirmation entry
Remove FailureDescription as a separate WorkStep field. Reuse ActionText on the linked FailureConfirmation entry, preserving legacy failure text and the main step instructions. Backend/database adoption deferred.
FromConfigurationId
Dropped
Separate source and destination WorkStep rows
Drop FromConfigurationId. Use ConfigurationId on a separate source WorkStep row linked to the same owning action through OwnerRecordId and WorkStepId. ComponentActionRole distinguishes source/destination or removed/installed rows. Preserve both sides and their history as separate rows during deferred backend/database adoption.
ToConfigurationId
Dropped
Separate source and destination WorkStep rows
Drop ToConfigurationId. Use ConfigurationId on a separate destination WorkStep row linked to the same owning action through OwnerRecordId and WorkStepId. ComponentActionRole distinguishes source/destination or removed/installed rows. Preserve both sides and their history as separate rows during deferred backend/database adoption.
FromPartId
Dropped
Separate source and destination WorkStep rows
Drop FromPartId. Use PartId on a separate source WorkStep row linked to the same owning action through OwnerRecordId and WorkStepId. ComponentActionRole distinguishes source/destination or removed/installed rows. Preserve both sides and their history as separate rows during deferred backend/database adoption.
ToPartId
Dropped
Separate source and destination WorkStep rows
Drop ToPartId. Use PartId on a separate destination WorkStep row linked to the same owning action through OwnerRecordId and WorkStepId. ComponentActionRole distinguishes source/destination or removed/installed rows. Preserve both sides and their history as separate rows during deferred backend/database adoption.
HeaderAreaCode
Dropped
Replaced by LocationReferenceId lookup
Replace HeaderAreaCode with the standard LocationReferenceId UUID lookup on WorkStep. Resolve the legacy area, panel or zone code against the appropriate LocationReference and aircraft/component context. Preserve distinct locations through separate linked WorkStep rows when necessary; do not overwrite differing references. Backend/database adoption deferred.
HeaderPanelCode
Dropped
Replaced by LocationReferenceId lookup
Replace HeaderPanelCode with the standard LocationReferenceId UUID lookup on WorkStep. Resolve the legacy area, panel or zone code against the appropriate LocationReference and aircraft/component context. Preserve distinct locations through separate linked WorkStep rows when necessary; do not overwrite differing references. Backend/database adoption deferred.
HeaderZoneCode
Dropped
Replaced by LocationReferenceId lookup
Replace HeaderZoneCode with the standard LocationReferenceId UUID lookup on WorkStep. Resolve the legacy area, panel or zone code against the appropriate LocationReference and aircraft/component context. Preserve distinct locations through separate linked WorkStep rows when necessary; do not overwrite differing references. Backend/database adoption deferred.
IncludeOnCalibrationReport
Dropped
Further review
Mark IncludeOnCalibrationReport Dropped from the WorkStep proposal, with further review of measurement report inclusion and reporting configuration before implementation. Backend/database adoption deferred.
IncludeOnReport
Dropped
Further review
Mark IncludeOnReport Dropped from the WorkStep proposal, with further review of measurement report inclusion and reporting configuration before implementation. Backend/database adoption deferred.
IsActive
Dropped
Backend / database adoption pending complete review
Mark IsActive Dropped from the unified WorkStep proposal. Backend/database adoption remains deferred until complete project review.
IsDocumentRequirement
Dropped
Backend / database adoption pending complete review
Mark IsDocumentRequirement Dropped from the unified WorkStep proposal. Backend/database adoption remains deferred until complete project review.
IsLiveBookingActive
Dropped
Later review
Mark IsLiveBookingActive Dropped from the unified WorkStep proposal, with later review of live labor-booking state and its relationship to linked StaffTimeBooking records. Backend/database adoption deferred until complete project review.
IsTool
Dropped
Later review
Mark IsTool Dropped from the unified WorkStep proposal, with later review of tool identification and material-demand classification. Backend/database adoption deferred until complete project review.
LowerLimit
Dropped
Use MeasurementIdentifierId → MeasurementIdentifier.LowerLimit
Drop the standalone WorkStep LowerLimit field. Reference MeasurementIdentifier.LowerLimit through WorkStep.MeasurementIdentifierId for the reusable measurement definition. Map legacy numeric limits into the linked definition, reconcile differing values and preserve the limit applicable to historical results during later implementation. A numeric limit is not a lookup UUID. Backend/database adoption deferred.
MeasurementType
Dropped
Use MeasurementIdentifierId → common measurement definition
Drop the standalone WorkStep MeasurementType. Manage numerical/custom classification through the linked MeasurementIdentifier definition, extending its reviewed metadata where needed. Preserve the existing Numerical and Custom distinction and allowed-answer behavior during later adoption; backend/database implementation remains pending complete review.

WorkorderMeasurementType? { Numerical, Custom } · Nullable · Required for: MeasurementDefinition
Source definitions: WorkStepMeasurementDefinition.MeasurementType, WorkorderExecutionEntry.MeasurementType

MeasurementUnit
Dropped
Use MeasurementIdentifierId → MeasurementIdentifier.Unit
Drop the duplicate WorkStep MeasurementUnit. Use Unit and UnitGroup on the linked MeasurementIdentifier definition. Reconcile legacy unit text, units and any conversions before adoption, and preserve the unit applicable to historical measured results. Backend/database implementation remains pending complete review.

String · Nullable
Source definitions: WorkorderExecutionEntry.MeasurementUnit

MeasurementValue
Dropped
Use MeasurementIdentifierId → common measurement framework; result storage pending implementation
Drop the standalone WorkStep MeasurementValue field together with NumericValue. Manage measurement values through the common MeasurementIdentifier framework selected by MeasurementIdentifierId. Define per-workstep result storage/association during later implementation; the current reusable MeasurementIdentifier definition does not store individual measured readings. Preserve and reconcile existing readings, their worksteps, units and applicable historical definitions before retiring either value column. Backend/database adoption remains pending complete review.

Decimal? · Nullable
Source definitions: WorkorderExecutionEntry.MeasurementValue

MeasurementsJson
Dropped
Use structured measurements linked through MeasurementIdentifierId
Drop the bundled MeasurementsJson field. Represent each repository/revision measurement using structured measurement rows linked to MeasurementIdentifier rather than an opaque JSON bundle. Preserve every legacy measurement, its ordering and applicable repository revision during deferred adoption; selecting a single identifier must not discard multiple measurement definitions or results. Backend/database implementation remains pending complete review.

String · Nullable
Source definitions: RepositoryWorkStepRevision.MeasurementsJson

MeasurementsPlanningRevisionId
Dropped
Use MeasurementIdentifierId; preserve planning/revision traceability
Drop the separate MeasurementsPlanningRevisionId lookup from WorkStep. Use the common MeasurementIdentifier lookup for measurement definitions. Review how each step retains the applicable planned definition/version and immutable repository/planning history before removing the legacy revision reference; the reusable definition alone does not capture a historical planning snapshot. Backend/database implementation remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.MeasurementsPlanningRevisionId

MelCategory
Dropped
Use DeferredDefectId → DeferredDefectMaster → DeferredReferenceItem.MelCategory
Drop the standalone WorkStep MelCategory text. Associate the step with a deferred-defect case through DeferredDefectId and obtain the MEL category from that case's linked DeferredReferenceItem.MelCategory. Map existing category text to the correct deferral case and preserve any historically applicable category before retirement; category text alone cannot identify a deferred defect or be copied into a UUID. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: WorkorderExecutionEntry.MelCategory

NumericValue
Dropped
Use MeasurementIdentifierId → common measurement framework; result storage pending implementation
Drop the standalone WorkStep NumericValue field. Manage measurement definitions and values through the common MeasurementIdentifier framework selected by MeasurementIdentifierId, as requested. The current MeasurementIdentifier model holds reusable definition metadata rather than per-workstep observations; the result association/storage design remains pending later implementation. Preserve each actual reading with its workstep, measurement, applicable unit/definition version and history. Do not overwrite one shared definition with readings from different steps or copy a decimal reading into the UUID lookup. Reconcile existing NumericValue and MeasurementValue data before retirement. Backend/database adoption remains pending complete review.

Decimal? · Nullable
Source definitions: RepositoryWorkStep.NumericValue, RepositoryWorkStepRevision.NumericValue, WorkStep.NumericValue, WorkStepComponentSelection.NumericValue, WorkStepExecutionOccurrence.NumericValue, WorkStepMaterialDemand.NumericValue, WorkStepMeasurementDefinition.NumericValue, WorkStepRecord.NumericValue, WorkStepResourceAssignment.NumericValue, WorkStepResourceRequest.NumericValue, WorkStepSoftwareChangePlan.NumericValue, WorkorderExecutionEntry.NumericValue

OccurrenceCode
Dropped
Retain occurrence UUID identity; backend / DB adoption pending complete review
Drop the separate OccurrenceCode business-reference field from the unified WorkStep proposal. Retain the execution occurrence Id and existing WorkStepExecutionOccurrenceId relationships so repeated executions remain distinct. Adapt occurrence creation, API/display references, required-field validation and the unique OccurrenceCode index during later implementation; preserve or map any historical code references before retiring storage. Backend/database adoption remains pending complete review.

String · Nullable · Required for: ExecutionOccurrence
Source definitions: WorkStepExecutionOccurrence.OccurrenceCode

OpenedAt
Dropped
Use the original Created audit entry → RecordedAt
Drop the separate execution-occurrence OpenedAt timestamp. In the current opening flow it receives the same UTC timestamp as the original Created audit entry. Use that creation entry's RecordedAt for opening/creation display and occurrence sorting; do not use a later update's audit timestamp. Preserve or backfill historical opening times where creation audit evidence is absent or differs. Update occurrence creation, queries and required-field validation during deferred adoption. ActionStartDate and BookingStart retain their separate work-start and labor-booking meanings. Backend/database adoption remains pending complete review.

DateTime? · Nullable · Required for: ExecutionOccurrence
Source definitions: WorkStepExecutionOccurrence.OpenedAt

PartRequestsJson
Dropped
Structured material-demand / part-request records; implementation pending
Drop the bundled repository-revision PartRequestsJson field. Represent each planned part request through structured material-demand / part-request records linked to its owning workstep or repository revision during later adoption. Preserve all requested parts, quantities, attributes, ordering and applicable repository revision, and maintain links to MaterialPartRequest fulfillment. Adapt repository planning-copy and revision-cloning behavior before retiring JSON storage. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: RepositoryWorkStepRevision.PartRequestsJson

PartsPlanningRevisionId
Dropped
Preserve parts-planning source/revision traceability; implementation pending
Drop the separate PartsPlanningRevisionId lookup from WorkStep. During later adoption, retain the source repository revision and planning-copy provenance with the structured part/material demand or another reviewed common revision mechanism. Preserve which revision supplied existing part requirements and the behavior of selective parts planning synchronization; do not lose immutable planning history or overwrite independently edited demand. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.PartsPlanningRevisionId

PassFailValue
Dropped
Use MeasurementIdentifierId → common measurement framework; result storage pending
Drop the standalone WorkStep PassFailValue field. Manage pass/fail definitions and allowed answers through the common MeasurementIdentifier framework selected by MeasurementIdentifierId. Define per-workstep result association/storage during later implementation; preserve each actual outcome, including null/no recorded outcome, and explicitly reconcile legacy Boolean values with the chosen allowed-answer labels. The shared definition's Values lists allowed answers and does not store each step's selected result. Preserve historical outcomes before retiring storage. Backend/database adoption remains pending complete review.

Boolean? · Nullable
Source definitions: RepositoryWorkStep.PassFailValue, RepositoryWorkStepRevision.PassFailValue, WorkStep.PassFailValue, WorkStepComponentSelection.PassFailValue, WorkStepExecutionOccurrence.PassFailValue, WorkStepMaterialDemand.PassFailValue, WorkStepMeasurementDefinition.PassFailValue, WorkStepRecord.PassFailValue, WorkStepResourceAssignment.PassFailValue, WorkStepResourceRequest.PassFailValue, WorkStepSoftwareChangePlan.PassFailValue, WorkorderExecutionEntry.PassFailValue

PhaseCode
Dropped
Task supplies phase; preserve historical assignments and phase rules during later implementation
Drop standalone PhaseCode text from the unified WorkStep proposal because the selected task will supply the maintenance phase. Map repository and executable step phase assignments to task-owned definitions during later adoption; preserve legacy code mappings, revision context, aircraft/component applicability and related-phase counterpart generation. Update repository defaults, phase matching and counterpart creation before retiring storage. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: RepositoryWorkStep.PhaseCode, WorkStep.PhaseCode

LocationId
Dropped
Merged into LocationReferenceId; preserve existing UUIDs
Drop the duplicate LocationId name from the unified WorkStep proposal by renaming/merging it into LocationReferenceId. Both names target the same LocationReference model. Carry existing UUIDs and the relationship into the retained field; reconcile legacy area/panel/zone/location text and preserve distinct locations during later adoption. Update API, graph-link and validation references together. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.LocationId

Name
Dropped
Merged into ActionTitle; backend / DB adoption pending
Merge the separate Name property into the existing ActionTitle field. Preserve WorkStepPhase.Name as the title of its Phase-role row; preserve existing action, repository and measurement titles on their own rows. Reconcile any conflicting values during later adoption. The original field remains documented here for review.

String · Nullable · Required for: Phase
Source definitions: WorkStepPhase.Name

NextRevisionNumber
Dropped
Review replacement revision-number allocation before backend / DB adoption
Drop NextRevisionNumber from the unified WorkStep proposal. The current repository implementation uses this counter to allocate new revision numbers. Before removing backend storage, implement revision-number allocation that remains unique and safe under concurrent revision creation, preserves existing revision numbers and immutable revision history, and adapts repository create/revise flows. Backend/database adoption remains pending complete review.

Int32? · Nullable · Required for: Repository
Source definitions: RepositoryWorkStep.NextRevisionNumber

PriceBookCode
Dropped
Later review
Drop PriceBookCode from the unified WorkStep proposal and review its need later. This optional free-text pricing-catalogue reference is currently copied into material requests; it does not retrieve prices or calculate costs. Preserve existing values and review ownership by purchasing, quotations or material requests before backend/database adoption. No replacement field is approved in this decision; backend/database changes remain pending complete review.

String · Nullable
Source definitions: WorkStepMaterialDemand.PriceBookCode

RepositoryWorkStepId
Dropped
Review repository ownership and template provenance before backend / DB adoption
Drop RepositoryWorkStepId from the unified WorkStep proposal. Currently, repository revision rows use it to identify their template owner and linked executable rows use it to identify their source template. Preserve revision ownership, linked-template provenance and historical relationships; review a replacement relationship and adapt repository revision queries, linked-step creation and synchronization before retiring storage. AppliedRepositoryRevisionId remains unchanged; its existing meaning does not automatically replace revision-to-template ownership. Backend/database adoption remains pending complete review.

Guid? · Nullable · Required for: RepositoryRevision
Source definitions: RepositoryWorkStepRevision.RepositoryWorkStepId, WorkStep.RepositoryWorkStepId

RequiredProbabilityPercent
Dropped
Review material-demand probability handling before backend / DB adoption
Drop RequiredProbabilityPercent from the unified WorkStep proposal. The current field records a 0–100 material-demand probability and is copied into material requests. Preserve existing probability values and review their ownership and treatment in material-demand planning and fulfillment before retiring WorkStep storage; do not silently reinterpret probability as Quantity. No move to CriticalEvent is approved. Backend/database adoption remains pending complete review.

Decimal? · Nullable · Required for: MaterialDemand
Source definitions: WorkStepMaterialDemand.RequiredProbabilityPercent

RequiresCalibration
Dropped
Use MeasurementIdentifier calibration requirement; adoption pending complete review
Drop the duplicate RequiresCalibration field from the unified WorkStep proposal. The reusable MeasurementIdentifier already defines RequiresCalibration; review using that definition through MeasurementIdentifierId. Reconcile any differing legacy step-specific values and preserve the definition/version applicable to historical measurements before retiring WorkStep storage. Calibration-evidence validation and backend/database adoption remain pending complete review. No move to CriticalEvent is approved.

Boolean? · Nullable · Required for: MeasurementDefinition
Source definitions: WorkStepMeasurementDefinition.RequiresCalibration

RequiresEngineChange
Dropped
Moved to CriticalEvent.RequiresEngineChange; select through WorkStep.CriticalEventId
Move RequiresEngineChange from the unified WorkStep proposal to CriticalEvent as a required Boolean category flag, default false. Select the applicable category through WorkStep.CriticalEventId. Preserve existing per-step or per-revision requirements and reconcile category combinations during later adoption. Preserve historical independent-inspection and operational requirements when reusable categories change. Backend/database adoption remains pending complete review.

Boolean · Required · Required for: Execution
Source definitions: WorkpackageOrder.RequiresEngineChange

RequiresIndependentInspection
Dropped
Moved to CriticalEvent.RequiresIndependentInspection; select through WorkStep.CriticalEventId
Move RequiresIndependentInspection from the unified WorkStep proposal to CriticalEvent as a required Boolean category flag, default false. Select the applicable category through WorkStep.CriticalEventId. Preserve existing per-step or per-revision requirements and reconcile category combinations during later adoption. Preserve historical independent-inspection and operational requirements when reusable categories change. Backend/database adoption remains pending complete review.

Boolean? · Nullable · Required for: RepositoryRevision
Source definitions: RepositoryWorkStepRevision.RequiresIndependentInspection

RequiresRampActivity
Dropped
Moved to CriticalEvent.RequiresRampActivity; select through WorkStep.CriticalEventId
Move RequiresRampActivity from the unified WorkStep proposal to CriticalEvent as a required Boolean category flag, default false. Select the applicable category through WorkStep.CriticalEventId. Preserve existing per-step or per-revision requirements and reconcile category combinations during later adoption. Preserve historical independent-inspection and operational requirements when reusable categories change. Backend/database adoption remains pending complete review.

Boolean · Required · Required for: Execution
Source definitions: WorkpackageOrder.RequiresRampActivity

RequiresTaxi
Dropped
Moved to CriticalEvent.RequiresTaxi; select through WorkStep.CriticalEventId
Move RequiresTaxi from the unified WorkStep proposal to CriticalEvent as a required Boolean category flag, default false. Select the applicable category through WorkStep.CriticalEventId. Preserve existing per-step or per-revision requirements and reconcile category combinations during later adoption. Preserve historical independent-inspection and operational requirements when reusable categories change. Backend/database adoption remains pending complete review.

Boolean · Required · Required for: Execution
Source definitions: WorkpackageOrder.RequiresTaxi

RequiresWeightAndBalance
Dropped
Moved to CriticalEvent.RequiresWeightAndBalance; select through WorkStep.CriticalEventId
Move RequiresWeightAndBalance from the unified WorkStep proposal to CriticalEvent as a required Boolean category flag, default false. Select the applicable category through WorkStep.CriticalEventId. Preserve existing per-step or per-revision requirements and reconcile category combinations during later adoption. Preserve historical independent-inspection and operational requirements when reusable categories change. Backend/database adoption remains pending complete review.

Boolean · Required · Required for: Execution
Source definitions: WorkpackageOrder.RequiresWeightAndBalance

ResourceRequestsJson
Dropped
Preserve repository resource-request planning and revision history during later adoption
Drop ResourceRequestsJson from the unified WorkStep proposal. Preserve existing resource-request payloads and their repository revision context, including resource types, quantities, requested windows and other planning details. Review carrying these through structured resource-request records and adapt repository revision creation, planning copy and synchronization before retiring JSON storage. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: RepositoryWorkStepRevision.ResourceRequestsJson

ResourcesPlanningRevisionId
Dropped
Preserve resource-planning revision provenance during later adoption
Drop ResourcesPlanningRevisionId from the unified WorkStep proposal. Preserve existing resource-planning revision links and their history, and review how structured resource-request records or the shared revision design retain this provenance. Adapt planning copy and synchronization to preserve independently edited resource requests before retiring the relationship. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.ResourcesPlanningRevisionId

Revision
Dropped
Review replacement repository version identification before backend / DB adoption
Drop Revision from the unified WorkStep proposal. Preserve existing repository revision numbers, immutable revision identities and the association of executable steps with the version applied. Review replacement version identification and adapt revision allocation, display, queries and history before retiring storage. Backend/database adoption remains pending complete review.

Int32? · Nullable · Required for: RepositoryRevision
Source definitions: RepositoryWorkStepRevision.Revision

RevisionStatus
Dropped
Review replacement repository revision lifecycle before backend / DB adoption
Drop RevisionStatus from the unified WorkStep proposal. Preserve existing New, Active, Inactive and Superseded meanings and historical states. Review replacement lifecycle control and adapt activation, previous-version supersession and active-revision selection before retiring storage. Backend/database adoption remains pending complete review.

RepositoryRevisionStatus? { New, Active, Inactive, Superseded } · Nullable · Required for: RepositoryRevision
Source definitions: RepositoryWorkStepRevision.RevisionStatus

IsShopcardCollected
Dropped
Replaced by ShopcardCollectionStatus; preserve collection evidence in audit history
Replace the separate collection Boolean with WorkStep.ShopcardCollectionStatus. Preserve existing collected values and reconcile with legacy header flags during adoption. Backend/database adoption remains pending complete review.

Boolean? · Nullable · Required for: Execution
Source definitions: WorkStep.IsShopcardCollected

ShopcardCollectedAt
Dropped
Replaced by ShopcardCollectionStatus; preserve collection evidence in audit history
Drop the separate collection timestamp property in favor of a single ShopcardCollectionStatus field. Preserve each existing collection timestamp and its original evidence in audit history, backfilling collection events when the history lacks them; the enum itself does not store a timestamp. Backend/database adoption remains pending complete review.

DateTime? · Nullable
Source definitions: WorkStep.ShopcardCollectedAt

SoftwareChangesJson
Dropped
Preserve software-change plans and repository revision history during later adoption
Drop SoftwareChangesJson from the unified WorkStep proposal. Preserve existing software-change payloads and their repository revision context, including target software/part references, change references and planning details. Review carrying these through structured software-change plan records and adapt repository revision creation, planning copy and synchronization before retiring JSON storage. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: RepositoryWorkStepRevision.SoftwareChangesJson

SoftwarePlanningRevisionId
Dropped
Preserve software-planning revision provenance during later adoption
Drop SoftwarePlanningRevisionId from the unified WorkStep proposal. Preserve existing software-planning revision links and historical provenance. Review how structured software-change plan records or the shared revision design retain this provenance, and adapt planning copy and synchronization to preserve independently edited plans before retiring the relationship. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.SoftwarePlanningRevisionId

SpecialEquipmentRequest
Dropped
Review structured resource requests; preserve legacy equipment-request text during adoption
Drop SpecialEquipmentRequest from the unified WorkStep proposal. Preserve the existing optional special-equipment request text and its 500-character maximum for historical review. Review mapping the text to structured resource requests, including RequestTitle and RequestDescription where appropriate, without treating free text as an equipment selection or reservation. Backend/database adoption remains pending complete review.

String · Nullable · Required for: Execution
Source definitions: WorkpackageMaster.SpecialEquipmentRequest

SpecialEquipmentRequest2
Dropped
Review structured resource requests; preserve legacy equipment-request text during adoption
Drop SpecialEquipmentRequest2 from the unified WorkStep proposal. Preserve the existing optional special-equipment request text and its 500-character maximum for historical review. Review mapping the text to structured resource requests, including RequestTitle and RequestDescription where appropriate, without treating free text as an equipment selection or reservation. Backend/database adoption remains pending complete review.

String · Nullable · Required for: Execution
Source definitions: WorkpackageMaster.SpecialEquipmentRequest2

TaskControlProfileId
Dropped
Replaced by CriticalEventId; task controls managed on CriticalEvent
Replace the WorkStep TaskControlProfileId lookup with the existing proposed CriticalEventId lookup. CriticalEvent will carry the applicable task controls through proposed ControlOptions. Preserve selected profile option combinations, inherited taskcard/maintenance-task controls and historical requirements when mapping categories during later adoption. Adapt active-selection validation and workstep closure checks for independent inspection, double inspection and reinspection without weakening the required signed evidence. This decision retires the WorkStep lookup only; other TaskControlProfile references and its physical table are not retired by this review. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.TaskControlProfileId

ToolRegistrationId
Dropped
Review registered-tool allocation linkage before backend / DB adoption
Drop ToolRegistrationId from the unified WorkStep proposal. Preserve existing resource assignments to specific ToolRegistration records, their identities, time intervals and historical calibration context. Review replacement tool-allocation linkage and adapt resource assignment validation, resource resolution, foreign keys and uniqueness rules before retiring this property. No replacement field is approved by this decision. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStepResourceAssignment.ToolRegistrationId

Unit
Dropped
Use MeasurementIdentifier.Unit through MeasurementIdentifierId; preserve historical measurement units
Drop the duplicate Unit field from the unified WorkStep proposal. Obtain this measurement definition value from MeasurementIdentifier.Unit through MeasurementIdentifierId. Reconcile differing legacy step and identifier values explicitly and preserve the unit/group and definition version applicable to each historical reading so later changes to a reusable definition do not reinterpret recorded values. Adapt measurement planning, input and validation during later adoption. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: WorkStepMeasurementDefinition.Unit

UnitGroup
Dropped
Use MeasurementIdentifier.UnitGroup through MeasurementIdentifierId; preserve historical measurement units
Drop the duplicate UnitGroup field from the unified WorkStep proposal. Obtain this measurement definition value from MeasurementIdentifier.UnitGroup through MeasurementIdentifierId. Reconcile differing legacy step and identifier values explicitly and preserve the unit/group and definition version applicable to each historical reading so later changes to a reusable definition do not reinterpret recorded values. Adapt measurement planning, input and validation during later adoption. Backend/database adoption remains pending complete review.

String · Nullable
Source definitions: WorkStepMeasurementDefinition.UnitGroup

UpliftPartId
Dropped
Merged into PartId; backend / DB adoption pending
Replace UpliftPartId with the existing PartId field on the same uplift execution row. Preserve original uplift values, reconcile conflicts explicitly and adapt API/UI validation during later adoption. The original field remains documented here for review; backend/database changes remain pending complete review.

Guid? · Nullable
Source definitions: WorkorderExecutionEntry.UpliftPartId

UpliftQuantity
Dropped
Merged into Quantity; backend / DB adoption pending
Replace UpliftQuantity with the existing Quantity field on the same uplift execution row. Preserve original uplift values, reconcile conflicts explicitly and adapt API/UI validation during later adoption. The original field remains documented here for review; backend/database changes remain pending complete review.

Decimal? · Nullable
Source definitions: WorkorderExecutionEntry.UpliftQuantity

UpperLimit
Dropped
Use MeasurementIdentifier.UpperLimit through MeasurementIdentifierId; preserve historical limit definitions
Drop the duplicate UpperLimit field from the unified WorkStep proposal. Obtain the measurement upper acceptance limit from MeasurementIdentifier.UpperLimit through MeasurementIdentifierId, together with the applicable limit type and unit. Reconcile differing legacy step and identifier limits explicitly and preserve the definition/version applicable to historical readings so later master changes do not reinterpret prior acceptance decisions. Adapt measurement planning and result/closure validation during later adoption. Backend/database adoption remains pending complete review.

Decimal? · Nullable
Source definitions: WorkStepMeasurementDefinition.UpperLimit, WorkorderExecutionEntry.UpperLimit

WithinLimits
Dropped
Derive per-reading assessment using MeasurementIdentifierId and the applicable definition version
Drop the standalone WithinLimits property from the unified WorkStep proposal. Assess each recorded measurement against the applicable MeasurementIdentifier limit type, lower/upper limits and unit through MeasurementIdentifierId. The outcome belongs to that individual reading; do not store one shared WithinLimits flag on the reusable identifier. Preserve existing true/false/null assessments, the measured value and the original definition/version used, and reconcile historical cases without silently recalculating them against changed master limits. Define how missing results, absent limits and custom/discrete answers are assessed; preserve an unknown/not-evaluated state when an assessment cannot be made. Measurement-result storage and validation remain pending complete review; backend/database unchanged.

Boolean? · Nullable
Source definitions: RepositoryWorkStep.WithinLimits, RepositoryWorkStepRevision.WithinLimits, WorkStep.WithinLimits, WorkStepComponentSelection.WithinLimits, WorkStepExecutionOccurrence.WithinLimits, WorkStepMaterialDemand.WithinLimits, WorkStepMeasurementDefinition.WithinLimits, WorkStepRecord.WithinLimits, WorkStepResourceAssignment.WithinLimits, WorkStepResourceRequest.WithinLimits, WorkStepSoftwareChangePlan.WithinLimits, WorkorderExecutionEntry.WithinLimits

WorkTemplateRevisionId
Dropped
Review template revision provenance before backend / DB adoption
Drop WorkTemplateRevisionId from the unified WorkStep proposal. Preserve existing executable-step and occurrence links to the work-template revision used, together with historical template contents and ownership. Review replacement revision provenance and adapt template selection, planning links and occurrence validation before retiring this relationship. No replacement field is approved by this decision. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.WorkTemplateRevisionId, WorkStepExecutionOccurrence.WorkTemplateRevisionId

WorkType
Dropped
Review task-owned aircraft/component applicability before backend / DB adoption
Drop WorkType from the unified WorkStep proposal, following the decision that tasks handle phases. Preserve existing Global, Aircraft and Component phase applicability and review how the task-owned design carries these constraints. Adapt phase planning and counterpart applicability checks before retiring storage; this decision does not remove other aircraft/component context fields. Backend/database adoption remains pending complete review.

WorkStepPhaseWorkType? { Global, Aircraft, Component } · Nullable · Required for: Phase
Source definitions: WorkStepPhase.WorkType

WorkStepSequence
Dropped
Merged into WorkStepNumber; numeric ordering for execution rows
Merge WorkStepSequence into the single WorkStepNumber field. Preserve the existing positive execution sequence as the numeric step number; compare it numerically and derive the full owner-prefixed display label. Retain repository alphanumeric number codes, preserve old execution labels/history and reconcile mismatches during adoption. Update sequence-dependent lifecycle validation, generation and indexes before retiring this property. Backend/database adoption remains pending complete review.

Int32? · Nullable · Required for: Execution
Source definitions: WorkStep.WorkStepSequence

WorkStepExecutionOccurrenceId
Dropped
Review execution grouping, ownership and sequence scope before backend / DB adoption
Drop WorkStepExecutionOccurrenceId from the unified WorkStep proposal. Preserve existing occurrence-to-step membership and distinguish repeated executions of the same taskcard, jobcard or customer requirement. Review replacement execution grouping and ownership, adapt step retrieval, sequence and lifecycle validation, graph links and access checks, and preserve historical occurrence identities before retiring this relationship. This decision does not automatically drop the occurrence records or assign all repeated runs to one workorder scope; no replacement link is approved here. Backend/database adoption remains pending complete review.

Guid? · Nullable
Source definitions: WorkStep.WorkStepExecutionOccurrenceId

WorkStepResourceRequestId
Dropped
Review resource-assignment ownership and request linkage before backend / DB adoption
Drop WorkStepResourceRequestId from the unified WorkStep proposal. Preserve existing assignment-to-request membership, allocated resource identities and assignment intervals. Review replacement ownership/linkage and adapt request-scoped resource-type validation, requested-window checks, assigned-quantity limits, cancelled-request handling, uniqueness rules, access checks and deletion behavior before retiring this relationship. No replacement link is approved by this decision. Backend/database adoption remains pending complete review.

Guid? · Nullable · Required for: ResourceAssignment
Source definitions: WorkStepResourceAssignment.WorkStepResourceRequestId

ExecutionStatus
Dropped
Merged into WorkStatus; implementation deferred
Merge this lifecycle field into WorkStatus. Preserve its original state and transition evidence, including physical completion versus quality/release progression; do not discard a completed-work fact when the current lifecycle state advances. HTML review decision; backend / database adoption pending complete review.

ShopWorkOrderStatus? { Draft, InProgress, Testing, QualityReview, ApprovedForRelease, Closed, Cancelled } · Nullable · Required for: Execution
Source definitions: WorkStep.ExecutionStatus, WorkpackageMaster.ShopStatus, WorkorderMaster.ShopStatus

ShopStatus
Dropped
Merged into WorkStatus through the unified lifecycle; implementation deferred
Merge the former ShopStatus and ExecutionStatus into the single WorkStatus lifecycle. Preserve original shop states, completed-work evidence and release gates. HTML review decision; backend / database adoption pending complete review.

ShopWorkOrderStatus { Draft, InProgress, Testing, QualityReview, ApprovedForRelease, Closed, Cancelled } · Required · Required for: Execution
Source definitions: WorkpackageMaster.ShopStatus, WorkorderMaster.ShopStatus

MeasurementId
Dropped
Merged into MeasurementIdentifier; backend / DB adoption pending
Merge MeasurementId into the single MeasurementIdentifier text code for measurement definitions and corresponding execution results. Preserve per-workstep uniqueness of planned codes, formula references and repeated readings; keep MeasurementIdentifierId as the separate reusable definition lookup. Backend/database adoption remains pending complete review.

String · Nullable · Required for: MeasurementDefinition
Source definitions: WorkStepMeasurementDefinition.MeasurementId

MeasurementText
Dropped
Merged into TextValue; backend / DB adoption pending
Merge MeasurementText into the retained TextValue property for individual textual/custom measurement results. Preserve original answers, repeated result rows, historical definition/allowed-answer context and explicit N/A handling. Reconcile conflicting values on the same legacy row and adapt measurement save/closure validation during adoption. Backend/database unchanged.

String · Nullable
Source definitions: WorkorderExecutionEntry.MeasurementText

CompletionState
Dropped
Merged into WorkStatus; implementation deferred
Merge this lifecycle field into WorkStatus. Preserve its original state and transition evidence, including physical completion versus quality/release progression; do not discard a completed-work fact when the current lifecycle state advances. HTML review decision; backend / database adoption pending complete review.

WorkStepCompletionState? { Open, Completed, NotPerformed, Ready, InProgress, Paused, Cancelled, Removed } · Nullable · Required for: Execution
Source definitions: WorkStep.CompletionState

FailureConfirmed
Dropped
Merged into FailureConfirmation execution evidence; implementation deferred
Remove the independently editable failure-confirmation Boolean. Confirmation is established by a valid FailureConfirmation entry linked through WorkStepId, with StaffMemberId, ActionEndDate and ActionText recording who, when and what was confirmed. Corrections invalidate/supersede evidence with audit history. A legacy true value without evidence remains unresolved historical data; never invent a signer or time. HTML review decision; backend / database adoption pending complete review.

Boolean · Required · Required for: Execution
Source definitions: WorkpackageOrder.FailureConfirmed

ReleasedToService
Dropped
Merged into authoritative release/sign records; implementation deferred
Remove the independently editable release Boolean. Determine release from valid, active, authorized release/sign records for the correct aircraft/component, work and quantity scope. Partial release does not release the whole scope; revoked/superseded records do not count. WorkStatus.Released is a validated projection of this evidence, not a second editable release assertion. Completion or a signature of another kind cannot imply release. HTML review decision; backend / database adoption pending complete review.

Boolean · Required · Required for: Execution
Source definitions: WorkpackageMaster.ReleasedToService, WorkorderMaster.ReleasedToService

CloseWorkStep
Dropped
Merged into complete-work command; implementation deferred
Keep CloseWorkStep only as a transient request-command option, not a stored WorkStep property. The option and the direct complete-work endpoint invoke the same lifecycle validation and atomic transition into WorkStatus.Completed. Persist the signed action and transition audit; retries must not duplicate evidence. Quality approval, release and final administrative closure remain separately validated transitions in the same WorkStatus lifecycle. HTML review decision; backend / database adoption pending complete review.

Boolean? · Nullable · Required for: ExecutionEntry
Source definitions: WorkorderExecutionEntry.CloseWorkStep

Troubleshooting
Dropped
Merged into CriticalEventId and execution action evidence; implementation deferred
Manage the troubleshooting requirement through CriticalEvent.ControlOptions.RequiresTroubleshooting selected by CriticalEventId. Record actual troubleshooting and its outcome in the linked execution/component-removal action using ActionText and existing component identity fields. Preserve the legacy removal troubleshooting marker as historical action evidence. Selecting a requirement does not prove work was performed, and performed work must not create a requirement automatically. There is no second editable troubleshooting Boolean on WorkStep. HTML review decision; backend / database adoption pending complete review.

Boolean? · Nullable · Required for: ExecutionEntry
Source definitions: WorkorderExecutionEntry.Troubleshooting

HeaderSpecialCode
Dropped
Merged into SpecialCode; implementation deferred
Merge the header/reference special code into SpecialCode. Preserve scope and source provenance. If legacy codes differ for the same owning step, reconcile them explicitly or retain separate linked reference rows; never overwrite, concatenate into an ambiguous code or truncate historical values. HTML review decision; backend / database adoption pending complete review.

String · Nullable
Source definitions: WorkStepReferenceDetails.HeaderSpecialCode, WorkpackageOrder.HeaderSpecialCode

PlannedManpower
Dropped
Merged into EstimatedManHours; implementation deferred
Merge planned labor effort into EstimatedManHours. Current creation code populates PlannedManpower from task/repository estimated man-hours, so the retained unit is person-hours. Convert finite Single values to Decimal explicitly, preserving null/zero and documented precision. Reconcile differing estimates; do not sum duplicate estimates or reinterpret genuine legacy headcount as hours. Staff headcount belongs to a staff resource request Quantity. HTML review decision; backend / database adoption pending complete review.

Single? · Nullable
Source definitions: WorkStep.PlannedManpower