{"ref":"artifact:cap-java-cds-feature-mt","page":"/artifacts/cap-java-cds-feature-mt","json":"/artifacts/cap-java-cds-feature-mt.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-java-cds-feature-mt","name":"com.sap.cds:cds-feature-mt","artifact_type":"package","ecosystem":"cap","domain":"operations-and-runtime","origin_ring":"sap-official","description":{"one_line":"The CAP Java feature that makes a Maven application multitenant aware: tenant lifecycle events, per-tenant database containers, and the wiring to the Node.js MTX sidecar.","short":"Multitenancy for CAP Java: tenant lifecycle and per-tenant containers","what_it_solves":"Adds multitenancy to a CAP Java application built on [com.sap.cds:cds-services-bom](artifact:cap-java-cds-services-bom): the runtime exposes SUBSCRIBE, UNSUBSCRIBE and DEPENDENCIES tenant events an application can hook with custom handlers, and by default creates or deletes a tenant-specific database container through the SAP BTP Service Manager on subscribe and unsubscribe. It stops at the Java backend: CDS model data might need to be fetched from the MTX sidecar in case of tenant extensions, so a multitenant CAP Java deployment still runs the Node.js [@sap/cds-mtxs](artifact:sap-cds-mtxs) sidecar alongside it. `cds add multitenancy` wires both sides at once, adding this Maven dependency with runtime scope to `srv/pom.xml` and a sidecar URL to the application's configuration. Switching the tenant in the request context is comparatively expensive for exactly that reason."},"links":{"homepage":"https://central.sonatype.com/artifact/com.sap.cds/cds-feature-mt","docs":"https://cap.cloud.sap/docs/java/multitenancy"},"identity":{"license":"SAP DEVELOPER LICENSE AGREEMENT for CAP"},"source_available":false,"compat":{"runtimes":["java"]},"flavors":[{"key":"java","source":{"url":"https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules","title":"Building Applications — capire","checked":"2026-09-19","quote":"CAP Java comes with a rich set of prepared modules for all different layers of the stack:"}}],"drafted_with_ai":true,"provides":[{"capability":"capability:multitenancy","what_it_does":"Exposes SUBSCRIBE, UNSUBSCRIBE and DEPENDENCIES tenant lifecycle events and by default creates or deletes a tenant-specific database container through the Service Manager; CDS model data for tenant extensions is fetched from the Node.js MTX sidecar rather than handled here.","sources":[{"url":"https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules","title":"Building Applications — capire","checked":"2026-09-19","quote":"Makes your application multitenant aware."},{"url":"https://cap.cloud.sap/docs/java/multitenancy#switching-subscriber-tenant","title":"Multitenancy — capire","checked":"2026-09-19","quote":"Note that switching the tenant in the context is a quite expensive operation as CDS model data might need to be fetched from MTX sidecar in case of tenant extensions."}]}],"requires":[{"ref":"artifact:sap-cds-mtxs","requirement":"conditional","condition":"Tenant CDS model extensions are used.","role":"tenant-model-sidecar","sources":[{"url":"https://cap.cloud.sap/docs/java/multitenancy#switching-subscriber-tenant","title":"Multitenancy — capire","checked":"2026-09-19","quote":"Note that switching the tenant in the context is a quite expensive operation as CDS model data might need to be fetched from MTX sidecar in case of tenant extensions."}]}],"history":[{"date":"2026-09-19","field":"provides.what_it_does","from":null,"to":"Exposes SUBSCRIBE, UNSUBSCRIBE and DEPENDENCIES tenant lifecycle events and by default creates or deletes a tenant-specific database container through the Service Manager; CDS model data for tenant extensions is fetched from the Node.js MTX sidecar rather than handled here.","reason":"New CAP Java provider discovered through official CAP documentation and its Maven POM. Facts describe capire's stated behaviour, not verified deployment compatibility."}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-19"}},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"unknown","evidence":"no contributor data"},{"label":"Repository","tier":"unknown","evidence":"no repository data"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"unknown","evidence":"no repository data"}],"practice":[{"label":"Tests","tier":"unknown","evidence":"not crawled"},{"label":"Docs","tier":"unknown","evidence":"docs link declared, tree not read"},{"label":"Changelog","tier":"unknown","evidence":"not crawled"}],"reach":[{"value":null,"unit":"installs/week"},{"value":null,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name"},"edges":{"maintainers":[],"contributors":[],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}