Lesson 1 of 5
Clean core dimensions
10 min
Listen to this lesson
"Clean core" is often heard as "no custom code". That reading is too narrow, and it leads architects to fight the wrong battles. SAP describes a clean core as a system that is up to date, transparent, unmodified, consistent, efficient and cloud compliant, and it spreads that idea across several dimensions of the ERP landscape. Custom code is one of them. Processes, integrations, data and the way the system is operated matter just as much.
Six dimensions, sometimes counted as five
SAP Learning content on the clean core concept lists six dimensions: software stack and core, processes, extensibility, integration, data and operations. Other SAP material groups them into five by leaving out the software stack. The count is not important; covering all of them is.
What each dimension looks like at Contoso
| Dimension | Contoso today (ECC 6.0 EHP 8) | Clean core target in SAP S/4HANA |
|---|---|---|
| Software stack | Several years behind on support packages | SAP S/4HANA 2025, with a planned rhythm of stacks |
| Processes | Three local variants of order to cash | One standard order to cash, variants only where Maria can show business value |
| Extensibility | About 11,800 custom objects, some modifications | Unused code retired; remaining code rated and moved toward levels A and B |
| Integration | Point-to-point file interfaces, IDocs with custom segments | Released APIs and events through SAP Integration Suite, monitored |
| Data | Duplicate customers and blocked materials never archived | Cleansed master data and quality rules with owners |
| Operations | Unused roles, unmonitored jobs, test cases in spreadsheets | Roles reviewed, jobs monitored, tests and documentation in SAP Cloud ALM |
Contoso's clean core gap by dimension.
The table shows why "clean core" is a program-wide concern. Dan, the finance process owner, owns part of the process dimension. Sam owns much of operations. Kenji owns extensibility. The integration team owns integration. If the architect treats clean core as Kenji's problem alone, half of the gap is ignored.
Clean core in a system conversion
A conversion is the cheapest moment to clean up, because every object is touched anyway. Contoso uses it in three ways. First, the conversion forces custom code adaptation for SAP S/4HANA simplifications, so Kenji's team rates each object's clean core level while it is open. Second, usage data from production shows which objects nobody runs, and those are retired instead of converted. Third, the conversion resets the software stack to SAP S/4HANA 2025, so the stack dimension starts clean. What a conversion does not fix by itself are processes, data quality and operations habits: those carry over unchanged unless someone owns them. That is why the architect writes a target for every dimension into the program charter, not just a custom code target.
Clean core is not "no custom code"
SAP's own guidance says to add extensions where they create measurable differentiation, built on-stack or side-by-side with released APIs and strong governance. A company that differentiates on its core return program for fleet customers should build that capability; it should build it in a way the next upgrade does not break. The opposite mistake also exists: rebuilding a standard function as custom code because "ours is slightly different" creates cost without differentiation.
What would you do?
In a kickoff, a project manager says: "Clean core is handled; Kenji's team is removing custom code." As the architect, what should you say?
- SAP describes clean core across six dimensions: software stack, processes, extensibility, integration, data and operations.
- Each dimension needs an owner; extensibility is only one of them.
- Clean core allows differentiating extensions that are built to survive upgrades.
- Assess an object across every dimension it touches, not just its code.
Check your understanding · not graded
Lesson check
1. Which list matches the clean core dimensions in SAP Learning content?
2. Which statement about clean core and custom code is accurate?
3. Which item belongs to the operations dimension?
4. Why can an interface built on a released API still fall short of clean core?