1Introduction
Most enterprise resource planning systems answer one inventory question well: how much is on hand. Buyers, planners and operations leads need five more answers every day — which parts are overstocked weighted by value contribution, which slow movers are tying up capital, what is drifting in demand pattern, which lots are ageing out, and which suppliers are silently inflating safety stock.
None of those five is a level. Each is a rate, a ratio or an age, and each therefore needs a denominator that the transaction record does not supply on its own. That is the gap this class of system fills, and it is why an inventory analytics layer sits above an ERP rather than replacing it.
The product's own material puts the cost of not filling it plainly: a buyer running classification in a monthly spreadsheet is four weeks behind every demand shift. This paper is about what has to be computed, and computed correctly, to close that gap.
1.1The denominator problem
Inventory value is meaningless without a rate to divide it by, and every dispute about whether a plant holds too much stock is in practice a dispute about which rate. Last month's issues? The rolling twelve-month average? The planning norm the buyer was given?
Each is defensible and they give different answers — sometimes by an order of magnitude. The response taken here, and implemented in the product, is not to pick one but to report several and treat their divergence as information. Section 4.2 states the three and Section 6.1 argues that the gap between them is the most useful number on the screen.
A single days-of-cover figure is a claim with a hidden argument inside it. Three figures side by side put the argument on the screen where a buyer can see it.
1.2Contributions
- Days of cover derived as Little's Law applied to a stockroom, with the comparison condition that follows from it (Section 4.1).
- Three days-of-cover figures — derived, average and instantaneous — and a reading of their divergence as diagnostic (Section 4.2).
- Two ageing clocks, receipt age and consumption age, and the class of dead stock that only the second detects (Section 4.3).
- A non-moving provision rule capped at on-hand quantity, stated as a minimum rather than left to reconciliation (Section 4.4).
- An eight-dimension capability reference framework for inventory analytics (Section 6.3).
2Background and Related Work
Inventory theory is old, well settled and largely ignored in practice — not because practitioners disagree with it, but because its standard results assume conditions that a real part master violates part by part.
2.1What the classical results assume
Harris gave the economic order quantity in 1913: the lot size balancing set-up cost against the interest on capital tied up. It assumes constant demand, instant replenishment and a known ordering cost, and it remains the correct answer whenever those hold.
Dickie's 1951 ABC analysis is the first move away from treating parts alike. Applying Pareto and Lorenz to stock value, it observes that a small share of part numbers carries most of the value and argues that control effort should follow value rather than count. Every classification scheme in this field descends from that paper.
The XYZ axis adds demand variability to Dickie's value axis. The combined matrix is what makes differentiated policy possible: a high-value stable part and a high-value erratic part need the same attention and opposite safety stocks.
2.2Why a moving average is the wrong forecast for most part numbers
In an automotive part master, most part numbers have intermittent demand — long runs of zero broken by occasional orders. A simple or exponentially smoothed average over such a series is biased, because it spreads a lumpy quantity evenly across periods that saw nothing.
Croston addressed this in 1972 by forecasting demand size and inter-arrival interval as separate series and combining them. Syntetos and Boylan showed in 2005 that Croston's estimator is itself biased and gave a correction, evaluating both against three thousand real intermittent series drawn from the automotive industry — which is precisely the population a plant part master is drawn from.
This matters for classification, not only forecasting. Variability computed with an estimator that is wrong for intermittent series will put parts in the wrong XYZ band, and the differentiated policy that follows will be differentiated in the wrong direction.
2.3Where an analytical layer belongs
IEC 62264 separates the enterprise system of record from operations-management activities, of which inventory management is one. The separation is not bureaucratic: it says the transaction history and the analysis over it are different responsibilities with a defined interface between them.
The product follows this. It layers on top of the ERP without replacing or replicating its transaction history, leaving the ERP as the system of record — which also means every figure in this paper is downstream of data the plant already trusts, and inherits its quality.
3System Overview
The architecture is deliberately modest: a background service on a server uploads daily receipts, issues and stock from the host ERP into a centralised database, and authorised users reach the dashboard over the local network. Everything analytical happens on that store.

3.1Daily batch, and saying so
The refresh cadence is a daily background upload, and the dashboard states the date it last ran. This paper reports that plainly because it bounds what the system can be used for.
A daily cadence is right for every question this system answers. Classification, ageing, trend and provisioning are all decisions on a weekly-to-monthly rhythm, and a figure recomputed hourly would not change any of them. It is the wrong cadence for shop-floor stock confirmation, which is a different product's job.
The honest description is near-real-time analytics over a daily extract, not real-time inventory. A buyer choosing between suppliers on the strength of the word real-time should ask what is refreshed, and how often.
3.2The dimensions everything is sliced by
Every report in the system is the same underlying position cut along one of a small set of dimensions, which is what allows a question to be pursued from plant level to a single part in a few steps.
| Dimension | The question it answers |
|---|---|
| Plant | Are we above or below target overall, and in which direction are we moving? |
| Procurement class | Which class of part carries the overhang — domestic, group, consumption-driven, export-peculiar or imported? |
| Buyer and manager | Whose portfolio is drifting, and against what target? |
| Project | What is allocated to a given programme, at what value? |
| Model | How is stock distributed across product models? |
| Part | Consumption pattern, stock level and last transaction for one part number |
The procurement class dimension is the one least often found elsewhere and the most useful. Imported and export-peculiar parts have structurally longer lead times and structurally different day targets, and averaging them into a plant figure conceals both.
3.3The part master as the join
A central part master holds the attributes every analysis joins on — group, procurement type, buyer, manager, project and model — searchable on several parameters. Without it the dimensions above would not exist, because the ERP's transaction record carries the movement but not the classification.
This is the least glamorous component and the one that decides whether a deployment succeeds. An analytical layer over a part master with a third of its buyer assignments blank produces reports that are correct and useless.
4Computational Methods
Four computations carry the system. The first two decide whether a plant is holding too much; the third and fourth decide what to do about the part of it that has stopped moving.
4.1Days of cover is Little's Law
Inventory expressed in days is not a convention. It is the flow time of the stockroom, and it obeys the same relation between quantity, rate and time that governs any queueing system in steady state.
Two consequences follow immediately. Days of cover is comparable between plants only where the consumption rate used as the denominator was measured over a window in which demand did not shift — so a figure computed across a model changeover means nothing. And reducing stock without reducing days of cover is not an improvement: it is a proportional fall in consumption, which is usually worse news than the stock was.
The plant target in the product capture is 13.50 days. What that target asserts is that a rupee of material should spend under a fortnight in the building — a statement about flow, not about a balance sheet.
4.2Three figures, and the diagnostic in their gap
The system reports three days-of-cover figures per procurement class rather than one, because the choice of denominator in Equation (doc) is not settled and pretending otherwise loses information.
Their divergence is the diagnostic. Derived far below average means the planning norm assumed a consumption rate the plant never achieved. Average far above today's means the position has recently improved and the historical figure is stale. Today's far above both means something has just stopped moving, and it is the earliest of the three to say so.
The product capture in Figure (dashboard) shows this in a live position: an imported-parts class reading under eight derived days against an average approaching three thousand. No single figure could carry that, and the gap — not either number — is what identifies where to look.

4.3Two ageing clocks
Ageing is usually reported as one number, and that number is almost always receipt age. It is the wrong one on its own, and the reason is a class of stock it cannot see.
The failure mode is a part still on an automatic replenishment schedule that nothing consumes. Receipts keep arriving, so receipt age stays small and the part never appears on an ageing report. Consumption age grows without bound. The product capture in Figure (ageing) shows a live row of exactly this shape: last receipt seven days ago, last consumption 1,328 days ago.
Three and a half years without an issue, and a receipt-age report would file that part as under thirty days old. The replenishment schedule that keeps it looking fresh is the same schedule that is quietly buying more of it.

Reporting both clocks also fixes the reverse error. A part received in bulk two years ago and consumed steadily since has a large receipt age and a small consumption age; it is working stock with an unlucky purchase history, not dead stock, and a receipt-age report would flag it for disposition wrongly.
4.4The non-moving provision, and the cap that keeps it honest
Once a part is identified as non-moving, an accounting provision follows. The quantity a policy calls for and the quantity the system of record says exists are different numbers, and the difference matters.
The minimum is the whole point. Where the policy calls for a provision against 219 pieces and the ERP holds none, the provision is zero — the stock was already scrapped or consumed, and booking against it would double-count a write-down that has happened. Where the ERP holds more than the policy covers, only the policy quantity is provided for.
Stating this as a computation rather than a spreadsheet convention is a small thing that survives audit. The provision is reproducible from two stored quantities, and the reason any given part contributes nothing is visible in the same row.

5Modelled Scenario
This product appears in no published MileSoft case study. There is therefore no field evidence to report, and this section makes no deployment claim. Everything below is a modelled scenario with its assumptions printed.
5.1What can be stated from the product itself
Three things in this paper are observed properties of the delivered software rather than claims about outcomes, and they are separated here so a reader can tell which is which.
| Property | Value | Where observed |
|---|---|---|
| Plant days-of-cover target | 13.50 days | Plant inventory screen |
| Classification matrix | four value bands against three variability bands | ABC-XYZ categorisation screen |
| Ageing bands and clocks | 0-30 / 31-60 / 61-90 / above 90, on receipt age and consumption age | Ageing part summary screen |
| Source refresh cadence | daily background upload of receipts, issues and stock | Architecture screen |
| Provision rule | non-moving quantity is the lesser of policy and on-hand | Non-moving provisions screen |
None of these is a performance claim. They are what the software does, and they are stated because a buyer comparing systems needs the structure before the benefits.
5.2The fourth value band
The classification matrix carries four value bands — A+, B, C and D — against the three variability bands X, Y and Z. Dickie's scheme and every textbook since use three value bands, so the additional one is a deliberate choice worth examining.

The role the D band plays follows from Section 2.2. A part with no consumption in the classification window has no computable variability, so placing it in the Z band asserts high variability where the truth is no signal at all. Separating it keeps the Z band meaning erratic rather than meaning unknown — and the parts that land in D are the same population Section 4.3 identifies by consumption age.
The cell contents switch between part count, value and days, which is the same denominator discipline as Section 4.2. A cell holding 3% of parts and 38% of value is a different management problem depending on which is being read, and both readings are one click apart.
5.3Modelled effort avoided
The published return model for this product is stated as manual effort automated. Its assumptions are printed here in full so a reader can substitute their own.
| Assumption | Value |
|---|---|
| People handling inventory data | 5 |
| Hours per person per day on that handling | 3 |
| Working days per year | 300 |
| Baseline effort | 4,500 hours per year |
| Share of that effort automated | 60% |
| Modelled hours avoided | 2,700 per year |
The 60% figure is an assumption, not a measurement, and a reader should treat it as the parameter to interrogate. What the model captures well is that the effort being replaced is extraction and reconciliation rather than judgement: the buyer still decides what to do about a slow mover, and the system removes the two hours spent finding it.
The product's own material frames the same point as a lag rather than a headcount: classification run monthly in a spreadsheet leaves a buyer four weeks behind every demand shift. That framing is the better one, because the cost of the lag falls on stock decisions rather than on labour, and stock is where the capital is.
6Discussion
6.1The gap between the three figures is the product
A conventional reading of a dashboard showing three days-of-cover figures per class is that two of them are redundant and the reporting should be tidied. That reading is wrong, and inverting it is the most useful thing in this paper.
The three agree when the plan matched reality and the position is stable, which is exactly when nobody needs to look. They separate when the planning norm was wrong, when the position has just changed, or when consumption has stopped — the three conditions a buyer is being paid to notice. The divergence is therefore an alarm that requires no threshold to be configured.
The same logic runs through the ageing report: two clocks that agree describe ordinary stock, and two clocks that disagree describe the two failure modes of Section 4.3. In both cases the information is in the difference, and a system that reports one number has thrown it away before the user sees the screen.
6.2What a daily cadence can and cannot support
The daily extract of Section 3.1 sets a hard boundary on the product's claims, and it is worth drawing precisely rather than defensively.
| Supported | Not supported |
|---|---|
| Classification and re-banding | Shop-floor stock confirmation before a pick |
| Ageing and non-moving identification | Allocation of a specific piece to a specific order |
| Days-of-cover reporting against target | Preventing a stockout that develops within the day |
| Buyer and supplier performance review | Real-time available-to-promise |
| Trend and forecast input | Any decision whose window is shorter than the refresh |
Nothing in the right column is a deficiency; each belongs to a different layer, and the product's own material places physical movement with a warehouse management system and the transaction record with the ERP. The mistake to avoid is buying an analytical layer expecting a movement layer, which is a mistake the word real-time invites.
6.3A capability reference framework for inventory analytics
| Dimension | Question the system must answer by demonstration |
|---|---|
| D1 Stated denominator | For any days-of-cover figure on screen, which consumption rate is underneath it? |
| D2 Multiple denominators | Are derived, average and instantaneous figures shown together, or reconciled into one? |
| D3 Two ageing clocks | Can the system list parts received this month that have not been consumed in two years? |
| D4 No-signal band | Where does a part with zero consumption in the window land — in the erratic band, or its own? |
| D5 Provision capped at on hand | Show a part whose policy provision exceeds host quantity. Which number is booked? |
| D6 Procurement class | Can imported and domestic parts carry different day targets, or is there one plant number? |
| D7 Intermittent-aware variability | Which estimator computes the variability band for a part with eleven months of zeros? |
| D8 Stated cadence | How old is the data on screen right now, and does the screen say so? |
D8 takes ten seconds and settles more than the rest. A system that displays its own extract timestamp has decided to be honest about a limitation; one that does not has decided the opposite.
6.4Generalisability
The three-denominator argument generalises to any ratio KPI whose denominator is contested — which, following ISO 22400's insistence that a KPI carry its definition, is most of them. The two-clock argument generalises to any asset with independent arrival and departure processes: spare parts, tooling, returnable packaging.
What does not generalise is the 13.50-day target. It is a property of one plant's mix, lead times and service commitments, and a plant adopting it because it appeared in a screenshot would be adopting an answer to somebody else's question.
7Threats to Validity and Limitations
- No field evidence exists for this product. It appears in no published case study, so this paper reports no deployment outcome and the reader should treat the absence as informative.
- The modelled 60% effort reduction is an assumption. It is the published default of the return model, carries no measurement, and is the parameter most worth replacing with a local estimate.
- Every figure inherits the host system's data quality. The analytical layer neither validates nor corrects the ERP's transaction record; a wrong issue posting produces a wrong consumption age with no indication that anything is amiss.
- Days of cover assumes steady state. Little's Law is exact only where the consumption rate is stationary over the averaging window, so figures spanning a model changeover or a demand step are not comparable with figures either side of it.
- Classification quality depends on the variability estimator. Where variability is computed with an estimator unsuited to intermittent demand, parts will be banded wrongly and the differentiated policy will be applied in the wrong direction.
- The part master is an unmeasured dependency. Buyer, project and procurement-class assignments are maintained outside the system, and every dimensional report is only as good as they are.
- Daily cadence bounds the claims. Nothing whose decision window is shorter than the refresh interval can be supported, whatever the interface suggests.
- The screenshots are one deployment at one date. They establish that the software computes these things; they establish nothing about typical values, and no figure read from them is presented here as a benchmark.
The third limitation is the one that bites in practice. An analytical layer makes an ERP's data quality visible for the first time, and a plant should expect its first months of output to be an audit of its master data rather than of its stock.
8Future Work
- A measured deployment. The most valuable next step for this product is a published case study, so that Section 5 can report an outcome instead of a model.
- Publishing the variability estimator. Naming which estimator computes the XYZ band — and applying a Croston or Syntetos-Boylan variant where demand is intermittent — would let a buyer judge whether the classification can be trusted for the parts it matters most on.
- Divergence as an alert rather than a reading. The gap between the three days-of-cover figures is already computed; surfacing it as a ranked exception list would turn Section 6.1 from an interpretation into a workflow.
- Consumption-age thresholds per procurement class. A ninety-day silence means something different for an imported part and a domestic one, and a single band boundary treats them alike.
- Closing the loop to procurement. Supplier reliability is described in the product's material as feeding the safety-stock model; measuring that feedback in a live deployment would make the claim checkable.
9Conclusion
How much is on hand is a level, and a level supports no decision on its own. Everything a buyer needs is a ratio or an age, and every ratio needs a denominator that the transaction record does not supply.
Three results carry this paper. Days of cover is Little's Law applied to a stockroom, which makes explicit the stationarity assumption behind every such figure and the condition under which two plants' numbers may be compared at all. The three days-of-cover figures the system reports are not redundant — they agree when nothing is wrong and separate when something is, which makes their gap an alarm with no threshold to configure. And ageing needs two clocks, because a part replenished last week and unconsumed for three and a half years is dead stock that a receipt clock files as fresh.
The framework of Section 6.3 is offered as the durable contribution, and its last dimension takes ten seconds to test: ask the screen how old its data is, and see whether it answers.
Appendix ANomenclature
| Symbol / term | Meaning |
|---|---|
| L, lambda, W | Little's Law terms: quantity held, throughput rate, and average time in system |
| d | Days of cover — stock value divided by mean daily consumption value |
| d(der) | Derived days of cover, computed against the planning norm |
| d(avg) | Average days of cover over the reporting period |
| d(today) | Today's days of cover, against the trailing consumption rate |
| c(norm) | The consumption rate the planning process assumed |
| c-bar | Observed mean consumption rate over the window |
| a(rcpt) | Receipt age — days since the part's last receipt |
| a(cons) | Consumption age — days since the part's last issue |
| q(prov) | Provision quantity called for by the ageing policy |
| q(erp) | Quantity the host system of record holds |
| q(nm) | Non-moving quantity — the lesser of the two above |
| ABC / A+BCD | Value bands; this product implements four rather than the textbook three |
| XYZ | Demand-variability bands: X stable, Y moderate, Z erratic |
| Lakh | Indian numbering unit of 100,000, the unit values are reported in on screen |
Appendix BWorked Numerical Examples
Appendix B.1Reading three days-of-cover figures
A procurement class holds stock valued at 763 lakh. The planning norm assumed consumption of 104 lakh per day; the trailing twelve-month observed mean was 20.9 lakh per day; the last thirty days averaged 46.9 lakh per day.
Applying Equation (three): derived days = 763 / 104 = 7.3. Average days = 763 / 20.9 = 36.5. Today's days = 763 / 46.9 = 16.3.
The reading follows directly. Derived far below average says the planning norm assumed a consumption rate five times what the plant achieved — a planning error, not a stock error. Today's below average says consumption has recently recovered and the position is improving. A plant looking only at the derived figure would conclude it was comfortably inside a 13.50-day target while actually holding more than twice it.
The corrective action differs by which figure is wrong. A bad derived figure is fixed in the planning norm; a bad today's figure is fixed on the shop floor. One number cannot tell a buyer which conversation to have.
Appendix B.2Two clocks on four parts
Four parts, with days since last receipt and days since last issue: P1 (7, 1328), P2 (803, 805), P3 (513, 511), P4 (195, 30).
By receipt age alone, P1 falls in the 0-30 band and looks like fresh working stock; P2 and P3 look equally aged; P4 falls in the above-90 band and looks like a disposition candidate.
By both clocks the picture inverts. P1 is dead stock still being replenished — the worst case on the list, and the only one a receipt-age report would miss entirely. P2 and P3 are genuinely dormant, both clocks agreeing. P4 was bought in bulk six months ago and consumed last month: ordinary working stock with an unlucky purchase history, and flagging it for disposition would be an error.
One clock ranks these P4, P2, P3, P1 — exactly backwards at both ends. Two clocks rank them P1, P2, P3, and leave P4 alone.
Appendix B.3Where the provision cap bites
Four parts carry a policy provision quantity and a host-system quantity: P1 (3391, 3391), P2 (219, 0), P3 (794, 10), P4 (162, 214). Unit values are 1.26, 0.42, 0.021 and 2.09 in hundredths of a lakh respectively.
Applying Equation (provision), the non-moving quantities are 3391, 0, 10 and 162. Provision values follow: 42.77, 0, 0.21 and 3.38, for a total of 46.36.
Taking the policy quantity uncapped would have given 42.77, 0.92, 16.67 and 3.38 — a total of 63.74, or 37% too high. The overstatement comes entirely from P2 and P3, where the stock the policy would provide against is not in the building. P4 shows the other direction of the cap: the host holds 214 pieces but only 162 meet the non-moving criterion, so the remainder is untouched.