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.
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
- [vscode-cds@8.9.0] use new CDS parser by default
Fixed
- [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.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.
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.