# Engineering changes: why the app refuses (/docs/product-development/engineering-changes-refusals)

The app refuses a step so the change record stays true: nobody can approve a change that has not been
assessed, and nobody can mark it done while work is left. A refusal changes nothing; fix the cause and
press the button again. Messages about signatures, signing authority, training and field ranges are the
same in every flow and are explained in [Signatures and common refusals](/docs/get-started/signatures-and-refusals).

## Change a released product [#change-a-released-product]

The task page is [Change a released product](/docs/product-development/engineering-changes).

```mermaid
%% title: Where a change note is refused
flowchart LR
  A["Edit the note"] --> B["Submit for assessment"]
  B --> C["Send to change board"]
  C --> D["Change board signs"]
  D --> E["Mark implemented"]
  E --> F["Close · verified"]
  A -.-> A1["Edit refusals"]
  B -.-> B1["Fill in first"]
  C -.-> C1["Impact checks"]
  D -.-> D1["Route and turn"]
  E -.-> E1["Checklist and evidence"]
  F -.-> F1["Verification and retraining"]
```

### Saving the note and its affected items [#saving-the-note-and-its-affected-items]

| Message | When | What it means | What to do |
|---|---|---|---|
| `Pick the product this change applies to. For a change to a document only, set Type to Document.` | Saving a note with no **Product** | A change applies to a product unless it only changes a document. | Choose the **Product**, or set the **Type** to **Document**. |
| `{label} can only be set by the change workflow.` | Editing the board signatures, route, signing order, stock tick or implementation time. The label is one of `The change board signatures`, `The change board route`, `The change board order`, `The stock disposition tick`, `The implementation time`. | The workflow writes these, so nobody can edit them by hand. | Use the buttons on the note. |
| `The approver can only be set by the change workflow.` | Editing **Approved by** after the board has approved | The last board signature records the approver. | Leave the field. |
| `{id}: the checklist ticks and the imported mark can only be set by the change workflow.` | Saving **Affected items** with a tick set by hand | Ticks are made with the **Tick** button. | Use **Tick** on the checklist. |
| `Affected items can only change while the change is in Draft or Impact assessment.` | **Add item**, **Remove** or changing an action after the note has reached the change board | The board reviewed these items. | Return the note to impact assessment, or raise a new note. |
| `Choose the document to add` | **Add item** with no document chosen | Nothing to add. | Choose the **Document**. |
| `{id} is already an affected item.` | **Add item** for a document already listed | One line per document. | Change the action of the line that is there. |
| `{id} is not a {kind}.` where kind is `product`, `production method`, `work instruction`, `qms document` or `drawing / specification` | **Add item** with a number that does not exist as that kind | The number is wrong or of another kind. | Pick the document from the list. |
| `{id} is {status}. An obsolete document cannot be revised by a change.` or `...cannot be made obsolete again by a change.` | Adding or setting an obsolete or superseded document | An obsolete document has no live revision. | Pick the live document. |
| `{id} is {status}, not released. Only a released document can be made obsolete by a change.` | Setting **Obsolete** on a draft or in-review document | Only a released document can be withdrawn. | Release it first, or choose **Revise**. |
| `{id} is at rev {rev}. Add it from Affected items to take its current revision.` | Saving an item whose revision is out of date | The item must carry the document's current revision. | Remove the line and **Add item** again. |
| `{kind} cannot be set to {action}.` | Setting an action the item type does not allow | A drawing has only **Update**. Others have **Revise**, **Obsolete** and **New**. | Choose an allowed action. |
| `That item is no longer on the change.` | **Remove**, setting an action or **Tick** on a line that was removed | Another person changed the list. | Reload the note. |
| `{reference} is not a risk assessment or aspect record.` | Saving **Risk assessment / aspect updated** with a number that is not a risk assessment or an environmental aspect | The link must be a real EHS record. | Enter the number of a risk assessment (HIRA) or an aspect. |
| `{Field} can only change while the change is in Draft or Impact assessment.` where the field is the type, product, revisions, impact fields, EHS fields, PFMEA reference, customer reference, effective date or first lot | Editing the assessed fields once the note is with the board | The board signs on these values. | Return the note to impact assessment first. The **Validation / FAI record** can still be entered on an approved note while it is blank. |

### Submit for assessment [#submit-for-assessment]

| Message | When | What it means | What to do |
|---|---|---|---|
| `Fill in first: change, type, reason, affected items, description` (only the blank ones are listed) | Pressing **Submit for assessment** | The note is not complete enough to assess. | Fill in the listed fields. If the note lists affected items, `affected items` is not needed. |
| `Add the document to revise. Open Affected items and add the document with the action Revise. When you approve the change, the system starts a draft revision only for those items.` | Pressing **Submit for assessment** with no affected items, and **Source record** and **Affected documents** name no product, production method, work instruction or QMS document that is in use | Approving would start no revision. | Under **Affected items**, choose **Add item** and add the document with the action **Revise**. |

### Send to change board [#send-to-change-board]

The app checks in this order and shows the first problem.

| Message | When | What it means | What to do |
|---|---|---|---|
| `EHS review required: set EHS impact (None or Yes) before approving` | Pressing **Send to change board** with **EHS impact** at **Not assessed** | EHS must be considered. | Set **EHS impact** to **None** or **Yes**. |
| `EHS impact is Yes. Enter the {items} (ISO 45001 8.1.3)` where items are `EHS review notes`, `updated risk assessment or aspect`, `EHS reviewer` | **EHS impact** is **Yes** and these are blank | A hazard needs a reviewed control. | Fill in the listed EHS fields. |
| `{reference} is not a risk assessment or aspect record` | The linked EHS record is not found | The link is wrong. | Enter a real risk assessment or aspect number. |
| `Record the PFMEA review (document and revision) before approving a {type} change` where type is `product`, `process`, `material` or `mould / tooling` | **PFMEA reviewed (doc · rev)** is blank | These changes need a PFMEA review. | Enter the PFMEA document and revision. |
| `PFMEA has open High-priority line{s} for {product}: {line ids}. Start the action before approving.` | A High-priority PFMEA line of the product is still **Open** | A known high risk has no action. | On **Process FMEA**, **Start action** on the lines. See [Validate the process](/docs/product-development/process-validation). |
| `Fill in first: impact on safety and performance, risk, revalidation, regulatory impact, customer notice, existing stock and WIP, retraining needed, effective by` (only the blank ones) | **Send to change board** | The impact assessment is incomplete. | Fill in the listed fields. |
| `Set the effective date` | **Effective by** is **Date** and **Effective date** is blank | | Enter the date. |
| `Set the first lot` | **Effective by** is **Lot** and **First lot** is blank | | Enter the lot. |
| `{customer} requires {n}-day change notice. Set customer notice and record their approval.` | The customer's quality requirements ask for notice and **Customer notice** says **Not required** | The customer must be told. | Set **Customer notice** and record the approval. |
| `Waiting for customer approval. Record it under Customer notice first.` | **Customer notice** is **Required · pending** | The customer has not agreed. | Wait for the approval, then set it to **Notified · approved**. |
| `Enter the customer approval reference` | **Customer notice** is **Notified · approved** with no **Customer approval ref.** | The approval must be traceable. | Enter the reference. |
| `Add the affected items first: products, production methods, work instructions, QMS documents or drawings` | No affected items | The board needs to know what changes. | **Add item**. |
| `No change board function applies to this change. Set the route in Engineering › Settings.` | No row of the board route applies to this note | Nobody would sign. | Ask the organization manager to set the route in `/engineering/cfg`. |

### Reject [#reject]

**Reject** is a signed step and has no content check. If you cannot sign it, see
[Signatures and common refusals](/docs/get-started/signatures-and-refusals).

### Change board sign-off [#change-board-sign-off]

| Message | When | What it means | What to do |
|---|---|---|---|
| `This change is not with the change board.` | **Approve · sign** or **Return** on a note that is not in **CCB review** | The board only signs in that status. | Reload the note. |
| `{name} is not on the change board route for this change.` | Signing for a function that is not on this note's route | The route is frozen when the note is sent. | Ask who is on the route. |
| `{function} has already signed.` | Signing for a function that has signed | One signature per function. | None. |
| `You have already signed this change for {role}. {function} needs a different person.` | Approving as a second function | One person signs one function only. | Ask the other function's person. |
| `You raised {note}, so {function} needs a different person to sign.` | Approving a board function on a note you raised, in person or as the delegate of the requester | The person who raised a change does not sign its board. Someone else can take the function. | Ask the other holder of that function's authority. A **Return** is allowed. |
| `Sequential route: {function} signs first` | Approving out of turn on a sequential route | The functions sign in the order listed. | Wait for the function named. A **Return** can be made at any time. |
| `This function is not on the route.` | The function is missing from the route | | Reload the note. |
| `Record not found` | An EHS officer opens a note whose route has no function they can sign for | The note is hidden from them. | Ask the engineer. |

A **Return** also needs a reason of at least 4 characters. The screen says `Enter a reason of at least 4 characters`.

### Mark implemented [#mark-implemented]

| Message | When | What it means | What to do |
|---|---|---|---|
| `Finish the implementation checklist first: {line}; {line} and {n} more` | Pressing **Mark implemented** with checklist lines left | See the lines below. | Do the lines, then try again. |
| `Fill in first: implementation record` | **Implementation record** is blank | | Describe what was done. |
| `Revalidation is {value}. Enter the validation / FAI record first.` | **Revalidation** is not **None** and the record is blank | Proof of validation is needed. | Enter the validation or FAI number. |
| `Effective date is {date}. Implement on or after that date.` | **Effective by** is **Date** and the date is in the future | | Wait for the date. |
| `{validation} is {status}. The validation must be Validated before implementing.` | The linked process validation is not **Validated** | | Finish the validation. See [Validate the process](/docs/product-development/process-validation). |
| `{Product or Work instruction} {key} rev {rev} is {status}. Start a new revision to change it.` | A change without an item list tries to move a document that has left draft to a revision other than the next one | | Use the next revision, or list the document as an affected item. |
| `The checklist can be ticked after the change board approves and before it is implemented.` | **Tick** on a note not in **Approved** | | Tick while it is **Approved**. |
| `This change has no stock disposition to record.` | **Tick** the stock line on a note whose **Existing stock and WIP** is **Use up** or **Not affected** | | None needed. |
| `{id} has no such line to tick.` | **Tick** a line that is not manual | Only manual lines are ticked. | Use **Open** or **Make obsolete**. |

The checklist lines that can be left are `{id}: Draft rev {rev} started under {note}`, `{id}: Draft
revision starts when the change board approves`, `{id}: Rev {rev} changes made and submitted for
review`, `{id}: Rev {rev} released` (`effective` for a QMS document), `{id}: Made obsolete and withdrawn
from points of use`, `{id}: Created, reviewed and released`, `{id}: Updated copy rev {rev} received,
checked and filed`, `{id}: Superseded copies withdrawn from use`, and `Stock and WIP disposition
({choice})`. Retraining lines do not block implementing; they block closing.

### Close · verified [#close--verified]

| Message | When | What it means | What to do |
|---|---|---|---|
| `Fill in first: verification evidence` | Pressing **Close · verified** with **Verification evidence** blank | A change closes with proof. | Enter the evidence. |
| `Retraining is not complete for {ids}. Close it once the training matrix is current.` | Retraining is needed and people are not current on a new revision | | Complete the training in the training matrix, then close. |

### Orders and new revisions [#orders-and-new-revisions]

| Message | When | What it means | What to do |
|---|---|---|---|
| `{note} makes the new revision effective immediately. Release {ids} rev {rev} first.` or `...effective from {date}. Release {ids} first, or plan the order to start before {date}.` | Saving or issuing a manufacturing order for the product after the effective date, while a revision is not released | The change is live but its documents are not. | Release the revisions, or start the order before the date. |
| `{wi} is obsolete and cannot be used on an order. Pick its replacement.` | Saving or issuing an order that uses an obsolete work instruction | | Pick the replacement work instruction. |

<NextSteps>

<NextStep href="/docs/product-development/engineering-changes" title="Change a released product" description="Back to the task: raise, assess, sign, implement and close." />

<NextStep href="/docs/get-started/signatures-and-refusals" title="Signatures and common refusals" description="The messages every flow shares." />

<NextStep href="/docs/product-development/refusals" title="Product development: why the app refuses" description="Messages for the other product development pages." />

</NextSteps>

{/* Sources: packages/contracts/src/mes/engineering-change/{model,process,constants,collections}.ts; apps/api/src/modules/mes/engineering-change/{change,support,engineering-change.controller}.ts; apps/web/src/features/mes/engineering-change/messages.ts. About 60 messages covered. */}
