Community · SAP & ERP

Clean Core Is the Price of AI-Ready ERP

For years, "clean core" lived on SAP marketing slides, politely ignored by every customer with two decades of Z-programs keeping the lights on. Custom code wasn't a sin; it was how the ERP actually fit the business. Then enterprise AI arrived, and the joke stopped being funny: every AI capability now landing in the ERP world assumes standard objects, released APIs, and predictable process flows. The customization that made your system yours is precisely what makes it invisible to the tooling everyone is buying.

2027
Mainstream maintenance ends for SAP ECC, forcing the S/4HANA move that usually triggers clean-core work
Source: SAP maintenance roadmap
~90%
of custom Z-objects in a typical assessment turn out dead, duplicating standard, or trivially replaceable
Illustrative — consistent pattern across the migration assessments we've seen

Why AI changed the math

An AI copilot for order management works by understanding the standard order-to-cash process — its documents, its statuses, its APIs. Point it at a system where pricing runs through three custom user-exits and delivery blocks live in a Z-table, and the copilot is not slightly degraded; it's blind. The vendor's model was never trained on your Z-logic, the embedded agent can't call your unreleased function modules, and no amount of prompt engineering teaches it what ZSD_ORDER_FIX_V4 does, because the only documentation is the developer who retired in 2019.

This is the quiet shift: custom code used to cost you at upgrade time, roughly once a year, and the bill was testing effort. Now it costs you continuously — every AI feature, every embedded agent, every "intelligent" anything arrives working for standard processes and shrugging at yours. The extension debt didn't grow, but the interest rate did.

Clean core is a boundary, not a purge

The misreading of clean core is that it means "no custom code." It actually means custom code lives outside the core, talks to the core through released APIs, and leaves standard behavior standard. The differentiating logic your business genuinely needs doesn't disappear — it moves to the BTP side of the fence, or into extension points designed to survive upgrades, where it is documented, versioned, and — critically — visible to anything that can read an API.

AI can work with anything that has a contract. It cannot work with folklore. Clean core is the process of turning folklore into contracts.
Pattern
What's actually in your Z-namespaceIllustrative
Dead, unused45%
Duplicates standard25%
Trivially replaceable20%
Genuine differentiation10%
Illustrative breakdown reflecting the shape of typical clean-core assessments — the differentiating slice worth real engineering is consistently the smallest bucket.

Seen that way, the clean-core exercise is really an inventory question: which of your 4,000 custom objects encode real competitive differentiation, and which encode a 2007 workaround for a limitation SAP fixed in 2015? Every migration assessment we've seen lands in the same place — a decisive majority of custom code is either dead, duplicating standard, or trivially replaceable. The genuinely differentiating slice is small. That slice deserves proper engineering. The rest is just risk with a transport number.

Sequencing it honestly

The trap is treating clean core as a separate virtue project — nobody funds hygiene. It only moves when attached to something the business already wants: the S/4 move, a new AI capability, an operating-model change. The practical sequence is unglamorous: measure usage of existing custom code first (most tools will tell you what hasn't run in a year), retire the dead weight, then apply a simple rule going forward — new logic goes outside the core unless there's a written reason it can't. You don't clean twenty years in one program; you stop making it worse and let attrition work.

Comparison
Inside the core vs. on the extension side
Custom logic in coreMoved to extension side
Visible to AI toolingNo — undocumented Z-codeYes — released API
Upgrade riskBreaks on every upgradeSurvives upgrades
DocumentationLives in one person's headVersioned, written down

The companies getting this right aren't the ones with the purest systems. They're the ones who can answer, for any piece of custom logic: what it does, why it exists, and what API would replace it. That answer is what AI-readiness actually looks like in the ERP world. The models will keep improving on their own. Your Z-namespace won't.