完整流程 —— 详细文档 +
Nordwerk — Order Flow & States (with Stack Coverage)
Purpose: The complete operation of the demo company Nordwerk Manufacturing (fictional B2B CNC/metal parts manufacturer, make-to-order) as a continuous flow — from the initial inquiry through order receipt to completed delivery, and further to service and complaints. For each phase, it outlines: which states an order passes through (business language + actual system status) and what our stack does — including equipment, production optimization, and Digital Twin.
Sister document:
PROZESS-ROADMAP.md(steps P0–P12, personas, coverage). This document provides the state/process view with stack mapping.Reading aid: Statuses are shown as business language
technical Odoo status. ✅ = clickable read-only demo available. All figures/statuses are verified from the live demo database (met18/nordwerk), not invented.
1 · Overview
flowchart TD
subgraph A["ACT I · Initiation"]
P0["Web / Marketing\n(Inquiry)"] --> P1["Lead / CRM\nqualify"]
P1 --> P2["Quotation + Calculation\n(Digital-Twin What-if)"]
P2 --> P3["Order / PO\n★ ORDER RECEIPT"]
end
subgraph B["ACT II · Order → Delivery (Core)"]
P3 --> P4["Production Planning\nMRP / Routing"]
P4 --> P5["Procurement\nPurchasing + Goods Receipt"]
P4 --> P6["Production\nControl Center · Equipment · Twin"]
P5 --> P6
P6 --> P7["Quality Assurance\nOK / NOK"]
P7 --> P8["Warehouse / Picking\n+ Shipping"]
P8 --> P9["★ DELIVERY\n+ Invoice"]
end
subgraph C["ACT III · Post-Delivery"]
P9 --> P10["Service / Maintenance\n(Service Contract)"]
P9 --> P11["Complaint /\nDamage Case"]
P10 --> P12["Evaluation\nKPIs · CIP"]
P11 --> P12
P9 --> P12
end
P6 -. "Telemetry" .-> HIST[("Historian")]
HIST -. "Optimization / predictive maintenance" .-> P6
HIST -. "Process drift / OEE" .-> P12
Stack at a Glance
| Component | Role in the Flow | Demo |
|---|---|---|
| ERP (Odoo) | Home of all order states: Lead, Quotation, Order, Purchasing, Production, Warehouse, Invoice, Maintenance, Complaint | erp-demo.indystry.works ↗ (demo/demo) ✅ |
| BI (Metabase + Grafana) | Utilization, OEE, Scrap, Process Drift, Mass Balance, Delivery Reliability, Management Dashboard | bi-demo ↗ · grafana-demo ↗ ✅ |
| Historian | Time series (temperature/vibration) per machine → Optimization + predictive maintenance | /historian/ → ✅ |
| Control Center / SCADA | Live status of each machine (running / maintenance due / idle / fault) | /leitstand/ → ✅ |
| Equipment Twin / 3D | Plant → Line → Machine → Control Cabinet → Wiring Diagram (master, troubleshoot) | /anlage/ → ✅ |
| Digital Twin | What-if simulation Throughput/Scrap/Costs — Quotation + Production Optimization | twin-demo.indystry.works ↗ ✅ |
| AI Search | "Ask the Company" about products/machines/orders/manuals | /suche/ → ✅ |
| Collaboration | File space (quotations/drawings/inspection reports), versioned, commentable | /zusammenarbeit/ → ✅ |
| Knowledge / Kiosk | Manual, Compliance Register, App Launcher | /wissen/ → ✅ |
| Operations / Status | Services, Backups, Uptime — all self-hosted | /status/ → ✅ |
ACT I · Initiation
P0–P1 · Initial Contact & Lead Qualification
Goal: Capture inquiry, qualify, turn into opportunity. Steps: Website/inquiry → Create lead → Capture requirements → Qualification → Opportunity.
| Business Language | System Status crm.lead |
Trigger | Who | Next Step |
|---|---|---|---|---|
| New Lead | New (New) |
Inquiry / Form | Sandra, Marco | qualify |
| Qualified | Qualified (Qualified) |
Requirements/Budget clarified | Marco, Lena | create quotation |
| In Quotation | Quotation (Proposition) |
Quotation sent | Lena | follow up |
| Won / Lost | Won (Won) / lost |
Acceptance/Rejection | Marco | → Order (P3) |
stateDiagram-v2
[*] --> New
New --> Qualified
Qualified --> Quotation
Quotation --> Won
Quotation --> Lost
Won --> [*]
Lost --> [*]
What our stack does here: ERP/CRM manages the pipeline (Demo status: 2 new · 1 qualified · 1 in quotation · 2 won). AI Search finds customer history/similar inquiries. Web delivers the lead. Personas: Sandra (Marketing), Marco (Sales), Lena (Inside Sales), Customer.
P2 · Quotation, Calculation & Digital-Twin What-if
Goal: Technical clarification + reliable quotation with delivery date. Steps: Review drawing/specs → Feasibility → Calculation (material + time + machine) → Twin Simulation → Quotation.
| Business Language | System Status sale.order |
Trigger | Who | Next Step |
|---|---|---|---|---|
| Quotation (Draft) | draft |
created from opportunity | Lena | send |
| Quotation Sent | sent |
to customer | Lena | follow up / confirm |
What our stack does here: ERP calculates automatically from Bill of Materials (BOM) + work plan. Digital Twin (twin-demo ↗) simulates throughput / scrap / costs as what-if before commitment → realistic price + delivery date. Collaboration keeps drawings/quotations versioned. Personas: Lena, Thomas (Production Planning), Petra (Feasibility), Customer.
P3 · Order & Order Confirmation — ★ Order Receipt
Goal: Make order binding — this is where order processing begins. Steps: Customer order → Review → Confirm → Order in ERP, confirmation to customer.
| Business Language | System Status sale.order |
Trigger | Who | Next Step |
|---|---|---|---|---|
| Order (Order Receipt) | sale |
"Confirm" | Lena | triggers MRP + delivery |
| Completed / Locked | done (locked) |
after processing | System | Archive |
stateDiagram-v2
[*] --> Quotation_draft
Quotation_draft --> Quotation_sent: send
Quotation_sent --> Order_sale: confirm ★
Quotation_draft --> Order_sale: confirm ★
Order_sale --> Completed_done
Completed_done --> [*]
What our stack does here: Upon confirmation,
ERP automatically generates manufacturing
orders (MRP) and delivery (picking) — no
duplicate entry. Demo status: 22 confirmed orders
(sale) + 6 open quotations (draft).
Personas: Lena, Birgit (Terms), Customer.
ACT II · Order → Delivery (Core)
P4 · Production Planning & Scheduling
Goal: Make order production-ready + schedule. Steps: Bill of Materials → Work plan/routing → Material requirements (MRP) → Scheduling → Machine/shift allocation.
What our stack does here: ERP/MRP generates requirements + manufacturing orders from the order. BI shows machine utilization per line (early bottlenecks). Control Center shows which machine is free/occupied. Equipment Twin provides the machine/line structure (3 lines, 8 machines). Personas: Thomas (Production Planning/PPC), Frank (Production Manager), Bernd (Purchasing Trigger).
P5 · Procurement & Goods Receipt
Goal: Provide materials on time and in the correct quantity.
| Business Language | System Status purchase.order |
Trigger | Who |
|---|---|---|---|
| Inquiry / RFQ | draft |
Requirement from MRP | Bernd |
| Order Confirmed | purchase |
Supplier selected | Bernd |
| Completed | done |
finalized | System |
stateDiagram-v2
[*] --> RFQ_draft
RFQ_draft --> Order_purchase: confirm
Order_purchase --> Completed_done
Completed_done --> [*]
Goods receipt runs as stock.picking (see P8 diagram,
direction incoming). What our stack does here:
ERP suggests orders based on requirements (Demo: 4 RFQ
· 4 confirmed), books goods receipt + incoming
inspection into inventory. Knowledge holds supplier
certificates. Personas: Bernd (Purchasing), Klaus
(Warehouse), Petra (Incoming QA), Supplier.
P6 · Production & Control Technology — Down to the Control Cabinet
Goal: Produce parts on time and to quality; master the equipment. Steps: Release manufacturing order → Set up → Production → Live Control Center → Operator feedback → Fault handling.
| Business Language | System Status mrp.production |
Trigger | Who |
|---|---|---|---|
| Draft | draft |
generated from order | System |
| Confirmed / Scheduled | confirmed |
released | Thomas/Frank |
| In Progress | progress |
Setup/Start | Ali (Operator) |
| To Close | to_close |
Quantity reported | Ali |
| Completed | done |
booked | Frank |
stateDiagram-v2
[*] --> Draft_draft
Draft_draft --> Confirmed_confirmed: release
Confirmed_confirmed --> InProgress_progress: setup/start
InProgress_progress --> ToClose_to_close: report quantity
ToClose_to_close --> Completed_done: book
Completed_done --> [*]
Demo status: 18 confirmed + 22 to_close
(ongoing operation).
What our stack does here (core component):
- Control Center / SCADA (/leitstand/ →) — Real-time tiles for all 8 machines with running / maintenance due / idle / fault + live temperature/vibration.
- Equipment Twin / 3D (/anlage/ →) — Drilldown Plant → Line → Machine → Control Cabinet → Wiring Diagram (PLC, drives/VSD, terminals, fuses). For setup, understanding, troubleshooting.
- Digital Twin (twin-demo ↗) — Simulation of the line (parameters, bottleneck).
- Historian (/historian/ →) — Every time series per machine.
- BI — Live dashboard (quantities, scrap, OEE).
- ERP/BDE — Operator feedback Good/Scrap/Time (drives
the
mrp.productionstates above). Personas: Frank (Shift Supervisor), Ali (Operator), Jens (Maintenance/Automation).
P7 · Quality Assurance
Goal: Ensure and document conformity.
| Business Language | Status | Trigger | Who |
|---|---|---|---|
| Inspection Open | — (Inspection Order) | after production | Petra/Ali |
| OK | passed = true |
within limits | Petra |
| NOK | passed = false |
outside limits | Petra → Block |
What our stack does here: Measurement values per
order (dimensional accuracy, surface roughness, weight) are stored in
Warehouse (factory.quality_check) with
limits; automatic OK/NOK evaluation.
BI analyzes scrap rate / Cpk.
Knowledge provides inspection report/certificate.
(No separate Odoo Quality module — QA runs via Warehouse + BI.)
Personas: Petra (QA), Ali (Self-Inspection), Frank.
P8 · Warehouse, Picking & Shipping
Goal: Prepare finished goods + pack.
| Business Language | System Status stock.picking |
Trigger | Who |
|---|---|---|---|
| Draft | draft |
from order | System |
| Waiting for Material | waiting / confirmed |
stock missing | System |
| Ready | assigned |
stock reserved | Klaus |
| Completed | done |
validated/booked | Klaus |
stateDiagram-v2
[*] --> Draft_draft
Draft_draft --> Waiting_confirmed: reserve
Waiting_confirmed --> Ready_assigned: stock available
Ready_assigned --> Completed_done: validate ★ Delivery
Completed_done --> [*]
Demo status: 6 assigned (ready) · 8
confirmed (waiting) · 12 done
(delivered). What our stack does here:
ERP/Stock manages inventory in real time,
picking + delivery note; operator app
for mobile picking. Personas: Klaus
(Warehouse/Shipping), Lena.
P9 · ★ Delivery & Invoicing
Goal: Deliver + invoice + payment.
| Business Language | System Status account.move |
Trigger | Who |
|---|---|---|---|
| Delivery Booked | stock.picking = done |
Shipping | Klaus |
| Invoice (Draft) | draft |
from delivery | Birgit |
| Invoice Booked | posted |
confirmed | Birgit |
| Open / Paid | payment_state not_paid → paid |
Payment | Birgit |
stateDiagram-v2
[*] --> Delivery_done
Delivery_done --> Invoice_draft: invoice
Invoice_draft --> Invoice_posted: book
Invoice_posted --> Open_not_paid
Open_not_paid --> Paid_paid: payment received
Paid_paid --> [*]
Demo status: 12 booked invoices (posted, open).
Order invoicing: 12 invoiced · 10 to invoice · 6 open. What
our stack does here: ERP/Accounting generates
the invoice from the delivery (target: E-invoice/PEPPOL), payment
matching + dunning. Status Board shows that everything
is self-hosted + secured. Personas: Birgit
(Accounting), Lena, Customer.
ACT III · Post-Delivery
P10 · Service & Maintenance (Service Contract)
Goal: Keep equipment/products operational; recurring revenues.
| Business Language | System Status maintenance.request |
Type | Trigger |
|---|---|---|---|
| New Request | New Request |
preventive/corrective | Plan or fault |
| In Progress | In Progress |
— | Scheduling |
| Repaired | Repaired |
— | Job completed |
| Scrap | Scrap |
— | not repairable |
stateDiagram-v2
[*] --> NewRequest
NewRequest --> InProgress
InProgress --> Repaired
InProgress --> Scrap
Repaired --> [*]
Scrap --> [*]
Demo status: 6 requests across the 8 machines (preventive + corrective); e.g., "Turning Center B1: Maintenance due" — matches the Control Center status. What our stack does here: ERP/Maintenance manages equipment (= the 8 machines) + maintenance requests. Historian provides condition data (vibration/temperature) for predictive maintenance. Equipment Twin shows the same object's control cabinet + last maintenance. Personas: Sven (Service Technician), Jens (Maintenance), Birgit, Customer.
P11 · Damage & Complaint Management
Goal: Resolve faults/damages in a structured way + prevent recurrence.
| Business Language | System Status repair.order |
Trigger | Who |
|---|---|---|---|
| Complaint Recorded | draft |
Customer report | Petra/Lena |
| Confirmed | confirmed |
accepted | Petra |
| In Repair | under_repair |
Processing | Sven |
| Completed | done |
Closure | Petra |
stateDiagram-v2
[*] --> Recorded_draft
Recorded_draft --> Confirmed_confirmed
Confirmed_confirmed --> InRepair_under_repair
InRepair_under_repair --> Completed_done
Completed_done --> [*]
Demo status: 4 complaints (draft) on NW products
(dimensional deviation, scratch, crack, tolerance). What
our stack does here: ERP/Repair manages the
case; Knowledge documents root cause analysis
(8D/CAPA); AI Search finds similar cases;
Collaboration for case-specific coordination.
Personas: Petra (QM), Sven (Service), Lena, Management,
Customer.
P12 · Evaluation, KPIs & CIP
Goal: Control + improve. What our stack does here: BI (Metabase + Grafana) provides OEE, delivery reliability, scrap, contribution margin, process drift, mass balance, management dashboard. Historian is the data foundation. AI Search answers "Ask the numbers." Personas: Dr. Weber (CEO), Frank, Petra.
2 · Equipment, Control Technology & Digital Twin (In-Depth)
The part that distinguishes Nordwerk from pure ERP — the bridge from order to real machine.
Equipment Twin / 3D — Master & Troubleshoot (/anlage/ →)
Clickable drilldown, read-only, generic (no machine builder secrets):
Plant → Line (North/South/West) → Machine (8) → Control Cabinet → Component → Wiring Diagram
Per machine, a 3D model with hotspots (control/HMI, spindle, control cabinet); in the control cabinet PLC, drives/VSD, terminals, fuses → per component a Mermaid wiring diagram. Benefit: Understand setup, quickly navigate from machine to diagram in case of faults (persona Jens).
Control Center / SCADA — Real-Time Status (/leitstand/ →)
HMI tiles for all machines with running / maintenance due / idle / fault + current temperature/vibration. The same machines as in the ERP work center and Historian — one truth.
Digital Twin — What-if & Optimization (twin-demo.indystry.works ↗)
- before the order (P2): Simulate throughput/scrap/costs → realistic quotation.
- in operation (P6/P12): Test parameters and bottlenecks without stopping the real line.
Production Optimization — The Closed Control Loop
flowchart LR
M["Machines\n(Production P6)"] -->|Telemetry| H[("Historian\nTemp/Vibration")]
H --> BI["BI: Process Drift,\nMass Balance, OEE"]
H --> PW["Predictive\nMaintenance → maintenance.request"]
BI --> TW["Digital Twin:\nOptimize Parameters"]
TW --> M
PW --> M
- Drift Detection: BI detects creeping deviation (process drift) earlier than final inspection.
- Mass Balance: Mass balance dashboard reveals material/yield losses.
- Predictive Maintenance: Rising vibration/temperature in Historian → maintenance request (P10) before machine failure (visible as "maintenance due" in Control Center).
- Twin Feedback: Optimized parameters from simulation back into production.
3 · Cross-Cutting Processes (Across the Entire Flow)
| Process | What It Provides | Demo |
|---|---|---|
| Collaboration | File space (quotations, drawings, inspection reports, maintenance), versioned, commentable — case- and order-specific | /zusammenarbeit/ → |
| Knowledge / Compliance / Kiosk | Manual, Risk Register (ISO 9001 / IEC 62443), App Launcher | /wissen/ → |
| AI Search | "Ask the Company" about products/machines/orders/manuals/KPIs | /suche/ → |
| Operations / Status | Services, backups, uptime — self-hosted, no cloud lock-in | /status/ → |
| Historian / Data Lake | Every measurement/operational value securely stored + retrievable; basis for BI, Twin, Maintenance | /historian/ → |
4 · Master State Table (Reference)
Entity (Odoo Model) |
State Chain (Business Language → technical) |
Demo Status |
|---|---|---|
Lead/Opportunity crm.lead |
New→Qualified→Quotation→Won/Lost
(New/Qualified/Proposition/Won) |
2/1/1/2 |
Quotation/Order sale.order |
Quotation draft→sent sent→Order
sale→locked done |
6 draft · 22 sale |
Invoicing Status sale.order |
none no→to invoice to invoice→invoiced
invoiced |
6 · 10 · 12 |
Purchasing purchase.order |
RFQ draft→ordered purchase→completed
done |
4 · 4 |
Delivery/GR stock.picking |
draft→waiting confirmed/waiting→ready
assigned→completed done |
8 · 6 · 12 |
Production mrp.production |
draft→confirmed→progress→to_close→done |
18 confirmed · 22 to_close |
Quality factory.quality_check |
OK passed=true / NOK passed=false |
per order, 3 characteristics |
Invoice account.move |
Draft draft→booked posted; open→paid
(payment_state) |
12 posted/open |
Maintenance maintenance.request |
New Request→In Progress→Repaired→Scrap | 6 requests |
Complaint repair.order |
draft→confirmed→under_repair→done |
4 draft |
Entry point for visitors: The demo company hub /demos/ → bundles everything as "one company to click through."