# Rework Workflow ## Overview The Rework Workflow feature provides a controlled way to return Materials that were sent to rework back into production. It gives rework operators a dedicated view of the Materials in rework at a rework station, and a two-step **Return to Production** wizard that validates the selection and moves the Materials in bulk to the right destination: the same Line, a different Line, or an offline inspection station. ### Concept A Material is sent to rework either manually, with the **Rework** action on the Material, or through a Defect Action configured with the **Rework** action (such as [**Send to Rework**](defectactions.md#available-defect-actions)), which off-flows it to a predefined rework path when a defect is recorded or the Material is tracked out. Once the Material is processed at the rework station, it is ready to be returned to production. !!! note "Background Information" Rework stations let defective SMT boards be inspected, repaired, or reprocessed outside the production Line without losing track of where they came from. Each Material's off-flow record keeps the Line, lane, FlowPath, and parent Lot it should return to, so returning a batch of Materials does not require the operator to know or re-enter that context. Materials are always returned in bulk, through the **Return to Production** wizard, from the **Rework View** of the Resource where they were reworked. The standard **MoveNext** action is not offered in the Rework View. --- ## Functional Behavior ### Preconditions / Constraints - To show the **Rework View**, the Resource must: - Have Processing Type **Process**. - Have the `SMTIsReworkStation` attribute enabled. - The user must have the `SMT.ReworkView` security feature to open the Rework View, and `SMT.ReturnFromRework` to run the **Return to Production** wizard. - To be returned, a Material must: - Be in rework (`ReworkCount > 0`). - Be in the **Processed** state. - Have been last processed at the Rework View's Resource. All selected Materials must share that Resource. - Have no open defects, unless returns with open defects are allowed (see [System Configuration](#system-configuration)). - If any selected Material is in a Container, all selected Materials must be in that same Container. ![SMTIsReworkStation attribute enabled on a Resource](images/rework/resource-rework-attribute.png) --- ### System Configuration - Resource attribute `SMTIsReworkStation` - Type: Boolean - Default: `false` - Description: Marks a **Process** Resource as a rework station, which makes the **Rework View** available on it. - `/SMT/MaterialRework/AllowReturnWithOpenDefects` - Type: Boolean - Default: `false` - Description: When disabled, Materials with open defects cannot be returned from rework. - `/SMT/MaterialRework/AgingTimeWarning` - Type: Integer (minutes) - Default: empty - Description: Time in the current Step after which a Material's **Aging** cell is highlighted as a warning in the Rework View. - `/SMT/MaterialRework/AgingTimeLimit` - Type: Integer (minutes) - Default: empty - Description: Time in the current Step after which a Material's **Aging** cell is highlighted as exceeded in the Rework View. - Security features: - `SMT.ReworkView`: gives access to the Rework View. - `SMT.ReturnFromRework`: gives access to the **Return to Production** wizard. --- ### Trigger The feature is triggered when an operator: - Opens the **Rework View** of a rework station Resource. - Selects one or more Materials, either in the grid or by scanning their barcodes. Scanning a Container barcode selects all of its Materials. - Launches **Return to Production** from the action bar. --- ### System Actions #### The Rework View The Rework View is a view of the Resource entity page (`Resource > Views > Rework View`). It lists the Materials currently in rework at the Resource. ![Rework View grid and action bar](images/rework/return-to-production-button.png) ##### Data Grid - Columns: Name, Priority, Product, Production Order, Container, Open Defect Count, Rework Count (current count / rework limit, shown as a bar), Aging, and System State. - **Aging** is the time since the Material entered its current Step. It is highlighted when it exceeds `AgingTimeWarning` or `AgingTimeLimit`. - Tab filters: **All Materials**, **Queued**, **In Process**, **Processed**, each with its count. - **Group By**: None, Container, Production Order, or Product. - A filter panel for Product, Production Order, and Container, and a free-text search box. ##### Selecting Materials - Select Materials directly in the grid. - Scan a Material barcode to select it; scanning it again deselects it. - Scan a Container barcode to select all of its Materials in the grid. ##### Action bar | Group | Actions | | :--------- | :--------------------------------------------------------------------- | | General | Refresh | | Material | Hold, Release, Dispatch, Track-In, Track-Out, Record Loss/Bonus | | Exceptions | Open Instance | | Defects | Manage Material Defects | | Rework | **Return to Production** | Actions are enabled or disabled according to the current selection. Actions that do not fit in the bar are shown under **More**. !!! info "MoveNext is not offered in the Rework View" The standard **MoveNext** action is not part of the Rework View's action bar. Materials are returned through the **Return to Production** wizard, so the destination and FlowPath are always resolved and validated consistently. #### The Return to Production wizard The wizard has two steps: **Validation** and **Destination**. ##### Step 1: Validation The step lists the selected Materials. Each row shows the Material name and its Product, Production Order, and Container. - Under **Options**, **Apply Validation Rule** is on by default with the rule **Same Product**. The available rules are: - **Same Product** - **Same Product Group** - **Same Production Order** - Turning **Apply Validation Rule** off returns the Materials without a grouping rule (**No Grouping**). - When a rule is applied, the largest group of matching Materials is kept as the reference. Every other Material is flagged with a warning icon, and its tooltip explains why. - Any Material can be removed from the selection. Removing the flagged Materials clears the block. - The wizard does not move to the next step while any Material is flagged or the selection is empty. Selecting a Material shows its details on the right: Material, Priority, Product, Product Description, Production Order, Container, and Position. ![Validation step with a flagged Material](images/rework/wizard-validation.png) ##### Step 2: Destination The operator chooses where the Materials return to: - **Same Line** - The original Line and its FlowPath are taken from the Materials' off-flow information and shown read-only, with an Information panel: Product, Product Description, Recipe, Flow, Step, and System State. - The wizard does not complete if no return Line is found, if the Materials return to more than one Line, or if some Materials have no return Line. The message asks the operator to remove those Materials in the Validation step. - **Different Line** - The operator selects a **Target Line**. Only active Line Resources are listed, and the Materials' original Line is excluded. - If the Line has lanes, a **Target Lane** must also be selected. - **Offline Station** - The operator selects: - **Offline Station**: the inspection Resource. - **Offline Flow**: the flow the Materials will follow at the offline station. - **Return Step**: the Step of the main flow where the Materials return after the offline flow. It defaults to the Materials' original return Step. - The system finds the Steps of the **Offline Flow** that the station can perform. If there is only one, it is used automatically. If there are several, an **Offline Step** field appears so the operator can pick one. If there are none, the wizard reports that the station is not valid for the selected flow. Validation errors for the destination are shown in the wizard's messages when **Return** is clicked. ![Destination step showing the return type options](images/rework/wizard-destination-sameline.png) ##### What the system does on Return - **Same Line and Different Line** - The system looks for a matching parent Lot (same Product, Production Order, and return Step) being produced on the destination Line, and reuses it. - If there is none, a new parent Lot is automatically created, dispatched, and tracked in to receive the returning Materials. - **Different Line only** - Before anything is changed, the system checks that the target is a Line and that a valid lane was given when the Line has lanes. - It also checks that the Line is configured for each Material's Product at the return Step (smart table **StepLineFlowContext**). - **Offline Station** - The Materials are moved to the offline flow as standalone Materials, without a parent Lot. - A **Change Flow and Step** future action is created at the last Step of the offline flow. When the offline processing finishes, it sends the Materials back to the selected **Return Step** of the main flow. ##### Completion - **Success**: all selected Materials are moved in bulk to the chosen destination. The wizard shows "*N Material(s) set to return to production successfully. New destination: ``*". - **Failure**: no Materials are moved, and the error returned by the backend service is shown to the operator. --- You can find more detailed information in the [**Rework**](https://help.criticalmanufacturing.com/tutorials/industrytemplates/smt/rework/) tutorial.