Clean Core
Clean core is SAP's principle for keeping an SAP S/4HANA system close to standard so that upgrades stay predictable: extensions use released APIs and stable extension points, run on-stack with ABAP Cloud or side-by-side on SAP BTP, and avoid modifying SAP code. Clean core is a governance target measured over time, not a product.
Quick facts
- Type
- Architecture and governance principle
- Layer
- Business logic & data model; SAP BTP
- Extension options
- Key user extensibility, developer extensibility (ABAP Cloud), side-by-side on SAP BTP
- Measured with
- ABAP Test Cockpit checks; clean core levels A–D in SAP Cloud ALM
- Who owns it
- Enterprise architects, development leads, SAP CoE
- Applies to
- Public Edition (enforced by design); Private Edition and on-premise (by governance)
Layer: Business logic & data modelWhere it sits ▾
What does clean core mean in practice?
Clean core is often reduced to "no custom code", which is not what SAP describes. The principle concerns how a system deviates from standard, not whether it does:
- Extensions use released APIs and extension points, so SAP can change internals without breaking them.
- Configuration is preferred over code wherever the standard offers a setting.
- Integration runs through released, documented interfaces rather than direct table access.
- Data and operations follow current standards, so the system stays supportable.
A system can carry many extensions and still be clean, as long as each one depends only on what SAP has committed to keep stable. Clean core is therefore a rule about dependencies, not a ban on differentiation.
How do the clean core levels work?
SAP's current guidance classifies custom objects into four levels, which SAP Cloud ALM uses to report a clean core share:
| Level | What the object uses | Classification |
|---|---|---|
| A | ABAP Cloud and released APIs only | Clean core |
| B | Released APIs plus classic APIs that SAP classifies for customer use | Clean core |
| C | SAP internal objects not classified or intended for customer use | Conditionally clean; needs change monitoring |
| D | Modifications and other patterns SAP does not support for extensions | Not clean core |
Earlier SAP material describes a three-tier extensibility model with comparable intent, and both vocabularies still appear in SAP documentation. The clean core levels turn the principle into something a team can measure object by object.
What are the strengths of the clean core principle?
- Predictable upgrades: extensions that use only released APIs keep working across releases, which reduces regression testing and upgrade projects.
- Cloud compatibility: the same rules apply in SAP S/4HANA Cloud Public Edition, so an on-premise team following them keeps its options open.
- A shared decision ladder: standard first, then key user extensibility, then developer extensibility, then side-by-side gives architects and consultants a common language.
- Measurability: ABAP Test Cockpit checks and the level classification make progress visible instead of anecdotal.
- Lower long-term cost: fewer modifications mean fewer adjustments during support package and release changes.
For any organization that wants to stay on current SAP releases, clean core is the extension policy that SAP's own tools and guidance are built to support.
Where does clean core stop?
- It does not decide what to build. Clean core governs how an extension depends on SAP, not whether the requirement behind it is worth building.
- It moves complexity rather than removing it. A side-by-side extension is clean for the core, but it adds integration, identity, monitoring and a second lifecycle.
- API coverage is uneven. Where no released API exists, teams fall back to level C or wait, and that gap is a frequent complaint in practitioner communities.
- Legacy code takes years. Large ECC-era code bases move level by level; the measurement shows the distance, not the path.
- Ownership is outside the scope. An extension can be perfectly clean and still lack an owner, documentation or a link to the process it supports.
Clean core keeps the ERP upgradeable; ownership, process design and the cost of the surrounding landscape remain separate questions.
How do you decide where an extension goes?
Work down this ladder and stop at the first option that meets the requirement:
- Standard or configuration. Can a setting, a business role or a delivered app cover it?
- Key user extensibility. Is it a custom field, a check, a default value or a UI adaptation? Alder Manufacturing's need for a supplier rating field on purchase orders ends here.
- Developer extensibility. Does it need custom ABAP close to SAP S/4HANA data and transactions? Build it with ABAP Cloud on-stack.
- Side-by-side on SAP BTP. Does it serve external users, combine several systems or need its own lifecycle? A self-service portal for Cedar Office Supply belongs here.
- Classic extension. Only with a documented exception, an owner and a plan to move up the levels.
The clean core decision is made per requirement, and the reason for each choice should be recorded where architects can find it later.
What are common mistakes with clean core?
- Treating it as a one-time cleanup. Without checks in the development process, new level C and D objects appear after the project ends.
- Banning level C outright. Some requirements have no released API yet; a monitored level C object can be the honest choice.
- Counting objects instead of risk. One modification in a central posting routine weighs more than many unused reports.
- Moving everything to SAP BTP. Side-by-side is not automatically cleaner if the extension still needs unreleased interfaces.
- Forgetting the UI layer. Copied and modified SAP Fiori apps carry their own upgrade risk; SAP's UI extension mechanisms, such as adaptation projects, are the safer route.
Most clean core failures are governance failures that show up later as upgrade effort.
Clean core vs. ABAP Cloud: what is the difference?
| Clean core | ABAP Cloud | |
|---|---|---|
| What it is | A principle and governance target | A development model and ABAP language version |
| Scope | Extensions, configuration, integration, data and operations | Custom ABAP code on-stack or in the SAP BTP ABAP environment |
| Enforced by | Policy, ABAP Test Cockpit checks, clean core levels | The compiler: only released APIs are allowed |
| Relationship | The goal | One of the main ways to reach the goal for ABAP code |
Clean core is the target state; ABAP Cloud is the development model that makes custom ABAP code meet that target by construction.
FAQ
Is clean core only relevant for SAP S/4HANA Cloud Public Edition?
No. Public Edition enforces clean core by design, because customers cannot modify SAP code there. Private Edition and on-premise allow modifications, so clean core becomes a governance decision. SAP's guidance and ABAP Test Cockpit checks apply to all three deployment options.
Does clean core mean no custom code?
No. Clean core allows extensive custom code, provided it depends only on released APIs and extension points. A system with many well-built ABAP Cloud extensions and side-by-side apps can be cleaner than a system with a few direct modifications.
How do you measure clean core?
ABAP Test Cockpit runs clean core checks against custom code, and SAP provides a dedicated check variant for clean core readiness. SAP Cloud ALM classifies objects into levels A to D and reports a clean core share, which makes progress visible over time.
What is the difference between clean core and ABAP Cloud?
Clean core is the principle of keeping the ERP close to standard. ABAP Cloud is the development model that restricts ABAP code to released APIs and cloud-ready language features. ABAP Cloud is one way to achieve clean core; key user and side-by-side extensibility are others.
Can a system with modifications still be called clean core?
Not for the modified objects. Modifications are classified at the lowest level, outside clean core. The rest of the system can still be clean, and many organizations track the remaining modifications as technical debt with a plan to replace them over time.
Sources
- SAP Help Portal: Clean core extensibility and ABAP-based extensions
- SAP Help Portal: SAP Cloud ALM — extensibility and clean core levels
- SAP Help Portal: Keep clean core governance with ABAP Test Cockpit
- SAP Help Portal: Extensibility options compared (ABAP platform)
- SAP Help Portal: Clean Core Extensibility for SAP Cloud ERP (clean core dimensions)
- Applies to
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition
- Last reviewed