Back to Blog
Published:
Last Updated:
Fresh Content
D365 Platform DecisionsChapter 9

What does One Version actually guarantee, and what does it not?

8 min read
1,759 words
high priority
Muhammad Mudassir

Muhammad Mudassir

Founder & CEO, Cognilium AI

TL;DR

One Version commits Microsoft to four service updates a year, a floor of two, one pause, and a backward-compatibility promise covering binary and functional compatibility. It also names its own exclusions in the same paragraph — non-X++ APIs and dependent software libraries. Here is the guarantee quoted, and the boundary quoted, from the pages that carry both.

What does One Version actually guarantee, and what does it not?

One Version is usually described in a sentence — everyone runs the same version — and that sentence is why architects mis-scope it. The guarantee is narrower and more useful than the slogan, and Microsoft publishes its own exclusions in the same paragraph as the promise.

This is for the CIO, IT director or enterprise architect who has to tell a risk committee what Microsoft is actually on the hook for.

The claim: it is a cadence, a floor, and a bounded compatibility promise

One Version commits Microsoft to a fixed number of service updates a year, commits you to a minimum number of them, and commits both parties to a compatibility contract that covers X++ and metadata and explicitly does not cover everything else. It does not commit Microsoft to leaving your system unchanged, and it never did.

Here is the whole commitment set, every cell quoted from Microsoft.

  • **Updates per year** — Microsoft's words: "Each year, four service updates are released." · Where: One Version service updates FAQ
  • **Which months** — Microsoft's words: "Service updates are provided four times annually. Autoupdates occur in February, April, July, and October." · Where: Service update availability
  • **Your minimum** — Microsoft's words: "Customers can take up to four service updates per year and are required to take a minimum of two per year." · Where: same page
  • **How far behind you may fall** — Microsoft's words: "You're required to use an update that's no more than one update behind the current update." · Where: One Version service updates FAQ
  • **Pauses** — Microsoft's words: "The maximum number of consecutive updates that can be paused is reduced from three to one." · Where: same page
  • **Major updates** — Microsoft's words: "There are two major updates each year: the April update and the October update… Major updates don't require code or data upgrade." · Where: same page
  • **Breaking changes** — Microsoft's words: "Breaking changes are communicated 12 months in advance… Breaking changes are introduced only during major updates." · Where: same page
  • **New features** — Microsoft's words: "All new features are available on an opt-in basis for a 12-month period. They don't require any change management until you enable them." · Where: same page
  • **Validation time** — Microsoft's words: "You have seven calendar days for validation after the update is applied to your sandbox environment." · Where: same page

Read the pause row carefully, because it is the one people quote from memory and get backwards. The number of pauses came down, and Microsoft says the floor did not move with it: "However, because release durations are extended, the same minimum of two service updates per year is maintained."

What "backward compatible" is defined to mean

Microsoft does not leave this as an adjective. The FAQ defines it in two parts:

"Binary compatibility means that you can apply an update in any runtime environment without
having to recompile, reconfigure, or redeploy customizations. It also means that, in a development
environment at design time, X++ public and protected APIs and metadata aren't modified or deleted.
If Microsoft must break compatibility by removing obsolete APIs, the change is communicated 12
months in advance and follows a deprecation schedule."
"Functional compatibility refers to the user experience. All new experiences are available on
an opt-in basis for a 12-month period."
One Version service updates FAQ

That is a genuinely strong promise and it is the reason F&O upgrades stopped being projects. It is also, precisely, a promise about X++ public and protected APIs, metadata, and the user experience.

The exclusions are Microsoft's, not our inference

This is the part worth quoting to anyone who treats One Version as a blanket. It is the next paragraph on the same page:

"Backward compatibility doesn't include non-X++/metadata APIs. Microsoft reserves the right to
update versions of any dependencies that the product uses, and to remove dependencies, without
early warning. Microsoft doesn't commit itself to maintaining backward compatibility of dependent
software libraries unless this commitment is expressly stated."
One Version service updates FAQ

Three things to notice. "Without early warning" is Microsoft's phrase, and it sits deliberately against the twelve-month notice given for X++ breaks. "Unless this commitment is expressly stated" makes the default position explicit. And the exclusion is written as a category — non-X++/metadata APIs — not as a list you can check yourself against.

The deprecation rules carry their own hedges, and they matter:

"After a period of at least 12 months, Microsoft might remove obsolete methods and metadata
elements. However, if telemetry shows that you still use any obsolete methods or metadata
elements, Microsoft won't remove them."
Deprecation of methods and metadata elements

So the twelve months is a floor, not a date, and removal is conditioned on telemetry. The same page also warns about the gap that condition creates: "Microsoft might have removed the artifact because there's a time window between when releases and telemetry are available." And the notice period is not uniform — for compile-time-only breaks, "the deprecation time is less than 12 months."

What the guarantee is scoped to, stated as narrowly as we checked it

"Microsoft doesn't guarantee X" is a claim about everything Microsoft has written, so here is the bounded version. Pages opened for this article: the One Version service updates FAQ, the One Version service updates overview, Service update availability, the Software lifecycle policy, Deprecation of methods and metadata elements, and Removed or deprecated features.

The backward-compatibility answer in the One Version FAQ is an answer about the service update package. The same FAQ states that "Add-in components, Power Apps, and Dataverse are updated independently of the service update package and process for finance and operations apps." So the compatibility contract quoted above is scoped to the thing that ships as one version, and the add-in trains sit outside that package by Microsoft's own description of them.

Two more things those pages do state, both often mistaken for gaps:

  • There is no rollback. "As with other code promotions, rollbacks can't be done after a service update is applied." Microsoft points at flighting and feature management as the mitigation instead.
  • End of service is a support cliff, not a shutdown. "Microsoft doesn't investigate, troubleshoot, or provide any fixes to issues on versions that reached their end of service" (Software lifecycle policy), and the Support team "can't take cases" for them. The environment keeps running; the help stops.

The arithmetic the guarantee produces

Microsoft works its own pause example, which is better than one of ours: "a customer is running version 10.0.39 and chooses to pause update 10.0.40. In this case, service update 10.0.41 is automatically applied first to the Tier-2 sandbox environment, and then later to all other sandbox environments and production environments."

Around that sit four operational numbers, all Microsoft's:

  • **Sandbox lead time** — "A sandbox autoupdate occurs seven days before the production update."
  • **Other sandboxes** — "All other sandboxes are automatically updated on the same day as the production environment."
  • **Expected downtime** — "The expected downtime for a successful update is approximately 15 minutes. However, Microsoft asks for three hours of downtime in case issues occur."
  • **Autoupdate windows** — "customers can choose between two autoupdate windows that occur four weeks apart for every service update" — and pausing is not partial: "Customers are explicitly required to pause both autoupdate windows to pause a release if they are eligible to do so, based on the pause policy."

One consequence of that second window is worth having in front of you before you plan a freeze. The targeted release schedule gives 10.0.49's first autoupdate production start date as October 2, 2026 and its second as November 1, 2026 — so the month your update actually lands is not necessarily one of the four months Microsoft names for autoupdates.

Where this goes wrong

Reading "backward compatible" as "our integrations are safe." The compatibility contract covers X++ public and protected APIs and metadata. Microsoft names non-X++ APIs and dependent software libraries as outside it, and reserves the right to move dependency versions without early warning. Integration surfaces are exactly where that lands.

Treating opt-in as a permanent off switch. New experiences are opt-in "for a 12-month period" — a window, with an end.

Planning a pause you are not entitled to. The pause needs your estate to be compliant. Microsoft is direct: for environments on noncompliant versions, "Microsoft can't make exceptions."

Pausing one window and calling it paused. Both windows have to be paused, explicitly. This is the cheapest self-inflicted update in the whole model.

Assuming twelve months is a date. It is "at least 12 months", removal is conditional on telemetry, and for compile-time-only breaks it is shorter.

Where we would draw the line

We would not sign a change-freeze commitment longer than one pause window, because the second update is not optional and the model says so in a sentence. We would not build an integration on a non-X++ surface and then cite One Version as its stability argument — the page that grants the guarantee is the page that excludes it. And we would not treat the seven-day validation window as the test plan; it is the calendar the test plan has to fit inside.

Dynamics 365 manages the update and guarantees the cadence. Deciding which of your decisions are sensitive to a version moving under them — and re-deciding it every quarter — is the part it leaves to you.

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/

List the integrations that would break if a dependency version moved without notice. If that list is longer than you expected, book a fifteen-minute call and we will walk it with you, live — no deck. https://cognilium.ai

Sources

Sources

Share this article

Muhammad Mudassir

Muhammad Mudassir

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
Next in this series
Which Dynamics 365 regions can you actually deploy into?
Chapter 10 · 7 min
In short

Key takeaways

  • One Version is a cadence commitment plus a minimum you must take plus a bounded compatibility promise. It is not a commitment that your system stays unchanged.
  • Microsoft defines backward compatibility in two named parts — binary compatibility, covering X++ public and protected APIs and metadata, and functional compatibility, covering the user experience.
  • The same documentation names its own exclusions: non-X++ and non-metadata APIs, plus dependent software libraries, where Microsoft reserves the right to change or remove dependencies without early warning.
  • Deprecation notice is a floor rather than a date. Microsoft says it might remove obsolete elements after at least a year, and that it won't remove them while telemetry shows you still use them.
  • There is no rollback after a service update is applied. Microsoft points at flighting and feature management as the mitigation, which makes what you enable a bigger decision than when you update.
  • Pausing an update means pausing both autoupdate windows. Pausing only the first does not pause the release.
What goes wrong

Common mistakes to avoid

  • Citing One Version as the stability argument for an integration built on a surface the backward-compatibility statement excludes.
  • Treating an opt-in new experience as permanently off. Microsoft describes the opt-in as a period, not a setting you keep.
  • Planning a change freeze around more consecutive skipped updates than the pause policy allows, or around a pause your estate is not eligible for because a sandbox is behind.
  • Reading the deprecation notice period as a promise that nothing moves before it, when Microsoft states a shorter period for breaks that affect compilation only.

Terms in this article

Definitions in the Cognilium glossary.