Engineering notes

Enterprise

ERP System Design: Lessons from the Trenches

Inventory state, reversals, reconciliation, and why an apparently successful screen update may still represent incomplete business work.

01

Separate availability from reservation

Inventory on hand, available inventory, and reserved inventory represent different facts. Model receiving, reservation, release, and dispatch explicitly. Reject a reservation when available quantity is insufficient.

02

Preserve corrections

Represent reversals and adjustments as traceable transactions. Do not silently replace historical financial or stock records. Use stable references to connect orders, goods movements, and invoices.

03

Reconcile the full workflow

A successful screen update is not proof of a completed operation. Reconcile commands, recorded events, and read models. Surface incomplete deliveries and failures so staff can resolve them without creating duplicate transactions.

These notes describe engineering patterns, not guarantees that a particular architecture or control is sufficient for every deployment.

Discuss your architecture