Produce Pro Module 06 — Scanning
Ontology pack for PP module 06 (Scanning), pinned to PP version 2401.0. Confidence: manual · Extractor:
manual@2026-05-18· Renderer:pp-module-renderer@1.0.0.
Module purpose
PP Module 06 (Scanning) configures and operates the barcode / 1D-2D scanning workflows that drive receiving, putaway, picking, and shipping confirmation. Each scan event captures (operator, scanner_id, code_value, code_format, target_workflow, target_entity_id, timestamp) and posts a line to the parent workflow’s transaction (e.g. receiving handoff, shipping load-out).
Business context
Nathel’s warehouse uses scanners across the four primary roles (Receiver, Box Man, Checker, Porter — per project_nathel_warehouse_roles_and_door_map.md). Scan events are the load-bearing real-time signal FIN consumes for events.data.pallet.position_assigned, lot.received, and shipping confirmation flows. FIN’s Box-Man / Checker dashboards reproduce the scan stream for live ops visibility but the canonical scan record lives in PP.
Canonical field reference
| PP field | Business meaning | Data type | UoM | Validity rules | Sentinel values | Enum values | Lookup table | FIN mapping | Version notes |
|---|---|---|---|---|---|---|---|---|---|
ScanEvent.OperatorId | PP operator id of the person who pulled the trigger. Resolved against actors via PP user master. | id_reference | — | — | — | — | PP user master | events.actor_id | — |
ScanEvent.ScannerId | Physical scanner serial / asset id. Useful for device fleet health monitoring and per-device error rates. | id_reference | — | — | — | — | — | events.data.scan.scanner_id | — |
ScanEvent.CodeValue | Verbatim payload decoded from the barcode / QR / GS1 label. | string | — | Preserve raw — downstream parsers handle format-specific decoding | — | — | — | events.data.scan.code_value | — |
ScanEvent.CodeFormat | Symbology of the scanned code. | enum | — | — | — | CODE_128, CODE_39, GS1_128, UPC_A, EAN_13, QR, DATA_MATRIX, AZTEC, PDF_417, OTHER | — | events.data.scan.code_format | — |
ScanEvent.TargetWorkflow | Which PP workflow this scan posts into. Drives the FIN consumer routing — receiving scans become lot.received, picking scans become picking.case_picked, etc. | enum | — | — | — | RECEIVING, PUTAWAY, PICKING, STAGING, SHIPPING, CYCLE_COUNT, QC | — | events.data.scan.workflow | — |
ScanEvent.TargetEntityId | The PP entity the scan refers to (load, PO line, lot, location, customer order line). | id_reference | — | — | — | — | — | events.data.scan.target_entity_id | — |
ScanEvent.Timestamp | ISO 8601 timestamp at scan capture. Server-stamped, not client-supplied. | datetime | — | Server-side, never trust client clock | — | — | — | events.timestamp | — |
Workflow state machines
Scan-to-event lifecycle
From physical trigger pull to a posted FIN event. PP captures the raw scan, validates it against the active workflow context, and posts it as a workflow line; FIN’s consumers turn that into events.
- Initial state:
TriggerPulled - Terminal states:
FinProjectionUpdated
stateDiagram-v2 [*] --> TriggerPulled TriggerPulled --> PpDecoded: PP scanner stack decodes the symbology PpDecoded --> PpValidated: PP cross-checks code against active workflow (e.g. lot belongs to expected PO) PpValidated --> PpPosted: Scan line written to PP workflow transaction PpPosted --> FinEventConsumed: FIN ingest picks up the PP transaction via scheduled export or webhook FinEventConsumed --> FinProjectionUpdated: FIN event handler updates the corresponding projection (location, lot, etc.) FinProjectionUpdated --> [*]
Transitions:
| From | To | Trigger | Actor role | Notes |
|---|---|---|---|---|
TriggerPulled | PpDecoded | PP scanner stack decodes the symbology | — | Failures here surface as signal.scan_failed |
PpDecoded | PpValidated | PP cross-checks code against active workflow (e.g. lot belongs to expected PO) | — | Mismatch raises in-PP audible/visual alarm to operator |
PpValidated | PpPosted | Scan line written to PP workflow transaction | Receiver | Box Man |
PpPosted | FinEventConsumed | FIN ingest picks up the PP transaction via scheduled export or webhook | — | — |
FinEventConsumed | FinProjectionUpdated | FIN event handler updates the corresponding projection (location, lot, etc.) | — | — |
Cross-references to other PP modules
| Module | Title | Handoff point | Notes |
|---|---|---|---|
| 09 | Purchasing | Receiving scans validate against expected POLines + Lots | — |
| 13 | Shipping | Outbound load-out scans confirm pick + load assignment | — |
| 14 | Transportation & Delivery | Driver-side delivery confirmation scans (proof of delivery) | — |
Sample artifacts
| Kind | Filename | Manifest anchor | Notes |
|---|---|---|---|
| pdf_report | 06 - Scanning.PDF | Bucket 1 (Vendor manual) — Module 06 subset | Module 06 user guide (PP 2401.0) |
Open questions / drift watch
- Does PP support GS1-Application-Identifier 10 (lot/batch) parsing inline, or does the consumer need to decode `(10)
` post-hoc? Affects FIN’s per-line PARALLEL_LOT capture. - Raised in: Module 06 scan-to-event design
- Watch artifact:
Future PP GS1-formatted scan capture sample