Skip to content

K-10

Excess & Obsolete (E&O)

How much inventory has no forward demand to justify it — and is excess defined by coverage horizon, by age, or by the accounting reserve policy?

There is a reference build of this metric: the Inventory Health & Working Capital dashboard in the showcase runs this definition over frozen, simulated data — not a live client system.

Verified October 2026

Definitions below are current to the date above — verify against current SAP, Oracle, Microsoft, Infor, and Databricks documentation before you build.

Formula

Formula

Excess=∑imax⁡ ⁣(Qioh−Qitarget, 0)ciObsolete=∑i∈ObsQioh ciE&O value=Excess+Obsolete\begin{aligned} \text{Excess} &= \sum_{i} \max\!\left(Q^{\mathrm{oh}}_{i} - Q^{\mathrm{target}}_{i},\, 0\right) c_i \\ \text{Obsolete} &= \sum_{i \in \mathrm{Obs}} Q^{\mathrm{oh}}_{i}\, c_i \\ \text{E\&O value} &= \text{Excess} + \text{Obsolete} \end{aligned}

In words

Excess = Σ [max(on-hand − target, 0) × unit cost]; Obsolete = Σ over items flagged obsolete [on-hand × unit cost]; E&O value = Excess + Obsolete

Where

ii
item × location
QiohQ^{\mathrm{oh}}_{i}
on-hand quantity
QitargetQ^{\mathrm{target}}_{i}
quantity the declared coverage horizon justifies
cic_i
unit cost at the declared valuation
Obs\mathrm{Obs}
items flagged obsolete (lifecycle status corroborated by zero demand)
Numerator
Value beyond the horizon, and the full value of items flagged obsolete — kept as two figures
Denominator
Total inventory value at the same valuation, when reporting E&O as a percentage
Grain
Item × location, valued at the declared cost basis
Note
Age of stock is derived from movement history through a FIFO replay, not read from a column.

What E&O measures

Excess and obsolete value is two figures reported together: for each item, the on-hand quantity beyond the target the declared coverage horizon justifies, valued at unit cost (excess), plus the full on-hand value of items flagged obsolete with no path to demand (obsolete), at the declared cost basis. As a percentage it is divided by total inventory value at the same valuation.

Excess and obsolete is two populations wearing one acronym. Excess is inventory you own more of than the horizon needs — still good, still sellable, just early or overbought. Obsolete is inventory with no path to demand at all: superseded, expired, discontinued, or built for a customer who left.

Blending them into a single number hides the split that decides the action. Excess is a planning problem with an operational answer — rebalance it, sell it through, slow the replenishment. Obsolete is a write-off with an accounting answer. A dashboard that reports one combined figure gives its audience no way to tell whether the exposure is recoverable, and the two components can move in opposite directions inside a flat total.

The other thing to settle early is what defines excess in the first place. A coverage horizon is the planning definition — value beyond N months of forward demand — and it is honest as long as the horizon is printed next to the number, because extending the horizon reduces reported excess without a single unit moving. Age-based definitions are how finance reserves; recency of last movement is the cheap approximation. They disagree, and reconciling them is the work.

Also answers to E&O · SLOB · Excess Stock · Obsolescence · Slow-Moving Inventory

The decision switches

Three switches. The first one is also the one most often adjusted quietly, which is why the horizon belongs on the chart.

Excess definition

  • dependsCoverage beyond a declared horizon — the planning default — value beyond N months of forward demand
  • dependsAge-based — how finance usually reserves, and structurally blind to future demand
  • dependsLast-movement recency — cheap to compute, crude, and it misses seasonal items entirely

Practice default Coverage-based for operations, reconciled to the age-based reserve — and print the horizon, because moving it moves the number with no physical change.

Obsolete trigger

  • dependsZero forward demand — catches dead stock, and also catches items between planning cycles
  • dependsLifecycle status — end-of-life flags on the item master, which are only as current as the maintenance behind them
  • dependsReserve policy — the accounting definition, which follows rather than leads the operational one

Practice default Lifecycle status corroborated by zero demand — either signal alone misfires.

Gross vs net of reserve

  • dependsGross value — the operational exposure — what is actually sitting there
  • dependsNet of reserve — the P&L view, already reduced by what has been written down

Practice default Report both, labeled — they answer different questions for different audiences.

Common pitfalls

  • One blended number — Excess is a planning problem and obsolete is a write-off, and a single combined figure hides both. Report them as two numbers with two owners.
  • Age from the receipt date of the oldest record — Age is a derivation over the movement ledger — a FIFO replay that consumes the oldest layers first — not a column anyone maintains. Stock that predates the movement history is right-censored, not exactly as old as your history is long.
  • Horizon games — Extending the coverage horizon from six months to twelve fixes excess on paper and changes nothing in the warehouse. Print the horizon wherever the number appears, and treat a change to it as a restatement.
  • Demand basis drift — Coverage measured against a forecast inherits the forecast's bias: an over-forecast portfolio shows artificially clean excess, right up until the forecast is corrected and the excess appears all at once.

Store the components, not the ratio

Every switch above is a different way of reading the same underlying facts, so the components — quantities, dates, values, flags — are what belongs in the gold layer, never the finished percentage. Bronze keeps the source tables as extracted, silver resolves the encodings once, and gold carries a component-level fact that each variant of Excess & Obsolete (E&O) reads as a SELECT — the pattern worked through in full in the OTIF entry’s landing pattern.

Related

Maintained by Summit Analytics, a supply chain analytics practice. The tools and references are free — the consulting is selective.

Part of the Summit Analytics reference library.

Work with the practice

Not affiliated with or endorsed by SAP, Oracle, Microsoft, or Infor. Product names are trademarks of their respective owners.