Back to Blog
Published:
Last Updated:
Recently Updated
Demand & ReplenishmentFoundational guide

Your safety stock is a number someone typed in 2019

7 min read
1,610 words
high priority
Mudassir Marwat

Mudassir Marwat

Founder & CEO, Cognilium AI

TL;DR

Safety stock in D365 is a static field the planning engine never recomputes. The mechanism behind the gap, and the read-only diagnostic that finds the leak.

Your safety stock is a number someone typed in 2019

Open any Dynamics 365 released product, go to item coverage, and look at the minimum quantity. That number is your safety stock. Now ask one question: who set it, and when?

The usual answer: at go-live, by the implementation team, using a rule of thumb — because after go-live, nobody owns re-deriving it. Demand has moved since. Lead times have moved since. The number hasn't. It sits there managing your working capital by inertia.

This is the single most common inventory defect in a Dynamics shop, and it is invisible, because it never shows up as a system error. It shows up as expediting and excess stock — two symptoms nobody traces back to one static field.

What Dynamics does, precisely — and where it stops

Credit where it is due. Dynamics 365 Supply Chain Management manages inventory policy well.

  • Coverage groups and item coverage [GA] hold the per-item replenishment personality — requirement, period, min/max, manual, DDMRP.
  • Planning Optimization [GA] — the current MRP engine, an in-memory service, fast enough to run during office hours — nets demand against supply, pegs it, and fires action messages.
  • Demand planning [GA], a separate Power Platform app, forecasts the mean demand with auto-ARIMA, ETS, Prophet, XGBoost and a best-fit selector.

Every one of those is real and good. And not one of them computes the right safety-stock number. Planning Optimization plans to the buffer you gave it. Demand planning forecasts the mean — but safety stock is a question about the variability around the mean, and about the variability of your lead time, which is a different distribution entirely.

That is the gap. The ERP records the buffer and enforces it. It does not optimize it.

Why this is the last mile, and why the money lives here

Safety stock is not a rounding error on the balance sheet. For a mid-market distributor it is often the largest single lever on working capital, and the second-largest driver of premium freight after genuine demand spikes.

The reason it is under-served is structural, not accidental. Microsoft optimizes for the median customer across every industry on one code base. A buffer computed for your demand profile, your lead-time variability and your service-level policy loses the median-customer argument every time. So it stays a static field — the process built out to the decision, and the decision itself left on the table.

That decision is the last mile of ERP, and it is a data-science problem: fit the distributions, target the service level, net it across the network. It is exactly the kind of decision the ERP records but cannot make.

This is a proven category, not a hunch

Before we talk about building anything, the honest market check: does anyone actually pay for this? Yes — more than for almost anything else in the ecosystem.

  • Vendor count — 22+ independent vendors sell multi-echelon / probabilistic safety stock across SAP, NetSuite and Oracle marketplaces — our own count from a five-marketplace scan, and the most-proven paid category that scan found
  • In our exact channel — Netstock and Smart Software explicitly list Microsoft Dynamics (AX, BC, 365, NAV) as supported ERPs on their own sites
  • The named platforms — ToolsGroup (SO99+, probabilistic), Slimstock (Slim4, MEIO), Blue Ridge (Replenishment Optimization) — all sell the same shape at enterprise price points

This category is proven. Netstock sells it into Dynamics today; ToolsGroup and Slimstock sell it across SAP, NetSuite and Oracle. We are none of them, and we make no claim to their results. What the incumbents structurally cannot do is the thing that matters most to a Dynamics buyer, which brings us to the design decision.

The design decision: write back into the coverage group, not into a second tool

Here is the opinion, and we will defend it. A standalone inventory-optimization tool is the wrong architecture for a Dynamics customer. Feature parity loses here.

The incumbent model is a separate SaaS product with its own login, its own data copy and its own UI. The planner now works in two systems, the numbers drift between them, and the "optimized" buffer lives somewhere the planning engine never reads.

The Dynamics-native model is the opposite. The optimizer writes the computed safety-stock value into the coverage-group and item-coverage fields Planning Optimization already reads. There is no second tool. The existing plan simply gets better. That is the whole differentiator, and it is only available to something built on the ERP's own substrate.

Concretely, the write-back goes through the ERP MCP server [GA] (the runtime surface an agent can call, live since January 2026) using data_update_entities, scoped by a purpose-built security role — and always behind a planner approval step. A bot never rewrites a planning parameter unsupervised.

The method, and the part of it we don't trust

The engineering is deliberately conservative. Inventory money rewards correctness over cleverness.

  1. Demand distribution per SKU-location. For runners, standard statistical fits. For the long tail of service parts that sell a handful of times a year, intermittent-demand methods (Croston's-type) — the same problem Microsoft's Demand planning tackles with Best fit model v3 [PP]. That feature is still in preview, so we compute it in the app and label it; we do not put a preview on your critical path.
  2. Lead-time distribution from actual PO receipts. The configured lead time might be 14 days while the last 40 receipts averaged 31. The variability, not the mean, sets the buffer.
  3. Service-level target, costed. The planner sees the trade between service and cash, per SKU, not a black-box number.
  4. Multi-echelon netting across DCs, so a central buffer isn't funded three times over.

And the discipline that keeps it honest — the anti-patterns we design against:

  • Unsupervised write-back — The consequence: A wrong buffer is a real stockout or real trapped cash · Our rule: Every write is a proposal behind approval
  • Optimizing off the analytics copy — The consequence: BPA pre-transforms run on a 12-hour cycle — you'd optimize on a half-day-old position · Our rule: Read the transactional surface for the position
  • Running it on-premises — The consequence: Planning Optimization is not supported on-prem; the legacy engine is [DEPR] since March 2023 · Our rule: We qualify on-prem out — the buffer isn't the first problem
  • Confident forecasts on thin history — The consequence: Intermittent parts punish naive fits · Our rule: Croston's-type methods and an explicit "insufficient history" flag

What it's worth — the calculation you run on your own book

We will not quote you an inventory-reduction percentage. We have not measured one in your tenant, and any published benchmark is someone else's demand profile. What we will give you is the arithmetic itself: four inputs, where each one lives in your systems, and what to multiply.

  • Inventory at cost — The balance sheet. Finance has it to the penny
  • Buffer share — the slice of that inventory held as safety stock — Step 1 of the Monday diagnostic below: value the minimum quantities across item coverage
  • Carrying rate — what holding stock costs you per year — Your finance team's standard rate. Every finance team has one
  • Premium freight spend — The freight ledger, with expedites separated from standard runs

The arithmetic, in words:

  • One-time cash released = buffer value × the share that rebalancing frees at the same blended service level. That share is not a number to assume — it falls out of recomputing the buffers against your own demand and receipt history, which is what we do on a read-only extract.
  • Recurring saving = the released cash × your carrying rate, plus the slice of premium freight that correctly buffered runners stop burning.
  • Against it: an app priced as a departmental line, not a per-seat one.

The reason to hand you the formula rather than a headline number: the formula is what you check against your own book. That check is exactly how we'd prove it — on your data, on a call.

What to do on Monday, without calling us

  1. Open item coverage on your top 50 SKUs by value. Note how many share one minimum quantity, then value those minimums — that valuation is the buffer share input to the arithmetic above.
  2. Pull the last 40 PO receipts for your three worst-expedited parts. Compare the realised lead time to the configured one — the size of that gap is what says a recompute will move the number.
  3. If the configured number and the realised number are strangers, you have found the leak — and you now have the read-only diagnostic you can run yourself.

Dynamics is your system of record. The optimal buffer is your system of intelligence. We build that layer — on your governed stack, writing back into the fields your planner already uses, and we never step on the partner who put your ERP in.

About Cognilium Cognilium is the AI optimization layer for Dynamics 365 — complementary apps that optimize the pricing, inventory, warehouse and planning decisions your ERP manages but can't optimize. Built on Power Platform, Dataverse and Azure. https://cognilium.ai · https://www.linkedin.com/company/37180269/

Worked example. Modelled from public documentation and typical operations.

Runs Dynamics and wondering what the last mile is worth on your data? Book a 15-minute call — we'll run the buffer diagnostic on a read-only extract and walk you through the numbers live, no deck. https://cognilium.ai

— Cognilium. We optimize the decisions your ERP can only manage.

Sources

Share this article

The work behind this series

Safety stock, reorder points and replenishment computed from your own data and written back where the planning engine reads them.

Mudassir Marwat

Mudassir Marwat

Founder & CEO, Cognilium AI

Mudassir Marwat's argument is that ERP systems record decisions they never optimise.

Founder & CEO of Cognilium AI; 37 AI agents in production across four products; 4 production AI products built and operated; three clouds in production (AWSGCPAzure)
Agentic AIRAG → GraphRAG retrievalVoice AIMulti-Agent Orchestration
In short

Key takeaways

  • Safety stock in Dynamics 365 is a static minimum quantity on item coverage. Planning Optimization plans to it; nothing in the ERP recomputes it.
  • Demand planning forecasts the mean. The buffer is set by the variability around the mean — of demand and of lead time — a different distribution the ERP does not fit.
  • Realised lead times from actual PO receipts, not the configured lead time, are what size the buffer. The gap between the two is where the leak hides.
  • The optimized buffer belongs in the coverage fields the planning engine already reads, written back behind planner approval — not in a second system the engine never sees.
What goes wrong

Common mistakes to avoid

  • Treating expediting and excess stock as two separate problems. They are usually two symptoms of one static buffer field nobody owns.
  • Buying a standalone inventory-optimization product whose output never reaches the fields Planning Optimization reads. The plan does not get better; the planner gets a second screen.
  • Optimizing from the analytics copy of the data. The pre-transformed position lags the transactional one by hours — read the transactional surface for anything a buffer depends on.
  • Letting an agent write planning parameters unsupervised. Every write-back is a proposal behind a planner approval step, or it is a production incident waiting to happen.

Terms in this article

Definitions in the Cognilium glossary.

Still have a question this did not answer?

The person who wrote this article answers these. Describe your setup and what you are stuck on — you will get a straight answer, including where we think the approach is wrong.

Related Articles

Continue exploring related topics and insights from our content library.

7 min
1
Mudassir Marwat
July 31, 2026

If you run Dynamics 365 SCM on-premises, do you have a supported MRP engine?

You have a running master planning engine on-premises, and it is the deprecated one — Planning Optimization does not support on-premises deployments. What "supported" means for the engine you are left with is described three different ways across three Microsoft pages. Here is each wording, quoted, and what each of the three honest options costs.

words
Read Article
9 min
2
Mudassir Marwat
July 31, 2026

What can Planning Optimization actually not do in 2026?

Microsoft's fit-analysis page currently marks three rows as Future wave — sales line reservation using explosion, intercompany planning execution, and requirement types for skills, courses, certificates and titles. But that page answers a narrower question than the one people ask, four other Microsoft pages carry real limits it never lists, and on three features Microsoft's own pages disagree with each other.

words
Read Article
9 min
3
Mudassir Marwat
July 31, 2026

Why does your MRP produce twelve thousand action messages?

Because the volume is an output of your coverage configuration, not a measurement of how wrong the plan is. Four settings decide the count, and Microsoft documents every one of them — coverage segmentation, negative days, the time fences on the master plan, and turning action messages off where the answer is always "do nothing".

words
Read Article

Explore More Insights

Discover more expert articles on AI, engineering, and technology trends.

Personalized for You

Curated content recommendations based on your current reading and interests.

Trending
117%

Dynamics 365 can recalculate your safety stock. It still trusts the lead time you typed.

Same topic cluster: Demand & Replenishment
Same author: Mudassir Marwat

The safety stock journal recomputes minimum coverage from your own transaction history — over a window set by a lead time someone typed at go-live.

Mudassir Marwat
7 min read
Demand & Replenishment
Read Article
Trending
31%

How does someone confirm a delivery without a Dynamics 365 licence?

High priority content
Similar reading time

Not by borrowing one. Microsoft gives the ERP MCP server no anonymous path, so the confirmation has to be mediated and a known identity does the posting.

Ali Ahmed
5 min read
Procure-to-Pay Agent Operations
Read Article
Trending
117%

Is DDMRP in Dynamics 365 actually free?

Same topic cluster: Demand & Replenishment
Same author: Mudassir Marwat

A qualified yes. Microsoft states Supply Chain Management "includes DDMRP with no additional license fees" — but DDMRP requires the Planning Optimization Add-in, which requires a Supply Chain Management licence, a tier-2 or higher Lifecycle Services environment, and a cloud deployment. The licence is the cheap part; the decoupling-point analysis is not.

Mudassir Marwat
8 min read
Demand & Replenishment
Read Article
Trending
117%

Time fence or time freeze — which one is deleting your planners' work?

Same topic cluster: Demand & Replenishment
Same author: Mudassir Marwat

Two features in the Dynamics 365 demand planning app have near-identical names and opposite jobs. A time fence stops people editing a forecast. A time freeze stops the recalculation overwriting what people edited. Only one of them is on by default, and it is not the one that saves your adjustments.

Mudassir Marwat
7 min read
Demand & Replenishment
Read Article
Trending
117%

Demand planning app or master planning — where does the forecast actually live?

Same topic cluster: Demand & Replenishment
Same author: Mudassir Marwat

Neither one owns it. The demand planning app calculates the forecast, master planning consumes it, and the object of record between them is a forecast model in Supply Chain Management. Here is the hop, the fields on both sides, and why "are we up to date" is a two-part question with two different version numbers.

Mudassir Marwat
8 min read
Demand & Replenishment
Read Article
Trending
117%

Requirement, Period, Min/Max or Decoupling point — which coverage code for which item?

Same topic cluster: Demand & Replenishment
Same author: Mudassir Marwat

Microsoft's coverage settings page lists six coverage codes, not four — Manual, Per requirement, Per period, Min/Max, Priority and Decoupling point — and three Microsoft pages disagree on the names. Here is what each one does, which items Microsoft says each fits, and where the recommendation is ours rather than Microsoft's.

Mudassir Marwat
9 min read
Demand & Replenishment
Read Article

Smart Recommendations

Our AI analyzes topic clusters, author expertise, and content relationships to surface the most relevant articles for you.

Topic Matching
Author Expertise
Content Quality
Personal Interests

Questions on this?

Talk to an engineer

Schedule a call