Changelog 2026
Open Source Changelogs
For repositories and plugins that are open source, please check out the respective changelogs in the cap-js organization and the CAP Community.
February 2026
Added
- [cds-dk@9.7.0]
cds debugis now supported for Kubernetes/Kyma deployments. - [cds-dk@9.7.0]
cds init --nodejsas a shortcut forcds init --add nodejs. - [cds-dk@9.7.0] Support for express 5 (in addition to express 4).
- [cds-dk@9.7.0]
cds deploy --to hananow supports--outto specify the output directory for generated files. - [cds-dk@9.7.0]
cds mock <service>as a shortcut forcds serve --mocked --project <service> --in-memory? --port 0. - [cds-dk@9.7.0]
cds add iasadds a URL for local approuter testing toredirect-urisif approuter is configured. - [cds.java@4.7.0] Added resilient connection handling in
cds-feature-kafkafor the case that the Kafka cluster is not available when a microservice starts. - [cds.java@4.7.0] Improved handling of
@assertand dynamic@mandatory/@inapplicableon managed associations. - [cds.java@4.7.0] Added support for
publishPrefixandsubscribePrefixin configuration forcds-feature-kafka. - [cds.java@4.7.0] Added support for Event Hub integration via
mvn cds:add -Dfeature=EVENT_HUB - [cds.java@4.7.0] Reduced database lock conflicts when processing messages of unordered outboxes by skipping locked entries.
- [cds4j@4.7.0] Allow using
$nowas default value for elements of typeDate. - [cds4j@4.7.0] Support function
ceilas synonymn forceiling. - [cds4j@4.7.0] Allow supplying foreign-key values for path-based inserts via the data entries.
- [cds4j@4.7.0] Draft-enclosed associations now retain
@cascadeannotations. - [cds4j@4.7.0] SAP HANA, PostgreSQL and H2: Support
Select.lock(mode, CqnLock.Wait.SKIP_LOCKED), which returns immediately and yields only rows that are not currently locked (non-blocking). - [cds@9.7.0] Support for express 5 (in addition to express 4)
- [cds@9.7.0] New config option
cds.requires.db.datato configure source folders for initial data and test data CSV files - [cds@9.7.0] Enterprise Messaging now caches access tokens to support high-throughput message processing from Event Mesh
- [cds@9.7.0] Automatically add
@Common.DraftRoot.NewActionfor each draft-enabled entity duringcompile.for.odataviacds.fiori.direct_crud=true - [cds@9.7.0] Support for
nullvalue in@odata.bind - [cds@9.7.0] Validation of flow annotations at compile step
Changed
- [cds-dk@9.7.0]
cds versionreceived major enhancements: It's now fully based on thenpm lscommand and always prints a tabular output. Also some new flags were added; checkcds version --helpfor details. - [cds-dk@9.7.0]
cds deploy --to k8sincreased the timeout to wait for the HDI container creation from 120 to 180 seconds. - [cds-dk@9.7.0]
cds addfacets now abort when executed in a folder that is neither a Node.js nor a Java project. - [cds-dk@9.7.0]
cds add lintnow also adds the .java extension to the files that are linted within VSCode. - [cds-dk@9.7.0]
cds initnow restricts project names to 64 characters maximum, requiring them to start with an alphanumeric character or_, and contain only alphanumeric characters,_, and-. - [cds-dk@9.7.0]
cds importnow generates an on condition for associations if the navigation property in an imported OData v4 service has a referential constraint. - [cds-dk@9.7.0]
cds builddoes not ignore wildcarded folders likeapp/*any more. - [cds-dk@9.7.0]
cds env --resolve-bindings/-balso considers local service bindings. - [cds.java@4.7.0]
Updatestatements triggered fromdraftActivatenow include a key filter in the statement'sref. - [cds.java@4.7.0]
cds-feature-flownow rejects the statements for flow-annotated actions without full key in the infix filter. - [cds@9.7.0] Colors are enabled by default in GitHub Actions workflows
- [cds@9.7.0]
queue: Manually updatelastAttemptTimestampof outbox messages (instead of relying on@cds.on.update: $now) - [cds@9.7.0]
expressis no longer a peer dependency of@sap/cdsbut a regular one. Applications that want to pin it or require it in their custom code, should declare the dependency on their own. - [cds@9.7.0]
hcqlresponse format:{ data: [], errors: [] }
Fixed
- [cds-dk@9.7.0]
cds add sqlite --for productionadds@cap-js/sqlitetodependencies. - [cds-dk@9.7.0]
cds build --wsfixes a race condition. - [cds-dk@9.7.0]
cds buildnow places thei18nfolder in the generated output in nested locations. - [cds-dk@9.7.0]
cds build --for mtx-sidecarloads CAP plugins from the MTX sidecar instead of the main app for generating the sidecar CSN. - [cds-dk@9.7.0]
cds add iasuses a matchingIASDependencyNamefor the application content deployer. - [cds-dk@9.7.0]
cds add iasuses a more genericredirect-urispattern. - [cds-dk@9.7.0]
cds importno longer generates a managed association for navigation properties of imported OData v4 services if the foreign key, the managed association would generate, already exists. - [cds-dk@9.7.0]
cds add multitenancyfor Java correctly creates apackage-lock.jsonin mtx/sidecar. - [cds-dk@9.7.0]
cds add xsuaaworks properly when executed aftercds add workzone. - [cds-dk@8.9.13] CVE-2025-15284: update
expressto fix vulnerability withqs<6.14.1 - [cds.java@4.7.0] Avoid extra parenthesis in
filterpredicate of$applyin remote OData. - [cds.java@4.7.0] Reduced the number of database calls to set session variables (on Postgres)
- [cds.java@4.7.0] Fixed a bug, that caused skipping CQN Predicate
FALSEin remote OData. - [cds.java@4.7.0] Fixed a bug, causing duplicated draft messages in case of entities with compound keys.
- [cds.java@4.7.0] Fixed a bug, causing duplicated draft messages in case of String-based targets.
- [cds.java@4.7.0] Fixed a bug, causing HTTP status
500instead of400(not supported) when setting theContent-Type: application/pdfheader for OData v4 action. - [cds4j@4.7.0] Fixed exception on averaging over associations when using the static query builder API.
- [cds4j@4.7.0] Fixed refs with
$selfin exists predicates. - [cds4j@4.7.0] Fixed "No element found" exception on statements using match predicates (exists, any, all) in subqueries.
- [cds4j@4.7.0] Fixed projection resolution in results:
- for null values when paths are aliased by the first segment.
- for paths whose last segment equals another element in the projection.
- [cds4j@4.7.0] Fixed a bug in recursive hierarchy on HANA, causing sporadic incorrect sort order of elements.
- [cds4j@4.7.0] Fixed an exception when using
existspredicates in runtime views. - [cds@9.7.0] Correctly respond with status
404when@cds.api.ignoreannotated action is requested - [cds@9.7.0] Ensure plugin debug emitted with
DEBUG=all - [cds@9.7.0] Prevent app crash when
JSON.parseof operation parameters fails - [cds@9.7.0] Generate correct UI annotations for Status Transition Flows when building and compiling
- [cds@9.7.0] Remote services: Prefer
cds.context.user?.authInfo?.token?.jwtover JWT in HTTP header of incoming request - [cds@9.7.0] References to child elements in
@Common.Textannotations will now be checked. The reference will not be included in@cds.search, in case ...- [cds@9.7.0] ... the reference can not be found in the annotated entity's associations
- [cds@9.7.0] ... the referenced entity is annotated with
@cds.persistence.skip - [cds@9.7.0] ... the referenced field does not exist in the referenced entity
- [cds@9.7.0] References to children of children will be ignored.
- [cds@9.7.0] OData parser: Ignore superfluous brackets
- [cds@9.7.0] Prevent app crash in case of
req.reject()during draft activate triggered via OData batch - [cds@9.7.0]
cds minifyno longer removes services if their actions are kept - [cds@9.7.0] Better error when subquery can't be resolved for the current service
- [cds@9.7.0] Flows: Record transition to default value on
INSERT/UPSERT - [cds@9.7.0] Error response properties of OData batch subrequests are now formatted identically to properties in single OData error responses
- [cds@9.7.0] Prevent
@Common.numericSeverityfrom appearing in persistent draft messages (in addition to the correct propertynumericSeverity)
Removed
- [cds@9.7.0]
@cds.on.update: $nowfromcds.outbox.Messages.lastAttemptTimestamp
January 2026
Added
- [vscode-cds@9.7.0] Multi-Cursor support for range selection
- [vscode-cds@9.7.0] Folding range for consecutive
usingstatements - [vscode-cds@9.6.3] Progress reporting for persistency
- [vscode-cds@9.6.0] (Experimental) persistency of where-used index This feature allows to persist/restore where-used indexes on a per-file basis to speed up indexing of large projects with many root models. It is currently experimental and must be enabled via user setting
cds.workspace.persistency.enabled. There are a couple of user settings to fine tune the behaviorcds.workspace.persistency.enabled: general enablement. All other settings have no effect if this is disabled.cds.workspace.persistency.persistAfterSave: when a file is saved its index is persisted.cds.workspace.persistency.persistAfterCompile: when (closed) CDS files are compiled (also as part of another model compilation) their index gets persisted.cds.workspace.persistency.restoreBeforeCompile: when CDS files are part of a compilation their persisted index is used if matchingcds.workspace.persistency.restoreAfterStartup: restore all persisted indexes after start-upcds.workspace.persistency.indexAllAfterStartup: index all files not yet persistedcds.workspace.persistency.garbageCollectOrphanedIndexesAfterStartup: index files are written per content. Delete index files with outdated content after start-upcds.workspace.persistency.garbageCollectOrphanedIndexesAfterNSaves: Delete index files with outdated content after specified number ofSaverequestscds.workspace.persistency.reindexAfterCompileIfRestored: If files are part of a compilation and a matching index exist, still index again.
- [cds-compiler@6.7.0] to.hdi: Support .hdbprojectionview for Data Product Production
- [cds-mtxs@3.7.0] Immediate deletion of TMS HANA tenants can be enabled with configuration
cds.requires['cds.xt.DeploymentService'].hdi.create.immediate_deletion = true(combined withcds.requires['cds.xt.DeploymentService'].hdi.create.cleanup_hana_tenants = true) - [cds-mtxs@3.7.0] Container credential determination with TMS v2 is accelerated by using
$top=1for the container query.
Changed
- [cds-dk@9.6.1] All commands use colored logs in GitHub Actions workflows by default.
- [vscode-cds@9.7.0] Persistency of where-used index is now beta
- [vscode-cds@9.7.0] User setting categories in settings UI
- [cds-compiler@6.7.0] compiler: Change internal processing sequence (extensions and entity generation) for potentially upcoming compiler features; messages for erroneous models might differ slightly
- [cds-compiler@6.7.0] for.odata/to.edm(x): Enhancements for Fiori Tree Views: support managed associations with explicit foreign keys, raise messages when the
@hierarchyannotation cannot be applied. - [cds-mtxs@3.7.0] MTXS is now using fewer requests when getting container credentials from HANA TMS v2.
- [cds-mtxs@3.6.2] Maximum chunk size when retrieving container bindings from service-manager is reduced to 1000.
Fixed
- [cds-dk@9.6.1] CVE-2025-15284: update
expressto fix vulnerability withqs<6.14.1. - [cds-dk@9.6.1]
cds watchis more efficient on Linux with respect toinotifyevents. This fixes some crash and stall situations on Linux, especially in SAP Business Application Studio where resources are shared. - [cds-dk@9.6.1]
cds build --productioncorrectly includesmessage.propertiesfrom i18n files provided by CAP plugins. - [cds-dk@9.6.1]
cds add samplefixes a warning about unused imports in app/common.cds. - [cds-dk@9.6.1]
cds initfixes some rare argument parsing errors. - [vscode-cds@9.7.0] Show
CAP Release Notesautomatically only if timestamp of page changed. - [vscode-cds@9.7.0] Formatter: align element names after
keykeyword only - [vscode-cds@9.6.3] Some minor fixes
- [vscode-cds@9.6.0] Syntax highlighting in bracketed expressions
- [cds-compiler@6.7.1] compiler: Properly accept aspects as composition targets in an
extend(fixes regression introduced with v6.7.0) - [cds-compiler@6.7.0] to.sql: portable hana functions
*_betweenwith dates - [cds-compiler@6.6.2] for.effective: Don't resolve backlinks in aspects
- [cds@9.6.4]
queue: Too eager removal of control data from deserialized task - [cds@9.6.4] Stop overriding existing
cds.requires.[service].credentialsconfigurations using values from.cds-services.json - [cds@9.6.3]
queue: Exactly-once guarantee only withlegacyLocking: false - [cds@9.6.2] Consider
@mandatory.messagefor the error message, when a mandatory action / function parameter is not provided - [cds@9.6.2] Respond with error code
400when receiving requests that useany()/all()filters on an association to one - [cds@9.6.2] Error message of unknown property check will no longer include
undefinedto identify structs without a name - [cds@9.6.2]
enterprise-messaging: Type error in check for unofficial XSUAA fallback - [cds@9.6.2] Status Transition Flows: Exclusions for multiple projections
- [cds-mtxs@3.7.0] More stable deletion of HDI container instances via SAP BTP Service Manager.
- [cds-mtxs@3.7.0] Extension validation no longer counts field type changes as new fields.
- [cds-mtxs@3.7.0] Getting a task from the job service no returns
404for non-existing tasks. - [cds-mtxs@3.7.0] In combination with
@cap-js/hanaversion 2.6.0 pool connection errors with invalid database credentials are handled more gracefully. - [cds-mtxs@3.6.2] Command
cds-mtxnow correctly passes the services when triggering the 'served' event. - [cds-mtxs@3.6.2] HDI deployment log files are now safely written in case of process terminations.
- [cds-mtxs@3.6.2] Etag returned by
/-/cds/model-provider/getCsnnow properly reflects model changes again. - [cds-mtxs@3.6.2] Reading extensions using
/-/cds/extensibility/Extensionsnow also works with an outdated schema of the extension table.
Removed
- [vscode-cds@9.6.0] User setting
cds.workspace.debounceFastChanges, now always enabled