{"ref":"content:ac-multitenant-saas-application-using-cap","page":"/content/ac-multitenant-saas-application-using-cap","json":"/content/ac-multitenant-saas-application-using-cap.json","generated":"2026-10-27","drafted_with_ai":true,"entity":{"id":"ac-multitenant-saas-application-using-cap","title":"Multitenant SaaS Application using CAP","url":"https://architecture.learning.sap.com/docs/ref-arch/5942d2","content_type":"reference-architecture","explains":[{"ref":"capability:multitenancy","applies_to":{"ecosystems":["btp","cap"]}},"capability:tenant-extensibility"],"summary":"SAP's reference architecture for a multitenant SaaS application on BTP built with [CAP](artifact:sap-cds): one deployment serving many tenants with logically separated data, the subscription and onboarding flow, and the BTP services the design leans on. Written for partners and line-of-business teams building on BTP, and it is SAP's own side of the shape [multitenancy](capability:multitenancy) takes on BTP.","short":"Multitenant SaaS application on BTP built with CAP","authors":["actor:sap-architecture-center"],"published":"2025-01-31","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/readme.md","title":"RA0007 readme.md in SAP/architecture-center — title, contributors and last_update","checked":"2026-09-06"}],"provenance":{"discovered_via":[{"source":"source:architecture-center"}],"first_seen":"2026-09-06"},"drafted_with_ai":true,"published_on":"source:architecture-center","parts":[{"actor":"SaaS consumer user","key":"user","role":"uses the SaaS application through its tenant's URL","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Users can access the SaaS application via the unique URL, which redirects them for authentication to cloud identity services."}]},{"actor":"API client","key":"client","role":"calls the SaaS API service with a service binding's credentials","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Then, a new Service Binding is created which will provide necessary credentials to call CAP based SaaS API service that can be used by API clients."}]},{"ref":"artifact:sap-cds","key":"cap","role":"application and domain logic","area":"provider","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"In the provided Reference Architecture, CAP serves as the central hub for application and domain logic, providing multitenancy, interacting with SAP Solutions (Cloud or On-Premise), 3rd party applications, and managing data sources such as SAP HANA Cloud."},{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"The SaaS provider deploys the multitenant application to the provider subaccount."}]},{"ref":"artifact:sap-cds-mtxs","key":"mtxs","role":"multitenancy, feature toggles and extensibility","within":"cap","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"It provides a set of services that implement multitenancy, features toggles, and extensibility (‘MTX’ stands for these three features)."},{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"CAP includes these MTX services, which provide out-of-the-box handlers for subscribe/unsubscribe events, for example to manage SAP HANA database containers."}]},{"ref":"artifact:btp-saas-provisioning","key":"saas","role":"subscription lifecycle","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"SAP Software-as-a-Service Provisioning service helps manage and automate the subscription lifecycle of multitenant applications on SAP BTP."}]},{"ref":"artifact:btp-service-manager","key":"service-manager","role":"HDI container per tenant","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"During this process, the CAP framework creates a HANA HDI container instance via the SAP Service Manager, which can be extended with creation of specific services or components of the SaaS application, such as identity provider instance integration or SaaS Service api broker registration."}]},{"ref":"artifact:btp-hana-cloud","key":"hana","role":"tenant data","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"In the SaaS application, data is loaded from the CAP based SaaS business application service, which retrieves data from the HANA HDI container instance created during subscription, as well as from SAP systems or third-party systems using destinations configured in the consumer subaccount via the Destination Service."}]},{"ref":"artifact:btp-destination","key":"destination","role":"connections to SAP and third-party systems","area":"consumer","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"As part of the application setup, destinations can be configured in the consumer subaccount to connect to SAP systems or third-party systems, if needed."}]},{"ref":"artifact:btp-cloud-identity-services","key":"cids","role":"authentication","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Users can access the SaaS application via the unique URL, which redirects them for authentication to cloud identity services."}]},{"ref":"artifact:btp-custom-domain","key":"custom-domain","role":"custom domain","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"The SAP Custom Domain service allows you to configure a custom domain for your application, enabling you to publicly expose it under your own domain name instead of the default subdomain."}]},{"ref":"artifact:btp-api-management","key":"apim","role":"API policies per plan","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Depending on the plan, different API policies, such as rate limiting, maximum body content, and quota policies, can be applied using the [SAP API Management capability of the SAP Integration Suite](https://help.sap.com/docs/integration-suite/sap-integration-suite/api-management-capability) on SAP BTP."}]},{"ref":"artifact:btp-cloud-foundry-runtime","key":"cf","role":"runtime","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"This demonstrates the development and deployment of a multitenant application on SAP BTP with integration to multiple BTP services and business systems like SAP S/4HANA leveraging both Cloud Foundry and Kyma runtimes."}]},{"ref":"artifact:btp-kyma-runtime","key":"kyma","role":"runtime","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"This demonstrates the development and deployment of a multitenant application on SAP BTP with integration to multiple BTP services and business systems like SAP S/4HANA leveraging both Cloud Foundry and Kyma runtimes."}]}],"areas":[{"key":"provider","kind":"subaccount","label":"Provider subaccount","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"The SaaS provider deploys the multitenant application to the provider subaccount."}]},{"key":"consumer","kind":"subaccount","label":"Consumer subaccount","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"For each customer, a subaccount (consumer subaccount) is created, and an instance of the SaaS application is subscribed, triggering the subscription process via SAP SaaS Provisioning Service."}]}],"edges":[{"from":"user","to":"cap","kind":"data","for":"opens the SaaS application through the tenant's own URL","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Users can access the SaaS application via the unique URL, which redirects them for authentication to cloud identity services."}]},{"from":"cap","to":"cids","kind":"authentication","for":"redirects users to Cloud Identity Services for authentication","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Users can access the SaaS application via the unique URL, which redirects them for authentication to cloud identity services."}]},{"from":"cap","to":"saas","kind":"provisioning","for":"is registered with the SaaS Provisioning service, which makes it available for subscription from consumer subaccounts","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"The application is then registered with the SAP Software-as-a-Service Provisioning service, which makes the application available in service marketplace for subscription from consumer subaccount."}]},{"from":"cap","to":"service-manager","kind":"provisioning","for":"creates a HANA HDI container instance for the tenant","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"During this process, the CAP framework creates a HANA HDI container instance via the SAP Service Manager, which can be extended with creation of specific services or components of the SaaS application, such as identity provider instance integration or SaaS Service api broker registration."}]},{"from":"cap","to":"hana","kind":"data","for":"reads the tenant's data from its HDI container","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"In the SaaS application, data is loaded from the CAP based SaaS business application service, which retrieves data from the HANA HDI container instance created during subscription, as well as from SAP systems or third-party systems using destinations configured in the consumer subaccount via the Destination Service."}]},{"from":"cap","to":"destination","kind":"data","for":"reaches SAP and third-party systems through the destinations of the consumer subaccount","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"In the SaaS application, data is loaded from the CAP based SaaS business application service, which retrieves data from the HANA HDI container instance created during subscription, as well as from SAP systems or third-party systems using destinations configured in the consumer subaccount via the Destination Service."}]},{"from":"client","to":"cap","kind":"data","for":"calls the SaaS API service with the credentials of a service binding","sources":[{"url":"https://raw.githubusercontent.com/SAP/architecture-center/main/docs/ref-arch/RA0007/5-mt-architecture/readme.md","title":"RA0007 5-mt-architecture/readme.md in SAP/architecture-center","checked":"2026-09-27","quote":"Then, a new Service Binding is created which will provide necessary credentials to call CAP based SaaS API service that can be used by API clients."}]}],"history":[{"date":"2026-09-27","field":"parts, areas, edges","from":"eleven parts, no areas, no edges","to":"thirteen parts with two actors, MTXS within CAP, two subaccounts, seven edges the architecture page states","reason":"The record states what its source draws around and between the parts (docs/concepts/reference-architectures.md §9.2): the provider and consumer subaccounts, the users and API clients, and the flow of subscription, data and authentication as the architecture page states it. On the checker's reading of the first draft: only the application is placed in the provider subaccount, since the page places nothing else there; the registration with the SaaS Provisioning service is the stated direction, not events the service raises; and API Management's policies are stated with no path, so no arrow."},{"date":"2026-10-17","field":"explains","from":null,"to":"applies_to on capability:multitenancy (cap, btp)","reason":"Door scope proposed from the title and summary, so a door page lists the piece only where it holds (docs/concepts/content-on-doors.md)."}]},"readings":{"liveness":[{"label":"Checked against the source","tier":"unknown","evidence":"nobody has checked it"},{"label":"Source reachable","tier":"good","evidence":"up as of 2026-10-26"},{"label":"Source updated","tier":"fair","evidence":"2025-01-31 by the publisher"}],"compatibility":[{"label":"Version","tier":"unknown","evidence":"no version declared"},{"label":"Moved since?","tier":"good","evidence":"no recorded change after 2025-01-31"},{"label":"Findings","tier":"good","evidence":"none flagged"}],"reach":[{"value":null,"unit":"views"},{"value":null,"unit":"comments"},{"value":null,"unit":"likes"}]},"signals":{"crawled_at":"2026-10-26","reachable":true,"source_updated":"2025-01-31"},"series":null,"edges":{"authors":[{"ref":"actor:sap-architecture-center","name":"SAP Architecture Center","json":"/actors/sap-architecture-center.json"}]}}