Changelog 2025
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.
May 2025
Added
- [cds.java@3.10.0] Support functions
round
,floor
,ceiling
,length
,indexof
, andtrim
in OData V4. - [cds.java@3.10.0] Added expression validations with
@assert.constraint
. - [cds.java@3.10.0] Added support for
@mandatory
with expressions. - [cds.java@3.10.0] Added support for
@readonly
with expressions. - [cds.java@3.10.0] Added support for Service Manager v2 API. Usage is disabled by default, but can be enabled with CDS property
cds.multiTenancy.serviceManager.v2.enabled: true
. - [cds.java@3.10.0] The goal
add
of thecds-maven-plugin
for feature AMS adds support for local testing of AMS policies to a CAP Java project. - [cds.java@3.10.0] Authorizations now support conditions with paths involving associations in
@restrict
predicates for modifying statements. - [cds.java@3.10.0]
@readonly
(and it's@Common.FieldControl
variants) and@Core.Computed
can now be evaluated already on draft instances by settingcds.drafts.enforceReadonly
totrue
. During activation they are therefore no longer evaluated. With this change values that are computed on server-side in draft mode will be retained during activation. - [cds4j@3.10.0] Support
Result:rowType
for insert, upsert and update results - [cds4j@3.10.0] Added numeric rounding functions
round
,floor
andceiling
onValue
and onCQL
- [cds4j@3.10.0] Function
average
is synonymn foravg
- [cds4j@3.10.0] Type propagation for the
avg
|average
function - [cds4j@3.10.0] Added String functions
length
,indexOf
andtrim
- [cds4j@3.10.0] Support expanding unmanaged associations in hierarchies
- [cds4j@3.10.0] Support expanding reverse-mapped associations on subqueries and hierarchies
- [cds4j@3.10.0] Support associations/compositions to entities with aliased keys
Changed
- [cds-dk@9.0.1]
cds add cf-manifest
uses a 1 GB disk quota instead of 512 MB for Java apps. - [cds4j@3.10.0] New method
Xpr.size()
replaces (deprecated) methodXpr.length()
Fixed
- [cds.java@3.10.0] Fixed a bug, causing
com.sap.cloud.sdk.datamodel.odata.client.exception.ODataDeserializationException
when querying the@odata.singleton
annotated entity via remote service. - [cds.java@3.10.0] Fixed a bug, causing a JsonParsingException, when authenticating with a IAS based jwt token that contains non-string attributes.
- [cds.java@3.10.0] Fixed a bug, causing the Kafka client to loose connection in case of a certificate rotation.
- [cds.java@3.10.0] Fixed a bug, causing the original Correlation ID not propagated to custom Outbox handlers.
- [cds.java@3.10.0] Fixed a bug, causing the display of the undocumented properties in the developer dashboard.
- [cds.java@3.10.0] Fixed a bug, causing a messed up event context when receiving message from Event Mesh without data, dataMap or headersMap.
- [cds.java@3.10.0] Fixed a bug in
cds-feature-change-tracking
causing the links between the projections of the entities that exclude elements of aspectchangelog.changeTracked
and their changes to be lost. Links between entities and changes are now written using domain entities which is assumed to be extended with aspectchangelog.changeTracked
. - [cds.java@3.10.0] Fixed a bug in
cds-feature-change-tracking
causing statement with wrong selection predicate being generated whenUpdate
statement uses CDS delta lists as payloads for compositions. - [cds.java@3.10.0] Fixed a bug in
cds-feature-change-tracking
causingDelete
statements to consider localized values for images. - [cds.java@3.10.0] Fixed a bug in
cds-feature-change-tracking
causing parametrizedUpdate
statements to select more data than needed for changelogs. - [cds4j@3.10.0] Fixed handling of expands in projections
- [cds4j@3.10.0] Fixed serialization of statements with predicates on the select list
- [cds4j@3.10.0] Reduced memory consumption during bulk inserts
- [cds4j@3.10.0] Execute bulk inserts in partitions
- [cds4j@3.10.0] Fix search on entities using virtual elements as
@Common.Text
- [cds@8.9.3] OData:
$value
access of primitive properties returned by custom handler - [cds@8.9.3] UCL: Add missing declaration of variable
$input
in mutation for creating an application template - [cds@8.9.3] Purge of
servers
from.cds-services.json
file - [cds@8.9.3] Loading of relative service implementations in plugins
- [cds@8.9.3]
cds.compile.to.edmx
in case the model was manipulated in a plugin
April 2025
Added
- [cds.java@3.9.0] Added support for the SAP Integration Suite, Advanced Event Mesh.
- [cds.java@3.9.0] Added
@Core.OptionalParameter
support for bound and unbound function parameters. Supported values aretrue
andfalse
. - [cds.java@3.9.0] Subscription dependencies for
portal
andhtml5-apps-repo
are automatically created if the corresponding service is bound to the CAP Java application. - [cds.java@3.9.0] Log CDS Properties by setting the log level
logging.level.com.sap.cds.properties: DEBUG
in the application.yaml. Warnings are turned on by default. - [cds.java@3.9.0]
cds-feature-auditlog-v2
now ignores auditlog service bindings relevant for the XSA platform.
Changed
- [cds-dk@8.9.3]
cds add pipeline
also creates UI5 resources if required. - [cds-dk@8.9.2] The Node version in
gen/db/package.json
file generated bycds build
is now>=18
, matching to what@sap/hdi-deploy
specifies. - [cds-dk@8.9.2]
cds
commands now fail if used in combination with the upcoming@sap/cds
version 9. - [vscode-cds@8.9.0] use new CDS parser by default
Fixed
- [cds-dk@8.9.3]
cds add workzone
uses the backend destinationsrv-api
instead of-srv-api
on Cloud Foundry. - [cds-dk@8.9.3]
cds init
uses latest Maven Java archetype version 3.9.1 for creating Java projects. - [cds-dk@8.9.2]
cds bind
gives better error messages if the Cloud Foundry org or space are not found. - [cds-dk@8.9.2]
cds add html5-repo
works in combination with multitenancy when no app router or Work Zone is set up. - [cds-dk@8.9.1]
cds build
restores compatibility with@sap/cds
7, no more crashing there withTypeError: Cannot read properties of undefined (reading 'enabled')
. - [cds-dk@8.9.1]
cds add containerize
works if run beforecds add helm
. - [cds-dk@8.9.1]
cds add http
no longer writes headers starting with a placeholder (IntelliJ compatibility) - [cds-dk@8.9.1]
cds init --force
overwrites existing files. - [vscode-cds@8.9.1] Formatting of annotations in parentheses with values containing spaces
- [vscode-cds@8.9.0] Auto update of Annotation Modeler plugin did not work
- [vscode-cds@8.9.0] Document highlights could show wrong ranges for namespaces
- [cds-compiler@5.9.2] to.edm(x): Revert addition of the attribute sap:filterable="false" to the NavigationProperty DraftAdministrativeData in OData V2
- [cds-compiler@4.9.10] Added option
allowMixinInProjectionExtension
which allows referring to mixins inextend projection
. This was forbidden in cds-compiler v4, but re-introduced in v5.5. Users wanting to migrate from cds-compiler v3 to v4 can use this option for easier migration. - [cds.java@3.9.1] Fixed a bug, causing wrapping services with typed service interfaces to fail when service interfaces are defined in a separate dependency.
- [cds.java@3.9.1] Fixed a bug, causing ORD EDMX metadata endpoints to fail, when services contain a dot.
- [cds.java@3.9.1] Fixed a bug, causing Kafka SSL configuration to access corrupted keystore files.
- [cds.java@3.9.1] Fixed a bug, causing Event Mesh multitenancy subscription or upgrades to fail silently.
- [cds.java@3.9.0] Fixed a bug, causing lost commits, when starting readonly transactions through Spring APIs inside of a ChangeSetContext.
- [cds.java@3.9.0] Fixed a bug in OData v4 adapter, causing duplicated entries in response payload for
@open
types. - [cds4j@3.9.1] Fix queries with filtered path over runtime views
- [cds@8.9.2]
forUpdate
will not considerwait
ifignoreLocked
is set - [cds@8.9.2] Do not crash in case of custom
DraftAdministrativeData
table - [cds@8.9.1]
cds.env
merging fornull
values - [cds@8.9.1] Best-effort mechanisms for lambda support on OData V2 remote services (usage of functions in lambda expressions)
- [cds@8.9.1] Use extended model in
enterprise-messaging
inbound handlers - [cds@8.9.1] Compat flag
cds.features.draft_compat
for handler registration in draft scenarios - [cds-mtxs@2.7.2] Inaccurate warnings about outdated configuration are removed.
- [cds-mtxs@2.7.2] Improved resilience in handling corrupted metadata entries stored in the tenant database table.
- [cds-mtxs@2.7.1] Input validation annotations (e. g.
@assert.range
) with default values in extensions are now correctly checked. - [cds-mtxs@2.7.1] Event 'activated' is now only triggered for successfully completed extension activation.
- [cds-mtxs@2.7.1] Binding parameters configured for subscription are now correctly passed to the Service Manager.
March 2025
Added
[cds-dk@8.9.0]
cds import
now adds Cloud SDK dependencies to package.json if an OData service is imported.[cds-dk@8.9.0]
cds deploy --to hana --on k8s
is now supported.[cds-dk@8.9.0]
cds up
automates freezing dependencies, building, and deploying your application.[cds-dk@8.9.0]
cds pull
includes existing extensions if the server is configured accordingly.[cds-dk@8.8.0]
cds add xsuaa
lets you pass a--plan
option, e.g. forcds add xsuaa --plan broker
.[cds-dk@8.8.0]
cds add workzone
andcds add workzone-standard
support for Kyma.[cds-dk@8.8.0]
cds add typer
now adds abefore:cds-watch
script to run cds-typer before startingcds watch
.[cds-dk@8.8.0]
cds watch
supports abefore:cds-watch
npm script in yourpackage.json
, executed once before the initialcds watch
startup.[cds-compiler@5.9.0] compiler:
- Generated entities for compositions of named aspects now have an
include
on the named aspect, inheriting actions from the aspect. This can be disabled via optioncompositionIncludes: false
. - A warning is emitted for selected elements that are explicitly
virtual
, whose behavior will change in cds-compiler v6. - New warning for structures having a scalar default value.
- New warning for localized structures, as they are not fully supported by the compiler.
- The new parser (
newParser: true
) now supports operator==
.
- Generated entities for compositions of named aspects now have an
[cds-compiler@5.9.0] to.cdl:
- Definitions can now be rendered nested in services. A common namespace can be extracted, too. To use it, enabled options
renderCdlDefinitionNesting
andrenderCdlCommonNamespace
. - Annotation array values are pretty-printed to reduce whitespace.
- Definitions can now be rendered nested in services. A common namespace can be extracted, too. To use it, enabled options
[cds-compiler@5.9.0] for.effective: Property
namespace
is no longer part of effective CSN.[cds-compiler@5.9.0] for.sql/hdi:
- [cds-compiler@5.9.0] The new operator
==
is rendered asIS NOT DISTINCT FROM
or an equivalent expression. - [cds-compiler@5.9.0] Using option
booleanEquality
, operator!=
is rendered asIS DISTINCT FROM
or an equivalent expression.
- [cds-compiler@5.9.0] The new operator
[cds.java@3.8.0] Added support for async mode for Unified Customer Landscape´s (UCL) SPII Tenant Mapping API in
cds-feature-ucl
.[cds.java@3.8.0] Added parameter for token retrieval timeout for determination of service manager JWT token.
[cds.java@3.8.0] Event handler signatures can now accept arguments of type
CqnStatement
or it's specific sub-interfaces andCqnStructuredTypeRef
.[cds.java@3.8.0] The
build
goal of thecds-maven-plugin
now supports execution from project root folder. It also takes a new propertygoals
to specify a custom list of goals for execution.[cds.java@3.8.0] IAS App2App flows can now be configured for a remote service without creating a destination, by using the IAS binding and setting
binding.options.ias-dependency-name
to the respective IAS application dependency.[cds.java@3.8.0] Added support for UI5's State Messages concept to draft-enabled entities, when compiler flag
cdsc.beta.draftMessages
is set totrue
.[cds.java@3.8.0] When using State Messages annotation-based validations such as
@mandatory
or@assert...
are now executed on draft entities.[cds.java@3.8.0] Event Handler methods now support
CqnStatement
or its subtypes andCqnStructuredTypeRef
as arguments.[cds.java@3.8.0] Bound and unbound function parameters now support
@Core.OptionalParameter
annotations.[cds4j@3.9.0] Support referencing origin entity from upsert result:
Row.ref()
[cds4j@3.9.0] Elements that are the target of a
@Common.Text
annotation are now by default searchable[cds4j@3.8.0] Support for [SQL] Window Functions
[cds4j@3.8.0] Support expressions & literals in runtime views
[cds4j@3.8.0] Support match predicates
anyMatch
/allMatch
in infix filters of element refs used in where conditions[cds4j@3.8.0] Support operator
==
in CQN with Boolean logic (same as IS)[cds@8.9.0] Support for parallel multi-instance processing of outbox entries
[cds@8.9.0] Remote services: ensure request correlation by guaranteeing outgoing header
x-correlation-id
[cds@8.9.0] Support for
@odata.bind
to reference foreign keys[cds@8.9.0] Support for plugins in ESM format
[cds@8.9.0] Dependency to
@eslint/js
so thateslint
works w/o the application having to install it.[cds@8.9.0] IAS: In the
client_credentials
flow, the array ofias_apis
(if present) is added to the technical user's roles[cds@8.9.0] Opt-in feature
cds.features.consistent_params
forreq.params
always being an array of objects- That is, no more plain values for single-keyed entities with key
ID
- Will become the default in
@sap/cds^9
- That is, no more plain values for single-keyed entities with key
[cds@8.8.0]
cds.ql
methodSELECT.hints()
which passes hints to the database query optimizer that can influence the execution plan[cds@8.8.0] Schema updates for MTX configuration
[cds@8.8.0] Deprecate
cds.requires.db.database
in JSON schema[cds@8.8.0] Service level restrictions for application service calls can be enforced with
cds.features.service_level_restrictions=true
- With
@sap/cds^9
, this becomes the new default.
- With
[cds@8.8.0] Support implicit function parameters calls with @prefix
[cds@8.8.0]
cds.test
now uses package@cap-js/cds-test
if installed, otherwise prints a hint to install it. With cds 9, this package will be required.[cds@8.8.0] Operation response streaming
- OData: Operations returning
cds.LargeBinary
annotated with@Core.MediaType
may send stream responses. - REST: Operations may send stream responses.
- Annotations
@Core.MediaType
,@Core.ContentDisposition.Filename
and@Core.ContentDisposition.Type
on operation return types will be considered.
- OData: Operations returning
[cds-mtxs@2.7.0] Database deployment of extensions can now be supressed by setting
jsonc"requires": { "cds.xt.ExtensibilityService": { "activate": { "skip-db": true } } }
[cds-mtxs@2.7.0]
cds.xt.ExtensibilityService.pull
now returns csn including existing extensions ifcheck-existing-extensions
is configured (see below)[cds-mtxs@2.7.0] Beta: Event
cds.xt.ExtensibilityService.activated
is sent if an asynchronous call ofcds.xt.ExtensibilityService.activate
is finished.[cds-mtxs@2.6.0]
html5-runtime: true
andhtml5-host: true
are shortcuts incds.requires
to specify SAP BTP HTML5 Repository service SaaS dependencies.[cds-mtxs@2.6.0]
ExtensibilityService
now supports draft extensions, allowing to separately validate and activate extensions.[cds-mtxs@2.6.0]
ExtensibilityService.activate
now allows to pass HDI deployment parameters.[cds-mtxs@2.6.0]
cds.env.odata.containment
is respected when compiling to EDMX.
Changed
- [cds-dk@8.9.0]
cds build
logging is simplified. - [cds-dk@8.9.0]
cds add html5-repo
ignores folders inapp/
starting with.
- [cds-dk@8.8.0] Running
cds deploy
in dry mode with an output file specified will now only produce a warning in stderr and will not exit with an error code. - [cds-dk@8.8.0]
cds deploy --out …
will not generate the specified output file if it would end up empty. - [cds-dk@8.8.0]
cds add workzone
adds a transpilation task for UI5 deployment descriptors in TypeScript projects. - [cds-dk@8.8.0]
cds add workzone
does not use the deprecatedwebide-extension-task-updateManifestJson
task any more. - [eslint-plugin-cds@3.2.0] Rules
@sap/cds/sql-null-comparison
and@sap/cds/no-java-keywords
are moved from theexperimental
rule set toall
. - [vscode-cds@8.8.1] using native Node.js
fetch
for https requests - [vscode-cds@8.8.0] preparation to use new CDS parser
- [vscode-cds@8.8.0] minimum VSCode version is now 1.96.0
- [cds-compiler@5.9.0] Update OData vocabularies: 'Common', 'Hierarchy'
- [cds4j@3.8.0] Changed operator
!=
in CQN to Boolean logic (same as IS NOT) - [cds@8.9.0] Invalid draft requests now have status code 400
- [cds@8.9.0] Allow ESM loading of handler files (
.js
,.ts
) in all situations, incl. test runs with Jest's--experimental-vm-modules
option. - [cds@8.9.0] Application and remote services now throw the error
Target <yourTarget> cannot be resolved for service <yourService>
when the query cannot be resolved to the service entity. Setting the feature flagcds.env.features.restrict_service_scope
to false disables this. - [cds@8.9.0] Accept 2xx status codes set in custom operation handlers
- [cds@8.9.0] Implicit orderby elements are marked as such and are no longer considered for requests to remote services
- [cds@8.8.0] The default index page now shows links to CDS functions with their parameter names but no default values anymore.
Fixed
- [cds-dk@8.9.0]
cds add telemetry
is order-independent with othercds add
commands for Java. - [cds-dk@8.9.0] Build task
mtx-extension
now fails with exit code 1 in case of build errors. - [cds-dk@8.8.2] Bump axios to 1.8.4, fixing CVE-2025-27152
- [cds-dk@8.8.1]
cds init
uses latest Maven Java archetype version 3.8.0 for creating Java projects. - [cds-dk@8.8.1]
cds init --add lint
writes complete eslint.config.mjs. - [cds-dk@8.8.1]
cds import
no longer fails with anEXDEV
error indocker
containers. - [cds-dk@8.8.1]
cds import
json schema now contains correct references. - [cds-dk@8.8.0]
cds add approuter
doesn't create entries forapp
andappconfig
local directories any more. - [cds-dk@8.8.0]
cds add telemetry
for Java doesn't erroneously addcds
configuration ordependencies
to thepackage.json
. - [cds-dk@8.8.0]
cds add sample
adds the workzone-specific configuration ifcds.requires.workzone
istrue
. - [cds-dk@8.8.0]
cds compile -o
uses the correct file suffix if explicitly specified in the file name. - [cds-dk@8.8.0]
cds bind
caches the promise of itscf -v
call to prevent race conditions. - [cds-dk@8.8.0]
cds import --out <folder>
does not fail if executed in a folder with a.
. - [cds-dk@8.8.0]
cds add workzone
has improved support for multitenancy. - [eslint-plugin-cds@3.2.0] Rules
@sap/cds/sql-null-comparison
will not warn about!= null
, as it may be supported by future CDS compiler versions. - [eslint-plugin-cds@3.2.0] Some rules had
docs
meta propertyrecommended: true
, but were not part of the recommended rules list. - [eslint-plugin-cds@3.2.0] When determining a CDS project's root directory, we now consider package.json's with
@sap/cds
asdevDependency
orpeerDependency
- [vscode-cds@8.8.2] Welcome Page was shown after each restart
- [vscode-cds@8.8.1] use lowercase
cdsjsonschema
as protocol for cds schema urls. - [vscode-cds@8.8.1] user setting
cds.useOldParser
did not work correctly - [vscode-cds@8.8.0] removed rendering issues in
CAP Release Notes
view - [vscode-cds@8.8.0]
Generate data model
now also works forschema.cds
files in subfolders. - [cds-compiler@5.9.0] to.odata: Annotation expressions using
LabeledElement
were not correctly rendered into EDMX. - [cds-compiler@5.8.2] for.odata: Generate foreign key elements for events again.
- [cds.java@3.8.1] Fixed a bug, causing Audit log implementation to generate redundant entries with empty attributes for the audit log when entity uses associations as the keys.
- [cds.java@3.8.1] Fixed a bug, causing Audit log implementation to generate messages with duplicated attributes when audited instances expanded multiple times in the same
Select
statement. - [cds.java@3.8.1] Fixed a bug in Cloud SDK integration, causing the IAS app2app flow to accidentally request a token from the provider level IAS tenant in DwC scenarios.
- [cds.java@3.8.1] Fixed a bug, causing draft queries not being optimized and certain queries on runtime views to fail.
- [cds.java@3.8.0] Fixed a bug, causing non-unique "MT_LIB_TENANT-" service instances to be filtered out.
- [cds.java@3.8.0] Fixed a bug in OData V4 adapter, causing
NullPointerException
while processing payload containing complex type array initialized withnull
. - [cds.java@3.8.0] Fixed a bug, causing localized error messages in logs and exception stack traces.
- [cds.java@3.8.0] Fixed a bug, causing invalid property suggestions in IDEs, when editing
application.yaml
. - [cds4j@3.9.0] Fix SQL error on predicates using is (not) on the select list
- [cds4j@3.9.0] Fix exception on computing inline count for queries with a condition evaluating to false
- [cds4j@3.9.0] Fix NPE on expand with inline count for select statements using path expressions in where
- [cds4j@3.9.0] Fix 'Missing value for parameter' error on expand by parent-keys when the parent key is selected with a structuring alias
- [cds4j@3.8.1] Fix expand by 'parent-keys' of associations using literals in on-condition
- [cds4j@3.8.1] Runtime views: ignore expands of entities without persistence
- [cds4j@3.8.0] Consider type casts of refs in orderBy
- [cds@8.9.0] Lean draft: Proper navigation to the service entity of draft-administrative data
- [cds@8.9.0] Unprocessed foreign keys from expressions of semi join conditions in
UPDATE.data
- [cds@8.9.0] Kafka: Each topic will have a dedicated consumer-group id (configurable with
consumerGroup
) - [cds@8.9.0] Foreign-key calculation based on navigation path
- [cds@8.9.0]
cds.env
shortcuts likecds.requires.db === 'hana'
are normalized tocds.requires.db.kind === 'hana'
when combined from multiple sources - [cds@8.9.0] Error handling for invalid access of an entity that does not have a key, by key, through REST
- [cds@8.9.0]
cds.validate
crashed with unknown target - [cds@8.9.0]
cds.parse.expr
parsed SAP HANA native functions likecurrent_utctimestamp
erroneously asref
- [cds@8.9.0]
null
values in logger ifcustom_fields
are configured - [cds@8.9.0] User-provided instances of SAP Cloud Logging should have either tag
cloud-logging
orCloud Logging
- [cds@8.9.0] The
@odata.context
for entities and views with parameters should refer to the EntityType with/Set
at the end e.g.../$metadata#ViewWithParamType(1)/Set
- [cds@8.8.3] Event Mesh: Reconnect in case of error in AMQP connection
- [cds@8.8.2] Consuming REST actions returning anonymous structures
- [cds@8.8.2]
i18n.labels/messages
were occasionally missing - [cds@8.8.1] Requests violating
cds.odata.max_batch_header_size
are terminated with431 Request Header Fields Too Large
instead of400 - Bad Request
- [cds@8.8.1]
cds.parse.<x>
writing directly tostdout
- [cds@8.8.1] Instance-based authorization for programmatic action invocations
- [cds@8.8.1] Implicit function parameter calls with Array or Object values
- [cds@8.8.1] OData: Throw an error by
POST
with payload that contains array of entity representation - [cds@8.8.1]
cds.validate
filters out annotations according to OData V4 spec - [cds@8.8.1] Crash for requests with invalid time data format
- [cds@8.8.1] Add missing 'and' between conditions in object notation of QL
- [cds@8.8.1] Multiline payloads in
$batch
sub requests - [cds@8.8.1] Instance-based authorization for modeling like
$user.<property> is null
- [cds@8.8.1] Respect
cds.odata.contextAbsoluteUrl
in new OData adapter - [cds@8.8.1]
cds.odata.context_with_columns
also applies to singletons - [cds@8.8.0] Order by virtual fields in draft-related requests
- [cds@8.8.0] Erroneous cleansing when draft activation is invoked programmatically
- [cds@8.8.0] Skip validation for mandatory fields in update scenarios for entities in draft activation
- [cds@8.8.0] Simplified default configuration:
cds.requires.messaging = true
- [cds@8.8.0]
cds.connect
called with options erroneously filled incds.services
- [cds@8.8.0] Mocked users won't have a tenant in single-tenant mode
- [cds@8.8.0] Allow usage of latest versions of
chai
andchai-as-promised
on Node >= 23 with the built-in test runner andmocha
. Thejest
runner is not able though to load these ESM modules. - [cds@8.8.0] Reject navigations in expand
- [cds@8.8.0] Activation of drafts for entities using
@cds.api.ignore
- [cds@8.8.0] Prevent uncaught type error during validation of composition entries
- [cds-mtxs@2.7.0] Synchronous calls to
/-/cds/saas-provisioning/upgrade
for non-existing tenants are now handled properly. - [cds-mtxs@2.6.1] Compatibility with cds 7 is enabled again.
- [cds-mtxs@2.6.1] Asynchronous jobs now properly handle errors exceeding 5000 characters.
- [cds-mtxs@2.6.0]
cds.xt.SaasProvisioningService
is still served for Java projects withsubscription-manager
profile.
Removed
- [cds-dk@8.9.0] Removed
before:cds-watch
script.
February 2025
Added
- [cds-compiler@5.8.0] Type definitions can now be projections on other types, i.e.
type Proj : projection on OtherType { elem }
.
Use it to create types based on other types, e.g. by selecting only certain elements.
Only available with the new parser (newParser: true
) - [cds-compiler@5.8.0] Analyze enum symbols like
#ENUM_SYMB
in all (sub) expressions and conditions. It can be validated if the compiler can deduce itsenum
type from its use context:- when the enum symbol is used as
default
value,select
column expression, argument when navigating along an association to an entity with a parameter, or argument of acast
function call, or - when the enum symbol is compared to a reference or
cast
function call; we consider the operators=
,<>
,!=
,in
,not in
and also analyze enum symbols aswhen
operands if thecase
operand is a reference/cast
. - We not only consider simple enum symbols, but also lists of enum symbols (on the right side of
in
/not in
), and acase … end
(sub) expression with enum symbols after thethen
s and/or theelse
. - An enum symbol can be validated if the deduced type is a direct or indirect
enum
type, or an managed association with one foreign key having anenum
type. - For the effects in the compiler, IDE and backends, see the changelog entry for v5.7.0. Hint: the deprecated hdbcds backend does not support enum symbols.
- Remark: the support for enum symbols used as annotation values is still limited.
- when the enum symbol is used as
- [cds-compiler@5.8.0] to.sql.migration: Allow extending
precision
ofcds.Decimal
and allow extendingscale
ifprecision
is increased by at least the same amount. - [cds-compiler@5.8.0] to.edm(x):
@assert.range
now supports "exclusive" values by writing values in parentheses such as[ (1), (2) ]
, as well as "infinite" by using[ _, _ ]
. - [cds-compiler@5.8.0] for.odata/to.edm(x)/for.seal: Propagate annotation expressions from managed associations to the foreign keys
Changed
- [cds-compiler@5.8.0] Top-level CSN property
csnInteropEffective
is ignored and no longer warned about. - [cds-compiler@5.8.0] Update OData vocabularies: 'Analytics', 'Common', 'Hierarchy', 'UI'
Fixed
- [cds-dk@8.7.3]
cds compile -o
fixes the output file name in-o <service>.json
. - [cds-dk@8.7.3]
cds lint
won't stumble over scalar config objects anymore. - [cds-dk@8.7.3]
cds init
uses latest Maven Java archetype version 3.7.2 for creating Java projects. - [cds-dk@8.7.3]
cds deploy --to hana --dry
doesn't exit with aTypeError
if there are no models. - [cds-dk@8.7.3]
cds add ias
fixes a few scenarios in combination with multitenancy. - [cds-dk@8.7.2]
cds compile -o
with a file name such ascds c srv/cat-service.cds -o srv/cat-service.json
. - [cds-dk@8.7.2]
cds compile
without-o
doesn't print the file name header for single services any more. - [cds-dk@8.7.2]
cds add workzone
in combination with multitenancy doesn't throw an error any more. - [cds-dk@8.7.2]
cds import --from rfc
stores the input file again insrv/external/<destination>/...
instead ofsrv/external/...
. - [cds-dk@8.7.2]
cds import --name
no longer crashes with aTypeError
. - [cds-dk@8.7.2]
cds import --out <filename>
no longer crashes with aError: EEXIST
. - [cds-dk@8.7.2]
BuildError
no longer cuts off its stack. - [cds-dk@8.7.2]
cds bind -a
doesn't concurrently try to check the Cloud Foundry version or OAuth token. - [cds-dk@8.7.2]
cds import
now resolves target of association/composition correctly for multiple schema files. - [cds-dk@8.7.1]
cds add mta
now setsparameters.instances
explicitly to1
in Java projects, same as for Node.js projects. - [cds-dk@8.7.1]
cds add mta
does not add thereadiness-health-check-type
andreadiness-health-check-http-endpoint
properties to themta.yaml
any more. - [cds-dk@8.7.1]
cds add -p
correctly parses plugin-contributed options. - [cds-dk@8.7.1]
cds watch
correctly escapes its default ignored directories on Windows. - [cds-dk@8.7.1]
cds compile
correctly uses--service=all
as its default. - [cds-dk@8.7.1]
cds add ias
correctly writes MTX sidecar config in combination withcds add multitenancy
. - [cds-compiler@5.8.0] New CDL parser: parse all entity definitions using
projection on
without a terminating;
if they had been accepted by the old parser, i.e. for compatibility, we gave up the idea of removing the existing special handling in this case. - [cds-compiler@5.8.0] Old and new parser: issue a warning for an ignored filter on the result of a function or method call.
- [cds-compiler@5.8.0] CSN annotation expressions with value
true
for=
were not checked. - [cds-compiler@5.8.0] Annotation
@Core.Computed
was not set for select items that are paths into structured parameters. - [cds-compiler@5.8.0] Annotation expression path rewriting has been improved.
- Paths on foreign keys are rewritten.
- [cds-compiler@5.8.0] for.seal:
- References into structured parameters were incorrectly flattened.
- Set
@cds.persistence.name
only on persistence-relevant things.
- [cds-compiler@5.7.4] New CDL Parser (option
newParser: true
)- Improve code completion
- Fix further edge cases in error recovery
- [cds.java@3.7.2] Fixed performance problem in
cds-feature-change-tracking
whenUpdate
orUpsert
statements are inspected for change-tracked elements. - [cds.java@3.7.2] Fixed a bug, causing statements using paths in the source to fail when deep authorization is enabled.
- [cds.java@2.10.7] Fixed a bug in
cds-feature-change-tracking
causing the changed values for targets of associations not to be logged when the same type was referenced multiple times. - [cds.java@2.10.7] Fixed performance problem in
cds-feature-change-tracking
whenUpdate
orUpsert
statements are inspected for change-tracked elements. - [cds4j@3.7.2] Fixed a bug, causing deep updates on projections with aliased keys to fail
- [cds4j@2.10.7] SAP HANA HEX mode: fixed fallback to non-hex SQL on "HEX enforced but cannot be selected" errors on HANA QRC 4/2024
- [cds4j@2.10.7] Fixed deep updates on projections with aliased keys
- [cds4j@2.10.7] Fixed missing foreign key propagation in deep updates and upserts
- [cds@8.7.2] Strip
Z
suffix of values ofcds.Timestamp
with OData typeEdm.DateTime
- [cds@8.7.2] Skip validation for mandatory fields in update scenarios for entities in draft activation
- [cds@8.7.2]
cds.compile.to.yaml
escapes strings including colons if necessary - [cds@8.7.1] Loading of CAP Plugins implemented in Typescript
- [cds@8.7.1]
Location
header if read after write returns empty result due to missing read authentication - [cds@8.7.1] Enable accessing
req.params
when handling requests on parameterized views - [cds@8.7.1]
cds.connect.to(class {...})
did not call theinit
function - [cds@8.7.1] Generic Paging/Sorting was run twice for non-draft requests
- [cds@8.7.1] Service implementation loaded from
node_modules
January 2025
Added
[cds-dk@8.7.0]
cds watch
supports--exclude
and--include
options to specify additional paths to include or exclude. Alternatively, setcds.watch.[include|exclude]
in your CDS config.[cds-dk@8.7.0]
cds import
now updates configuration for Java projects (inapplication.yaml
etc.)[cds-dk@8.7.0]
cds import --config
now also accepts a string with flat key-value pairs (like--config "credentials.destination=foo"
), which is easier to write than the current JSON string (--config "{\"credentials\": {\"destination\": \"foo\"}}"
).[cds-dk@8.7.0]
cds debug
now supports Java applications, both local and remote.[cds-dk@8.7.0]
cds import
can now import an odata-V4 file with external dependencies(odata-V4 file). Dependencies has to be provided with -d/--dependencies option and must not have any external dependencies.[cds-compiler@5.7.0] Analyze enum symbols like
#ENUM_SYMB
; support starts at the following places:- used as sole
default
value orselect
column expression if the element/column has a specified enum type, or - used as sole value (in parentheses) of an annotation assignment if there is a definition for that annotation having an enum type;
- effects in compiler: complain if enum symbol is undefined
- effects in the IDE with an upcoming version of cds-lsp when compiler option
newParser
is set: offer code completion and hover information, - effects in backends like
to.sql
(and potentially runtimes): enum symbol is replaced by corresponding string/integer value when appropriate.
- used as sole
[cds-compiler@5.7.0] for.seal: Process foreign key annotations similar to to.edm(x)
[cds.java@3.7.1] Instance based authorization can now reject CREATE/UPDATE with 400 via option
cds.security.authorization.instance-based.check-input-data
[cds.java@3.7.0] Added possibility to enable default translations for validation error messages by setting
cds.errors.defaultTranslations.enabled
totrue
. These translated error messages avoid references to technical entity or element names and solely rely on the message's target.[cds.java@3.7.0] If
cds.security.authorization.instance-based.customEvents
is disabled, instance based authorization can now rejectdraftEdit
events with 403 instead of filtering via optioncds.security.authorization.instance-based.reject-selected-unauthorized-entity
as well.[cds.java@3.7.0] Added debug logs when calculating object key for Kafka messages.
[cds.java@3.7.0] The goal
add
of thecds-maven-plugin
supports adding ORD integration to a CAP Java project.[cds.java@3.7.0] The exposed ORD endpoint of the CAP Java application is now also shown on the index page.
[cds.java@3.7.0] The dev-dashboard can now list all registered event handlers for application services.
[cds.java@3.7.0] Added capabilities to selectively remove messages from the current RequestContext's message container with the new method
Messages.removeIf(Predicate<Message>)
.[cds.java@3.7.0] OData V4 protocol adapter now supports implicit parameter aliases for function calls.
[cds.java@3.7.0] The goal
add
of thecds-maven-plugin
supports adding a CAP Java Plugin, a Maven dependency and a Remote Service configuration to a CAP Java project.[cds.java@3.7.0] Default outboxes can now be disabled per service by setting
cds.messaging.services.<key>.outbox.enabled
tofalse
.[cds4j@3.7.0] Allow to use predicates in the select list
[cds4j@3.7.0] Support typed refs via
CQL.entity(ENTITY, ref)
[cds4j@3.7.0] Model reader: Support
$enclosed
property of associations[cds4j@3.7.0] Support expanding filtered associations/compositions in runtime views
[cds@8.7.0] Allow usage of tar library (https://www.npmjs.com/package/tar) as a workaround to solve remaining issues by extension build on Windows. The tar library should be installed by app developers.
[cds@8.7.0]
cds.ql
supports limit with an optional offset, e.g.limit(10, 5)
[cds@8.7.0] Basic support for new built-in type
cds.Map
[cds@8.7.0] Normalization of DateTime and Timestamp payloads in new OData adapter
[cds-mtxs@2.5.0] Running jobs time out after 90 minutes by default. This is configurable using
cds.requires.multitenancy.jobs.heartbeatAge
andcds.requires.multitenancy.jobs.heartbeatInterval
.[cds-mtxs@2.5.0] Extension linter now optionally checks extensions including existing extensions. This can be enabled using
jsonc"requires": { "cds.xt.ExtensibilityService": { "check-existing-extensions": true } }
This is not available for the extension project build.
[cds-mtxs@2.5.0] Warning when using legacy options in
cds.mtx
.
Changed
- [cds-dk@8.7.0]
cds add mta
sets backend and MTXparameters.instances
to a default of1
for improved discoverability. - [cds-dk@8.7.0]
cds add sample
generates sample .ts files if the project is a TypeScript project - [cds-dk@8.7.0]
cds import
now doesn't need beta flag to populate default value for optional action and function parameters as compiler now supports default value for @Core.OptionalParameters. - [cds-dk@8.7.0]
cds add portal
now uses a more generic sample translated title instead of "Bookshop". - [cds-compiler@5.7.0] CDL parser: it is now recommended to set the option
newParser
to make the compiler use a CDL parser with a significantly smaller footprint (among other things). New features might only work if this option is set, see above. - [cds4j@3.7.0]
Modifier.selectListValue
(beta) now takes anSelectableValue
instead of aValue
- [cds4j@3.7.0] In-Predicate (
Value.in
) now takes aCollection
instead of aList
- [cds@8.7.0] Cleanse immutable values in draft modifications
- [cds@8.7.0] Do not use compatibility mode of @sap/xssec 4, can be reverted with
cds.env.features.xssec_compat = true
- [cds@8.7.0]
cds.Float
is now correctly deprecated incds.builtin.types
. - [cds@8.7.0] Input provided via protocol adapter for elements annotated with
@cds.api.ignore
are rejected. Previously, they were ignored.
Fixed
- [cds-dk@8.7.0]
cds add mta
in combination withcds add ias
correctly adds all routes to the backend module. - [cds-dk@8.7.0]
cds add mta
adds the DB deployer module without prior installation of@cap-js/hana
. - [cds-dk@8.7.0]
cds add mta
adds the npm-ci builder for nodejs modules to use fixed package-lock versions for dependency vendoring. - [cds-dk@8.7.0]
cds build --ws
will no longer require adb/
folder in the root directory of the project. - [cds-dk@8.7.0]
cds import
doesn't throw error while importing odata-V4 file with com.sap.vocabularies. - [cds-compiler@5.7.2] Fix edge case in error recovery of the new CDL parser (option
newParser: true
) - [cds-compiler@5.7.0] CDL parser: doc comment parser was susceptible to ReDos
- [cds-compiler@5.7.0] to.sql/hdi: Paths inside calculated elements that are simple functions were not properly rewritten.
- [cds-compiler@5.7.0] for.odata: Re-add foreign keys in property
targetAspect
in the OData CSN. - [cds-compiler@5.7.0] to.edm(x): In annotation translation, by default map
SemanticObjectMappingAbstract
toSemanticObjectMappingType
to avoid regressions. - [cds-compiler@5.7.0] to.cdl: Fix quoting of identifier
many
inComposition of
/Association to
- [cds-compiler@5.7.0] for.seal: Allow annotation paths to end in
many
-elements, not just scalar, like we allow in for.odata - [cds.java@3.7.1] Fixed a bug in Event Mesh feature, causing a wrong webhook url registration when property
cds.messaging.webhooks.url
starts withhttps://
- [cds.java@3.7.1] Fixed a bug in Kafka feature, causing issues when a Kafka cluster has been created with public endpoints.
- [cds.java@3.7.1] Bound function calls with implicit parameter aliases now support arguments with names equal to the names of the system query options without the
$
. They must be prefixed with@
. - [cds.java@3.7.0] Fixed a bug in OData V4 adapter, causing
NullPointerException
when serializing complex types for requests containing$select=*
. - [cds.java@3.7.0] Fixed a bug in OData V2 adapter, causing incorrect statements generation for analytical view requests, containing measures in
$orderby(<measure>)
not present in$select
. - [cds.java@3.7.0] Fixed a bug, causing a message's longTextUrl to be lost, when converting the message to an exception.
- [cds.java@3.7.0] Fixed a bug that caused a critical inconsistency to be accepted where tenants had multiple HDI containers.
- [cds.java@3.7.0] Fixed a bug with DB connection pools which caused connection errors when a tenant is moved to another HANA instance.
- [cds.java@3.7.0] Fixed a bug, causing handler annotations with type filters to prevent registration of the handler method if the type is not an interface and the service is outboxed.
- [cds.java@3.7.0] Fixed a bug, causing
ApplicationService
calls within@Before
handlers (e.g. originating from@assert.target
) to unexpectedly throw an exception, if error messages were written before. - [cds.java@3.7.0] Fixed a bug in
cds-feature-change-tracking
causing the changed values for targets of associations not to be logged when the same type was referenced multiple times. - [cds.java@3.7.0] Deep authorization checks are not performed on filtered compositions anymore
- [cds4j@3.7.0] SAP HANA HEX mode: fixed fallback to non-hex SQL on "HEX enforced but cannot be selected" errors on HANA QRC 4/2024
- [cds4j@3.7.0] Fixed missing foreign key propagation in deep updates and upserts
- [cds@8.7.0] Narrowed down peer dependency version of
express
to^4
- [cds@8.7.0] OData, REST: Responses are only written in case that the response object is not already closed, which allows responding to requests directly in custom handlers.
- Note: Responses sent directly are not transactionally safe! Further, subsequent errors can no longer be communicated to the client!
- Note: Only respond directly in non-
$batch
requests!
- [cds@8.6.2] Crash during requests to actions with parameter
array of <type>
- [cds@8.6.2] Instance based restriction using
is null
- [cds@8.6.2] Filtering of grouped result on default aggregate
- [cds@8.6.2] Multipart batch response for failed changesets
- [cds@8.6.2] Handling of invalid parentheses in OData property access
- [cds@8.6.2] Resolve view: Mixins are not in elements of projection target
- [cds@8.6.2] Input provided via protocol adapter for elements annotated with
@cds.api.ignore
can be rejected withcds.features.reject_ignored: true
. - [cds@8.6.1] find draft root in authorization checks when entity has recursive compositions
- [cds@8.6.1]
default-env.json
was not loaded anymore when in production mode. - [cds@8.6.1] i18n texts like
1
ortrue
were returned as numbers, or booleans instead of strings - [cds@8.6.1] CSN files produced by
cds build
now again contain information to resolve handler files. That was broken in case of reflected/linked models set by e.g. plugins. - [cds@8.6.1]
average
aggregation used with draft enabled entities - [cds-mtxs@2.5.1] Schema evolution for the
t0
tenant withlazyT0: true
- [cds-mtxs@2.5.1] Parallel extension requests for different tenants are now handled correctly.
- [cds-mtxs@2.5.0] Better resilience when deleting tenants.
- [cds-mtxs@2.5.0] HANA encryption parameters are now properly supported also for applications using Subscription Manager.
- [cds-mtxs@2.5.0] Limit check for field extensions now correctly sums up all separately added fields.