@cap-js-community/mtx-tool
CLI for operating multitenant CAP applications — inspecting, upgrading and repairing tenants across a landscape.
Facts
Where it sits
Who is behind it
In the atlas: maintains 10@cap-js-communitymaintainerNils HirsekornContributes to this
In the atlas: contributes to 2@KkoileRichard LindnerContributes to this
In the atlas: contributes to 3@rlindner81Sebastian WolfContributes to this
In the atlas: contributes to 22@SebastianWolf-SAPMax GruenfelderContributes to this
In the atlas: contributes to 7@soccermaxStefan HenkeContributes to this
In the atlas: contributes to 6@StefanHenke5 contributors
What it declares
Every artifact
- Type
- CLI
- Origin
- By a community org
- Runtime
- Node.js
As a CLI
- Distributed through
- npm
Connections
Serving many tenants from one deployment
Download
Install
npm add @cap-js-community/mtx-toolDerived from the package name. No recipe recorded; the README has the configuration.
README
quoted from cap-js-community/mtx-tool under Apache-2.0, readMTX Tool
Multitenancy and Extensibility Tool is a cli to reduce operational overhead for multitenant Cloud Foundry applications, particularly in the areas user authentication, tenant registration, CAP multitenancy, and HANA container management.
Getting Started
Prerequisite is an installed CF cli v8 or newer.
Prepare
npm install --global @cap-js-community/mtx-tool
mtx --setup
Use, for example
cf target -o <my-org> -s <my-space>
mtx regl
mtx hdil
Pipelines
For pipelines, we recommend committing the setup configuration to your project and running MTX Tool on the pipeline runner in the corresponding directory through npx with a stable version:
In project
mtx --setup-local
git add . && git commit -m "mtx-tool config"
In pipeline, for example
npx @cap-js-community/mtx-tool@0.14.0 --svm-make-bindings-double all-services all-tenants
npx @cap-js-community/mtx-tool@0.14.0 --svm-restart
npx @cap-js-community/mtx-tool@0.14.0 --svm-make-bindings-single all-services all-tenants
...
npx @cap-js-community/mtx-tool@0.14.0 --cds-upgrade-all
Features
MTX Tool is organized into contextual sections, each with several commands.
=== user authentication (uaa) ===
~ uaad --uaa-decode TOKEN decode JSON web token
~ uaac --uaa-client [TENANT] obtain uaa token for generic client
~ uaap --uaa-passcode PASSCODE [TENANT] obtain uaa token for one-time passcode
~ uaau --uaa-user USERNAME PASSWORD [TENANT] obtain uaa token for username password
~ uaasc --uaa-service-client SERVICE [TENANT] obtain service token for generic client
~ uaasp --uaa-service-passcode SERVICE PASSCODE [TENANT] obtain service token for one-time passcode
~ uaasu --uaa-service-user SERVICE USERNAME PASSWORD [TENANT] obtain service token for username password
... [TENANT] obtain token for tenant, fallback to paas tenant
... --json output in json
... --decode decode result token
... --userinfo add detailed user info for passcode or username
=== tenant registry (reg) ===
~ regl --registry-list [TENANT] list all subscribed subaccount names
~ regll --registry-long-list [TENANT] long list all subscribed subaccounts
~ regs --registry-service-config show registry service config
--registry-update TENANT_ID update tenant dependencies
--registry-update-all update dependencies for all subscribed tenants
--registry-update-url [TENANT_ID] update all subscribed application URL
* --registry-migrate TENANT_ID migrate tenant to subscription manager
* --registry-offboard TENANT_ID offboard tenant subscription
* --registry-offboard-skip TENANT_ID SKIP_APPS offboard tenant subscription skipping apps
... [TENANT] filter list for tenant id or subdomain
... --json list in json
... --time list includes timestamps
... --skip-unchanged skip update for unchanged dependencies
... --only-stale only update subscriptions that have not changed today
... --only-failed only update subscriptions with UPDATE_FAILED state
=== cap multitenancy (cds) ===
~ cdsl --cds-list [TENANT] list all cds-mtx tenant names
~ cdsll --cds-long-list [TENANT] long list all cds-mtx tenants
cdsot --cds-onboard-tenant TENANT_ID [METADATA] onboard specific tenant
cdsut --cds-upgrade-tenant TENANT_ID upgrade specific tenant
cdsua --cds-upgrade-all upgrade all tenants
* --cds-offboard-tenant TENANT_ID offboard specific tenant
* --cds-offboard-all offboard all tenants
... [METADATA] onboard subscription metadata
... [TENANT] filter list for tenant id or subdomain
... --json list in json
... --time list includes timestamps
... --auto-undeploy upgrade with auto undeploy
... --first-instance upgrade only through first app instance
=== hana management (hdi) ===
~ hdil --hdi-list [TENANT_ID] list all hdi container instances
~ hdill --hdi-long-list [TENANT_ID] long list all hdi container instances and bindings
~ hditt --hdi-tunnel-tenant TENANT_ID open ssh tunnel to tenant db
... [TENANT_ID] filter for tenant id
... --json list in json
... --time list includes timestamps
... --reveal show sensitive information
=== service manager (svm) ===
~ svml --svm-list [TENANT_ID] list all service instances and bindings
~ svmll --svm-long-list [TENANT_ID] long list all service instances and bindings
~ svmp --svm-params [SERVICE_PLAN] [TENANT_ID] list service instances provisioning parameters
--svm-make-bindings-single SERVICE_PLAN TENANT_ID [PARAMS] make service bindings 1-to-1
--svm-make-bindings-double SERVICE_PLAN TENANT_ID [PARAMS] make service bindings 1-to-2
--svm-restart rolling restart for svm bound apps
--svm-restart-skip SKIP_APPS rolling restart skipping apps
* --svm-delete-bindings SERVICE_PLAN TENANT_ID delete service bindings
* --svm-delete SERVICE_PLAN TENANT_ID delete service instances and bindings
... SERVICE_PLAN filter for service plan with "offering:plan"
or "all-services" for all
... TENANT_ID filter for tenant id or "all-tenants" for all
... SKIP_APPS comma-separated app names to skip
... [PARAMS] create binding with custom parameters
... --json list in json
... --time list includes timestamps
... --reveal show sensitive information
=== server diagnostic (srv) ===
~ srvenv --server-env [APP_NAME] dump system environment
~ srvcrt --server-certificates [APP_NAME] [APP_INSTANCE] dump instance certificates
srvd --server-debug [APP_NAME] [APP_INSTANCE] open ssh tunnel to debug port
... [APP_NAME] run server commands for a specific app
... [APP_INSTANCE] tunnel to specific app instance, fallback to 0
~ are read-only commands
* are potentially _dangerous_ commands
Adding --force to any dangerous command will override the safeguard, use at your own risk.
Peers
- SAP BTP Command Line Interface, download
- Service Manager Control command line tool, will be archived Aug 2025
Documentation
Head over to our Documentation to learn more.
Support, Feedback, Contributing
This project is open to feature requests/suggestions, bug reports etc. via GitHub issues. Contribution and feedback are encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines.
Code of Conduct
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone. By participating in this project, you agree to abide by its Code of Conduct at all times.
Licensing
Copyright 2023 SAP SE or an SAP affiliate company and mtx-tool contributors. Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.
History
Features 1
Notes
ADDED
- svm: new
svmp/--svm-paramscommand that lists service instances with their provisioning parameters.
Features 1, Changed 1, Fixes 1
Notes
CHANGED
- dependencies: update node-fetch to v3 with
require(esm). node v20 can do this by default now: https://nodejs.org/en/blog/release/v20.19.0/#requireesm-is-now-enabled-by-default:#requireesm-is-now-enabled-by-default
ADDED
- svm: new
--svm-restart,--svm-restart-skipcommands that triggers a zero-downtime rolling restart for all running apps bound to the service-manager instance.
FIXED
- svm: retry-after logic expected the standard header, but svm uses
X-RateLimit-Retry-Afterinstead.
- dependencies: update node-fetch to v3 with
Changed 3, Fixes 2
Notes
We reworked the service-manager interactions. The operations for credential rotation become idempotent now, making outside retries possible.
The old commands still work but are now deprecated: they emit a warning and delegate to the new implementations. Migrate to the replacements below, as the deprecated commands will be removed in a future release.
deprecated svm command new svm command --svm-repair-bindings--svm-make-bindings-single--svm-fresh-bindings--svm-make-bindings-double--svm-refresh-bindingssee choreography below The full rotation is a five-step choreography of the two idempotent commands:
- rolling restart — converge apps onto the most-recent binding.
--svm-make-bindings-single— prune to one binding per instance.--svm-make-bindings-double— add the new binding.- rolling restart — apps switch to the new binding.
--svm-make-bindings-single— prune the old binding.
If the fleet is already at one binding per instance, skip to step 3.
CHANGED
-
npm: use
bundleDependenciesinstead of shrinkwrap to ship thewhatwg-urloverride to users. shrinkwrap is no longer honored as of npm v12. -
svm: reworked
--svm-repair-bindingsto--svm-make-bindings-singleand--svm-fresh-bindingsto--svm-make-bindings-double. both are now idempotent and have theSERVICE_PLAN TENANT_IDcalling args, making them consistent with othersvmcommands. -
svm:
--svm-repair-bindings,--svm-fresh-bindings, and--svm-refresh-bindingsare deprecated. they still work but now emit a warning. they are reimplemented on top of the new idempotent binding logic in a way that reproduces their previous behavior, and will be removed in a future release. migrate to--svm-make-bindings-single,--svm-make-bindings-double.
FIXED
-
reg: subscription listing now uses the cursor-based paging APIs (
/subscription-manager/v2/subscriptionsand/saas-manager/v2/application/subscriptions) instead of page-number paging, keeping pagination reliable for large result sets (fixes #197). -
core: mtx cache now dedupes concurrent lookups of the same configured app name, avoiding redundant cf requests.
Changed 4
Notes
CHANGED
-
core: service credentials are now retrieved through the cloud-foundry
service_credential_bindingsAPI instead of readingVCAP_SERVICESfrom the app's environment. this is a meaningful step towards supporting service-keys in addition to app bindings. credential lookups no longer depend on whetherVCAP_SERVICESis provided inline or via file. -
srv:
--server-envnow handles file-basedVCAP_SERVICES(fixes #140). -
core: cache window for cf app info was shortened from 12 hours to 4 hours.
-
hdi, svm: readonly list commands
--hdi-list,--hdi-long-list,--svm-list,--svm-long-listnow reuse the persisted app-info cache.
-
Features 1, Fixes 2
Notes
ADDED
- svm: add client headers
Client-NameandClient-Versionfor all calls to service-manager.
FIXED
-
cds: list filter for subdomain works again.
-
cds: works with xsuaa broker plan again (fixes #161).
- svm: add client headers
Features 2, Fixes 1
Notes
ADDED
-
svm: new command
--svm-fresh-bindingsto create new bindings without deleting the current bindings. this is meant for scenarios, where you create new bindings, do rolling restarts, and then run--svm-repair-bindingsfor cleanup. -
svm: new bindings created via
--svm-fresh-bindings,--svm-refresh-bindings, or--svm-repair-bindingswill have amanaging_client_liblabel if their associated instances have the offeringhanaand planhdi-shared. this specific label was expected by cap java until recently.
FIXED
- svm: new bindings created via
--svm-fresh-bindingsor--svm-refresh-bindingswill combine the labels from the associated instance and from the previous binding.
-
Changed 2, Fixes 1
Notes
⚠️ This release is potentially disruptive. The configured app used for
cdscommands now needs to be bound to an auth service: bothxsuaa(UAA) andidentity(IAS) are supported. For most projects, this will be the case already.CHANGED
-
core: require node engine >= 20.0.0
-
cds: now supports IAS-only, unless the
@sap/cds-mtxsendpoints are protected by a custom mTLS middleware.
FIXED
- core: move from deprecated url.parse() to silly WHATWG API.
-
Features 3, Changed 2, Fixes 1
Notes
CHANGED
-
[experimental] core: requests that fail and get a retry, will be logged with a request id
[req-xx]for easier correlation. -
[experimental] core: extended list of correlation headers to
X-CorrelationId,X-Correlation-Id,X-Request-Id,X-Vcap-Request-Id.
ADDED
-
set: added a new configuration option for an app to access subscription manager.
-
reg: all
regcommands will work with either subscription manager or saas registry or both depending on what is configured withset(fixes #100). -
reg: new command
--registry-migrateto migrate one tenant from saas registry to subscription manager. this operation is irreversible and requires that the tenant's subaccount trusts an IAS with origin keysap.custom.
FIXED
- cds: cdsl will correctly display values for tenants held in either saas registry or subscription manager (fixes #127).
-
Features 1, Changed 2
Notes
CHANGED
-
svm: new bindings inherit all labels from the underlying service instance.
-
svm: new bindings always get a
service_plan_idlabel, which is expected by@sap/cds-mtxs.
ADDED
- [experimental] set env variable
MTX_CORRELATION=1to log correlation information for service responses. we will show the first matching header of:X-CorrelationId,X-Correlation-Id,X-Vcap-Request-Id.
-
Fixes 1
Notes
FIXED
- svm:
--svm-repair-bindingsand--svm-refresh-bindingswill ignore instances withready: false.
- svm:
Removed 1, Features 3, Changed 1, Fixes 1
Notes
⚠️ This release is potentially disruptive. We carved out the service-manager interactions from
hdiinto a new sectionsvm. Among other things, this allows us to handle credentials rotation for all managed service plans consistently, not just for HANA containers.deprecated hdi command corresponding svm command --hdi-list-relations--svm-list--hdi-rebind-tenant TENANT_ID--svm-refresh-bindings hana:hdi-shared TENANT_ID--hdi-rebind-all--svm-refresh-bindings hana:hdi-shared all-tenants--hdi-repair-bindings--svm-repair-bindings hana:hdi-shared--hdi-delete-tenant TENANT_ID--svm-delete hana:hdi-shared TENANT_ID--hdi-delete-all--svm-delete hana:hdi-shared all-tenantsREMOVED
- srv: command
--server-start-debuggeris not needed anymore, this happens implicitly now with--server-debug.
CHANGED
- hdi: all binding manipulation commands have migrated to dedicated service-manager.
ADDED
-
svm: new dedicated command section for service-manager interactions (fixes #87).
-
svm: coding that creates or deletes bindings has some built-in retries for temporary outages.
-
cds: cds upgrade commands will download tenant deployment logs from cf app container.
FIXED
- svm:
--svm-repair-bindingscommand will now clean up bindings withready: false.
- srv: command
Features 1, Fixes 1
Notes
Added
- cds: offer an optional flag
--first-instancefor--cds-upgrade-allthat will cause all tenants to be processed by the first app instance only. this will make the upgrade less resource efficient, but resilient to auto-scaling. (fixes #104)
Fixed
- hdi: change internal logic to identify the relevant service both by offering name
hanaand plan namehdi-shared. this takes one more request, but it's much cleaner. before, we had implicitly assumed that no other service offering uses the plan namehdi-shared.
- cds: offer an optional flag
Fixes 2
Notes
Fixed
-
srv: fix debug command type mixture bug where app instance argument was ignored
-
srv: fix certificate dump command
-
Fixes 2
Notes
Fixed
-
cds: fix cds upgrade safety net for stalled upgrades
-
the whatwg-url override did not reach users, because it only works locally. this should be fixed by using shrinkwrap.
-
Removed 5, Features 2, Changed 1, Fixes 3
Notes
Removed
-
node v16 is no longer supported
-
hdi: remove legacy instance manager code
-
cds: remove legacy cds-mtx code
-
reg: remove registry job command
-
srv: remove server info command
Changed
- marked
--server-start-debuggeras not dangerous
Added
-
established baseline test coverage
-
hdi: list relations also gets the
--jsonflag
Fixed
-
override whatwg-url to v14. this fixes a
punycodeincompatibility warning when using the commonjs variant of node-fetch with node v21+. -
fix some internal context call queuing under parallel execution
-
fix console output for
--server-start-debuggerand--version
-
Features 3, Fixes 4
Notes
Added
-
reg/cds/hdi: the list and long list command gets a
--jsonflag to produce json output (fixes #86) -
uaa: all uaa commands get a
--jsonflag to produce json output -
code scanning with codeQL
Fixed
-
added node v22 to voters
-
better separation for test request-replay recording and playback
-
hdi: fixed logic for
readylist column, such that it's false if either instance or binding is not ready -
srv: better resilience for apps with no buildpack
-
Features 1, Fixes 2
Notes
Added
- reg: new
--only-staleand--only-failedfilter options for most registry commands. stale here means that the last changed on day is older than the invocation day.
Fixed
-
reg:
--registry-update-allis more resilient for failing calls -
better error message for users with access restrictions due to new btp space supporter role
- reg: new
Fixes 1
Notes
Fixed
- cds: upgrade now fails with a non-zero error code if an underlying task fails
Features 1, Changed 1, Fixes 1
Notes
Changed
- reg: registry service calls now happen concurrently where appropriate similar to hdi and cds interactions.
Added
-
added environment variables to control polling frequency for interactions:
environment variable effect MTX_CDS_FREQUENCYchange polling frequency milliseconds for server async job calls (default is 15000) MTX_REG_FREQUENCYchange polling frequency milliseconds for service async job calls (default is 15000)
Fixed
- reg: better error handling for registry updates
Fixes 1
Notes
Fixed
- reg: fixed a paging bug where most registry commands had an infinite loop if more than 200 tenants are handled. (reported by @cgaillydetaurines)
Features 1, Changed 2, Fixes 1
Notes
Changed
- cds: tenant upgrade now logs progress of individual tasks (
@sap/cds-mtxsuses one task per tenant) for every poll. the logs will look something like:GET https://my-server-mtx.cfapps.sap.hana.ondemand.com/-/cds/jobs/pollJob(ID='d2f560dc-542c-4091-a632-919c941210b4') 200 OK (163ms) job d2f560dc-542c-4091-a632-919c941210b4 is RUNNING with tasks queued/running: 5/ 5 | failed/finished: 0/ 0 GET https://my-server-mtx.cfapps.sap.hana.ondemand.com/-/cds/jobs/pollJob(ID='d2f560dc-542c-4091-a632-919c941210b4') 200 OK (98ms) job d2f560dc-542c-4091-a632-919c941210b4 is RUNNING with tasks queued/running: 4/ 5 | failed/finished: 0/ 1 GET https://my-server-mtx.cfapps.sap.hana.ondemand.com/-/cds/jobs/pollJob(ID='d2f560dc-542c-4091-a632-919c941210b4') 200 OK (98ms) job d2f560dc-542c-4091-a632-919c941210b4 is RUNNING with tasks queued/running: 1/ 4 | failed/finished: 0/ 5 ... - cds: tenant upgrade now tracks that task progress is still happening. if no progress is detected for 30 minutes, it will show the final status for each tenant and fail.
Added
- uaa: some arguments can be passed in via environment variable instead of the commandline. this behavior is expected
by Jenkins and Github Actions. for example, the following is now possible:
UAA_USERNAME=user UAA_PASSWORD=pass mtx --uaa-user
Fixed
- sensitive input arguments are now masked in the running console output
- cds: tenant upgrade now logs progress of individual tasks (
Changed 1, Fixes 1
Notes
Fixed
- removed npm
postinstallscript
Changed
- hdi: all accesses to service instances and bindings now filter for the service-plan
hdi-shared. this change allows the service-manager to be used with other services, e.g.redis-cache, alongside HANA containers.
- removed npm
Changed 1, Fixes 1
Notes
Fixed
- uaa:
uaasc,uaasp,uaasuerror handling and message with passcode url was improved.
Changed
- reg: improved
regland--registry-updatesupport for instances withserviceplan. (proposal and provisioning support by @andre68723)
- uaa:
Removed 1, Features 1, Changed 1, Fixes 1
Notes
Removed
- hdi:
--hdi-migrate-allcommand is removed. Instance manager has been deprecated for a while, so migrations to service-manager have happened by now.
Changed
- uaa:
uaas --uaa-servicecommand has been renamed touaasc --uaa-service-client. This fits better with the pattern of new commands.
Added
-
uaa: new flexible commands, so that either the regular server or a trusted services can be accessed as a technical client, as a user with passcode, or as a user with username and password. (fixes #62 by @soccermax)
uaac --uaa-client [TENANT] obtain uaa token for generic client uaap --uaa-passcode PASSCODE [TENANT] obtain uaa token for one-time passcode uaau --uaa-user USERNAME PASSWORD [TENANT] obtain uaa token for username password uaasc --uaa-service-client SERVICE [TENANT] obtain service token for generic client uaasp --uaa-service-passcode SERVICE PASSCODE [TENANT] obtain service token for one-time passcode uaasu --uaa-service-user SERVICE USERNAME PASSWORD [TENANT] obtain service token for username password
Fixed
- uaa: fix error with recommended passcode url when credential-type x509 is used. (fixes #59)
- hdi:
Changed 1
Notes
Changed
- cds: onboard now supports arbitrary subscription metadata https://cap-js-community.github.io/mtx-tool/cap-multitenancy/#onboard-tenant
Features 1, Changed 1
Notes
Added
- srv: new functionality to dump certificates from app server (pr #53) contributed by @kkoile
Changed
- srv: environment dump now exports VCAP_APPLICATION (pr #55) contributed by @kkoile
Features 2, Changed 1
Notes
Added
-
cds: added missing timestamp functionality (fixes #46)
-
cds,hdi: allow users to control request concurrency with env variables
MTX_CDS_CONCURRENCY,MTX_HDI_CONCURRENCY
Changed
- cds,hdi: changed default request concurrency from 5 to 10
-
Features 2, Fixes 1
Notes
Added
-
add response time to all logged requests
-
reg: enable access for registry instances with
serviceplan
Fixed
- srv: fix debug command for case where uaa is not configured
-
Features 1
Notes
Added
- reg: optional flag to skip unchanged dependencies for updates (fixes #38)
Features 1
Notes
Added
- out of the box support for deploy with confidence "uuid-versioned" app suffixes (fixes #35)
Fixes 3
Notes
Fixed
-
cds: auto undeploy for mtxs (#34)
-
hdi: allow hdi tenantIds to contain forward slash
-
uaa: make uaa service token work with user provided services
-
Features 1, Fixes 3
Notes
Added
- reg: enable update subscribe apps' url (fixes #25) contributed by @jiangxin0503
Fixed
-
homogenize single and multi tenant registry calls
-
change function signatures to avoid null parameters
-
reg: common enum for registry response states
Fixes 2
Notes
Fixed
-
documented
--forcearg for scripts (relates to #20) -
reg:
--registry-update-allnow retries tenants with previously failed updates
-
Features 1, Fixes 2
Notes
Added
- uaa: expose uaa userinfo (fixes #13)
Fixed
-
hdi: fix access problems for hdi containers with no associated tenant
-
srv: allow server-start-debugger to pass an app instance
Features 1, Fixes 1
Notes
Added
- first external release
Fixed
- cds: mtxs cds-upgrade error did not cause a non-zero error code
Features 1, Fixes 2
Notes
Added
- cds: support cds-mtxs
Fixed
-
better pagination for cf requests
-
reg: support enforced pagination in saas-registry api
Features 2, Fixes 2
Notes
Added
-
hdi: new command
--hdi-list-relationsto show mapping of service-manager containers to their bindings. makes it easy to see if some containers have too many or no binding, or conversely, if some bindings have no container. -
hdi: new command
--hdi-repair-bindingsto harmonize service-manager containers and bindings, so they are 1-to-1
Fixed
-
hdi: add service manager instance information to hdi long list
-
hdi: allow
--hdi-rebind-*to create new bindings with custom parameters
-
Fixes 2
Notes
Fixed
-
hdi: rebind all tenants with one command
-
hdi: hdi list instances and bindings separately
-
Changed 1
Notes
Changed
- rollback required engine to node v14 npm v6.14. Note: support for node v14 will end shortly after the official end of life 2023-04-30.
Features 1, Fixes 2
Notes
Added
- upgrade required engines to node v16 and npm v8
Fixed
-
cds: fixes cds-upgrade-all bug where number of tenants is below number of app instances
-
cds: update docs with tenant upgrade scaling info
Features 1, Fixes 2
Notes
Added
- cds: cds-upgrade-all is now spreads the load across app instances
Fixed
-
rework internal error handling
-
reorganize some internal reuse functions
Removed 1, Changed 2, Fixes 3
Notes
Removed
- various dedicated paas commands for reg/cds/hdi areas have been removed. provider subaccount should not be treated specially here.
Changed
-
uaa: combined logically similar commands:
uaapanduaasbecomeuaac,uaacanduaascbecomeuaap
-
srv:
srvdaapp_instance_id argument is now optional and defaults to zero
Fixed
-
regl/regll,cdsl/cdsll,hdil/hdillall allow filters -
uaa:
uaaccan handle both subdomain and tenant id -
updates for tests and documentation related to new command line interfaces
Fixes 5
Notes
Fixed
-
use cf oauth-token instead of cf curl for better testability
-
testing reg/cds/hdi with nock and anonymize playback files
-
better status reporting for failed requests
-
reg: make registry tenant update serial
-
uaa: allow uaa code to handle tenantId
-
Features 1, Fixes 1
Notes
Added
- cds: switch to manual control of auto undeploy
Fixed
- cds: handle some tenant upgrade errors better
Fixes 2
Notes
Fixed
-
hdi: work properly with multiple service-bindings to a single (hdi) service-instance
-
resilience with respect to missing cfRouteDomain
-
Features 2
Notes
Added
-
support for x509 enabled uaa bindings
-
allow readonly commands for apps with
-livesuffix
-
Features 1, Fixes 2
Notes
Added
- hdi: separate hdi tunnel information into runtime and design time user
Fixed
-
better error handling in cf curl
-
hdi: missing await for delete hdi tenant with service manager
Fixes 6
Notes
Fixed
-
change order in cf target log to api/org/space
-
cds: write cds upgrade buildlog
-
hdi: expect service-manager first
-
hdi: change order in hdil so that tenant_id is leading and gets sorted
-
hdi: enhance hdil with host information for multi-db environments
-
srv: bugfix for --server-debug-app
-
Features 2, Fixes 1
Notes
Added
-
switch to minimal engine node 12 for eslint 8
-
hdi: new command
--hdi-migrate-allto migrate hdi containers from instance-manager to service-manager
Fixed
- hdi: fix tablelist in
hdit*
-
Features 3, Fixes 2
Notes
Added
-
reg: new registry-update-all command
-
srv: new server-debug-app command
-
allow
--forceflag to override danger guard
Fixed
-
reg: add global account id to regl
-
tablelist with row numbers by default
-
Features 1, Fixes 1
Notes
Added
- add cds-onboard-tenant
Fixed
- proper handling when
err.messageis undefined
Features 1, Fixes 2
Notes
Added
- server start debugger feature
Fixed
-
uaa tests
-
tablelist handles sorting on columns where values are undefined
Features 2, Fixes 3
Notes
Added
-
allow uaa service-plan broker
-
registry-list and hdi-list with optional timestamps (new
--timeflag)
Fixed
-
show cf target with org/space/api before danger-guard
-
more user input validation for pass arguments and flag arguments
-
extend tests with pass argument consistency validation
-
Features 1, Fixes 2
Notes
Added
- documentation for service manager support
Fixed
-
reg: more relevant information extracted for regl
-
bugfix for uaad
Features 1, Fixes 1
Notes
Added
- hdi: service-manager support
Fixed
- uaa: more resilient way to get service tokens
Features 1, Fixes 2
Notes
Added
- reg: added registry update dependencies
Fixed
-
reg: rewrote registry offboard subscription for skipping multiple apps
-
spawned subprocesses get cleaned up on SIGINT/SIGTERM
Fixes 2
Notes
Fixed
-
better handling of the case when an app has no route
-
better text for hidden passwords
-
Features 1, Fixes 1
Notes
Added
- switch to CAPI v3 https://v3-apidocs.cloudfoundry.org/version/3.91.0/
Fixed
- add app-version check to cache
Fixes 2
Notes
Fixed
-
mark long-list commands as uncommon
-
cds: fix error-handling during cds upgrade polling
-
Features 1, Fixes 3
Notes
Added
- add flagArgs like
--decode(foruaa) and--reveal(forhdi)
Fixed
-
passwords are now confidential by default
-
decrease cache gap to 12 hours to enable a quicker discovery for changes
-
show partial outputs for sub-exec failures
- add flagArgs like
Features 1, Fixes 2
Notes
Added
- srv: add command to extract env information
Fixed
-
cds: increase polling time to 20sec
-
cds: fix instance for upgrades and use capitalized headers consistently
Features 1, Fixes 3
Notes
Added
- srv: add app-instance-index to openTunnel
Fixed
-
srv: get debugPort through /info and add instance information
-
srv: better handling of dynamic buildpacks from Github
-
srv: better handling for openTunnel without passing appInstanceIndex
Others providing
Compare all 7 on the Multitenancy page →- SAP Software-as-a-Service Provisioning serviceSAP Software-as-a-Service Provisioning serviceRegisters a multitenant application so that subaccounts can subscribe to it, and calls the application back on every subscribe and unsubscribe.sap official, btpRegisters a multitenant application for subaccount subscriptionsfrom BTP/BAIP
- com.sap.cds:cds-feature-mtcom.sap.cds:cds-feature-mtThe 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.sap official, capMultitenancy for CAP Java: tenant lifecycle and per-tenant containersfrom CAP
- com.sap.cds:cds-services-bomcom.sap.cds:cds-services-bomThe Maven bill of materials for CAP Java, pinning every com.sap.cds module in a release, from the API and core runtime to the Spring Boot starters and the CQN engine, to the same version.sap official, capMaven bill of materials pinning CAP Java module versionsfrom CAP
- @sap/cds-mtxs@sap/cds-mtxsMultitenancy, tenant provisioning and model extensibility for CAP.sap official, capMultitenancy, tenant provisioning and extensibility for CAPfrom CAP
- @sap/cds-oyster@sap/cds-oysterRuns tenant-specific extension code inside a WebAssembly sandbox, so a SaaS application can accept custom logic from a customer without running it unguarded.sap official, capWebAssembly sandbox for tenant-specific extension code in CAPfrom CAP
- @sap/cds@sap/cdsThe CAP Node.js runtime, which compiles the CDS model, serves the services declared in it, answers generic requests before any handler runs, and loads every cds-plugin.sap official, capCAP Node.js runtimefrom CAP
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
History in the atlas
- First seen.
For your agent
- Ref
artifact:cap-js-community-mtx-tool- JSON
- /artifacts/cap-js-community-mtx-tool.json
- MCP
- Connecting an agent