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.
September 2026
Added
- [cds-dk@10.1.0]
cds add hana-serverlesssets up SAP HANA Cloud serverless as the database, provisioning one HDI container per tenant through the serverless Tenant API. - [cds-dk@10.1.0]
cds add ainow supports a--planoption to set the AI Core service plan inmta.yaml(default:standard). - [cds-dk@10.1.0]
cds add datanow supports a--keys-onlyoption that, together with--records, fills only key columns in the generated CSV files and leaves all other columns empty. - [cds-dk@10.1.0]
cds add datanow generates values forBinary/LargeBinary(base64) andVector(JSON array) elements instead of leaving them empty. - [cds-dk@10.1.0]
cds add datanow supports a--composition-recordsoption to control how many records are generated per to-many composition (default 2). - [cds-dk@10.1.0]
cds addnow accepts space-separated features in addition to comma-separated, e.g.cds add xsuaa hana nodejs. - [cds-dk@10.1.0]
cds add extensibilitynow adds anExtensionDeveloperrole collection tomta.yaml(suffixed${org}-${space}) andchart/values.yaml(suffixed with the Kyma namespace), so it can be assigned immediately after deployment. - [cds-dk@10.1.0]
cds versionnow also shows the npm version and executable path. - [vscode-cds@10.1.0] Formatting: new option
maxAlignmentWhitespaceto disable an alignment that would leave more than the configured number of blanks before any of its members, counting the mandatory separating blank - [vscode-cds@10.1.0] User setting to compile as many model files as possible in one compilation. To enable set
cds.workspace.compileFilesSeparatelytofalse. This will boost performance for many larger models. In caseduplicate definitiondiagnostics appear check the files involved, and in case some files should not be picked up, add the glob patterns tocds.workspace.additionalIgnorePatterns(as workspace setting). - [cds.java@5.1.0]
$user.<attr>references in@restrictannotations now also resolve attributes fromUserInfo.getAdditionalAttributes()(e.g. JWT claims likeemail,givenName). Regular attributes take precedence over additional attributes. - [cds.java@5.1.0] Propagation of the XSUAA subdomain (based on the attribute
subDomainfrom theUserInfo) is now configurable, as it's not required by CloudSDK, anymore. Setcds.cloudsdk.propagateXsuaaSubdomaintofalseto omit propagation. Default value istrueto keep the previous behavior. - [cds.java@5.1.0] The
watchgoal of thecds-maven-pluginprovides a new fast mode which can be enabled with property-Dfast. - [cds.java@5.1.0] The SPII integration (ie.
cds-feature-ucl) now also supports updates of SPII integrations. - [cds.java@5.1.0] In development mode, OpenTelemetry request traces originating from CAP are logged as indented timing trees to the console with elapsed times, showcasing the same information published to Cloud Logging in production. The feature can be explicity disabled by setting
cds.telemetry.dev-output.enabled: false. - [cds.java@5.1.0] Setting the logger group
com.sap.cds.telemetrytoDEBUGnow enables all of CAP's OpenTelemetry spans. - [cds.java@5.1.0] Option
generateClassesof thegenerategoal ofcds-maven-plugingenerates static implementations for event contexts and their inner interfaces. - [cds.java@5.1.0] Serveral goals of the
cds-maven-pluginare thread-safe and can be executed in parallel, e.g. with Maven Daemon. - [cds.java@5.1.0] The query tool of the
cds-adapter-mcpsupports distinct in selects. - [cds.java@5.1.0] HCQL V2: Adapter and remote HCQL client support
$countin the response. - [cds.java@5.1.0] Support OData v4.01 Json format for Batch Requests and Responses
- [cds.java@5.1.0] Implicit sorting: search request without an explicit
orderbyare now automatically sorted by relevance. - [cds.java@5.1.0] Type handling in multitenant database credentials is now more robust.
- [cds4j@5.1.0] The
CqnContainmentTestnow supports the new modeLIKEto filter values using an SQL LIKE pattern. - [cds4j@5.1.0] Method
Expand.excluding(...)to exclude elements from an expand. - [cds4j@5.1.0]
UserContextnow supports a unifiedMap<String, Object>attribute map viaattributes(Map)/attribute(String), enabling custom user attributes (e.g. from JWT claims) to be resolved in managed aspects ($user.<attr>). - [cds4j@5.1.0] Added
$scoreref to get the score value of a fuzzy search result on the select list and in orderBy. (beta) - [cds4j@5.1.0] The default sort order of a hierarchy view is defined by
@cds.default.order. If no annotation is present, theorder byof the projection is used instead. - [cds@10.1.0] New
sqlite:memorypreset forcds.requires.dbruns an in-memory SQLite database, now also in production - [cds@10.1.0] New
hana-serverlesskind forcds.requires.dbconnects to a HANA Cloud serverless instance (Beta) - [cds@10.1.0] Node.js-native
fetchclient now resolves named destinations through the SAP BTP Destination service forNoAuthentication,BasicAuthentication, andOAuth2ClientCredentials(proxy typeInternetonly) (beta) - [cds-mtxs@4.1.0]
cds.env.features.native_hdi_deploycan now enable native HANA tenant deployment with delta uploads, bulk HDI inputs, and streaming for large artifacts.
Changed
- [cds-dk@10.1.0]
cds watchnow ignores the.cdsfolder by default, alongside the existing defaults likenode_modulesandgen..cdsmodel files and.cdsrc.jsonare unaffected. - [cds-dk@10.1.0]
cds compile -2 asyncapiandcds import --asyncapiare now provided by@cap-js/asyncapias a CDS plugin. The plugin is currently still bundled with@sap/cds-dk. Add it explicitly to yourdevDependenciesas it will be removed in a future version. - [cds-dk@10.1.0]
cds buildnow packages npm workspace dependencies as tarballs by default, use--no-ws-packto disable. - [cds-dk@10.1.0]
cds completionnow comes with pre-calculated shell scripts for faster tab-completion. Also, it no longer disturbs shell completion in VS Code debug terminals. - [cds-dk@10.1.0]
cds add approuternow uses@sap/approuter@^23.0.0instead of@sap/approuter@^22.0.0. - [vscode-cds@10.1.0] Minimum VSCode version is now 1.123.0
- [cds.java@5.1.0] Don't read elements
DraftAdministrativeData_DraftUUID,HasActiveEntityandHasDraftEntityduring edit-draft action. - [cds.java@5.1.0]
cds-feature-ordhas moved to Open Source and is now versioned independently from CDS Services. - [cds4j@5.1.0] Reduced the memory footprint of bulk update/upsert element determination by avoiding intermediate
Streamallocations when collecting the affected element paths. - [cds4j@5.1.0] Removed support for Mongo DB (internal, unreleased)
- [cds4j@5.1.0] The
CQL.toUpperand.toLowermethods now accept aCqnValue. - [cds4j@5.1.0] Deprecated
UserContext.setAttributes(Map<String, List<String>>),getAttribute(String), andgetAttributes()in favor of the new unified API. - [cds@10.1.0]
cds.spawnuses dedicated, short-lived transaction for fetching extended models - [cds@10.1.0] Messaging webhook endpoints are no longer registered anonymously in production when neither
cds.requires.authnorcds.requires.messaging.xsuaais configured. - [cds@10.1.0] UCL tenant mapping notification handlers will be scheduled as
tenant: receiverTenantinstead of anonymously
Fixed
- [cds-dk@10.1.2]
cdsno longer crashes with anENOENT(uv_cwd) stack trace when the shell's current directory has been deleted, for example, during tab-completion. - [cds-dk@10.1.2]
cds build --for javano longer writes Node.js runtime messages. - [cds-dk@10.1.2]
cds buildpreserves line breaks in mergedmessages.propertiesbundles. - [cds-dk@10.1.2]
cds add xsuaano longer generates an invalidmta.yamlwhen added afterworkzone. - [cds-dk@10.1.2]
cds add cloud-loggingnow binds existing approuter and multitenancy modules whenmtais added later. - [cds-dk@10.1.2]
cds add enterprise-messagingandcds add event-meshnow contribute to an MTA descriptor added later. - [cds-dk@10.1.2]
cds add destinationnow binds existing approuter and multitenancy modules whenmtais added later. - [cds-dk@8.9.13] CVE-2025-15284: update
expressto fix vulnerability withqs<6.14.1 - [cds-dk@10.1.0]
cds upnow forwardsBP_DEPENDENCY_MIRROR_*variables to Paketo buildpacks. - [cds-dk@10.1.0]
cds add datanow generates values across the full@assert.rangewhen the range lies outside the default[0,100], instead of emitting the lower bound for every record (integers) or exceeding the upper bound (decimals). - [cds-dk@10.1.0]
cds add datanow generates varyingTimevalues instead of the same fixed22:59:53for every record. - [cds-dk@10.1.0]
cds add datanow honors@assert.rangeonDoubleelements instead of generating values across the default[0,100]regardless of the annotation. - [cds-dk@10.1.0]
cds add datanow generates whole numbers forIntegerelements whose@assert.rangeuses fractional bounds, instead of emitting fractional values. - [cds-dk@10.1.0]
cds add datanow generates varied values forDecimalelements whose scale equals their precision (such asDecimal(2,2)), instead of emitting0for every record. - [cds-dk@10.1.0]
cds add datanow honors@assert.rangeonTimestampelements instead of always generating dates in the default2000-2024window. - [cds-dk@10.1.0]
cds add datano longer crashes withInvalid time valuewhen aDateelement has a single-day@assert.range. - [cds-dk@10.1.0]
cds add datanow generates varied dates within@assert.rangebounds onDate,DateTimeandTimestampelements when the range lies entirely outside the default2000-2024window, instead of emitting the same out-of-range value for every record. - [cds-dk@10.1.0]
cds add datanow honors open-interval and infinity@assert.rangebounds (such as[(0),_]or[(5),(10)]) on numeric and date elements, instead of ignoring them and generating values across the default range. - [cds-dk@10.1.0]
cds add datano longer includes excluded bounds when generating scaled decimals for open@assert.rangeintervals. - [cds-dk@10.1.0]
cds add datanow generates the exact day forDateelements regardless of the local timezone, instead of occasionally emitting the day before the intended date. - [cds-dk@10.1.0]
cds add datanow generates multiple distinct rows for link entities whose key consists of two or more associations, instead of collapsing them to a single row. - [cds-dk@10.1.0]
cds add datanow writes the foreign-key column for to-one compositions into the parent CSV, instead of leaving the parent unlinked to its generated child. - [cds-dk@10.1.0]
cds add datanow honors an@assert.rangeon anarray ofscalar element, so the generated array elements stay within the annotated bounds. - [cds-dk@10.1.0]
cds add datanow generates the requested number of distinct rows for a standalone link entity whose key associations point to entities created on demand, instead of collapsing them to a single row. - [cds-dk@10.1.0]
cds add datanow pairs two distinct target rows in a self-referential link entity (two key associations to the same entity), instead of pointing both foreign keys at the same row. - [cds-dk@10.1.0]
cds build --ws-packnow also packs the workspace root package into a module'sgen/srvwhen the module depends on it via afile:spec, so monorepos whose root package is itself a dependency no longer need to pack it by hand. - [cds-dk@10.1.0]
cds bind --to-app-servicesno longer classifies a machine-to-machineidentitybinding that consumes another service (carryingconsumed-services) as the application's user authentication, so it no longer overwrites the realxsuaaauth binding. - [cds-dk@10.1.0]
cds buildnow copies the workspace rootpackage-lock.jsoninto a module'sgen/srvwhen the module has none, so npm workspaces monorepo deployments get frozen dependencies instead of freshly resolved ranges. - [cds-dk@10.1.0]
cds buildnow copies.cdsrc.yamlinto the deployment output folder alongside.cdsrc.json, so YAML-based CDS configuration works correctly when deployed to Cloud Foundry. - [cds-dk@10.1.0]
cds import --from asyncapinow correctly imports types referenced via$refin AsyncAPI schemas, includingallOfcomposition, and no longer loses types from earlier events when a service has multiple events. - [cds-dk@10.1.0]
cds buildnow correctly resolvesmanifest.jsonfor UI5 CLI v5 component projects, which use asrc/folder instead ofwebapp/. - [cds-dk@10.1.0]
cds build --for fiorinow honors customresources.configuration.pathsmappings inui5.yamlwhen locating a UI module'smanifest.json. - [cds-dk@10.1.0]
cds add html5-repo,cds add workzone, andcds add portalno longer emit an HTML5 application content deployer module intomta.yamlwhen the project has no UI apps, avoiding thecould not find the ".../gen/app" pathbuild failure. - [cds-dk@10.1.0]
cds upnow pushes buildpack images directly to the registry viapack build --publish, avoiding themanifest invaliderror on containerd-backed Docker daemons. - [cds-dk@10.1.0]
cds add app-frontavoids duplicates forsrv-apiinxs-app.jsonif entries pre-exist. - [cds-dk@10.1.0]
cds add ias(andcds add ams) with an approuter no longer leaves a strayproperties.name: srv-apion the approuter'ssrv-apidestination inmta.yaml, which uses certificate-based forwarding instead. - [cds-dk@10.1.0]
cds add samplefixes cds files such thatconst { Books } = cds.entitiesworks, i.e. the default namespace is set. - [cds-dk@8.9.13] CVE-2025-15284: update
expressto fix vulnerability withqs<6.14.1 - [vscode-cds@10.1.0] Syntax highlighting for CQL strings now also works when there are spaces between
cds.qland the opening string. Having a newline betweencds.qland the opening backtick is still not supported. - [vscode-cds@10.1.0] Syntax highlighting: delimited and quoted identifiers in
using,namespace,contextandextend - [vscode-cds@10.1.0] Syntax highlighting: multiple
;-separated elements or enum values on a single line - [vscode-cds@10.1.0] Syntax highlighting: first segment of a qualified type path (
Foo:bar) - [cds-compiler@7.1.1] effective:
- Fix dump in flattening for actions with entity parameters.
- Ensure consistent handling of reference-like annotation expressions during flattening.
- [cds-compiler@7.1.1] sql:
- Add missing
@hierarchycolumns to localized convenience views. - Avoid crash on mixin backlink with renamed target element.
- The generated SQL for a reference
assoc.elemwhereassocis an association defined with duplicate backlink comparisons with$selfis now more likely to be correct. Usually, there is an error for the definition of such anassoc, but the corresponding message can be downgraded to a warning.
- Add missing
- [cds-compiler@6.9.5] effective:
- Fix dump in flattening for actions with entity parameters.
- Ensure consistent handling of reference-like annotation expressions during flattening.
- [cds-compiler@6.9.5] sql: Add missing
@hierarchycolumns to localized convenience views. - [cds.java@5.1.1] Avoid CDS4j version with broken
cds4j-cqlartifact. - [cds.java@5.1.0] Fixed
ClassCastExceptioninDraftScenarioAnalyzerwhen aWHEREclause contains anIN-subquery predicate (e.g.value.in(Select.from(...))). - [cds.java@5.1.0] Fixed a bug in OData V4 returning 404 instead of 204, when following a valid navigation property that has a null value.
- [cds.java@5.1.0] Code generated by the
generategoal of thecds-maven-pluginwithgenerateClassesset totrueno longer triggers Java compiler warnings. - [cds.java@5.1.0] Fixed a bug causing a
DestinationAccessException´ when reading Service Manager bindings that were created withX509_ATTESTED` (ie. zero trust). - [cds.java@5.1.0] Fixed a bug, causing unexpected removal of a tenant's DataSource from the cache, if HDI container deletion is skipped during unsubscribe.
- [cds.java@5.1.0] Fixed a bug, causing missing draft messages, in case
cds.drafts.persistenceis set tosplit. - [cds.java@5.1.0] Fixed several bugs in the
generategoal of thecds-maven-pluginwheninterfacesForAspectsis enabled: builder interfaces used wrong types for aspect-derived entities, reverse associations targeting aspect members used wrong generated types, and inner interfaces of aspect-structured entities were generated incorrectly. - [cds.java@5.1.0] Fixed a bug causing a
NullPointerExceptionin OData v4 for the requests with@bind:null(v4.01) and@odata.bind:null(v4.0) (remove link to an association). - [cds.java@5.1.0] Fixed a bug causing OData v4 request with
$apply=filter()/...to be rejected by filter restrictions check. - [cds.java@5.1.0] Fixed a bug causing OData v4 request with
GET /Entity(<requiredFilteredElement>=val,...)to be rejected by filter restrictions check. - [cds.java@5.1.0] Fixed a bug, causing HTTP status
500(Cannot find type with name: <Service>.cds_Map) for OData JSON$metadatarequests, if the CDS Model exposes dynamicMapelements. - [cds.java@5.1.0] Fixed a bug, causing HTTP status
400for OData v4 bound action requests on entity set with no namespace on action:POST /com.sap.Service/com.sap.Entity/boundAction - [cds.java@5.1.0] Fixed a bug in xsuaa scope prefix validation
- [cds.java@5.1.0] Requests rejected by Spring Security's
StrictHttpFirewall(e.g. URLs with matrix parameters such as telemetry requests with UI5 > 1.148) no longer produce401 WWW-Authenticate: Basicresponses triggering repeated browser Basic-Auth popups. - [cds.java@5.1.0] Fixed a bug causing incorrect statements when writing draft messages on entities with instance-based authorizations.
- [cds.java@5.1.0] Fixed a bug in OData v4 producing an incorrect decimal values in serialized payload for requests with
$applyand HTTP headerIEEE754compatible=true. - [cds4j@5.1.0] In CQN, the
count,startswith,endswith,matchespatternandcountdistinctfunctions are now represented in lower case, for compatibility with HCQL. - [cds4j@5.1.0] Fixed a bug where type casts on refs to a
cds.Mapstarting with a to-one association were ignored. - [cds4j@5.1.0] Fixed a statement execution order induced deadlock on concurrent deep updates/upserts on the same target entity.
- [cds4j@5.1.0] Preserve update hints during statement normalization.
- [cds4j@5.1.0] Fixed
CdsElementNotFoundExceptionwithcds.sql.toOnePath.mode: optimizeon refs using break-outs like$self. - [cds4j@5.1.0] Fixed loss of inline count of expand during projection resolution.
- [cds4j@5.1.0] Fixed a deep update silently setting a composition child's non-key backlink foreign key to
nullwhen the child carried a nested association whose ON condition shares that backlink FK element and wasnullin the payload. - [cds4j@5.1.0] Fixed expressions in function arguments being constructed as generic xpr when being parsed.
- [cds@10.1.1] Messaging consumers (Event Mesh AMQP, Kafka, Redis) no longer crash with
TypeError: Cannot use 'in' operator to search for 'data' in nullwhen a message with anullpayload is received - [cds@10.1.1]
cds.envnow correctly replaces an array default with an object project override instead of assigning object properties onto the array - [cds@10.1.1] SQLite now uses its default pool config (single, non-evicting connection) even when
@cap-js/sqliteis installed globally rather than as a local dependency - [cds@10.1.1] Stripping of
IsActiveEntityin programmatic deep updates to draft instances - [cds@10.1.1] Server crash when string keys contain control characters in OData
Locationresponse header - [cds@10.1.1] Binary keys in OData
Locationresponse header are now formatted as binary literals (binary'...') - [cds@10.1.1] Skip periodic message processing when no provider tenant is configured
- [cds@10.1.1] The parent-readable check during CREATE/navigation no longer swallows system errors (for example, database failures); such errors are now propagated instead of being masked as a
404 - [cds@10.1.1] Support X.509 in
enterprise-messaging's deploy task - [cds@10.1.1] Incompatibility of global config
cds.sql.lock_acquire_timeoutand event-queue implementation - [cds@10.1.1] Outbox messages written before
appidwas introduced are now processed after an upgrade instead of being skipped - [cds@10.1.1] A queued outbox message whose target service can't be resolved is now dead-lettered instead of crashing the application
- [cds@10.1.1] Recurring scheduled tasks (
.every()) are no longer resurrected when unscheduled while running, and re-submitting one while it runs no longer discards the updated schedule and payload - [cds@10.1.0]
@assertmessages using{i18n>...}placeholders are no longer mistaken for structurederror(...)results - [cds@10.1.0] JSON
$batchrequests now reject invalidatomicityGroupidentifiers - [cds@10.1.0] Scheduling a task via
srv.schedule(...).after(<delay>)or.every(<interval>)with a delay above Node's 32-bitsetTimeoutlimit (~24.8 days, e.g..after('30d')) no longer emits aTimeoutOverflowWarningor fires almost immediately. Such delays are now armed as chained timers, so the task still fires at its exact scheduled time. - [cds@10.1.0] OData requests with unknown key names in the key predicate (e.g.
Books(ID=1,sad=2)) are now rejected with400 Bad Requestinstead of causing a500error - [cds@10.1.0]
cds-rc.jsschema now has a$idsojsonschema1.5 resolves internal$refs correctly - [cds@10.1.0] REST
HEADresponses now report byte-accurateContent-Lengthheaders for Unicode JSON payloads - [cds@10.1.0] Query properties like
limitandrecurseare no longer lost when forwarded to remote services - [cds@10.1.0]
cds.requires.<name>.service = <name>(a required service naming itself) no longer fails with a spuriousconflicts witherror on server start - [cds@10.1.0]
UPDATEandDELETEremote-service-queries, that use.whereinstead of a key to specify their subject, will throw - [cds@10.1.0] Navigating to or creating under a parent protected by an instance-based
@restrict.wherenow returns404when the parent is not readable - [cds@10.1.0] A static
@restrict.whereon a collection-bound action is now enforced, rejecting callers who do not satisfy the condition — previously it was silently ignored - [cds-mtxs@4.1.0]
SmsProvisioningServicecertificate check is now better aligned with the Java implementation. - [cds-mtxs@4.1.0] Extension validation checks have been refined.
- [cds-mtxs@4.1.0]
POST /-/cds/model-provider/getEdmxnow checks the requested service name more exactly. - [cds-mtxs@4.1.0] Callback url for Saas Registry and Subscription Manager is now determined in a more robust way.
Removed
- [cds@10.1.0] UCL GraphQL interface adapter as dead code after UCL deprecated the GraphQL on-boarding flow
August 2026
Added
- [cds-compiler@7.1.0] compiler:
- It is now possible to extend a view/projection with a
whereorhavingclause, even if it already had one. Extensions are joined withandif such a clause already exists. - Publishing an association with an empty filter is now supported. For a managed association, this turns it into an unmanaged one. For an unmanaged association, it has no effect.
select oneis now supported inparse.cqlandparse.expr.- Compiler adds helper property
$backlinkto CSN. It enables compiler backends and other CSN consumers to better handle backlink comparisons with$self. This property may vanish in future releases.
- It is now possible to extend a view/projection with a
- [cds-compiler@7.1.0] odata:
- Update OData vocabularies: Common and UI.
- [cds-compiler@7.1.0] sql:
- Wrap predicate columns in
CASE ... WHENfor SAP HANA. - Support common
cds.Vectorfunctions on SAP HANA and Postgres.
- Wrap predicate columns in
- [cds.java@4.9.3]
TenantProviderServicenow supports the SaaS Registry/Subscription Manager API v2 for "Get All Subscriptions" endpoint. Use the propertycds.multiTenancy.useSaaSApiV2to control the API version to use. Default isfalseto use existing v1 of the API. - [cds-mtxs@4.0.3]
cds-mtx subscribe,unsubscribe, andupgradenow take more than one tenant at once, e.g.cds-mtx upgrade t1 t2orcds-mtx upgrade t1,t2.
Changed
- [cds-dk@10.0.8]
cds loginnow uses the renamed login endpoints/-/cds/login/grantand/-/cds/login/grant-metadatawith a legacy fallback, and updates saved legacy token URLs. - [cds-dk@10.0.7]
cds init --nodejscreates a cleaned-up .gitignore file - [cds-dk@9.9.5]
cds loginnow uses the renamed login endpoints/-/cds/login/grantand/-/cds/login/grant-metadatawith a legacy fallback, and updates saved legacy token URLs. - [cds-compiler@7.1.0] compiler:
- Issue a warning that a type with an unmanaged association can only be used as an include.
- Omit empty extend for
extend … with definitionsfrom parsed CSN.
- [cds-mtxs@4.0.3] Login endpoints renamed to
/-/cds/login/grantand/-/cds/login/grant-metadatawith redirects from former paths. - [cds-mtxs@4.0.2] When updating from
@sap/cds-mtxs@<3.6.0, you now need to upgrade your tenant database before you can add new extensions.
Fixed
- [cds-dk@10.0.7] Bundle
@sap/cds-mtxs4 again, instead of 3. - [cds-dk@10.0.7]
cds import --from asyncapinow correctly imports types referenced via$refin AsyncAPI schemas, includingallOfcomposition, and no longer loses types from earlier events when a service has multiple events. - [cds-dk@10.0.7]
cds add html5-repo,cds add workzone, andcds add portalno longer emit an HTML5 application content deployer module intomta.yamlwhen the project has no UI apps, avoiding thecould not find the ".../gen/app" pathbuild failure. - [cds-dk@10.0.7]
cds init --nodejscreates the ESLint and VS Code config files again - [cds-compiler@7.1.0] compiler:
- Properly render structures with property
...in CDL. - Extending a
where,havingorgroup byclause from unrelated layers no longer results in an error. A warning is emitted when extending anorder byclause from unrelated layers.
- Properly render structures with property
- [cds-compiler@7.1.0] effective:
- Correctly rewrite references in annotation expressions inside arrays.
- Add option to replace annotation expressions by strings to evade error situations.
- [cds-compiler@7.1.0] sql:
- Don't dump while reporting an error for
$selfin a filter of afromreference. - Correctly handle renamed target elements in backlink comparisons.
- Don't dump while reporting an error for
- [cds.java@5.0.2] Fixed a bug causing a
NullPointerExceptionin case Service Manager bindings (for hdi containers) do not contain a fielddatabase_id. - [cds.java@4.9.4] Fixed a bug in xsuaa scope prefix validation
- [cds.java@4.9.3] Fixed a bug causing a
NullPointerExceptionin OData v4 for the requests with@bind:null(v4.01) and@odata.bind:null(v4.0) (remove link to an association). - [cds@10.0.6]
$apply=filter(...)/groupby(...)/aggregate($count)with non-UTCDateTimeOffsetfilter values now returns correct results on HANA - [cds@10.0.6] Generated index page now uses relative hrefs, fixing links when served behind an approuter with a path prefix
- [cds@10.0.6]
$batchsub-requests returned an empty body and headers when@opentelemetry/instrumentation-express(or any instrumentation that wraps Express handlers to arity 2) was active - [cds@10.0.6]
cds.xt.ModelProviderServicecan be served in mtx sidecar - [cds@10.0.6] Modeled service events were not properly ignored in OData adapter
- [cds@10.0.6] Generic handler for draft-specific actions not correctly being bound to the transaction context
- [cds-mtxs@4.0.4] Version bump
- [cds-mtxs@4.0.3] HANA credential health-check now detects the available driver via
require.resolve()instead of readingpackage.json, fixingMODULE_NOT_FOUNDfor apps that follow the "Plug & Play" guidance and don't declarehdbor@sap/hana-clientdirectly. - [cds-mtxs@4.0.3] Tenant upgrade now reports a clear per-tenant
422error when a stored extension is incompatible with the changed base model, instead of aborting with an uncaught compilation error. - [cds-mtxs@4.0.3]
cds-mtx-migratenow runs more robust with uncommon model configurations. - [cds-mtxs@4.0.2]
PUT /-/cds/extensibility/Extensions/<id>with a status that is not active (0 or 1), now returns the correct entry. - [cds-mtxs@4.0.2] Extensions table is now resolved properly again when
cds.sql.names = quotedis set. - [cds-mtxs@3.9.6] Parallel single-tenant upgrades no longer fail with
tar: Cannot open: File existswhen extensibility is disabled. - [cds-mtxs@3.9.6] Deployment to tenant containers is more stable with a large number of service bindings provided via
VCAP_SERVICES_FILE_PATH. - [cds-mtxs@3.9.6] More robust error handling for HDI deployment logs on read-only file system on Kyma.
- [cds-mtxs@3.9.6] Configuration
cds.requires.multitenancy.retriesis now effective. - [cds-mtxs@3.9.6] Reading tenants no longer logs a spurious
Failed to parse metadata to JSONerror for tenants without metadata. - [cds-mtxs@3.9.6] A tenant's HANA connection pool now reliably recovers once valid credentials are restored, as cache-bypassing Service Manager lookups no longer overwrite the shared bindings cache with transiently invalid credentials.
- [cds-mtxs@3.9.6] More robust handling of Service Manager errors.
July 2026
Added
- [cds-dk@10.0.6]
cds add xsuaanow generates namespace-suffixed XSUAArole-collectionsfor Kyma. - [vscode-cds@10.0.2] Syntax highlighting for CQL strings within the tagged template string following
cds.ql. - [cds.java@5.0.1]
TenantProviderServicenow supports the SaaS Registry/Subscription Manager API v2 for "Get All Subscriptions" endpoint. Use the propertycds.multiTenancy.useSaaSApiV2to control the API version to use. Default isfalseto use existing v1 of the API.
Changed
- [cds-dk@10.0.6]
cds initandcds addnow detect app folders by the UI framework in theirpackage.json(@ui5/cli,react,vue,svelte,@angular/core,vite) or awebapp/manifest.json, instead of matching against well-known folder names. - [cds-dk@10.0.6]
cds add approuternow generates the approuter into.deploy/app-routerby default instead ofapp/router, still respecting an existingapp/routerfolder. - [cds-dk@10.0.6]
cds add html5-repo,cds add app-frontend, andcds add portalnow place the HTML5 application content deployer in.deploy/html5-deployerby default instead ofapp/html5-deployer, still respecting an existingapp/html5-deployerfolder. - [cds-dk@9.9.4]
cds inituses Maven Java archetype version 4.9.1 for creating Java projects. - [cds-dk@9.9.4] Other dependency updates
- [vscode-cds@10.0.2] Project Explorer now shows all configuration files including defaults.
- [cds-mtxs@3.9.5] Calling endpoint
POST /-/cds/sms-provisioning/upgradenow checks the correct permissions.
Fixed
- [cds-dk@10.0.6]
cds add httpnow respects capability restrictions, emitting only supported requests for@Capabilities.*Restrictions: false,@odata.singleton, and@insertonlyentities. - [cds-dk@10.0.6]
cds add httpnow generates requests for bound actions and functions on an instance, including draft-enabled entities (e.g.POST .../E(ID=…,IsActiveEntity=true)/S.approve), andGETrequests for OData functions. - [cds-dk@10.0.6]
cds add httpnow omits readonly, computed and managed fields (@readonly,@Core.Computed,@cds.on.insert/@cds.on.update) fromPOST/PATCHbodies, since clients cannot set them. - [cds-dk@10.0.6]
cds add httpnow slugs# @namehandles and suffixes collisions, so delimited names (![a.b]) and entities that slug alike (A.subvs.Asub) yield valid, unique handles. - [cds-dk@10.0.6]
cds add httpnow flattens nested composition entity-set names to underscores in URLs (e.g.E_addrinstead of the unroutableE.addr). - [cds-dk@10.0.6]
cds add httpnow includes all keys in composite-key draft requests instead of only the first, and single-quotes single string keys (e.g.Books/'abc'), matching composite string keys. - [cds-dk@10.0.6]
cds add httpnow addresses parameterized entities asEntity(p=…)/Set, omitting the invalidPOST/PATCH/DELETErequests it previously generated for them. - [cds-dk@10.0.6]
cds add httpno longer emitsPATCH/DELETErequests withundefinedor[object Object]in the URL for keys without a sample value, structured keys, or entities without a scalar key. - [cds-dk@10.0.6]
cds add httpno longer produces a double slash in request URLs for a service mounted at the root path (@path: '/'). - [cds-dk@10.0.6]
cds add httpandcds add datano longer crash withCannot convert undefined or null to objectfor a keyless entity whose composition'soncondition references$self. - [cds-dk@10.0.6]
cds add httpno longer throwsMULTIPLE_DOCSwhenapplication.yamluses---separators (Spring Boot multi-profile format). - [cds-dk@10.0.6]
cds export --datanow reads seed data via in-memory SQLite instead of the configured db driver, so it no longer fails in projects withrequires.db: hana(e.g. CAP Java). - [cds-dk@10.0.6]
cds init --java --add mtanow writespath: srvfor the Javasrvmodule inmta.yamlinstead ofgen/srv, sombt buildno longer fails withthe "gen/srv" path of the "<app>-srv" module does not exist. - [cds-dk@10.0.6]
cds build --for nodejs --productionnow also bundles messages.properties files from plugins found via neighborhood resolution.cds build --for javaretains the previous behaviour and does not use neighborhood resolution for plugin message files. - [cds-dk@10.0.6]
cds versionno longer reports dependency problems if no dependencies are installed at all. It prints an info message instead. - [cds-dk@10.0.6]
cds add testcreates tests that are green by default. Sample data is provided as commented code. - [cds-dk@10.0.5]
cds build --for hananow declares the plugin for native HANA artifacts placed in the build output (e.g. a.hdbprojectionviewfromdb/src) in the generated.hdiconfig. - [cds-dk@10.0.5]
cds add typernow generates ajsconfig.jsonfile that works with VS Code. - [cds-dk@10.0.5]
cds debug <app> --forceon Kyma now preserves existingNODE_OPTIONSflags (e.g.--max-old-space-size) instead of overwriting them when enabling the inspector. - [cds-dk@10.0.5]
cds add samplenow selectsstockin the Books list and object pages, so the overstock discount shows up in the UI. - [cds-dk@10.0.5]
cds add datanow generates correct foreign-key columns for nested compositions of aspects, e.g.up__up__ID,up__ID,ID,nameinstead of a brokenup__up_header. - [cds-dk@10.0.5]
cds buildno longer fails withnpm ls -ws: unknown optionon npm 12, which dropped the short-wsflag. - [cds-dk@10.0.5]
cds buildnow packages transitive npm workspace dependencies again on npm 12, which changednpm pack --jsonto emit an object keyed by package name instead of an array. - [cds-dk@10.0.5]
cds upuseshelm --rollback-on-failureinstead of the deprecated--atomic. - [cds-dk@10.0.5]
cds add portalon Java + IAS disables JWT proof-of-possession onsrv(SAP_SPRING_SECURITY_IDENTITY_PROOFTOKEN=false) so Portal-proxied tile OData works. - [cds-dk@10.0.5]
cds add iasforwards client certificates from the approuter tosrv-api(backendDestinations.srv-api.forwardAuthCertificates). - [cds-dk@10.0.5]
cds add iasalways enablesxsuaa-cross-consumptionin the identity service parameters. - [cds-dk@10.0.5]
cds add iasno longer sets an mTLSexpose.hoston the approuter, restoring a plain approuter host for the browser flow. - [cds-dk@10.0.5]
cds add portalon Java multitenant now binds the Portal service instance tosrvso CAP Java'sgetDependenciesreports Portal to the SaaS Registry. - [cds-dk@10.0.5]
cds add kymauses a tenant-agnostic (tcpSocket) startup probe for the multitenant approuter, avoiding 400s fromTENANT_HOST_PATTERNon kubelet probes. - [cds-dk@10.0.5]
cds add kymano longer emits the deadAuthentication: OAuth2UserTokenExchangekey onbackendDestinations.srv-api. - [cds-dk@10.0.5]
cds add github-actionsuses updated versions. - [cds-dk@10.0.5]
cds watchnow works in ESM scenarios where only a globalcds-dkis installed, where it would formerly fail withERR_MODULE_NOT_FOUNDfor@sap/cds. - [cds-dk@10.0.5]
cds watchno longer shows a'server.hmr.protocol/host/port/path/clientPort/timeout/server' is deprecatedwarning when running a Vite application. - [cds-dk@10.0.4]
cds watchnow starts apps with a SQLite database again in cases where they don't have a@cap-js/sqlitedependency or apackage.json. - [cds-dk@10.0.3]
cds importnow wraps arrays-of-arrays in a{ value: [...] }struct when importing OpenAPI/Swagger specs, avoiding the ODatachained-array-ofcompiler error. - [cds-dk@10.0.3]
cds versionnow also prints versions of secondary packages likes@sap/cds-compilerand@cap-js/db-service. - [cds-dk@10.0.3]
cds build --productionno longer overrides collected message bundles with empty default bundles. - [eslint-plugin-cds@4.2.5] Fixed
TypeError: scopeManager.addGlobals is not a function, preventing compatibility with ESLint 10. - [cds-compiler@7.0.3] compiler: When a backlink target is at least distantly related to the entity embedding an association with a backlink comparison, the compiler issues a warning ref-deprecated-backlink instead of reporting an error ref-invalid-backlink; this is now also the case if the target entity is auto-exposed.
- [cds-compiler@7.0.3] sql: Avoid dump in to.sql.migration with complex models.
- [cds-compiler@7.0.2] compiler:
- Avoid dump for a new association in a projection with backlink comparison while reporting a missing backlink target element.
- Soften incompatibility concerning backlink comparisons: missing target elements which are referred to in the foreign keys or ON-condition of the backlink association now only lead to a warning, not an error.
- Soften incompatibility concerning structure values for annotations: a structure property like
listwon't be rejected; we avoid an ambiguity with an expression(1, 2, 3)by putting'=': truenext tolist: …in the CSN, like in compiler v6. Axprexpression and an#enum symbol are rendered without a sibling=, though.
- [cds-compiler@6.9.4] effective:
- Correctly rewrite references in annotation expressions inside arrays.
- Add option to replace annotation expressions by strings to evade error situations.
- [cds4j@5.0.1] Fixed a bug in
ProjectionResolverthat caused an empty (nullvalues) payload in expanded association, when using filter with path expressions. - [cds4j@5.0.1] The
countis now represented in CQN in lower case, which allows for better compatibility with HCQL. - [cds4j@5.0.1] The inline count of an expand is now represented as
count: trueinstead ofinlineCount: true. - [cds@10.0.5] Messaging management requests to SAP Event Mesh or Event Mesh in SAP Integration Suite (EMIS) now always send a (possibly empty) body for
PUT/POSTrequests, as required by EMIS (and compatible with SAP Event Mesh) - [cds@10.0.5] Only convert
@Common.Textto@cds.searchfor service entities - [cds@10.0.4] Default language fallbacks for incomplete
i18nbundles in Java projects - [cds@10.0.4]
srv.on/before('READ',...)handlers registered with a cds-typer singular entity proxy were erroneously rewritten to eventeach - [cds@10.0.4] Asynchronous plugins (exporting a Promise) were not awaited in ESM projects
- [cds@10.0.4] Fixed context propagation for local app and remote service calls
- [cds@10.0.3] Suppress "connect to" log for internal scheduling service
- [cds@9.9.3] Fixed context propagation for local app and remote service calls
June 2026
Added
- [cds-dk@10.0.1]
cds add event-meshandcds add event-mesh-sharedset up configuration and deployment descriptors for Event Mesh of SAP Integration Suite. - [cds-dk@10.0.1]
cds upgradenow detects Java/Spring Boot migration issues and integrates OpenRewrite for automated fixes via--fix. - [cds-dk@10.0.1]
cds upgrade --reportwritesreport.mdandreport.yamlto.cds-upgrade/for AI agent and human consumption. - [cds-dk@10.0.1]
cds upgradegroups findings by capire section with links to the migration guide. - [cds-dk@10.0.0]
cds upgradeanalyzes project code and configuration for CDS 10 compatibility issues. - [cds-dk@10.0.0]
cds add react|vuewithout--intoscaffolds the Vite app directly intoapp/;cds watchmounts it at/. - [cds-dk@10.0.0]
cds add portaluses thesapse/application-content-deployer-buildpackfor Kyma to simplify HTML5 repo content and SAP BTP Portal service deployment. - [cds-dk@10.0.0]
cds add aiadds out-of-the-box AI integration with@cap-js/aivia the SAP BTP AI Core service. - [cds-dk@10.0.0]
cds debugwarns abouthttphealth checks on Cloud Foundry that would kill the container while paused at a breakpoint. - [cds-compiler@7.0.1] compiler: Special property
$includeAfteris put into a CSN of flavorgensrc/xtendedto preserve the original element order for entities and other structures withincludesadded via anextendstatement. - [cds-compiler@7.0.1] sql: Default values from structures with a single element are propagated to the flattened leaf element.
- [cds-compiler@7.0.1] odata: Default values from structures with a single element are propagated to the flattened leaf element.
- [cds.java@5.0.0] The
addgoal of thecds-maven-pluginnow generates apom.xmlfor Maven modules exported viacds export. - [cds.java@5.0.0] The
generategoal of thecds-maven-pluginhas a new optiongenerateClassesto generate static implementations for accessor interfaces. - [cds.java@5.0.0] The module
cds-services-code-generatorreplacescds4j-codegen. - [cds.java@5.0.0] Introduced
ContainerDeploymentServiceincds-feature-mtas Beta to support additional frameworks for schema evolution in non-sidecar scenarios. - [cds.java@5.0.0] Support "inline aggregate" expressions in OData v4, e.g.
$apply=aggregate(Sales(amount mul product/taxRate with sum as Tax)) - [cds.java@4.9.1] Support usage of custom functions in dynamic queries on SQLite with MT.
- [cds.java@4.9.1] Remote OData v4 services now support
$countin$expand(). - [cds.java@4.9.1] Logs for 401 errors in Remote OData services now include the value of the
www-authenticateheader, if available. - [cds.java@4.9.1] Support
onBehalfOfconfiguration for IAS app-to-app destinations, allowing control over the authentication strategy (currentUser,systemUser,systemUserProvider) when calling remote APIs through destinations withcloudsdk.ias-dependency-name. - [cds.java@4.9.1] Added
cds.sql.search.localizedwith optionviewas replacement for deprecatedcds.sql.search.mode. - [cds4j@5.0.0] Extend
CQL.vector_embeddingto accept text as String. - [cds4j@5.0.0] Support type propagation for
cosineSimilarityandl2Distance. - [cds4j@5.0.0] Support calculation of aggregates for hierarchies.
- [cds4j@5.0.0] Support filters through to-one associations into
cds.Mapelements. - [cds4j@5.0.0] Method
CdsStructuredType.elements(Predicate filter)to get a filtered stream of elements. - [cds4j@5.0.0] Emulate SAP HANA SCORE search-syntax on other databases.
- [cds4j@5.0.0] SAP HANA:
- improve search of UUIDs and fuzzy search in large strings.
- allow fuzzy search in hierarchy queries.
- [cds4j@5.0.0] Removed Beta from CdsJsonConverter
- [cds4j@5.0.0] Improved performance of large deep insert statements
- [cds@10.0.2] Event Queues: Support for 6-field cron (with seconds)
- [cds@10.0.1] Support for SAP Integration Suite Event Mesh (EMIS) via messaging kinds
event-meshandevent-mesh-shared(beta)- In contrast to SAP Event Mesh, multitenancy is out of scope!
- [cds@10.0.0] New annotation
@cds.minify: falseallows to avoid minification of definitions that would otherwise be removed from the model. For example, that would happen to types which are not used anywhere in the model. - [cds@10.0.0] UCL: Support for integration update operations (
add,remove,modify,rotate) for tenant mapping notifications. - [cds@10.0.0] UCL: Accept mTLS certificate from
x-forwarded-client-cert(XFCC) header for Kubernetes/Istio/Envoy environments, in addition to the existing Cloud Foundry HAProxy headers. - [cds@10.0.0] Compatibility flag
cds.env.features.compat_srv_getters(default:false) to opt into the deprecated function-call API forsrv.entities,srv.events,srv.types, andsrv.actions. This flag will be removed with cds^11. - [cds@10.0.0] Mark all CSN
vals withparam: false - [cds@10.0.0] For
CREATE,UPDATE,UPSERT, andDELETErequests, the generic CRUD handler now consistently returns arrays carrying an.affectedproperty with the number of affected rows (instead ofreq.data, or — forDELETE— the affected count itself).- Opt-out via
cds.env.features.legacy_srv_results: true. This flag will be removed with cds^11.
- Opt-out via
- [cds@10.0.0]
redis-messaging: Support for credentials in GCP-based regions (adds private CA) - [cds-mtxs@3.9.4]
getCsnnow setsmeta.extendedtotrueorfalseon the returned CSN, indicating whether tenant extensions were applied. Ifmeta.extendedis set tofalse, the deployment is using the precompiled HANA artifacts instead of running another HANA build.
Changed
- [cds-dk@10.0.1]
@sap/cds-dknow comes withbundleDependenciesfor reproducible installs. This is a replacement for thenpm-shrinkwrap.jsonthat is no longer supported by NPM 12 and higher. - [cds-dk@10.0.1]
cds initno longer assumes--nodejswhen running in SAP Business Application Studio. - [cds-dk@10.0.1]
cds initno longer omits the.vscodefolder when running in SAP Business Application Studio. - [cds-dk@10.0.1]
cds init/add --nodejsnow creates ESM projects by default. For CommonJS projects, usecds init --add cjs. - [cds-dk@10.0.1]
cds add datano longer creates random strings for fields annotated with@assert.format. - [cds-dk@10.0.1]
cds add iasdoes not use theHTML5.prefix for HTML5 repo settings. - [cds-dk@10.0.1]
cds add nodenow adds a devDependency to@cap-js/sqlite@^3 - [cds-dk@10.0.1]
cds upgradenow produces concise CLI output (count + title per rule) and a structured report with capire-aligned sections. - [cds-dk@10.0.0]
cds addandcds buildcreateenginesfields using caret dependencies of LTS Node.js versions, such as^24. - [cds-dk@10.0.0]
cds versionnow always prints entries in a new formatting, even in Java projects and when running in BAS. For a stable output that can be parsed by scripts, use--json. - [cds-dk@10.0.0]
cds add hanadoes not generate db/undeploy.json any more. - [cds-dk@10.0.0]
cds build --for hanagenerates gen/db/undeploy.json, merging an existing db/undeploy.json if present. - [cds-compiler@7.0.1] compiler:
- Messages reported by compiler backends for non-applied
annotatestatements now mention the original file location if that is unique. - The message IDs and texts for undefined references have been consolidated.
- Messages reported by compiler backends for non-applied
- [cds-compiler@7.0.1] odata:
- Non-spec compliant simple identifiers in OData V2 now lead to a warning.
- Avoid duplicate or incorrect warnings for value help shortcut.
- [cds-compiler@7.0.1] sql:
- Performance of the SQL backend has been improved: wildcard
*in views and projections is only expanded lazily. - No errors are reported anymore for non-persisted entities, as they are irrelevant for database deployment (for the message IDs
type-missing-argument,type-unexpected-argument,ref-unsupported-type, andref-unexpected-args).
- Performance of the SQL backend has been improved: wildcard
- [cds.java@5.0.0] The minimum required JDK for CAP Java is 21.
- [cds.java@5.0.0] The OpenRewrite recipes in
cds-services-recipesnow use the consolidated package namespacecom.sap.cds.services.migrationsfor all recipe names and Java classes (previously mixed between.recipesand.migrations). - [cds.java@5.0.0] Renamed
cds.mcp.autoConfigtocds.mcp.autoWired. - [cds.java@5.0.0] Renamed
cds.taskScheduler.enabledtocds.outbox.persistent.scheduler.enabled. - [cds.java@5.0.0] Removed deprecated properties
eventContextandcqnServicefrom goalgenerateof thecds-maven-plugin. - [cds.java@5.0.0] The properties
cds.outbox.inMemory.enabledandcds.outbox.inMemory.emitDuringChangeSetContexthave been deprecated. - [cds.java@5.0.0]
The default search mode for OData V2 and V4 has been changed topass-through. To restore the old behavior, setcds.odataV2.search.modeandcds.odataV4.search.modetoodata-lenient. - [cds.java@5.0.0] The default value for property
cds.errors.preferServiceExceptionhas been changed fromfalsetotrue. - [cds.java@5.0.0] The default value for property
cds.multiTenancy.serviceManager.cacheRefreshIntervalhas been changed from20to60minutes. - [cds.java@5.0.0]
The number of max requests in a OData V2 batch request has been limited to10. To restore the old behavior, setcds.odataV2.batch.maxRequestto-1. - [cds.java@5.0.0] The default value for property
cds.persistence.changeSet.enforceTransactionalhas been changed fromtruetofalse. - [cds.java@5.0.0] Outboxes for services are now by default unordered. To restore the old behavior, set
cds.outbox.services.<key>.orderedtotrue. - [cds.java@5.0.0] The default value for property
cds.query.restrictions.enabledhas been changed fromfalsetotrue. - [cds.java@5.0.0] The default value for property
cds.query.deep-entity-readonly.enabledhas been changed fromfalsetotrue. - [cds.java@5.0.0] The default value for property
cds.sql.toOnePath.modehas been changed fromalways-jointooptimize. - [cds.java@5.0.0] The default value for property
cds.sql.hana.search.fuzzyhas been changed fromfalsetotrue. - [cds.java@5.0.0] The deprecated property
cds.sql.hana.optimizationModehas been removed. - [cds.java@5.0.0] Removed deprecated
Exitsclasses fromcds-feature-mt. - [cds.java@5.0.0] Changed default JDK in
cds-services-archetypefor new CAP Java projects to JDK 25. - [cds.java@5.0.0] Removed deprecated goal
install-cdsdkfromcds-maven-plugin. - [cds.java@5.0.0] The default authentication mode is now model-relaxed for local development. In production environments, the secure-by-default behavior is preserved by automatically applying model-strict.
- [cds.java@5.0.0] Changed the default Node.js version in the
cds-maven-pluginto current LTS 24.x. - [cds.java@5.0.0] Bumped minimum required Maven version of the
cds-maven-pluginto 3.9.10. - [cds.java@5.0.0] Removed Maven modules
repackaged/odata-v2-libandrepackaged/odata-v4-lib. - [cds.java@5.0.0] OData v2: log forbidden char in DEBUG level.
- [cds.java@5.0.0] Removed
cds.odataV2.searchModeandcds.odataV4.searchModeand introducedcds.sql.search.syntaxwith optionsHANA(default) andODATA. - [cds.java@5.0.0] Removed
cds.sql.search.modeand introducedcds.sql.search.localizedwith optionview;genericmode is not supported anymore. - [cds4j@5.0.0] Removed support for SAP HANA JSON Document Store.
- [cds4j@5.0.0] Removed modules
cds4j-codegenandcds4j-maven-plugin. - [cds4j@5.0.0] Removed support for search via the
CONTAINSfunction in HANA legacy mode. - [cds4j@5.0.0] Values contained in an annotation with expression value are now treated as constants.
- [cds4j@5.0.0] Removed config option
cds.sql.collate. Collation now always applies to all string elements (previously the"localized-strings"value restricted collation to localized elements only). - [cds4j@5.0.0] Removed deprecated
exists(Select<?> subQuery)method fromModifier. - [cds4j@5.0.0] Removed deprecated
isAbstractmethod inCdsEntity. - [cds4j@5.0.0] Removed deprecated
CqnPassThroughSearchPredicate, instead useCqnSearchStringPredicate. - [cds4j@5.0.0] Removed higher auto-weighting of key element in fuzzy search.
- [cds4j@5.0.0] Removed
CqnTransformation.getKind()and theCqnTransformation.Kindenum (beta) - [cds4j@5.0.0] Replaced config option
cds.sql.search.mode: localized-viewwithcds.sql.search.localized: view;genericmode is not supported anymore. - [cds@10.0.0] Node.js 22 is now the minimum required Node.js version. Version 20 is no longer supported.
- [cds@10.0.0]
cds.features.compat_texts_entitiesis changed to false and will be removed in an upcoming version. - [cds@10.0.0]
cds.features.ieee754compatibleis changed to true to return strings for Decimal/Int64 for all db services. - [cds@10.0.0]
cds.i18n.fatjsonis changed to false and will be removed in an upcoming version. - [cds@10.0.0] Advanced Event Queue Scheduling via Scheduling Service on by default (if both
dbandqueueare available) - [cds@10.0.0]
cds.fiori.direct_crudis split into the two feature flagscds.fiori.bypass_draftandcds.fiori.draft_new_actioncds.fiori.bypass_draftallows the modification of active instances. It is now enabled by defaultcds.fiori.draft_new_actionintroduces thedraftNewaction to create new drafts. It is still disabled by default (as before)
- [cds@10.0.0] REST adapter: bulk
POSTof multiple entries is now dispatched as a singleINSERTinstead of one dispatch per entry.- Set
cds.env.features.bulk_inserts_via_rest: falseto revert to the legacy per-entry dispatch. This flag will be removed with cds^11.
- Set
- [cds@10.0.0]
req.queryis deprecated for bound actions/ functions and will be removed in cds^11. Usereq.subjectinstead. - [cds@10.0.0] Generic Handlers: Static
handle_*methods that registered preflight handlers were replaced by non-statichandle_*functions that are called beforehandle- Fully backwards-compatible: In case of a custom static
handle_*method that overrides a built-in one, the respectivehandle_*function is not called
- Fully backwards-compatible: In case of a custom static
- [cds@10.0.0] Updated default configuration for
persistent-queue:legacyLockingdefault changed fromtruetofalsemaxAttemptsdefault reduced from20to10storeLastErroroption removed (now alwaystrueimplicitly)
- [cds@10.0.0] Protocol adapters are now real classes, The
.routercontains now the protocol router (previously it was returned from the constructor itself). - [cds@10.0.0]
cds.validatenow return the error code in.codeinstead of.message. - [cds@10.0.0] Errors are now logged in default language instead of the plain developer texts.
- [cds@10.0.0] OData parser accepts
/^[0-9a-z-]{1,36}$/ias UUID - [cds@10.0.0] Flows:
@fromis checked in parallel to any other before handler - [cds@10.0.0] RemoteService: Clearing keys from payload (
req.data) is now done in genericonhandler instead of an extrabeforehandler - [cds@10.0.0] Undocumented
srv.reject(event, path)registers a standardbeforehandler - [cds@10.0.0] [internal] Refactored core service implementation (
srv-dispatch,srv-handlers,cds.Service) for improved code clarity and maintainability - [cds-mtxs@4.0.1] Migration from
@sap/cds-mtxhas been removed. - [cds-mtxs@4.0.1] Calling endpoint
POST /-/cds/sms-provisioning/upgradenow requires more permissions. - [cds-mtxs@4.0.1] Annotation
@Common.FieldControlis now also blocked for extensions. - [cds-mtxs@4.0.1] Annotations
@Capabilities.*are now also blocked for extensions. - [cds-mtxs@4.0.1] The MTX sidecar now logs a warning if
cds.sqlis configured differently in both the project root and the sidecar. By settingcds.env.requires['cds.xt.ModelProviderService']['use-root-sql-config'] === true, you can enforce the configuration of the project root. - [cds-mtxs@3.9.4] In case of multiple instances on Cloud Foundry, the initial creation of the
t0tenant is only done by instance 0. - [cds-mtxs@3.9.4] Service Broker errors are logged with more detailed descriptions in the Service Manager client.
Fixed
- [cds-dk@10.0.1]
cds subscribe,cds unsubscribe, andcds upgradedefault to mock credentials on localhost, removing the need for explicit-u user:password. - [cds-dk@10.0.1]
cds bindwill throw an error when--tois specified without providing a path. - [cds-dk@10.0.1]
cds build --for hananow correctly relocates generated .hdbsynonymconfig files containing*.configureproperties (e.g.schema.configure). - [cds-dk@10.0.1]
cds add html5-repoandcds add app-frontenddetect UI5 modules per app via each app's@ui5/clidevDependency, instead of relying on a project-wide flag. - [cds-dk@10.0.1] Removed undocumented
dp-clidata product import method. Usedp-metadatarepository import or direct JSON file import instead. - [cds-dk@10.0.1]
cds add html5-repo,cds add app-frontend, andcds add typescriptnow addui5-tooling-transpile-taskto existingui5.yamlfor TypeScript projects. - [cds-dk@10.0.1]
cds versionno longer fails if@sap/cds< 9.8 is installed. - [cds-dk@10.0.1]
cds buildno longer fails withEEXISTwhen the MTX sidecar has its own.npmrc, and dereferences symlinks during copy sogen/is self-contained and portable. - [cds-dk@10.0.1]
cds upgradeno longer fails when ast-grep exits with non-zero on certain file patterns. - [cds-dk@10.0.1] Removed undocumented
dp-clidata product import method. Usedp-metadatarepository import or direct JSON file import instead. - [cds-dk@10.0.1]
cds importfor OData v2 now can import annotations. - [cds-dk@10.0.1]
cds lintno longer silently swallows any error. - [cds-dk@10.0.0]
cds bindnow correctly handles CF org, space, and service instance names containing commas. - [cds-dk@10.0.0]
cds updeploys to Kyma withhelm --atomic, so failed deployments no longer block the next run. - [cds-dk@10.0.0]
cds add vueuses correct placeholder values for book and author inApp.vue. - [cds-dk@10.0.0]
cds build --productionnow also bundles message.properties files from plugins. - [cds-dk@10.0.0]
cds pushprovides support for CAP plugins. - [cds-dk@10.0.0]
cds add dynatracein combination withnodejsmakes sure thenodejsMTA changes are correctly applied. - [cds-dk@10.0.0] The
NO_COLORenvironment variable also accepts values other thantrue. - [cds-dk@9.9.3]
cds importfor OData v2 now can import annotations. - [cds-dk@9.9.3]
cds watchon Windows no longer restarts the server for read-only file opens (antivirus, Windows Search indexer, TypeScript loaders like tsx). A mtime guard now confirms a file was actually written before emitting achangeevent. - [cds-dk@8.9.13] CVE-2025-15284: update
expressto fix vulnerability withqs<6.14.1 - [eslint-plugin-cds@4.2.4]
auth-valid-restrict-grantno longer crashes on JOINs with three or more tables. - [cds-compiler@7.0.1] sql:
- An error is reported for subqueries that select only virtual elements. This avoids late errors during database deployment.
- Parameter references in nested inlines are now handled correctly.
- [cds-compiler@6.9.3] api: New compiler option
noErrorForUnknownAnnotateTargetdowngrades errors to warnings forannotatestatements with security-relevant annotations (@restrict,@requires,@ams) whose target does not exist. - [cds.java@5.0.0] OData error targets that reference a plain composition name (e.g.
values/amount) are now automatically rewritten to the service-layer infix-filter alias (e.g.initialSlice/amount), so that Fiori clients can correctly resolve the target path for inline error highlighting. - [cds.java@5.0.0] SELECT from SELECT queries (subqueries in the FROM clause) no longer fail when columns of inner queries are aliased and used in the outer subquery.
- [cds.java@4.9.1] Content-Disposition headers now use RFC 5987
filename*encoding for non-ASCII filenames, ensuring correct display in browsers for files with special characters. - [cds.java@4.9.1] Empty
If-MatchandIf-None-Matchheaders are now treated as invalid and rejected with421error code. - [cds.java@4.9.1] Enhanced resiliency to
cds-feature-kafkawhen registering a consumer group ID and topic registration. - [cds4j@5.0.0] Fixed a bug in
groupBytransformation for@odata.draft.enabledentity, causing aClassCastException, whenIsActiveEntityorHasActiveEntityare used as groups. - [cds4j@5.0.0] Decimal retrieved from SQLite are truncated to adhere to the declared scale.
- [cds4j@5.0.0] Fixed a bug in optimized to-one expands where
nullvalues in nested rows were not included in results. - [cds@10.0.2]
cds.envomits default values from plugins if requested - [cds@10.0.2]
$filter=<nav> eq/ne/gt/lt/ge/le <value>on collection-valued navigation properties now returns 400 instead of crashing with 500 - [cds@10.0.2]
$filter=<nav> gt/lt/ge/le <value>on single-valued navigation properties now returns 400 instead of crashing with 500 - [cds@10.0.2] If
cds.env.query.limit.maxis increased beyond the default of 1000 and no explicitcds.env.query.limit.defaultis set, the default page size now followsmaxinstead of staying capped at 1000. - [cds@10.0.2] Propagate
DraftUUIDet al. to nested children on deep PATCH - [cds@10.0.2] Missing
username/passwordonBasicAuthenticationdestinations in the native-fetch remote client now default to empty strings - [cds@10.0.1] Do not crash for app configurations or tests setting
cds.requiresto a nullish value. - [cds@10.0.1] A custom
cds.env.protocols.odata-v4.pathis now correctly applied to services using theodataprotocol shortcut (or no explicit@protocolannotation). - [cds@10.0.1]
$countis not allowed on service root or single instances - [cds@10.0.1]
$batchURLs with sub-sequent segments will now be parsed as usual URLs - [cds@10.0.1] Gaps in CSRF token handling of native-fetch client
- [cds@10.0.1]
srv.schedule()always creates singleton tasks - [cds@10.0.1] Initial timestamp of scheduled task with cron expression
- [cds@10.0.0] The prebuilt edmx were erroneously bypassed and recompiled at runtime in multitenant apps
- [cds@10.0.0] Sending a plain object instead of an array for a
Composition of manynow correctly returns 400 - [cds@10.0.0] Adding clauses on
cds.cloned queries behaved inconsistently. For example:jsBefore, thelet q1 = SELECT.from`Books`.where`ID>1`.orderBy`genre.name` let q2 = cds.ql.clone(q1).where`stock>9`.orderBy`title`whereclause was appended, butorderBywas overridden instead of appended. With the fix, bothwhereandorderByare appended, so that q2 is effectively:sqlSetSELECT from Books where ID>1 and stock>9 order by genre.name, titlecds.features.compat_clone_appends = trueto revert to the erroneous former behavior. Note though this will be removed in a future release. - [cds@10.0.0]
$expand=*with query options (e.g.$expand=*($expand=...)) no longer crashes the server but returns 400 - [cds@10.0.0]
compile.for.nodejsdid not consistently ignore@Common.Textannotations with expression values when deriving@cds.searchfields - [cds@10.0.0]
cds.utils.inspectrespects custom options again - [cds@10.0.0] Erroneously prefixed paths being applied to database service handlers during handler registration
- [cds@10.0.0]
.textsentities incorrectly appearing incds.entities/srv.entitieswhencompat_texts_entitiesis not enabled - [cds@10.0.0] Race condition between async and sync handlers rejecting errors simultaneously under
Promise.all— sync handlers are now consistently wrapped as async during registration - [cds@10.0.0] Query options for bound actions/ functions (e.g.,
$select) are validated against the return type of said bound action/ function - [cds@9.9.2]
srv.modelpropagation in extensibility scenarios - [cds@9.9.2] Restored
err.target:'in'during draft activation withcds.fiori.draft_messages=falseto avoid theMULTIPLE_ERRORSpopup - [cds@9.9.2]
resolveViewprioritizes the original foreign keyparent_IDif exposed multiple times, e.g., through*, parent.ID as parentId - [cds-mtxs@4.0.1] Default value 3 for
cds.requires.multitenancy.jobs.clusterSizeis now effective for upgrade. When using HANA TMS v2, the default forclusterSizeis set to 1. - [cds-mtxs@4.0.1] Parallel single-tenant upgrades no longer fail with
tar: Cannot open: File existswhen extensibility is disabled. - [cds-mtxs@3.9.4] Command
cds-mtx upgrade '*'now also works with settingcds.requires.multitenancy.jobs.clusterSize> 1. - [cds-mtxs@3.9.4] Clients for multiple instances of the Service Manager no longer interfere with each other.
- [cds-mtxs@3.9.4] Retry handling has been improved for the HANA TMS v2 client.
Removed
- [cds-dk@10.0.0]
cds extendis removed as it was only kept for@sap/cds-mtxcompatibility. - [cds-dk@10.0.0]
cds migrateis removed as@sap/cds-mtxto@sap/cds-mtxsmigration is now effectively complete. - [cds-dk@10.0.0]
cds login,cds logout,cds pull,cds push: the project-folder argument and the--directory(-d) option are removed; run these commands from the project directory instead. - [cds.java@5.0.0] Removed deprecated property
cds.errors.combined. Error messages are now combined by default. - [cds@10.0.0]
cds.compile.to.hdbcds()— usecds.compile.to.hdbtable()instead - [cds@10.0.0]
cds.context.http.req.authInfo- usecds.context.user.authInfoinstead - [cds@10.0.0] Legacy compat option
cds.compile.to.hdbcds()— usecds.compile.to.hdbtable()instead. - [cds@10.0.0] Legacy compat option
cds.User.tokenInfo- Usecds.User.authInfo.tokeninstead. - [cds@10.0.0] Legacy compat flag for
ASSERT_NOT_NULLerror code of@mandatoryvalidation - useASSERT_MANDATORYasscodeinstead. - [cds@10.0.0] Legacy compat flag
cds.features.compat_save_drafts→ use['CREATE', 'UPDATE', 'UPSERT']instead of theSAVEevent for.drafts - [cds@10.0.0] Legacy compat flag
cds.features.consistent_params=falseis now finally removed — adapt the implementation instead. - [cds@10.0.0] Legacy compat flag
cds.features.odata_metadata_compatis now finally removed — adapt the implementation instead. - [cds@10.0.0] Legacy compat flag
cds.sql.transitive_localized_viewsis now finally removed — no action necessary. - [cds@10.0.0] Legacy compat flag
async_handler_compatfeature flag and the associated compat wrapping logic fromsrv-handlers; sync handlers are now always wrapped unconditionally. - [cds@10.0.0]
DISCARDevent as a special-cased branch — it is now mapped toCANCELvia the standard events alias table - [cds@10.0.0] Internal function
getDBTableused by old cds-dbs versions - [cds@10.0.0] Internal
_initialphase - [cds@10.0.0] Removed support for
async activate()functions returned fromcds-plugin.jsmodules, which was never documented, and deprecated since Oct 2023. If you need to run async code during plugin loading, just return a promise as default export.
May 2026
Added
- [cds-mtxs@3.9.3] Error on missing extension table if extensibility is enabled and
cds.requires['cds.xt.ExtensibilityService']['error-on-missing-extension-table']is set.
Changed
- [cds-dk@9.9.1]
cds add lintnow adds a dependency oneslint@10, instead ofeslint@9.
Fixed
- [cds-dk@9.9.2] Dependency updates, e.g. for CVE-2026-8723.
- [cds-dk@9.9.2]
cds build --for mtx-sidecarwarns ifresources.tgzwas not created, hinting to runnpm add -D taras a workaround on Windows. - [cds-dk@9.9.1]
cds add testnow uses version 1 of@cap-js/cds-test. - [cds-dk@9.9.1]
cds add vueuses correct placeholder values for book and author inApp.vue. - [cds-dk@9.9.1]
cds debugsupport for latest Chrome versions. - [cds-dk@9.9.1]
cds watchruns ESM projects withtsxagain, so that.jsimport are rewritten to.ts. This got broken in 9.9.0, but used to work in 9.8. - [cds-dk@9.9.1]
cds addonly adds theevent-mesh.jsonif a facet requiring the file is run. - [eslint-plugin-cds@4.2.3] Don't fail if the
tree-sitterdependency cannot be installed. This might happen in WebContainer environments where native modules cannot be loaded. - [eslint-plugin-cds@4.2.2]
auth-valid-restrict-grantnow also considers inherited actions. - [cds-compiler@6.9.2] api: when the environment variable
CDSC_TRACE_APIis set, the compiler writes a trace for calls of API functions; it now has more information, and also traces the exit of the API function. - [cds-compiler@6.9.1] compiler:
- make an element added via
extendcorrectly shadow an element from an include - do not issue a warning for a correct use of
$projection
- make an element added via
- [cds-compiler@6.9.1] odata:
- do not generate wrong ReferentialConstraints for unmanaged Composition without a partner
- render Partner attribute on forward association correctly
- [cds@9.9.1]
cds.features.compat_texts_entitieserroneously influenced the OData service document - [cds@9.9.1] Newly introduced
EXPAND_MAX_LEVELS_EXCEEDEDerrors did not have a default message - [cds@9.9.1] Incorrect resolving of parameter aliases for OData functions
- [cds@9.9.1] OData Batch: Call error middlewares during error serialization
- [cds@9.9.1]
cds.features.count_as_stringin lean draft - [cds-mtxs@3.9.2] When reusing HANA tenants with HANA TMS v2, the HANA tenant labels are no longer lost.
- [cds-mtxs@3.9.2]
/-/cds/model-provider/getCsnfor non-existing tenants returns a model again instead of throwing an error. - [cds-mtxs@3.9.1] More robust behavior of the
cds.xt.serviceManagerAPI if no Service Manager or HANA TMS credentials are configured. - [cds-mtxs@3.9.1] Synchronous SMS subscription now returns the application url with the correct JSON format.
- [cds-mtxs@3.9.1] Transient database errors in ETag determination are no longer silently swallowed.
- [cds-mtxs@3.9.1] Undocumented programmatic
cds-mtxAPI usage does not serve MTX services multiple times. - [cds-mtxs@3.9.1] It is now possible to register on the
bootstrapevent in thecli.jsfile to handle that event when running thecds-mtxcommand. - [cds-mtxs@3.9.1] Parallel calls of the database upgrade API are now more robust against race conditions.
- [cds-mtxs@3.9.1] MTX sidecar no longer crashes when triggering an upgrade and legacy tenant
__META__still exists. - [cds-mtxs@3.9.1] Database connection errors with
status404 throw without retries.
April 2026
Added
- [cds-dk@9.9.0]
cds buildroutes.hdbsynonymconfigfiles with*.configureproperties to thecfg/folder for HDI template substitution. - [cds-dk@9.9.0]
cds deployalso supports-bas a shortcut for--resolve-bindings. - [cds-dk@9.9.0]
cds importnow supports--resolve-bindings. - [vscode-cds@9.9.0] WorkspaceSymbols API:
/xto get index flags - [vscode-cds@9.9.0] WorkspaceSymbols: also include models defined in build tasks
- [cds-compiler@6.9.0] compiler:
- add support for extending views/projections with several SQL clauses:
where,group by,having,order by,limit - allow extending derived enum types/elements by adding enum symbols
- inside
extend … with enum {…}, it is now possible to useextend existingEnumSymbol with @Anno, like it is already possible insideextend … with {…} - when the new options
v7KeyPropagationis set, the propagation of thekeyproperty in queries is simplified, and thekeyproperty is not propagated when including structures into types
- add support for extending views/projections with several SQL clauses:
- [cds-compiler@6.9.0] odata: set
meta.compilerCsnFlavorin the OData transformed CSN - [cds-compiler@6.9.0] seal: set
meta.compilerCsnFlavorin the SEAL transformed CSN - [cds-compiler@6.9.0] effective: set
meta.compilerCsnFlavorin the effective CSN - [cds-compiler@6.9.0] sql:
- set
meta.compilerCsnFlavorin SQL transformed CSN - allow single-leafed structures within a
liston the left-hand side of theINoperator. For example(author, struct) in (...)becomes(author_ID, struct_leaf) in (...). - support
cds.Vectoron Postgres and H2
- set
- [cds.java@4.9.0] The i18n message key used with
@assertis now also used as error code on resulting validation errors. - [cds.java@4.9.0] Support OData v4 Date and Time functions:
date,time. - [cds.java@4.9.0] Protocol annotations like
@odata,@hcql, etc. now also support specifying the path for that protocol, e.g.@odata: 'browse'. - [cds.java@4.9.0] The property
cds.protocols.defaultsnow lets you specify the list of default protocols each ApplicationService is serving. By default an ApplicationService serves protocols "odata-v2" and "odata-v4". Value "*" adds all available protocols as default. - [cds.java@4.9.0] Enabled to opt-in for RFC BAPI transaction commit work & wait, instead of commit work that is executed after each RFC call.
- [cds.java@4.9.0] Added new OpenRewrite recipes for deprecated apis that will be removed with CAP 5.0.
- [cds.java@4.9.0] H2/SQLite: Support vector functions in DDL (beta).
- [cds4j@4.9.0] Support functions to extract date and time components from temporal:
date,time. - [cds4j@4.9.0] Introduce caching for builder proxies.
- [cds4j@4.9.0] Support for the SAP HANA functions
years_between,months_between,days_between,seconds_between, andnano100_between. The functions are emulated on non-SAP HANA databases. - [cds4j@4.9.0] SAP HANA:
- support fallback to non-hex SQL on "HEX enforced but cannot be selected" errors on SAP HANA QRC 1/2026.
- use native JDBC/ngdbc support for
cds.VectorinStringandfloat[]format.
- [cds4j@4.9.0] Support
cds.Vectoron H2, SQLite and PostgreSQL. - [cds4j@4.9.0] Support
CQL.vector_embeddingon SAP HANA, H2 and SQLite. - [cds4j@4.9.0] Support
CQL.l2Normalizeon SAP HANA, PostgreSQL, H2 and SQLite. (beta) - [cds4j@4.9.0] Support selects from pseudo table. (beta)
- [cds@9.9.0] Event Queue Scheduling:
- Support for
srv.schedule.task(event, data)to create so-called "singleton tasks" that exist only once as well assrv.unschedule.task(event)to remove them again - Support for cron expressions as argument for
.every(), e.g.,.every('*/5 * * * 2')for "Every 5 minutes, only on Tuesday" - Support for
cds.appidfor isolating microservices in shared HDI scenarios- The experimental option
targetPrefixis temporarily kept to allow flushing tasks that rely on it, but will be removed soon
- The experimental option
- Streamlined aggregation of
queuedservice effective configuration
- Support for
- [cds@9.9.0] Advanced Event Queue Scheduling via Scheduling Service (Beta; enable via
cds.requires.scheduling = true)- Efficient leftover processing by maintaining a schedule in
t0(requires@sap/cds-mtxs^3.9) - Revised event processing (ongoing)
- Only applicable with queue kind
persistent-queue(which is the default)
- Efficient leftover processing by maintaining a schedule in
- [cds@9.9.0] In addition to
.csvfiles, and.jsonfiles, initial data can now also be provided via.yamlfiles- Limitation: Only supported in Node.js runtimes, so far, not yet by
cds buildfor Java, and for production deployments to HANA
- Limitation: Only supported in Node.js runtimes, so far, not yet by
- [cds@9.9.0] Support
$selectand$expandfrom draft actions:draftNew,draftPrepare,draftActivate, anddraftEdit - [cds@9.9.0] Enable referencing action request responses in
dependsOnof subsequent requests in the same batch - [cds@9.9.0] Import files the ESM way in ESM projects, e.g. to support mocking in Vitest
- [cds@9.9.0] Node.js-native
fetch-based HTTP client for remote service consumption (beta)- Used automatically when
@sap-cloud-sdk/http-clientis not installed or forced viacds.remote.native_fetch = true - Known limitations:
- Resolving destinations via the BTP Destination Service is not supported
- Only basic authentication is supported
- Used automatically when
- [cds@9.9.0]
cds.infer.elementsnow also supports SQL-style casts, wildcard overrides andexcludingclauses - [cds@9.9.0] Support for restricting the levels of
$expand(beta)@Capabilities.ExpandRestrictions.MaxLevelsdefines the maximum allowed depth of an$expandstarting from the annotated entity- Additionally,
@Capabilities.ExpandRestrictions.Expandable: falseis interpreted as@Capabilities.ExpandRestrictions.MaxLevels: 0 - Finally, there is global config option
cds.query.restrictions.expand.maxLevels
- [cds@9.9.0] Kafka:
cds.requires.messaging.config = { ... }allows custom Kafka client config for development scenarios - [cds-mtxs@3.9.0] It is now possible to create additional instances of the internal Service Manager Client or HANA TMS v2 client to access alternative services. Instances can be created using
cds.xt.containerManager.newInstance(serviceCredentials). - [cds-mtxs@3.9.0] Environment variables
APPLICATION_ID,APPLICATION_VERSION_INFO, andDEPLOY_IDare now forwarded to the HDI deploy environment. - [cds-mtxs@3.9.0] Database deployment can be individually disabled for
cds.xt.SmsProvisioningServiceorcds.xt.SaasProvisioningServicefor hybrid scenarios. It can be confiured by e. g.cds.requires['cds.xt.SmsProvisioningService'] = { "subscribe": { "skip-db": true } }. This is only available for synchronous subscription. - [cds-mtxs@3.9.0]
cds.outbox.Messagesto model oft0. - [cds-mtxs@3.9.0] Subscription payloads may now include a
custom_labelin the_.hdi.createoptions to attach additional labels to HANA containers and, for the service-manager, also to bindings. Example:_.hdi.create.custom_label = 'my_key=my_value'.
Changed
- [cds-dk@9.9.0]
cds add html5-repocreates destinations as part of the app deployer module instead of initial destinations in the destination service. - [cds-dk@9.9.0]
axiosis removed fromdependencies. - [cds-dk@9.9.0]
cds initno longer generates database-specific extensions (db/hana/,db/sqlite/) and their profile-based configuration in the sample template. - [vscode-cds@9.9.0] removed
https-proxy-agentin favour of native VS Code / fetch proxy handling. - [vscode-cds@9.9.0]
CAP Release Notespage shows a lightning bolt logo as dimmed background when loading fails. - [vscode-cds@9.9.0] Zoom direction in Analyze Dependencies was flipped on macOS to have a more natural UX
- [cds-compiler@6.9.0] compiler:
- add
compilerVersionto CSN meta - issue a warning if a structure in an annotation value would have the same CSN representation as an expression
- issue warnings for extends on built-in types
- warn on duplicate members from includes via extend
- add
- [cds-compiler@6.9.0] odata:
- update OData vocabularies: Common, Core, UI
- using
@readonlywith an expression value on entities or aspects is no longer silently accepted and now produces an error
- [cds.java@4.9.0]
cds-feature-bdcenforces an allow-list for Formation Type Ids (e.g.cds.bdc.formationTypeIds) in production profiles from now on. - [cds.java@4.9.0] The MTX sidecar health check now uses a configurable timeout instead of a hard-coded 1s limit. Set
cds.multitenancy.health-check.timeout(type:Duration, default:1s) to adjust the threshold for your environment. - [cds.java@4.9.0] The switch
cds.draft.post-activenow defaults totrue. In case it is set tofalseor not set all POST requests to entities with draftNew action will create a new active instance. - [cds.java@4.9.0] Improved error handling in
cds-adapter-mcpto prevent stack traces and internal details from leaking in error responses. - [cds4j@4.9.0] Path segments for to-one associations no longer contain a filter.
- [cds@9.9.0] I18n keys in
@asserterror messages are now used as error codes. The genericASSERTerror key is no longer used if themessageis not an i18n key.
Fixed
- [cds-dk@9.9.0]
cds add xsuaa --plan brokerdoes not use planapplicationin approuter scenarios. - [cds-dk@9.9.0]
cds add postgresfor Kyma no longer adds an invalidvalues.yamlentry forpostgres-db-deployer. - [cds-dk@9.9.0]
cds init/add esmnow also fillspackage.jsonwith proper content. - [cds-dk@9.9.0]
cds deploy --to hana --resolve-bindingsno longer overwrites credentials of all hana-taggedVCAP_SERVICESentries with the target container's service key when multiple HDI bindings are present. - [cds-dk@9.9.0]
cds add datanow adds a newline character at the end of csv files to make appending content easier. - [cds-dk@9.8.3] Dependency updates, e.g. for CVE-2026-33937.
- [cds-dk@9.8.3]
cds add xsuaa --plan brokerdoes not use planapplicationin approuter scenarios. - [cds-dk@8.9.13] CVE-2025-15284: update
expressto fix vulnerability withqs<6.14.1 - [vscode-cds@9.9.0] Prevent error when scanning for LSP-restart settings in configuration.
- [vscode-cds@9.9.0] support CDS lookup dirs defined in subfolders e.g. pom.xml (resolve cds env per project root instead of workspace root)
- [vscode-cds@9.9.0] WorkspaceSymbols: NodeJS V8 crashed for very large workspaces
- [vscode-cds@9.9.0] WorkspaceSymbols: filter out symbols from ignored files
- [vscode-cds@9.9.0] add quotes around the binary in the default cds-typer command to support paths with non-alphanumeric characters
- [cds-compiler@6.9.0] compiler:
- don't introduce a strange
castproperty in the CSN for a column with an expand on a to-many association - while crawling tokens for LSP, allow extensions without name
- don't introduce a strange
- [cds-compiler@6.9.0] effective: don't absolutify paths in filters in annotations
- [cds-compiler@6.9.0] sql: properly resolve references in annotation values and
onconditions for a column inside an expand without base reference - [cds.java@4.9.0] HCQL V2: placeholder
$keyis no longer added to the HCQL request. - [cds.java@4.9.0] Further improved performance of inactive draft delete during save.
- [cds.java@4.9.0] Fixed a bug, causing tenant-related properties (iss, subDomain) not getting propagated to the new
RequestContextwhen callingsystemUser(). - [cds.java@4.9.0]
cds-feature-change-trackingperformance is improved when large number of entities are inserted. - [cds.java@4.9.0] Fixed a bug, causing DraftMessages for composition of one to return invalid message targets.
- [cds.java@4.9.0] Fixed a bug, causing
@Core.MediaTypeand@Core.ContentDisposition.Filenameannotations with expression syntax (e.g.,@Core.MediaType: (mimeType)) to not resolve correctly after type flattening. - [cds4j@4.9.0] Fixed constant timestamp values in SQL statements. They are now set in UTC independently of the JVM's time zone.
- [cds4j@4.9.0] Fixed broken SQL if a hierarchy view has a sort order specified by order by.
- [cds4j@4.9.0] Fixed SQL error on SAP HANA when using
CASE WHENwith a constant boolean condition on the select list. - [cds@9.9.0] Calculation of
nextLinkbased on$skipTokenfor requests with$topand/or$skip - [cds@9.9.0] Stale entries in
.cds-services.jsonare removed reliably, so thatcds mock/watchno longer try to connect to dead servers - [cds@9.9.0] Configuration shortcuts like
cds.requires[service] = truealways preserve object configuration from other sources - [cds@9.9.0]
cds-serve --project <dir> --service <name>now honors the explicit service instead of defaulting toall - [cds@9.9.0] Handle expression values for
@Core.MediaType, like@Core.MediaType: (mimeType) - [cds@9.9.0] Will not add a default target to
MULTIPLE_ERRORS-type error - [cds@9.9.0] Enabled creating active composition children using
direct_crudrequests via navigation - [cds@9.9.0] Removed artifacts of draft metadata from active entity data
- [cds@9.9.0] Prevent type error when encountering an unexpected symbol key in
cds.ApplicationService - [cds@9.9.0] Reject requests with
$filteron operations with primitive return types - [cds@9.8.5]
compile.for.direct_crudis resilient against draft-enablement on non-service entities - [cds@9.8.5] Requests targeting a view with parameters are now correctly send to remote OData services
- [cds@9.8.5]
TypeErrordue to unchecked access when handlingPUTon collection via navigation - [cds@9.8.5] Null value sorting in draft-enabled scenarios now matches database behavior (NULLS FIRST for ASC, NULLS LAST for DESC)
Removed
- [vscode-cds@9.9.0] Unsupported
playbutton for CDS queries in theCAP Release Notespage.
March 2026
Added
- [cds-dk@9.8.2]
cds initnow removes the.vscodefolder when creating projects in SAP Business Application Studio in order to restore compatibility with other project generators. This is a temporary solution likely to be reverted in cds-dk 10. - [cds-dk@9.8.0]
cds up --overlay <file|name> (Cloud Foundry) now resolves MTA extension descriptors (<name>.mtaext) from the project root. - [cds-dk@9.8.0]
cds add postgresnow supports Kyma with automatic database provisioning and IP whitelisting. - [cds-dk@9.8.0]
cds deploy --to hana --store-credentialsnow warns about the deprecated option--store-credentials. - [cds-dk@9.8.0]
cds importnow uses the default options defined viacds.import.options[<from>] = {option: 'value'} - [cds-dk@9.8.0]
cds versionnow shows version of@sap/eslint-plugin-cds. - [cds-dk@9.8.0]
cds version --jsonreturns a stable output format as JSON. - [cds-compiler@6.8.0] api: basic experimental support for code completion in
cds repl - [cds-compiler@6.8.0] compiler:
- retain original meta property in CSN
- add compilerCsnFlavor to meta property
- [cds-compiler@6.8.0] sql:
- Add support for
cds.Vector - Allow migration from cds.String to cds.LargeString
- Fiori Tree Views in the database backend
- For postgres: warning for identifiers that exceed the databases length limit
- Add support for
- [cds.java@4.8.0] Support aggregate functions in
@assert. - [cds.java@4.8.0] Setting
cds.messaging.services.<key>.queue.config.channel: nullfor a Kafka channel-based messaging service now disables the default channel. If no channel is explicitly configured for an event using@kafka.channelthe topic itself is used as channel. - [cds.java@4.8.0] Improved performance of queries merging active and inactive data (e.g. "All" Fiori list-report filter), when reading draft-enabled entities for a user with a lot of drafts.
- [cds.java@4.8.0] Improved performance of inactive draft delete during draft save.
- [cds.java@4.8.0] The
addgoal of thecds-maven-pluginnow adds a dependency tocf-java-logging-support-servletfor feature APPLICATION_LOGGING. - [cds.java@4.8.0] HCQL adapter and HCQL client for remote services now support HCQL V2.
- [cds.java@4.8.0] Actions annotated with
@Common.DraftRoot.NewActionnow have a default@Onhandler. - [cds.java@4.8.0] Setting
cds.drafts.postActivecauses plain POST requests to a draft-enabled entity (without explicitIsActiveEntity) to create an active instance, in case the entity has a draft new action. - [cds.java@4.8.0] Support OData v4/v2 Date and Time functions:
year,month,day,hour,minute,second. - [cds.java@4.8.0] Improved layout of change tracking UI on mobile devices.
- [cds.java@4.8.0] Setting
cds.environment.deployment.appidallows to define an identifier for the applications using the persistent outbox on shared databases. - [cds4j@4.8.0] Support aggregate functions on associations in expressions of calculated elements, by moving them into a subquery.
- [cds4j@4.8.0] Support functions to extract date and time components:
year,month,day,hour,minute,second. - [cds@9.8.0] Calculated elements are now properly calculated in draft state. So far, the elements have been treated as regular elements ignoring the calculation.
- In case this causes issues, you can opt-out with
cds.fiori.calc_elements = falseuntil cds10
- In case this causes issues, you can opt-out with
- [cds@9.8.0] $compute supports decimal constants
- [cds@9.8.0] Support
/$metadatarequests in OData batch - [cds@9.8.0] Support for
@odata.bindparameters in collection bound actions - [cds@9.8.0] Support for renaming of foreign keys of managed associations while resolving views
- [cds@9.8.0] Support for
Prefer: return=minimalheader in generic draft actions - [cds@9.8.0] OData batch: Parallel processing of atomicity groups via
cds.odata.max_batch_parallelization=<number>(default:1)- Only applicable if
$batchrequest exclusively containsGETrequests - Note: Parallel processing of atomicity groups is in conflict with OData specification for
multipart/mixed! - Additional experimental feature: Bundle independent
GETrequests into single transaction viacds.odata.group_parallel_gets=true
- Only applicable if
- [cds@9.8.0]
hcql: request raw stream via http headerAccept: application/octet-stream - [cds-mtxs@3.8.0] If not needed, CSV data deployment with extensions can be disabled with
cds.requires['cds.xt.ExtensibilityService'].activate['skip-csv'] = true. This improves the performance when pushing extensions if many extensions already exist.
Changed
- [cds-dk@9.8.0]
cds add multitenancydoes not add an explicitjavaprofile to the main app any more. - [cds-dk@9.8.0]
cds deployandcds bindsupport Kyma-by-default for projects with Kyma-only deployment descriptors. - [cds-dk@9.8.0]
cds deploy --to hana --on k8snow supports deploying to SAP HANA using an existing Kubernetes service binding, allowing non-default Kyma naming conventions. - [cds-dk@9.8.0]
cds importnow correctly imports Views with Parameters from a given OData EDMX service definition. - [cds-dk@9.8.0]
cds importnow interprets empty navigation path references as if it would be a null value. - [cds-compiler@6.8.0] compiler:
- improve warning in case of invalid type for key
- simplify syntax error text when expecting Comparison and Operator tokens
- improve support for code completion with
caseexpressions, queries, and subqueries
- [cds.java@4.8.0] Generated
package.jsonfor new projects no longer contains adescription,repositoryandlicense. - [cds4j@4.8.0] Changed the fallback mode of expand to
parent-keys. - [cds4j@4.8.0] A query that uses a ref as substring|prefix|suffix in
contains|startWith|endsWithis now rejected. Only literals or parameters may be used. - [cds@9.8.0] Destination caching is no longer modified at runtime. Caching configuration is now managed by the Cloud SDK.
- [cds@9.8.0]
cds.envnow supports for credentials lookup Kubernetes secrets with a structure like${SERVICE_BINDING_ROOT}/${SERVICE}/${INSTANCE}/${BINDING}. Previously only one level between the root and the binding was possible. - [cds@9.8.0] Allow using ESlint 10 by opening version range
^9 || ^10for@eslint/js - [cds@9.8.0] Outbound
hcqlrequests always viaPOST
Fixed
- [cds-dk@9.8.2]
cds add workzonefor Kyma correctly adds thehtml5-apps-repo-runtimeto itsChart.yaml. - [cds-dk@9.8.2]
cds add app-frontin combination withcds add iascorrectly includes allIASDependencyNamesettings. - [cds-dk@9.8.2]
cds buildhas improved performance in some scenarios. - [cds-dk@9.8.1]
cds buildplugins correctly formats a thrownBuildErrorin the logs. - [cds-dk@9.8.1]
cds versionalso reports a cds-dk installation in Java projects that don't have such a dependency in theirpackage.json. - [cds-dk@9.8.0]
cds bindreports additional error information while accessing Cloud Foundry services. - [cds-dk@9.8.0]
cds versionnow works again if executed in subfolders of Java projects without apom.xmlfile. - [cds-dk@9.8.0]
cds add workzonein combination withcds add iasadds theHTML5.IASDependencyNamefor thesrv-api. - [cds-dk@9.8.0]
cds add lintnow creates an ESLint config file again. - [cds-dk@9.8.0]
cds importnow correctly handles enum types as keys in EDMX v4 import. - [cds-dk@9.8.0]
cds pushnow shows the correct passcode URL when the subdomain changes between logins. - [vscode-cds@9.8.0] running CDS Typer in WSL projects
- [vscode-cds@9.8.0] formatter: indentation of annotations to entities with annotated actions
- [cds-compiler@6.8.0] sql:
- do not report validation errors on entities marked as
@cds.persistence.skip - normalize named arguments for portable functions
- properly flatten associations for temporal unique constraints
- do not report validation errors on entities marked as
- [cds.java@4.8.0] Fixed a bug, causing the IAS tenant host not getting propagated to Cloud SDK if the issuer does not include a protocol scheme.
- [cds.java@4.8.0] Fixed a bug, causing incorrect predicates in remote OData adapter for expressions with
falseliterals. - [cds.java@4.8.0] Fixed a bug, causing errors in case custom
EventContextinterfaces were (package) private. - [cds.java@4.8.0] Fixed a bug, causing draft data created from a deep update to have
IsActiveEntityandHasDraftEntityset tonull. - [cds.java@4.8.0] Fixed a bug, causing incorrect executions of cds-maven-plugin
buildandresolvegoals, when executed from the root directory. - [cds.java@4.8.0] Fixed a bug, causing drafts to be created in OData V4, even if
IsActiveEntitywas explicitly set totruein a preceeding URL segment. - [cds.java@4.8.0] Fixed a bug, causing TenantProviderService.readTenantInfos to throw an exception with TMSv2.
- [cds4j@4.8.0] Fixed parsing of calculated elements with value
null. - [cds4j@4.8.0] Fixed SQL error due to missing CTEs when using
exitson runtime views in infix filters. - [cds4j@4.8.0] Fixed SQL error when using
existspredicates in calculation expressions. - [cds4j@4.8.0] Fixed a bug forcing runtime view mode
resolvefor queries usinglock(null)(incl. queries parsed from cqn). - [cds4j@4.8.0]
matchesPatternis correctly parsed from and to JSON when the flags are omitted. - [cds4j@4.8.0] Hierarchical selects now optimize the select list, resulting in simpler queries.
- [cds@9.8.4]
res.statusCodeof batch sub-requests did not consider potential modifications duringsrv.on('error') - [cds@9.8.4] Restore login challenge for late
401with mocked authentication in$batch - [cds@9.8.4] Batched request fails when depended upon atomicity group fails
- [cds@9.8.3] OData batch parallel processing: Drain remaining queue when aborting
- [cds@9.8.2] Compatibility with
@eslint/js^10 - [cds@9.8.1] OData batch parallel processing: Preserve request sequence for OData v2
- [cds@9.8.1] In inbound messaging, only load the extended model if there is a tenant
- [cds@9.8.1] Ensure
cds.fiori.direct_crudis considered duringcds build - [cds@9.8.0] OData JSON batch:
- Response value formatting and escaping for non
application/jsonresponses - Setting correct
content-typeheader value for all content types
- Response value formatting and escaping for non
- [cds@9.8.0]
content-lengthis now set for OData multipart/mixed batch subrequest responses - [cds@9.8.0] Connection issues when a Kafka cluster has been created with public endpoints
- [cds@9.8.0] Fix duplicated columns in case of
$expand=* - [cds@9.8.0] Unhandled promise rejection in
cds.spawnif extended model could not be loaded - [cds@9.8.0] Set
msg.tenant&msg.eventof messages received from Kafka, based on the stringified header values - [cds@9.8.0]
$expand=*expands only the exposed associations - [cds@9.8.0] Broken
odata-v2formatting for values used inbeween- and,inandlambdatype expressions - [cds@9.8.0] Appending
/$valueto an entity that is not a media entity returns400 Bad Request - [cds@9.8.0] In Jest test runs in ESM projects, files are now loaded properly
- [cds@9.8.0] Correctly resolve dependencies in workspace setups where the CAP project is not at the root
- [cds@8.9.9] Requests targeting a view with parameters are now correctly send to remote OData services
- [cds-mtxs@3.8.1] More accurate exception handling if the extension table
cds.xt.Extensionscannot be read. - [cds-mtxs@3.8.1] For HANA, tenant subscription now stores the tenant database
schemaincds.xt.Tenants. - [cds-mtxs@3.8.1] The annotation allowlist correctly handles allowed parent annotations.
- [cds-mtxs@3.8.0] The extension linter for annotations on structured types does not throw a
TypeError. - [cds-mtxs@3.8.0] The response when getting extensions using
/-/cds/Extensions/<id>now also contains thestatus.
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: [] } - [cds-mtxs@3.7.1] Provisioning service calls now skip
cds.xt.DeploymentServiceoperations if it is disabled, logging only a warning.
Fixed
- [cds-dk@9.7.2]
cds build --for mtx-sidecarcorrectly resolves@sourcein custom MTX sidecar services. - [cds-dk@9.7.2]
cds buildnow utilises caching for workspace resolution, which will speed up build times for projects with many workspaces. - [cds-dk@9.7.2]
cds addcommands don't augment Helm Charts if not managed by CAP. - [cds-dk@9.7.2]
cds add approuterfor Kyma configures token exchange for managed approuter scenarios. - [cds-dk@9.7.2]
cds bindreports additional error information while accessing Cloud Foundry services. - [cds-dk@9.7.1]
cds add completionnow works without specifying the project runtime. - [cds-dk@9.7.1]
cds add xsuaacorrectly adds the the binding for thehtml5-apps-deployeron Kyma. - [cds-dk@9.7.1]
cds versionprints an older format in a legacy situation. - [cds-dk@9.7.1]
cds add nodejsis automatically added in BAS scenarios for compatibility if no other runtime is specified. - [cds-dk@9.7.1]
cds add data -nworks correctly forComposition of onescenarios. - [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.14] CVE-2026-25639: Update
axiosversion to 1.13.5 - [eslint-plugin-cds@4.2.1] Removed usage of deprecated API in
lib/utils/rules.js - [eslint-plugin-cds@4.2.0] Use ESLint API supported by versions
9and10. - [eslint-plugin-cds@4.1.2] No longer crash on .java files larger than 32 kB.
- [eslint-plugin-cds@4.1.2] Weaken
java/cql-class-targetsto only warn when a string literal is passed as parameter. - [eslint-plugin-cds@4.1.2]
assoc2many-ambiguous-keyno longer falsely warns about 1-n joins when an infix filter reduces the joined relation to a single row. - [cds-compiler@6.7.3] sql: do not resolve path navigations to virtual elements which resulted in an internal error.
- [cds-compiler@6.7.2] compiler: Just issue warning for
usingdeclaration referring to nothing (fixes regression introduced with v6.7.0 if there is a file containing anamespacedeclaration, but no definitions) - [cds-compiler@6.7.2] effective: clean up internal Symbols from meta section
- [cds-compiler@6.7.2] sql: clean up internal Symbols from meta section
- [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.1]
DELETErequests nulling a@mandatoryproperty - [cds@9.7.1] Correctly call remote collection bound action for
odata-v4services - [cds@9.7.1] Flow annotation validation at compile time strictly follows the documentation: only enum status values are allowed
- Status value validation can be disabled via
cds.features.skip_flows_validation=true
- Status value validation can be disabled via
- [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 ...- ... the reference can not be found in the annotated entity's associations
- ... the referenced entity is annotated with
@cds.persistence.skip - ... the referenced field does not exist in the referenced entity
- 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) - [cds-mtxs@3.7.1] HANA deployment parameters set via the
HDI_DEPLOY_OPTIONSenvironment are now correctly evaluated.
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