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.
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