{"ref":"capability:multitenancy","page":"/capabilities/multitenancy","json":"/capabilities/multitenancy.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"multitenancy","name":"Multitenancy","domain":"operations-and-runtime","ecosystems":["cap","btp"],"universal":true,"description":"Serving many tenants from one deployment — onboarding, tenant-isolated data, per-tenant schema deployment and the operational tooling around it. It is decided once, before anything is built, and narrows the artifacts in almost every capability downstream: most sharply in [caching](capability:caching) and anything else holding state in process.","short":"Serving many tenants from one deployment","core_coverage":{"state":"core-and-community","assessed_at":"2026-09-27","what_core_does":"Tenant provisioning, isolated persistence and per-tenant model deployment. It is switched on with `cds add multitenancy`, after which the server waits for tenant subscriptions and an MTX sidecar serves them. The classic @sap/cds-mtx services are in maintenance mode, supported until CAP Java 2.x; a new project uses the streamlined @sap/cds-mtxs.","where_it_stops":"It stops at the runtime. Day-two operations — inspecting, upgrading and repairing tenants across a landscape — is where [cap-js-community](actor:cap-js-community) fills in, and that is community-org rather than core.","sources":[{"url":"https://cap.cloud.sap/docs/guides/multitenancy/mtxs","title":"MTX services — tenant provisioning","checked":"2026-08-31"},{"url":"https://cap.cloud.sap/docs/guides/multitenancy/","title":"Deploy Multitenant SaaS Applications — capire","checked":"2026-09-27","quote":"CAP has built-in support for multitenancy with the @sap/cds-mtxs package."},{"url":"https://cap.cloud.sap/docs/guides/multitenancy/","title":"Deploy Multitenant SaaS Applications — capire","checked":"2026-09-27","quote":"Essentially, multitenancy is the ability to serve multiple tenants through single clusters of microservice instances, while strictly isolating the tenants data."},{"url":"https://cap.cloud.sap/docs/java/multitenancy-classic","title":"Multitenancy (Classic) — capire","checked":"2026-09-27","quote":"The multitenancy services (@sap/cds-mtx) described in this chapter are in maintenance mode and only supported until CAP Java 2.x."},{"url":"https://cap.cloud.sap/docs/node.js/cds-tx","title":"Transaction Management — capire","checked":"2026-09-27","quote":"Whenever an instance of cds.Service processes requests, the core framework automatically cares for starting and committing or rolling back database transactions, connection pooling, principal propagation and tenant isolation."}],"relationship":"narrow-by-design"},"changed_in":[{"version":"@sap/cds-mtxs 1.0.0","date":"2022-07-05","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"what_changed":"The core gained a rewritten multitenancy library, @sap/cds-mtxs, alongside the existing @sap/cds-mtx. Where the old library stored tenant extensions as source files and ran a build on the server on every activation, the new one stores only compiled csn files, runs the build locally before deploy, and drops the separate META-tenant container — tenant metadata now lives beside application data.","source":{"url":"https://cap.cloud.sap/docs/guides/multitenancy/old-mtx-migration","title":"Migration from Old MTX — capire","checked":"2026-09-08","quote":"extensions are no longer stored as sources, but only as compiled csn files. Instead of running a build on the server with each extension activation, the build is now run locally before the extension is deployed."}},{"version":"@sap/cds 7.0.0","date":"2023-06-22","applies_to":{"ecosystems":["cap"],"flavors":["node"]},"what_changed":"cds 7 dropped support for the old MTX package outright. @sap/cds-mtx, deprecated since cds 6, stopped running at all; @sap/cds-mtxs became the only supported multitenancy library for anything on cds 7 or later.","invalidates":"Any tutorial or sample that provisions tenants through @sap/cds-mtx. That ran on cds 6; on cds 7 and later the app won't start until it migrates to @sap/cds-mtxs.","source":{"url":"https://cap.cloud.sap/docs/releases/2023/jun23","title":"CAP release notes, June 2023","checked":"2026-09-08","quote":"The old MTX package @sap/cds-mtx was deprecated with cds 6, and is no longer supported with cds 7."}}],"history":[{"date":"2026-08-31","field":"core_coverage.state","from":"left-open-on-purpose","to":"core-and-community","reason":"States renamed to describe who is present rather than to interpret intent. left-open-on-purpose asserted a motive; core-and-community states a fact, with relationship carrying the intent separately."},{"date":"2026-09-09","field":"ecosystems","from":"cap","to":"cap, btp","reason":"The BTP services answering this were in the corpus while the capability was not on the BTP map, so browse counted them behind the door and had no group to render them in. The BTP door is a reading of its own — a fallback to CAP's would assert something false about a service you bind rather than install."},{"date":"2026-09-27","field":"core_coverage","from":"without the page","to":"cites the page","reason":"capire audit 2026-09-27: the multitenancy guide and the Java classic page were cited nowhere."},{"date":"2026-09-27","field":"core_coverage","from":"without the runtime's page","to":"cites the runtime's page","reason":"P1 backfill 2026-09-27: the paragraph and the runtime edge now rest on a page in common."}],"coverage_by_ecosystem":{"btp":{"state":"core-only","assessed_at":"2026-09-09","where_it_stops":"At subscription. The callback is where the work starts — tenant-isolated data and per-tenant schema deployment are the application's, and BTP neither performs nor verifies them.","note":"Every provider behind this door is an SAP BTP service, so core-only is a assessment of the corpus rather than a quote from the core. what_core_does is left empty: no page has been checked that states an intent here, and the services themselves carry their own descriptions and links."}},"framing_by_ecosystem":{"btp":{"description":"[SaaS Provisioning](artifact:btp-saas-provisioning) is the registration: it makes an application subscribable by other subaccounts and calls that application back on every subscribe and unsubscribe. What the callback then has to do is why this capability reads so differently on the two doors."}},"drafted_with_ai":true},"sap_delivery":{"door":"cap","all":{"built_in":[{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"},{"ref":"artifact:cap-java-cds-services-bom","name":"com.sap.cds:cds-services-bom","json":"/artifacts/cap-java-cds-services-bom.json"}],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-cds-mtxs","name":"@sap/cds-mtxs","json":"/artifacts/sap-cds-mtxs.json"},{"ref":"artifact:sap-cds-oyster","name":"@sap/cds-oyster","json":"/artifacts/sap-cds-oyster.json"},{"ref":"artifact:cap-java-cds-feature-mt","name":"com.sap.cds:cds-feature-mt","json":"/artifacts/cap-java-cds-feature-mt.json"}]},"by_flavor":{"node":{"built_in":[{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json"}],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-cds-mtxs","name":"@sap/cds-mtxs","json":"/artifacts/sap-cds-mtxs.json"},{"ref":"artifact:sap-cds-oyster","name":"@sap/cds-oyster","json":"/artifacts/sap-cds-oyster.json"}]},"java":{"built_in":[{"ref":"artifact:cap-java-cds-services-bom","name":"com.sap.cds:cds-services-bom","json":"/artifacts/cap-java-cds-services-bom.json"}],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:cap-java-cds-feature-mt","name":"com.sap.cds:cds-feature-mt","json":"/artifacts/cap-java-cds-feature-mt.json"}]}}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:cap-js-community-mtx-tool","name":"@cap-js-community/mtx-tool","json":"/artifacts/cap-js-community-mtx-tool.json","ecosystem":"cap","origin_ring":"community-org"},{"ref":"artifact:sap-cds","name":"@sap/cds","json":"/artifacts/sap-cds.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-cds-mtxs","name":"@sap/cds-mtxs","json":"/artifacts/sap-cds-mtxs.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-cds-oyster","name":"@sap/cds-oyster","json":"/artifacts/sap-cds-oyster.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-java-cds-feature-mt","name":"com.sap.cds:cds-feature-mt","json":"/artifacts/cap-java-cds-feature-mt.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-java-cds-services-bom","name":"com.sap.cds:cds-services-bom","json":"/artifacts/cap-java-cds-services-bom.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:btp-saas-provisioning","name":"SAP Software-as-a-Service Provisioning service","json":"/artifacts/btp-saas-provisioning.json","ecosystem":"btp","origin_ring":"sap-official"}],"samples":[{"ref":"artifact:gregorwolf-mtxs-reviews","name":"mtxs-reviews","json":"/artifacts/gregorwolf-mtxs-reviews.json"},{"ref":"artifact:sap-samples-btp-event-driven-multi-tenant-architecture","name":"SAP-samples/btp-event-driven-multi-tenant-architecture","json":"/artifacts/sap-samples-btp-event-driven-multi-tenant-architecture.json"},{"ref":"artifact:sap-samples-partner-reference-application","name":"SAP-samples/partner-reference-application","json":"/artifacts/sap-samples-partner-reference-application.json"},{"ref":"artifact:sap-samples-spfi-reference-application","name":"SPFI-Reference-Application","json":"/artifacts/sap-samples-spfi-reference-application.json"}],"explained_by":[{"ref":"content:hands-on-with-the-cap-operator-and-the-partner-reference-application","name":"From Concept to action: Hands-On with the CAP Operator and the Partner Reference Application","json":"/content/hands-on-with-the-cap-operator-and-the-partner-reference-application.json"},{"ref":"content:building-a-saas-multitenant-cap-application-without-a-database","name":"Building a SaaS Multitenant Application Using SAP CAP Framework — Without a Database","json":"/content/building-a-saas-multitenant-cap-application-without-a-database.json"},{"ref":"content:build-solutions-for-sap-cloud-erp-with-confidence","name":"Build Solutions for SAP Cloud ERP with confidence","json":"/content/build-solutions-for-sap-cloud-erp-with-confidence.json"},{"ref":"content:designing-multi-tenant-solutions-on-btp-architecture-and-prototype","name":"Designing a Multi‑Tenant Solutions on SAP BTP – Architecture and Prototype Walkthrough","json":"/content/designing-multi-tenant-solutions-on-btp-architecture-and-prototype.json"},{"ref":"content:cap-operator-on-kyma-part-2-runtime-architecture-and-cost","name":"Part 2: Runtime Architecture & Cost efficiency gains","json":"/content/cap-operator-on-kyma-part-2-runtime-architecture-and-cost.json"},{"ref":"content:kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform","name":"Kyma Evolution: Transforming SAP Kyma into a tailor-made SaaS Platform for sbs extensions","json":"/content/kyma-evolution-transforming-kyma-into-a-tailor-made-saas-platform.json"},{"ref":"content:architecting-saas-resilience-against-s4hana-variance","name":"Part 2: Architecting SaaS Resilience Against S/4HANA Variance","json":"/content/architecting-saas-resilience-against-s4hana-variance.json"},{"ref":"content:building-saas-products-on-sap-btp","name":"Building SaaS Products on SAP BTP","json":"/content/building-saas-products-on-sap-btp.json"},{"ref":"content:cap-multitenancy-with-work-zone","name":"CAP multitenancy with Work Zone","json":"/content/cap-multitenancy-with-work-zone.json"},{"ref":"content:ac-multitenant-saas-application-using-cap","name":"Multitenant SaaS Application using CAP","json":"/content/ac-multitenant-saas-application-using-cap.json"},{"ref":"content:cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database","name":"Developing CAP java/node.js mixed mono Multitenant SaaS Applications with Shared Database","json":"/content/cap-java-nodejs-mixed-mono-multitenant-saas-with-shared-database.json"},{"ref":"content:event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh","name":"Event-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event Mesh","json":"/content/event-driven-multi-tenant-architecture-with-cap-and-sap-event-mesh.json"},{"ref":"content:simplifying-saas-self-onboarding-automation-using-terraform","name":"Simplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud Foundry","json":"/content/simplifying-saas-self-onboarding-automation-using-terraform.json"},{"ref":"content:using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding","name":"Using the Terraform Provider for SAP BTP to simplify Subscriber Tenant Onboarding","json":"/content/using-the-terraform-provider-for-btp-to-simplify-tenant-onboarding.json"},{"ref":"content:multitenant-saas-on-btp-using-cap-the-reloaded-version","name":"Multitenant SaaS applications on SAP BTP using CAP - The Reloaded Version!","json":"/content/multitenant-saas-on-btp-using-cap-the-reloaded-version.json"},{"ref":"content:saas-self-onboarding-and-one-domain-in-kyma-using-cap","name":"SaaS Self-Onboarding and One-Domain Concept in SAP BTP, Kyma Runtime using CAP","json":"/content/saas-self-onboarding-and-one-domain-in-kyma-using-cap.json"},{"ref":"content:multitenant-saas-applications-on-btp-using-cap-kyma-runtime","name":"Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!","json":"/content/multitenant-saas-applications-on-btp-using-cap-kyma-runtime.json"},{"ref":"content:multitenant-saas-on-btp-using-cap-tried-and-true-expert-features","name":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Expert Features","json":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-expert-features.json"},{"ref":"content:multitenant-saas-on-btp-using-cap-tried-and-true-advanced","name":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Advanced Version","json":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-advanced.json"},{"ref":"content:multitenant-saas-on-btp-using-cap-tried-and-true-basic","name":"Multitenant SaaS apps on SAP BTP using CAP? Tried-and-True! – The Basic Version","json":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-basic.json"},{"ref":"content:multitenant-saas-on-btp-using-cap-tried-and-true-overview","name":"Multitenant SaaS applications on SAP BTP using CAP? Tried-and-True!","json":"/content/multitenant-saas-on-btp-using-cap-tried-and-true-overview.json"},{"ref":"content:testing-cap-hana-artifacts-with-jest","name":"Testing your CAP HANA Artifacts with jest – including multitenancy, hdbprocedure and hdbview","json":"/content/testing-cap-hana-artifacts-with-jest.json"},{"ref":"content:multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers","name":"Multitenant MTA: providing a Cloud Portal Service with FIORI apps to subscriber accounts","json":"/content/multitenant-mta-providing-a-cloud-portal-with-fiori-apps-to-subscribers.json"},{"ref":"content:multitenant-business-applications-with-cap-hands-on-video-tutorials","name":"Multitenant Business Applications with CAP | Hands-on Video Tutorials","json":"/content/multitenant-business-applications-with-cap-hands-on-video-tutorials.json"},{"ref":"content:multitenant-application-using-cap-java-sdk-and-mtx-sidecar","name":"Multitenant application using Cloud Application Programming Model (CAP)","json":"/content/multitenant-application-using-cap-java-sdk-and-mtx-sidecar.json"},{"ref":"content:getting-your-head-into-cap-multitenancy","name":"Getting your head into Cloud Application Programming model multitenancy","json":"/content/getting-your-head-into-cap-multitenancy.json"}],"normative_context":[]}}