Designing Cloud-Native Extensions on SAP BTP with CAPM: Patterns for Clean-Core Architectures
Learn how to design clean-core SAP BTP extensions with CAPM: OData vs. events, multitenancy, principal propagation, XSUAA security, and production lessons.
Designing clean-core extensibility on SAP BTP involves choosing synchronous OData for transactional use cases and asynchronous events for all other use cases. When beginning a CAPM project, multi-tenancy issues should be addressed early on, as retrofitting tenant isolation in a single-tenant extension can be disruptive. Principal propagation is crucial in deciding whether extensions preserve core system authorization and audit trails or allow them to degrade silently.
The main production risk in CAPM extensions lies in peripheral issues such as destination configuration, XSUAA scope mapping, and CDS to core field mapping inconsistencies across environments. Clean core reduces upgrade risk in the ERP core but shifts versioning, monitoring, and authorization complexity into the BTP environment, requiring similar operational care.
Executive Summary SAP's clean-core strategy encourages engineering teams to keep S/4HANA largely untouched, with custom logic running in SAP Business Technology Platform (BTP) as applications built with the Cloud Application Programming Model (CAPM). This shift involves handling distributed-system problems like network requests, tenant isolation, token-based authorization, and eventual consistency.
This article discusses recurring design choices in CAPM extension projects, including service composition with the core, tenant separation, SAP Event Mesh integration, and authorization relying on principal propagation. The insights are based on hands-on experience designing and building extensions from start to finish, aimed at architects and senior engineers who need to make correct trade-offs on the first attempt.
Written by urgent.news from HackerNoon's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.