SapotaCorp

Fit-gap analysis in D365: turning requirements into design without over-customizing

Every D365 requirement is a fork in the road. You can configure it in the standard platform, change the process to match the platform, or build a customization. The teams we are called in to rescue almost always took the third road far too often, and ended up with a system that fights every upgrade. Fit-gap analysis is the discipline that decides each fork honestly.

Fit-gap analysis in D365: turning requirements into design without over-customizing

Key takeaways

  • Every requirement has three possible resolutions, not two: fit it with standard configuration, change the process to match the platform, or accept a genuine gap and build a customization. Teams that collapse this to "configure or build" lose the process-change option, which is often the cheapest of the three.
  • A declared gap should be challenged before it becomes code. Most first-pass gaps are requirements stated as implementations, or standard functionality nobody found yet, so the real gap rate is far lower than the initial list suggests.
  • Customization is the most expensive resolution over the life of the system, because it carries forward into every upgrade. Configure-over-customize is not about taste; it is the difference between an upgrade being a routine event and an upgrade becoming a re-implementation.
  • Fit-gap is a living discipline, not a one-time workshop. New gaps surface all through the build, and each one needs the same three-way decision, or the project quietly drifts back to customizing everything by default.

A manufacturer came to us mid-build with a hundred and forty customizations on the backlog and a timeline that had stopped meaning anything. We sat down and went through the list with them, line by line, and the picture that emerged was one we have seen many times. Roughly half of the items were not gaps at all; they were either standard functionality the team had never found, or requirements written as "make it work like our old system" with no real business need behind them. About a third were genuine needs that a change in process would have met without a single line of code. The truly unavoidable gaps, the requirements the platform honestly could not meet through configuration or a reasonable process change, numbered under twenty. They were building roughly seven times more customization than their requirements actually justified, and every one of those customizations was going to follow them into every future upgrade.

This is what happens when nobody runs a real fit-gap analysis. Fit-gap is the discipline of taking each requirement and deciding, deliberately, how it ought to be met, and its central job is to stop the answer from quietly defaulting to "build it." When a project ends up over-customized, it is almost never because the requirements demanded it. It is because no one made the configure-over-customize principle real at the level of individual requirements, one at a time, with someone whose job was to push back.

There are three resolutions, not two

The first thing fit-gap fixes is the false choice. Teams tend to look at each requirement and see "configure it or build it," when in fact there are three ways to resolve it, and the one they miss is usually the cheapest. A requirement is a fit when standard configuration inside the out-of-the-box platform meets it with no code, and this should be the large majority. It is a process change when the platform does something equivalent but different from how the business works today, and the right answer is to adapt the process to the platform rather than bend the platform to the process. And it is a genuine gap only when the platform truly cannot meet it through configuration or a reasonable process change, which should leave you with a small minority.

Collapsing those three into two is exactly how the gap pile inflates. Every requirement that could have been a process change quietly becomes a customization instead, because "change how we work" was never on the table as an option. The third of the manufacturer's list that a process change would have solved is the direct, measurable cost of leaving that option out.

Challenge a gap before you build it

The highest-leverage habit in fit-gap is treating a declared gap as a hypothesis to be tested rather than a fact to be implemented, because most first-pass gaps fall into two categories that turn out not to be gaps at all. The first is requirements stated as implementations. "The order entry screen must look like our legacy system" is not a business requirement; it is a solution someone decided on in advance. The business requirement underneath it is something like "users can enter orders efficiently," and the standard screen usually meets that perfectly well. Strip the requirement back to the actual need and the gap often evaporates, and a large share of the manufacturer's list was precisely this, the old system's behavior written up as a requirement.

The second category is functionality the team simply has not found. F&O is enormous, and a surprising number of "gaps" are standard features that nobody located. So before anyone builds, the question is always whether there is a standard way to do this, and the answer is yes more often than teams expect. A declared gap that turns out to be a configuration is the cheapest win available on the whole project. Only after a gap has survived both of those challenges, once it is a real need and the platform genuinely cannot meet it through configuration or reasonable process change, does it earn a customization. Running every gap through that gate is what takes a list of a hundred and forty down to under twenty.

Why customization is the expensive answer

The configure-over-customize principle is not about purity, and it is not about avoiding code for its own sake. It is about the total cost of a customization across the life of the system, and the largest part of that cost is upgrades. A configuration carries forward cleanly when the platform updates. A customization does not get that for free; it has to be maintained against every platform change, retested on every update, and occasionally rebuilt outright when the platform shifts underneath it.

A system with twenty well-chosen customizations has upgrades that are routine events you schedule without dread. A system with a hundred and forty has upgrades that are projects in their own right, and eventually it has the upgrade that turns into a re-implementation, because the accumulated customization debt finally costs more than starting over. This is the same lesson that makes us treat an AX 2012 to F&O move as a redesign rather than a re-overlay, which we wrote about in approaching that upgrade as a redesign: the customization you did not actually need is debt you keep paying at every upgrade, forever. So the real fit-gap question is never "can we build this," because you almost always can. It is "is this worth carrying through every future upgrade," and for most requirements the honest answer is no.

Run fit-gap as a living discipline

The other way fit-gap fails is when it is treated as a single workshop at the start, after which everything is considered decided. In reality, new requirements and new gaps keep surfacing all through the build, and each one arrives at the same fork. If the fit, process-change, or gap decision only ever happened at kickoff, then every gap discovered afterward defaults to customization, because the discipline that would have challenged it is no longer running.

Keeping it alive does not take much, but it has to be deliberate. Every new requirement gets the three-way decision, with the gap path gated by the same two challenges as before. Every declared gap records why it is a gap, what business need it serves, and why neither configuration nor process change can meet it, so the justification is on the record and someone can review it. And the customization count gets watched as a health metric, because a number that is quietly climbing is the earliest signal that the project is drifting back toward building everything by default.

What fit-gap leaves you with

A D365 implementation with real fit-gap discipline ends up with a requirements log where each item has been resolved as a fit, a process change, or a gap, deliberately and on the record rather than by reflex. The gap list that remains has survived the two challenges, so it is not full of implementations in disguise or standard functionality nobody found, and the genuine gap rate is low as a result. The customizations that did make the cut are justified by a documented business need and an accepted upgrade cost, not waved through because building felt easier. The process changes are captured and owned by someone, because adapting the business to the platform only works if a person actually drives the change management behind it. The fit-gap log stays alive, still making the decision for requirements that surface during the build. And the customization count stays low enough that future upgrades remain events rather than re-implementations.

The discipline lives entirely in the decision, made deliberately, for every requirement, with the burden of proof placed on customization rather than against it. Configure-over-customize only becomes a real principle when something is actively stopping the gap pile from filling up with requirements that were never gaps in the first place.

Contact Us Now

Share Your Story

We build trust by delivering what we promise – the first time and every time!

We'd love to hear your vision. Our IT experts will reach out to you during business hours to discuss making it happen.

WHY CHOOSE US

"Collaborate, Elevate, Celebrate where Associates - Create Project Excellence"

SapotaCorp beyond the IT industry standard, we are

  • Certificated
  • Assured quality
  • Extra maintenance

Tell us about your project