Master Data vs Transactional Data vs Configuration
This is the first real ERP concept. Every table in an ERP falls into one of four buckets, and the bucket determines its lifecycle, its ownership, its migration strategy, and how you’re allowed to change it.
The four buckets
| Bucket | Changes | Volume | Example | Who owns |
|---|---|---|---|---|
| Configuration (customising) | Rarely, by a consultant, moved via transport/deployment | Tiny | Document types, posting keys, tax codes, number ranges | Functional consultant |
| Master data | Occasionally, by business users | Thousands–millions | Customer, Vendor, Material, GL Account, Employee, Cost Centre | Data steward / MDM team |
| Transactional data | Constantly, by business events | Millions–billions | Sales order, invoice, journal entry, goods movement | The business, via processes |
| Derived / aggregate | Computed | Varies | Balances, totals, indices, MRP results | The system |
Configuration is data, not code
The defining trick of packaged ERP: behaviour lives in tables.
Instead of if (documentType == "invoice") { ... }, the system reads a config table:
Document Type Number Range Posting Key Reversal Type Field Status Group
RE (Invoice) 51 31 AB G067
KZ (Payment) 15 25 AB G001
Consequences you must internalise:
- Two customers on the identical binary behave completely differently. “The system does X” is meaningless without “in this config”.
- Config moves between environments as a deployable artefact (SAP transports, Dynamics config packages, NetSuite SuiteBundles, Odoo data XML).
- Config is versioned and audited — changing a posting rule in production is a controlled change, not a settings toggle.
- A huge share of “development” requests are actually config requests. Always check config first. See Requirements and Fit-Gap.
Master data: the entities everything points at
The classic master data objects:
| Object | Also called | Key attributes |
|---|---|---|
| Customer | Debtor, Sold-to, Business Partner | Payment terms, credit limit, tax class, price list, ship-to addresses |
| Vendor | Supplier, Creditor | Payment terms, bank details, currency, incoterms |
| Material | Item, Product, SKU, Part | UoM, valuation class, MRP type, lead time, plant/warehouse data |
| GL Account | Ledger account, Natural account | Type (asset/liability/income/expense), reconciliation flag, currency |
| Cost Centre / Profit Centre | Department, Business unit | Hierarchy, responsible person, validity dates |
| Employee | Personnel number, Worker | Org assignment, pay grade, cost centre |
| Asset | Fixed asset | Class, depreciation method, useful life, cost centre |
| BOM | Bill of Materials, Parts list | Components, quantities, validity |
| Routing | Operations, Work plan | Work centres, times, sequence |
| Price / Condition record | Price list entry | Validity, scale, customer/material key |
Properties of master data
- Long-lived — a customer created in 1998 is still referenced by 2026 invoices.
- Referenced, not copied — except when it is. Master data is referenced by transactions, but critical attributes are usually snapshotted onto the document at creation time (the price, the address, the tax code). Otherwise reprinting a 2019 invoice would show today’s address. This is one of the most important design patterns in ERP.
- Cannot usually be deleted — you mark for deletion or block. Referential integrity plus audit forbids hard delete.
- Effective-dated — many attributes are valid-from/valid-to, not simple columns.
- Multi-level — master data often has a global level plus org-level extensions:
Material 10023
├── General data (description, base UoM, weight) ← global
├── Plant DHK1 (MRP type, lead time, reorder point) ← per plant
├── Plant CTG2 (different lead time)
├── Sales org 1000 (sales UoM, tax class, price group) ← per sales org
└── Valuation area DHK1 (price control, standard cost) ← per valuation area
This “one object, many org-level views” shape is universal across ERPs and surprises developers coming from flat CRUD apps.
Master data governance (MDM)
Bad master data is the #1 cause of “the ERP is wrong”. Typical controls:
- Approval workflow on creation/change of critical fields
- Duplicate detection (fuzzy matching on name/tax ID/address)
- Mandatory field rules by material type / account group
- Data stewards — named humans accountable per object
- Golden record / single source of truth — one system creates it, others subscribe
- Change audit on every field
Transactional data: the events
A transaction is a business event, recorded, usually as a document.
Characteristics:
- Has a document number from a controlled number range
- Has a posting date (accounting period) and a document date (real-world date) — these differ, and it matters
- Is immutable once posted; you correct it with a reversal or credit note
- Carries a snapshot of relevant master data
- Links to other documents (document flow) — order → delivery → invoice
- Has header + line items, almost always
See Documents and Document Flow.
Derived data
Balances, aggregates, indexes, MRP results, ATP snapshots.
- Rule: derived data must be reproducible from transactions. If you can’t rebuild it, you have a second source of truth and eventually a discrepancy nobody can explain.
- Classic ERP design carried totals tables (materialised balances) for performance, updated in the same transaction as the line item. In-memory systems (HANA) removed many of them and aggregate on the fly.
- If you build your own: keep a
journal_lineas truth and treataccount_balanceas a rebuildable projection with a reconciliation job.
Why the distinction drives everything
| Question | Answer depends on bucket |
|---|---|
| How does it get to production? | Config → transport. Master → load/interface. Transaction → created by users |
| Who can change it? | Config → consultants. Master → stewards. Transaction → process |
| Can I delete it? | Config → sometimes. Master → block, not delete. Transaction → never |
| Migration approach? | Config → rebuilt by consultants. Master → cleansed and loaded. Transaction → open items + balances only |
| Testing? | Config → regression suite. Master → data quality rules. Transaction → process tests |
Migration rule of thumb
You do not migrate history. You migrate:
- All active master data (cleansed, deduplicated)
- Open items only — open POs, open sales orders, open AR/AP items, current stock
- Balances — GL opening balances as of cutover date
- History stays in the legacy system (kept read-only) or lands in a data warehouse.
Anyone who asks you to migrate ten years of posted invoices into the new ERP needs to hear this. See Data Migration.