MRP and Planning

MRP is the algorithm at the historical heart of ERP. It answers: what do I need to buy or make, how much, and by when?

The planning hierarchy

Strategic (years)     ──▶  Business plan
                             │
Tactical (12-18 mo)   ──▶  S&OP — Sales & Operations Planning
                             │
                           Demand plan / forecast
                             │
Master (weeks-months) ──▶  MPS — Master Production Schedule
                             │
                           RCCP — Rough Cut Capacity Planning
                             │
Operational (days)    ──▶  MRP — Material Requirements Planning
                             │
                           CRP — Capacity Requirements Planning
                             │
Execution (hours)     ──▶  Scheduling, dispatching, shop floor control

Each level constrains the one below. S&OP decides the volume envelope; MPS decides which finished goods; MRP explodes that into components.

The MRP inputs

  1. Independent demand — sales orders, forecasts, safety stock requirements
  2. BOM — what goes into what, at what quantity
  3. Inventory — on hand, on order, allocated
  4. Lead times — how long to buy or make each item
  5. Lot sizing rules — how much to order at a time
  6. Planning calendar — working days

The algorithm

1. LOW-LEVEL CODING
     Assign each material a level: finished goods = 0, their components = 1, etc.
     A material used at several levels takes its LOWEST (deepest) level.
     Process level 0 first, then 1, then 2 — so all demand for an item is
     known before you plan it.

2. For each material, in low-level code order:

   a. NET REQUIREMENTS
        gross requirement (demand in period)
      − on hand
      − scheduled receipts (open POs, production orders)
      + safety stock
      = net requirement

   b. LOT SIZING
        Apply the rule to convert net requirement into an order quantity

   c. LEAD TIME OFFSET (backward scheduling)
        order release date = required date − lead time

   d. BOM EXPLOSION
        If it's manufactured, create dependent demand for each component
        at the order release date, quantity = order qty × component qty
        (adjusted for scrap/yield)

3. Output: planned orders (make) and purchase requisitions (buy)

Worked example

Product: Chair (lead time 5 days, lot size = exact)
BOM: 4 × Leg, 1 × Seat, 1 × Back

Demand: 100 chairs on day 20
On hand: 20 chairs
Safety stock: 10

Chair:
  Gross      100
  − On hand   20
  + Safety    10
  = Net       90  → planned order 90, due day 20, release day 15

Leg (lead time 8 days, lot size = multiples of 500):
  Dependent demand: 90 × 4 = 360 on day 15
  On hand: 100, on order: 0
  Net: 260 → lot sized to 500 → purchase req 500, due day 15, release day 7

Notice: the leg requirement date (day 15) is the chair’s release date, not the chair’s due date. That’s lead-time offsetting, and it’s the core of time-phasing.

MRP types

Type Trigger
MRP (deterministic) Plan from actual demand — sales orders, dependent demand
Reorder point (consumption-based) Order when stock drops below a level. No forecast needed
Forecast-based Plan from statistical forecast only
Time-phased planning Plan on fixed days (every Tuesday)
MRP Type ND Not planned — manual only

Choose per material: use MRP for A items with dependent demand, reorder point for cheap C items where planning effort exceeds the value.

Reorder point

Reorder point = (average daily demand × lead time) + safety stock

Demand 50/day, lead time 10 days, safety stock 200
ROP = 50 × 10 + 200 = 700

Simple and effective for stable, low-value items.

Lot sizing rules

Rule Behaviour Best for
Lot-for-lot (EX) Order exactly what’s needed Expensive items, JIT
Fixed lot size Always order N Fixed batch/container sizes
Min/max Order up to max when below min Simple replenishment
Rounding value Round up to a multiple (pallet, carton) Packaging constraints
Period lot size Combine all requirements in a week/month Reduce order count
EOQ Balance ordering cost vs carrying cost Stable demand
Least unit cost / Wagner-Whitin Dynamic optimisation Rarely used in practice
EOQ = √(2 × annual demand × order cost / (unit cost × carrying rate))

Demand 12,000/yr, order cost 400, unit cost 25, carrying 20%
EOQ = √(2 × 12000 × 400 / 5) = √1,920,000 ≈ 1,386 units

Also configure: minimum order quantity, maximum lot size, and assembly scrap % / component scrap % which inflate the quantity to allow for losses.

Safety stock

Statistical safety stock = Z × σ_demand_during_lead_time

Z = service level factor:  90% → 1.28,  95% → 1.65,  98% → 2.05,  99% → 2.33

With lead time variability:
  σ_LTD = √(LT × σ_d² + d² × σ_LT²)

Higher service level → disproportionately more stock. Going from 95% to 99% typically costs 40%+ more safety stock. That’s a business decision, not a technical one, but the model is how you show them the trade-off.

Dynamic safety stock recalculates from rolling demand statistics rather than sitting as a static number typed in three years ago. It’s usually a worthwhile enhancement request.

Pegging and exception messages

Pegging traces a requirement back to its source: “this 500-unit purchase requisition for bearings exists because of sales order 12345 for customer ACME.” Essential for prioritising when supply is short.

Exception messages are MRP’s output for planners. The planner works the exception list, not the whole plan:

Message Meaning
Reschedule in An existing order should come earlier
Reschedule out An order is too early; delay it
Cancel Order no longer needed
Expedite Demand before the earliest possible supply
Order proposal New order needed
Excess stock More than required
Past due Order date is in the past
Below safety stock Buffer breached

A planner with 40,000 materials cannot review the plan. They review 200 exceptions. Exception quality is what makes MRP usable.

MRP run modes

Mode Behaviour
Regenerative (full) Replan everything from scratch. Slow, consistent. Weekend job
Net change Replan only materials with changes since the last run. Fast, nightly
Net change in planning horizon Net change, limited to the near horizon
Single item, multi-level Replan one product and everything under it. Interactive
Single item, single level One material only

Typical setup: net change nightly, full regenerative weekly.

Planning strategies (make-to-stock vs make-to-order)

Strategy Trigger Stock held Lead time to customer
Make to stock (MTS) Forecast Finished goods Immediate
Assemble to order (ATO) Order Components Short
Make to order (MTO) Order Raw materials Medium
Engineer to order (ETO) Order Nothing Long

The decoupling point (where forecast-driven meets order-driven) determines your whole supply chain design.

Forecast consumption

In MTS, forecast and sales orders must not double-count:

Forecast for March: 1,000 units
Sales orders received: 400
Remaining forecast: 600
Total planned demand: 1,000  ← not 1,400

Configuration controls the consumption mode (backward, forward, both) and the consumption window in days. Getting this wrong doubles your production plan — an expensive and common bug.

Forecasting methods

Method Use
Moving average Stable demand
Exponential smoothing Stable with noise
Holt’s (double) Trend
Holt-Winters (triple) Trend + seasonality
Croston’s Intermittent/lumpy demand (spare parts)
ARIMA / SARIMA Statistical, complex patterns
ML (gradient boosting, neural) Many drivers, promotions, weather, price

Accuracy measures: MAPE (mean absolute percentage error), MAD, bias (systematic over/under-forecasting), forecast value added (does your forecast beat a naive one?).

Bias is the metric people forget and the one that hurts most — a consistently 15% high forecast quietly builds inventory all year.

Constraint-based planning (APS)

Classic MRP assumes infinite capacity — it will happily plan 500 hours of work into a 40-hour week. Capacity Requirements Planning shows the overload afterwards, and a human resolves it.

APS (Advanced Planning & Scheduling) plans materials and capacity simultaneously with finite capacity, optimising for setup time, due dates, or cost. Tools: Kinaxis, o9, Blue Yonder, SAP IBP/PP-DS, Preactor, Asprova.

Whether you need APS: if your bottleneck is materials, MRP is fine. If your bottleneck is capacity and sequencing (setup-heavy, campaign-based, or highly constrained), MRP alone will produce plans nobody can execute.

Performance

MRP is one of the heaviest jobs in an ERP. A large run processes hundreds of thousands of materials with multi-level explosion.

Techniques:

  • Low-level code ordering makes single-pass processing possible — this is the whole reason it exists
  • Parallel processing by low-level code band — all level-3 materials can run concurrently
  • Net change to avoid replanning what didn’t change
  • Planning file entries flag materials needing replanning
  • In-memory — HANA-era MRP (MRP Live) does the explosion in the database rather than pulling data to the app server, cutting run times by an order of magnitude
  • Horizon limits — don’t plan 5 years out at daily granularity

Rules

  1. Garbage in, garbage out. MRP output quality is entirely determined by BOM accuracy, lead time accuracy, and inventory accuracy. Fix data before tuning the algorithm.
  2. Lead times must be real, not aspirational. Measure actual receipt-to-order intervals and update.
  3. Planners work exceptions, not plans. Optimise the exception list.
  4. Nervousness is real — small demand changes causing large plan changes. Damp it with firm zones, planning time fences, and firmed planned orders.
  5. Never auto-convert planned orders to POs without review unless the item is genuinely low-risk and the data is genuinely trusted.

Next