CLICLItypeA command you run, rather than a dependency you import.See every one →What this type is →by a community orgby a community orgoriginPublished by a community organisation, so it outlives any one maintainer.See every one →

@cap-js-community/mtx-tool

CLI for operating multitenant CAP applications — inspecting, upgrading and repairing tenants across a landscape.

Facts

Latestv0.14.0ReleasedLast pushLicenceApache-2.0

Where it sits

Lives in
Provides
MultitenancyCAPMultitenancycapabilityServing 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.
Flavors
Node.jsfrom its runtime

Who is behind it

cap-js-communitycap-js-communityOrganisationMaintains this
In the atlas: maintains 10
@cap-js-community
maintainerNils HirsekornPersonContributes to this
In the atlas: contributes to 2
@Kkoile
Richard LindnerPersonContributes to this
In the atlas: contributes to 3
@rlindner81
Sebastian WolfPersonContributes to this
In the atlas: contributes to 22
@SebastianWolf-SAP
Max GruenfelderPersonContributes to this
In the atlas: contributes to 7
@soccermax
Stefan HenkePersonContributes to this
In the atlas: contributes to 6
@StefanHenke
5 contributors

What it declares

Every artifact

Type
CLI
Origin
By a community org
Runtime
Node.js

As a CLI

Distributed through
npm

Connections1

@cap-js-community/mtx-tool connections@cap-js-community/mtx-toolPROVIDES→ provides1provides authoredMultitenancy

Install

npm add @cap-js-community/mtx-tool

Derived from the package name. No recipe recorded; the README has the configuration.

README

quoted from cap-js-community/mtx-tool under Apache-2.0, read
cap-js-community/mtx-tool/README.mdOn GitHub

MTX Tool

npm version monthly downloads REUSE status Main CI

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

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.

Apache-2.0, read

History

Latest

v0.14.1

Features 1

Notes
ADDED
  • svm: new svmp / --svm-params command that lists service instances with their provisioning parameters.
  1. v0.14.0

    Features 1, Changed 1, Fixes 1

    Notes
    CHANGED
    ADDED
    • svm: new --svm-restart, --svm-restart-skip commands 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-After instead.
  2. v0.13.0

    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 commandnew 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:

    1. rolling restart — converge apps onto the most-recent binding.
    2. --svm-make-bindings-single — prune to one binding per instance.
    3. --svm-make-bindings-double — add the new binding.
    4. rolling restart — apps switch to the new binding.
    5. --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 bundleDependencies instead of shrinkwrap to ship the whatwg-url override to users. shrinkwrap is no longer honored as of npm v12.

    • svm: reworked --svm-repair-bindings to --svm-make-bindings-single and --svm-fresh-bindings to --svm-make-bindings-double. both are now idempotent and have the SERVICE_PLAN TENANT_ID calling args, making them consistent with other svm commands.

    • svm: --svm-repair-bindings, --svm-fresh-bindings, and --svm-refresh-bindings are 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/subscriptions and /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.

  3. v0.12.0

    Changed 4

    Notes
    CHANGED
    • core: service credentials are now retrieved through the cloud-foundry service_credential_bindings API instead of reading VCAP_SERVICES from the app's environment. this is a meaningful step towards supporting service-keys in addition to app bindings. credential lookups no longer depend on whether VCAP_SERVICES is provided inline or via file.

    • srv: --server-env now handles file-based VCAP_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-list now reuse the persisted app-info cache.

  4. v0.11.2

    Features 1, Fixes 2

    Notes
    ADDED
    • svm: add client headers Client-Name and Client-Version for all calls to service-manager.
    FIXED
    • cds: list filter for subdomain works again.

    • cds: works with xsuaa broker plan again (fixes #161).

  5. v0.11.1

    Features 2, Fixes 1

    Notes
    ADDED
    • svm: new command --svm-fresh-bindings to 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-bindings for cleanup.

    • svm: new bindings created via --svm-fresh-bindings, --svm-refresh-bindings, or --svm-repair-bindings will have a managing_client_lib label if their associated instances have the offering hana and plan hdi-shared. this specific label was expected by cap java until recently.

    FIXED
    • svm: new bindings created via --svm-fresh-bindings or --svm-refresh-bindings will combine the labels from the associated instance and from the previous binding.
  6. v0.11.0

    Changed 2, Fixes 1

    Notes

    ⚠️ This release is potentially disruptive. The configured app used for cds commands now needs to be bound to an auth service: both xsuaa (UAA) and identity (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-mtxs endpoints are protected by a custom mTLS middleware.

    FIXED
    • core: move from deprecated url.parse() to silly WHATWG API.
  7. v0.10.3

    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 reg commands will work with either subscription manager or saas registry or both depending on what is configured with set (fixes #100).

    • reg: new command --registry-migrate to 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 key sap.custom.

    FIXED
    • cds: cdsl will correctly display values for tenants held in either saas registry or subscription manager (fixes #127).
  8. v0.10.2

    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_id label, which is expected by @sap/cds-mtxs.

    ADDED
    • [experimental] set env variable MTX_CORRELATION=1 to log correlation information for service responses. we will show the first matching header of: X-CorrelationId, X-Correlation-Id, X-Vcap-Request-Id.
  9. v0.10.1

    Fixes 1

    Notes
    FIXED
    • svm: --svm-repair-bindings and --svm-refresh-bindings will ignore instances with ready: false.
  10. v0.10.0dated in the atlas

    Removed 1, Features 3, Changed 1, Fixes 1

    Notes

    ⚠️ This release is potentially disruptive. We carved out the service-manager interactions from hdi into a new section svm. Among other things, this allows us to handle credentials rotation for all managed service plans consistently, not just for HANA containers.

    deprecated hdi commandcorresponding 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-tenants
    REMOVED
    • srv: command --server-start-debugger is 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-bindings command will now clean up bindings with ready: false.
  11. v0.9.4

    Features 1, Fixes 1

    Notes
    Added
    • cds: offer an optional flag --first-instance for --cds-upgrade-all that 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 hana and plan name hdi-shared. this takes one more request, but it's much cleaner. before, we had implicitly assumed that no other service offering uses the plan name hdi-shared.
  12. v0.9.3

    Fixes 2

    Notes
    Fixed
    • srv: fix debug command type mixture bug where app instance argument was ignored

    • srv: fix certificate dump command

  13. v0.9.2

    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.

  14. v0.9.0dated in the atlas

    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-debugger as not dangerous
    Added
    • established baseline test coverage

    • hdi: list relations also gets the --json flag

    Fixed
    • override whatwg-url to v14. this fixes a punycode incompatibility 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-debugger and --version

  15. v0.8.8

    Features 3, Fixes 4

    Notes
    Added
    • reg/cds/hdi: the list and long list command gets a --json flag to produce json output (fixes #86)

    • uaa: all uaa commands get a --json flag 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 ready list column, such that it's false if either instance or binding is not ready

    • srv: better resilience for apps with no buildpack

  16. v0.8.7

    Features 1, Fixes 2

    Notes
    Added
    • reg: new --only-stale and --only-failed filter options for most registry commands. stale here means that the last changed on day is older than the invocation day.
    Fixed
    • reg: --registry-update-all is more resilient for failing calls

    • better error message for users with access restrictions due to new btp space supporter role

  17. v0.8.6

    Fixes 1

    Notes
    Fixed
    • cds: upgrade now fails with a non-zero error code if an underlying task fails
  18. v0.8.5

    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 variableeffect
      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
  19. v0.8.4

    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)
  20. v0.8.3

    Features 1, Changed 2, Fixes 1

    Notes
    Changed
    • cds: tenant upgrade now logs progress of individual tasks (@sap/cds-mtxs uses 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
  21. v0.8.2

    Changed 1, Fixes 1

    Notes
    Fixed
    • removed npm postinstall script
    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.
  22. v0.8.1

    Changed 1, Fixes 1

    Notes
    Fixed
    • uaa: uaasc, uaasp, uaasu error handling and message with passcode url was improved.
    Changed
    • reg: improved regl and --registry-update support for instances with service plan. (proposal and provisioning support by @andre68723)
  23. v0.8.0dated in the atlas

    Removed 1, Features 1, Changed 1, Fixes 1

    Notes
    Removed
    • hdi: --hdi-migrate-all command is removed. Instance manager has been deprecated for a while, so migrations to service-manager have happened by now.
    Changed
    • uaa: uaas --uaa-service command has been renamed to uaasc --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)
  24. v0.7.17

    Changed 1

    Notes
    Changed
  25. v0.7.16

    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
  26. v0.7.15

    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
  27. v0.7.14

    Features 2, Fixes 1

    Notes
    Added
    • add response time to all logged requests

    • reg: enable access for registry instances with service plan

    Fixed
    • srv: fix debug command for case where uaa is not configured
  28. v0.7.13

    Features 1

    Notes
    Added
    • reg: optional flag to skip unchanged dependencies for updates (fixes #38)
  29. v0.7.12

    Features 1

    Notes
    Added
    • out of the box support for deploy with confidence "uuid-versioned" app suffixes (fixes #35)
  30. v0.7.11

    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

  31. v0.7.10

    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

  32. v0.7.9

    Fixes 2

    Notes
    Fixed
    • respect uaa-token expiry (fixes #22)

    • code cleanup

  33. v0.7.8

    Fixes 2

    Notes
    Fixed
    • documented --force arg for scripts (relates to #20)

    • reg: --registry-update-all now retries tenants with previously failed updates

  34. v0.7.7

    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

  35. v0.7.6

    Features 1, Fixes 1

    Notes
    Added
    • first external release
    Fixed
    • cds: mtxs cds-upgrade error did not cause a non-zero error code
  36. v0.7.5

    Features 1, Fixes 2

    Notes
    Added
    • cds: support cds-mtxs
    Fixed
    • better pagination for cf requests

    • reg: support enforced pagination in saas-registry api

  37. v0.7.4

    Features 2, Fixes 2

    Notes
    Added
    • hdi: new command --hdi-list-relations to 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-bindings to 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

  38. v0.7.3

    Fixes 2

    Notes
    Fixed
    • hdi: rebind all tenants with one command

    • hdi: hdi list instances and bindings separately

  39. v0.7.2

    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.
  40. v0.7.1

    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

  41. v0.6.2

    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

  42. v0.6.1

    Fixes 1

    Notes
    Fixed
    • hana cloud cannot tunnel warning for combination of hditt and port 443
  43. v0.6.0dated in the atlas

    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:

      • uaap and uaas become uaac,
      • uaac and uaasc become uaap
    • srv: srvda app_instance_id argument is now optional and defaults to zero

    Fixed
    • regl/regll, cdsl/cdsll, hdil/hdill all allow filters

    • uaa: uaac can handle both subdomain and tenant id

    • updates for tests and documentation related to new command line interfaces

  44. v0.5.49

    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

  45. v0.5.48

    Features 1

    Notes
    Added
    • rename repo to btp-tools-mtx
  46. v0.5.47

    Features 1, Fixes 1

    Notes
    Added
    • cds: switch to manual control of auto undeploy
    Fixed
    • cds: handle some tenant upgrade errors better
  47. v0.5.45

    Fixes 1

    Notes
    Fixed
    • uaa: allow 32-char passcode length
  48. v0.5.44

    Fixes 1

    Notes
    Fixed
    • hdi: bugfix in hditp / hditt where tunnel is not opened correctly
  49. v0.5.43

    Fixes 2

    Notes
    Fixed
    • hdi: work properly with multiple service-bindings to a single (hdi) service-instance

    • resilience with respect to missing cfRouteDomain

  50. v0.5.42

    Features 2

    Notes
    Added
    • support for x509 enabled uaa bindings

    • allow readonly commands for apps with -live suffix

  51. v0.5.41

    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

  52. v0.5.40

    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

  53. v0.5.39

    Features 1

    Notes
    Added
    • support for blue-green projects
  54. v0.5.38

    Features 2, Fixes 1

    Notes
    Added
    • switch to minimal engine node 12 for eslint 8

    • hdi: new command --hdi-migrate-all to migrate hdi containers from instance-manager to service-manager

    Fixed
    • hdi: fix tablelist in hdit*
  55. v0.5.37

    Features 3, Fixes 2

    Notes
    Added
    • reg: new registry-update-all command

    • srv: new server-debug-app command

    • allow --force flag to override danger guard

    Fixed
    • reg: add global account id to regl

    • tablelist with row numbers by default

  56. v0.5.36

    Features 1, Fixes 1

    Notes
    Added
    • add cds-onboard-tenant
    Fixed
    • proper handling when err.message is undefined
  57. v0.5.35

    Features 1, Fixes 2

    Notes
    Added
    • server start debugger feature
    Fixed
    • uaa tests

    • tablelist handles sorting on columns where values are undefined

  58. v0.5.34

    Features 2, Fixes 3

    Notes
    Added
    • allow uaa service-plan broker

    • registry-list and hdi-list with optional timestamps (new --time flag)

    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

  59. v0.5.33

    Fixes 1

    Notes
    Fixed
    • hdi: can now rebind hdi-container for credential rotation
  60. v0.5.32

    Features 1, Fixes 2

    Notes
    Added
    • documentation for service manager support
    Fixed
    • reg: more relevant information extracted for regl

    • bugfix for uaad

  61. v0.5.31

    Features 1, Fixes 1

    Notes
    Added
    • hdi: service-manager support
    Fixed
    • uaa: more resilient way to get service tokens
  62. v0.5.30

    Features 1

    Notes
    Added
    • moved repo to cds-community
  63. v0.5.29

    Features 1

    Notes
    Added
    • uaa: added saas service token feature
  64. v0.5.28

    Fixes 1

    Notes
    Fixed
    • hdi: automatically use next free sid port for hdi tunnel
  65. v0.5.27

    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

  66. v0.5.26

    Fixes 2

    Notes
    Fixed
    • better handling of the case when an app has no route

    • better text for hidden passwords

  67. v0.5.25

    Fixes 1

    Notes
    Fixed
    • fix regression for buildpack location in CF V3 API
  68. v0.5.24

    Features 1, Fixes 1

    Notes
    Added
    Fixed
    • add app-version check to cache
  69. v0.5.23

    Fixes 1

    Notes
    Fixed
    • cds: second pass on error-handling for cds-upgrade
  70. v0.5.22

    Fixes 2

    Notes
    Fixed
    • mark long-list commands as uncommon

    • cds: fix error-handling during cds upgrade polling

  71. v0.5.21

    Features 1, Fixes 3

    Notes
    Added
    • add flagArgs like --decode (for uaa) and --reveal (for hdi)
    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

  72. v0.5.20

    Fixes 1

    Notes
    Fixed
    • cds: more resilient upgrade-tenant
  73. v0.5.19

    Fixes 1

    Notes
    Fixed
    • cds: failing upgrade-tenant should cause a non-zero error code
  74. v0.5.18

    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

  75. v0.5.17

    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

  76. v0.5.16

    Features 1

    Notes
    Added
    • initial release
275downloads per week, npm
Weekly downloads for @cap-js-community/mtx-tool26 complete calendar weeks from 2026-04-20 to 2026-10-18; the latest total is 275.20 Apr – 26 Apr: 48427 Apr – 3 May: 4494 May – 10 May: 40511 May – 17 May: 61318 May – 24 May: 61925 May – 31 May: 5331 Jun – 7 Jun: 5208 Jun – 14 Jun: 1,17615 Jun – 21 Jun: 72222 Jun – 28 Jun: 1,03829 Jun – 5 Jul: 6236 Jul – 12 Jul: 47113 Jul – 19 Jul: 57820 Jul – 26 Jul: 82527 Jul – 2 Aug: 6713 Aug – 9 Aug: 66810 Aug – 16 Aug: 44517 Aug – 23 Aug: 43924 Aug – 30 Aug: 54031 Aug – 6 Sept: 3887 Sept – 13 Sept: 48314 Sept – 20 Sept: 42621 Sept – 27 Sept: 72628 Sept – 4 Oct: 5955 Oct – 11 Oct: 34712 Oct – 18 Oct: 275
Multitenancy
  1. SAP Software-as-a-Service Provisioning serviceRegisters a multitenant application for subaccount subscriptions
  2. com.sap.cds:cds-feature-mtMultitenancy for CAP Java: tenant lifecycle and per-tenant containers
  3. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versions
  4. @sap/cds-mtxsMultitenancy, tenant provisioning and extensibility for CAP
  5. @sap/cds-oysterWebAssembly sandbox for tenant-specific extension code in CAP
  6. @sap/cdsCAP Node.js runtime

Details

Sources5
npm registrydiscovered herechecked
GitHub APIdiscovered here, cap-js-communitychecked
npm registry, @cap-js-community/mtx-toolversion, releases, installschecked
github.com/git+https://github.com/cap-js-community/mtx-tool.gittree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
runtimesnode
latestv0.14.0
first release
releases and cadence37, ~36d median
discovered vianpm registry, GitHub API · cap-js-community
first seen in the atlas
ecosystem and domaincap, operations-and-runtime
Contributors5

From the repository’s contributor list, .

History in the atlas1
  1. First seen.
For your agent
Ref
artifact:cap-js-community-mtx-tool
JSON
/artifacts/cap-js-community-mtx-tool.json
MCP
Connecting an agent