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.
October 2025
Added
- [cds-dk@9.4.0]
cds add app-frontadds configuration for the new SAP BTP Application Frontend service. - [cds-dk@9.4.0]
cds add iashas improved support for XSUAA hybrid projects. - [cds-dk@9.4.0]
cds add multitenancyautomatically adds upgrade hooks for Node.js projects. - [cds-dk@9.4.0]
cds deploysupport the generic--resolve-bindingsoption to resolve all bound services. This is helpful for use cases with multiplehana-tagged service bindings. - [cds.java@4.4.0] New annotation
@odata.draft.gc: falsecan be used to disable draft GC for an entity. - [cds.java@4.4.0]
cds-feature-flownow supports annotations@fromand@toas synonyms to@flow.fromand@flow.to. The status value can now also be specified as enum reference with a leading#. - [cds.java@4.4.0] The
resolvegoal of thecds-maven-pluginnow makes CDS reuse models available globally in the project. They can thus can be imported within all CDS files. Module-specific resolution can be achieved by setting the new configurationtoto${project.build.directory}. - [cds.java@4.4.0] Enabled programmatic definition of the application UI URL in multitenant applications that is returned upon a tenant subscription.
- [cds.java@4.4.0] Support calling OData bound actions and functions without service namespace prefix.
- [cds.java@4.4.0]
@readonlyprocessing can now be skipped for certain statements, by setting hint@readonlywith valuefalse. - [cds.java@4.4.0] The goal
addof thecds-maven-pluginsupports adding the Attachments Plugin to a CAP Java project. - [cds.java@4.4.0] Support string concatenation function
concatin both OData V4 and V2, e.g.$filter=concat(element,'string_value') - [cds.java@4.4.0] Deep authorizations now support conditions with paths for
existspredicates in@restrictpredicates. - [cds.java@4.3.2] Implemented maximum cache size and expiration time after access for
TenantAwareCache, configurable viacds.model.provider.cacheproperties. - [cds4j@4.4.0] Support for the
@openannotation in 'CdsJsonConverter'. - [cds4j@4.4.0] Improved logging of search resolution.
- [cds4j@4.4.0] Added a new
CQL.inmethod to simplify buildinginpredicates fromCdsResult. - [cds4j@4.4.0] Added new methods to
CQLto simplify building typed references. - [cds4j@4.4.0] Support
concatfunction and||operator in CQN for strings concatenation. - [cds4j@4.4.0] Support scalar subqueries in select list and where clause.
Changed
- [cds-dk@9.4.0]
cds add typescriptandcds add typerwill now add apathentry in the project's tsconfig.json or jsconfig.json respectively, which will mitigate resolution problems with@cap-js/cds-types. - [cds-dk@9.4.0]
cds add multitenancyadds thewith-mtxprofile to Java apps by default, simplifying local development. - [cds-dk@9.4.0]
cds importfor EDMX files now mapsEdm.Stringtypes tocds.String(before:cds.LargeString). Background is that some databases don't support the resultingNCLOBtype in key fields. - [cds-dk@9.4.0]
cds buildwill now remove dev dependencies starting withworkspace:,file:, as well as the entireworkspace:block therein, and regenerate the package-lock.json if needed. - [cds-dk@9.4.0]
cds importfor EDMX correctly imports multiline strings inDefaultValue. - [cds-dk@9.4.0]
cds importnow writes annotations from EDMX files in a flat, i.e. non-structured manner, so that they can be processed by the application runtime. - [cds-dk@9.4.0]
cds binddoes not fail when setting the profile viaCDS_ENV. - [cds-dk@9.4.0]
cds versionis more robust with respect to Java versions. - [cds.java@4.4.0] The mock users security configuration is now also disabled when setting
cds.security.authentication.authConfig.enabledtofalse. - [cds4j@4.4.0] Optimizied hierarchichal queries for HANA with
level> 0. The parameterdepthis set tolevel+ 1 to reduce calculation time. - [cds4j@4.4.0] No deep data copy during statement normalization.
Fixed
- [cds-dk@9.4.0]
cds add html5-repoavoids some superfluous configuration combination withcds add portal. - [cds-dk@9.4.0]
cds add handlerignores external services. - [cds-dk@9.4.0]
cds add audit-loggingcorrectly adds the dependency in the Chart.yaml for Helm deployments. - [cds-dk@9.4.0]
cds deploy --to hanaworks with user-provided HANA services. - [cds-dk@9.4.0]
cds binddoesn't add thecustom-service:prefix for Node.js any more. - [cds-compiler@6.4.2] parser:
- improve error recovery with empty expression as annotation value
- avoid clutter in message text for syntax errors: use
‹Value›instead of listing value tokens
- [cds-compiler@6.4.2] compiler: fix suppression of warnings when annotating backend-generated things like draft entities or localized convenience views
- [cds-compiler@6.4.2] to.sql|hdi|hdbcds: Fix handling of structured columns when calculated elements are used don't add explicit casts too eagerly
- [cds.java@4.4.0] Fixed an issue causing an event to be acknowleged even if the processing failed in case of a custom outbox handler throwing an exception.
- [cds.java@4.4.0] Fixed a bug causing an Exception
Comparison Or Logical expression MUST have a left and right expressionwhen requesting$metadatawith$format=jsonfor expressions with constants. - [cds.java@4.4.0] Fixed incorrectly placed
@Orderannotations on security configurations. Make sure to place@Orderannotations on theSecurityFilterChainbean method, instead of on the configuration class. - [cds.java@4.4.0]
cds-feature-change-trackingperformance is improved when large number of entities are inserted. - [cds.java@4.4.0] Fixed a bug causing ETags validations to unexpectedly fail in combination with activated DraftMessages.
- [cds.java@4.3.2] Fixed a bug causing
CdsModelinstances to pile up in memory and cause out of memory errors. - [cds4j@4.4.0] Anonymous aspects used for composition of aspect, now get a proper
@CdsNameannotation andCDS_NAMEconstant generated during code generation. - [cds4j@4.4.0] Fixed exception when using
existspredicates on the select list. - [cds4j@4.3.2] Fixed deep update via views with path expressions.
- [cds4j@4.3.2] Fixed usage of
byIdwith models using tenant discriminator. - [cds@9.4.2]
DISCARDas a synonym forCANCEL - [cds@9.4.2]
cds.load()called twice - [cds@9.4.1] Default
kindfor unknown required service tohcql - [cds@9.4.1] Consider and allow aliases from nesting during OData query validation
- [cds-mtxs@3.4.1] Annotation validation now works correctly when using
extend <entity> with <annotation>. - [cds-mtxs@3.4.1] [Pre-Alpha] Subscription triggered by BTP when using HANA TMS v2 works again.
- [cds-mtxs@3.4.1] The profile
[with-mtx]doesn't override database configuration for non-MTX usage. - [cds-mtxs@3.4.1] Improved resilience for SaaS registry and Subscription Manager callbacks.
September 2025
Added
[cds-dk@9.3.0]
cds bind -ais now also supported for Kyma, where the app prefix can be passed for-a, e.g.bookshop-srv.[cds-dk@9.3.0]
cds build --for hananow trims leading and trailing whitespaces in csv-Files if build optiontrimCsvWhitespacesis set.[cds-dk@9.3.0]
cds add github-actionssets requiredpermissions.[cds-dk@9.3.0]
cds upsupports a deployment layout where approuter or portal service configuration is in a top-level.deployfolder.[cds-dk@9.3.0]
cds add iassets theaccess-token-formattojwtby default.[cds-compiler@6.4.0] compiler:
annotate … with @extension.code: [..., 'additional code']even works if no value for that annotation has been provided with the base definition.[cds-compiler@6.4.0] to.sql: Calculated elements can now be used next to (but not in) nested projections.
[cds-compiler@6.4.0] to.edm(x): The
@cds.api.ignoreannotation can now be applied to actions, functions, and their parameters.[cds.java@4.3.0] Added new
runmethods to return typed results for typed queries.[cds.java@4.3.0] Spring Boot applications now show CAP Java banner.
[cds.java@4.3.0] Spring Boot applications now print link to an index page when run locally.
[cds.java@4.3.0] The SQL for to-one path expressions can now be optimized by avoiding joins if a FK column can be selected instead. Set
cds.sql.toOnePath.modetooptimizeto enable this optimization.[cds4j@4.3.0] Support
hana.as prefix for SAP HANA specific SQL statement hints.[cds4j@4.3.0] The code generator avoids clashes with some methods from parent interfaces or classes by adding a suffix '_' to the method name.
[cds4j@4.3.0] Support data modification via views with
wherecondition.[cds4j@4.3.0] Optimized SQL for managed to-one paths by avoiding joins to the association target if possible and selecting the foreign key instead (
cds.sql.toOnePath.mode: optimize).[cds4j@4.3.0] Support for deserializing arrays of simple types in 'CdsJsonConverter'.
[cds@9.4.0] Status Transition Flows (
@flow; alpha):- Resolve enum references in
@from/@tovalues - Support for
@to: $flow.previous(transition to the previous status in a flow)- Use
cds.env.features.flows_history_stack=trueto switch from history (default) to stack-based behavior - Requires adding aspect
sap.common.FlowHistoryto the respective entity
- Use
- Resolve enum references in
[cds@9.4.0]
i18ntranslations for@assertmessages[cds@9.4.0]
SELECT ... .stream ()returns the data from the database as a raw stream[cds@9.4.0]
cds.validatetreats@insertonlyelements as immutable[cds@9.4.0] Vietnamese translations for texts from
@sap/cds/common[cds@9.4.0]
ias/jwt/xsuaa-auth: Add token payload (astoken_payload) to warning log in case of an invalid token- Note: Some invalid tokens are (for performance reasons) not fully validated and, hence, the payload may not be trusted!
[cds-mtxs@3.3.1] [Pre-Alpha] By setting
cds.requires['cds.xt.DeploymentService'].hdi.create.cleanup_hana_tenants = true, the unsubscribe operation will also try to remove the corresponding HANA tenant.[cds-mtxs@3.3.0] The number of unbound entities added via extensions can now be restricted via their namespace:
jsonc"extension-allowlist": [ { "for": ["my.new"], "new-entities": 1 }][cds-mtxs@3.3.0] [Pre-Alpha] Support for HANA TMSv2.
Changed
- [cds-dk@9.3.0]
cds add sampleprovides more i18n translations. - [cds-dk@9.3.0]
cds add iassets thexsuaa-cross-consumptionfield totrueby default. - [vscode-cds@9.3.0] Minimum VSCode version is now 1.101.2
- [cds-compiler@6.4.0] to.sql:
- generation of localized convenience views now use the ON-condition of the
localizedelement to create the FROM clause.
- generation of localized convenience views now use the ON-condition of the
- [cds.java@4.3.0] The
cds-services-archetypenow generates asrv/pom.xmlwith some useful default settings for the code generation. - [cds4j@4.3.0] DiffProcessor: Throw exception on entries with non-unique key.
- [cds4j@4.3.0] Improved performance of the projection data resolver and element reference parsing.
- [cds@9.4.0]
SAVEhandlers for drafts are triggered when a draft is activated- Opt-out until cds^10 with
cds.features.compat_save_drafts=true
- Opt-out until cds^10 with
- [cds@9.4.0] Improved default error messages for input validation.
- [cds@9.4.0] Renamed error key for validation errors of
@mandatoryfromASSERT_NOT_NULLtoASSERT_MANDATORY- For i18n message lookup, an automatic fallback is implemented.
- Opt-out until cds^10 with
cds.features.compat_assert_not_null=true
- [cds@9.4.0] Errors are collected for
_initial(internal!) andbeforephase
Fixed
- [cds-dk@9.3.2]
cds add html5-repoavoids some superfluous configuration combination withcds add portal. - [cds-dk@9.3.2]
cds importcorrectly imports OData v2 EDMX files withEdm.Timeproperties having a precision. - [cds-dk@9.3.1]
cds add iascorrectly sets thesubscription-managerdependencies endpoint for Node.js. - [cds-dk@9.3.1]
cds add data --recordsrespects the max length of a string field when it is annotated with@Communication.IsEmailAddress - [cds-dk@9.3.1]
cds add data --records --format csvcorrectly escaping complex properties nested within structs. - [cds-dk@9.3.1]
cds add data --recordscorrectly generates values for structs in cases when the entity and the struct, used by the entity, have both a property with the same name. - [cds-dk@9.3.1]
cds add html5-repoalso binds thehtml5-repo-hostservice to the approuter. - [cds-dk@9.3.1]
cds uphas improved support for setups with multiple microservices. - [cds-dk@9.3.1]
cds add mtawill add norole-collectionsparameters if there are some specified inxs-security.json. - [cds-dk@9.3.1]
cds add github-actionscorrectly generates a release workflow. - [cds-dk@9.3.1]
cds add github-actionsuses a simplified and more resilient Kyma setup script. - [cds-dk@9.3.1]
cds importnow correctly imports EDMX files with empty NavigationPropertyPath tags. - [cds-dk@9.3.1]
cds importnow correctly imports OData v2 EDMX files withEdm.Timeproperties, which have a precision. - [cds-dk@9.3.0]
cds add workzonewith missingsap.appconfig inmanifest.jsondoes not throw aTypeError. - [cds-dk@9.3.0]
cds add iasadds a subdomain-less application URL inredirect_uris. - [vscode-cds@9.4.0] Code completion for annotations:
- In certain cases proposals added a superfluous
@character - Entries in annotation expressions could be shown twice
- SQL functions could have been suggested in annotation expressions
- In certain cases proposals added a superfluous
- [vscode-cds@9.4.0] Semantic highlighting of annotations could not be enabled. User setting name is now changed to
cds.contributions.features.semanticHighlighting - [vscode-cds@9.3.0] Element names are now correctly highlighted even without type specification
- [cds-compiler@6.4.0] parser: minor improvements in error reporting and error recovery
- [cds-compiler@6.4.0] to.sql:
- columns selecting variables did not always get a column alias.
- when excluding a structure, the SQL backend incorrectly emits
wildcard-excluding-one.
- [cds-compiler@6.3.6] to.sql: Topological ordering of views did not always account for subqueries (fixes regression from v5.9.0)
- [cds-compiler@6.3.4] parser: Keep parentheses around lists on the right side of an
inoperator. - [cds-compiler@6.3.4] compiler: For calculated elements using associations with filters and cardinality, CSN recompilation could fail for
gensrcCSN, as happens for MTX. - [cds-compiler@6.3.2] to.sql: Fix internal inconsistency when handling nested projections.
- [cds-compiler@5.9.12] to.sql: Topological ordering of views did not always account for subqueries (fixes regression from v5.9.0)
- [cds-compiler@5.9.10] parser: Keep parentheses around lists on the right side of an
inoperator. - [cds-compiler@5.9.10] compiler: For calculated elements using associations with filters and cardinality, CSN recompilation could fail for
gensrcCSN, as happens for MTX. - [cds.java@4.3.1] Fixed a bug causing
DRAFT_PATCHevents to fail with annotation validation errors, if update statements without key filters in the statement's ref are executed. - [cds.java@4.3.1] Fixed a bug causing SQL exceptions when trying to write to the
DraftMessageselement of an entity.DraftMessagesare considered readonly. - [cds.java@4.3.1] Fixed a bug causing issues when returning
CdsResult<?>in an event handler method. - [cds.java@4.3.1] Fixed a bug causing an event to be acknowleged even if the processing failed in case of a custom outbox handler throwing an exception.
- [cds.java@4.3.0] Enabling draft messages no longer breaks UI behaviour on UI5 versions before
1.135.0. - [cds.java@3.10.4] Fixed a bug in
cds-feature-change-trackingcausing duplicate changelog entries for association elements that are also keys. - [cds.java@3.10.4] Fixed a bug, causing authorization predicate to appear in all
whereclauses ofSelectstatements usingSelectstatements in theirfromclauses. - [cds4j@4.3.0] Fixed result structure of deep updates on projections.
- [cds4j@4.3.0] Fixed ClassCastException in CdsData.getPath, getPathOrDefault and containsPath on non-map values.
- [cds4j@4.3.0] Fixed SQL error due to missing CTE for queries with paths over runtime views.
- [cds4j@4.3.0] Fixed a regression from 4.1.0 where inserts on views with
nullvalues for aliased to-one paths incorrectly triggered deep inserts into the path target without data. - [cds4j@4.3.0] Fixed FK propagation for deletes in deep update & upsert.
- [cds4j@4.3.0] Resolved a bytecode incompatibility issue in the
Resultinterface that was introduced in version 4.2.0. - [cds@9.4.0] Duplicate reconnects in AMQP
- [cds@9.4.0]
ASSERT_FORMATerrors return correct regexp in message - [cds@9.4.0] Crash by draft validation with (custom) error w/o target
- [cds@9.4.0] Fixed issue where
' $'in payloads of batch requests would be prefixed with'/' - [cds@9.4.0] Broken link
cds.auth - [cds@9.4.0] Persist original error message in draft validation messages
- [cds@9.4.0] Escaping of
\tand\fin edmx during localization - [cds@9.4.0] Escaping of JSON escape sequences other than
\"during localization - [cds@9.3.1] In messaging services, propagated headers (e.g.
x-correlation-id) will not be automatically propagated forformat: 'cloudevents' - [cds@9.3.1] Avoid deprecation warning for
cds.context.user.tokenInfo - [cds@9.3.1] Consider
@Capabilities.ExpandRestrictions.NonExpandablePropertiesannotation and ignore fields referenced by the annotation, when rewriting asterisk expand into columns - [cds-mtxs@3.4.0] Extension validation now properly check unbound entities.
- [cds-mtxs@3.3.1] [Pre-Alpha] Container determination for HANA TMS v2 now fails correctly if no containers exist.
- [cds-mtxs@3.3.1] Subscription Manager and Saas Registry Service can now be used in parallel (hybrid use).
- [cds-mtxs@3.3.0] Better support for
readOnlyRootFilesystemin Kubernetes.
Removed
- [vscode-cds@9.4.0] Temporary user setting
cds.workspace.fastDiagnosticsMode. The default so farclearis now the only mode.
August 2025
Added
[cds-compiler@6.3.0] compiler: Column casts can now use more modifiers such as
defaultdirectly.[cds-compiler@6.3.0] for.odata/to.edm(x):
- New option
draftUserDescriptionis now available. It adds the fieldsCreatedByUserDescription,LastChangedByUserDescription,InProcessByUserDescriptionto theDraftAdministrativeDataentity.
- New option
[cds-compiler@6.3.0] to.sql:
- Structures with only one element can now be compared to scalar values. This also applies to associations with only one foreign key.
cds.UInt8can now be used in SQL dialects "h2" and "postgres".- Managed associations can now be used in comparisons, e.g.
assoc = struct. - Structures and managed associations with only one element can be compared with scalars, e.g.
struct = 1. - In the draft use case, the
DRAFT.DraftAdministrativeDataentity now includes the following fields by default:CreatedByUserDescription,LastChangedByUserDescription,InProcessByUserDescription, andDraftMessages.
[cds@9.3.0] New method
collect()has been added toLinkedCSN, which can be used like that:jsconst federated_entities = cds.linked(csn).collect (d => d.is_entity && d['@federated'])[cds@9.3.0] Remote services can now be configured without
kind, for example:json{ "cds": { "requires": { "SomeService": true }}}[cds@9.3.0] Automatic protocol selection is applied if a required service is configured as above and the remote services is served via multiple protocols. For example, if the above service would be declared like that, the best protocol would be chosen automatically (
hcqlin this case):cds@hcql @rest @odata service SomeService {...}[cds@9.3.0] Method
cds.connect.to()now allows to connect to remote services with just an http url. For example use that fromcds repllike that:jssrv = await cds.connect.to ('http://localhost:4004/hcql/books') await srv.read `ID, title, author.name from Books`[cds@9.3.0] Property
cds.User.authInfoas generic container for authentication-related information- For
@sap/xssec-based authentication strategies,cds.context.user.authInfois an instance of@sap/xssec'sSecurityContext
- For
[cds@9.3.0] Support for state transition flows (
@flow):- Generic handlers for validating entry (
@from) and exit (@to) states - Automatic addition of necessary annotations for Fiori UIs (
@Common.SideEffectsand@Core.OperationAvailable) during compile to EDMX with feature flagcds.features.compile_for_flows = true
- Generic handlers for validating entry (
[cds@9.3.0] Experimental support for consuming remote HCQL services (
cds.requires.<remote>.kind = 'hcql')[cds@9.3.0] Infrastructure for implementing the tenant mapping notification of Unified Customer Landscape's (UCL) Service Provider Integration Interface (SPII) API
Bootstrap the
UCLServiceviacds.requires.ucl = trueand implement the assign and unassign operations like so:js// custom server.js cds.on('served', async () => { const ucl = await cds.connect.to('ucl') ucl.on('assign', async function(req) { ... }) ucl.on('unassign', async function(req) { ... }) })Currently, only the synchronous interaction pattern is supported!
[cds@9.3.0] The targets of
@Common.Textare added to the default search targets[cds@9.3.0] Patch Level Validations are enabled by default. Opt-out with
cds.fiori.draft_messages=false[cds@9.3.0] Enable custom aggregations for currency codes and units of measure
[ux-cds-odata-language-server-extension@1.18.6] Added more code completion suggestions to improve adding annotations to annotations with scalar or array values
[ux-cds-odata-language-server-extension@1.18.6] Added more code completion suggestions for annotations using shortcut syntax
[ux-cds-odata-language-server-extension@1.18.6] Added a diagnostic message for the deprecated
$valuesyntax
Changed
- [cds-dk@9.2.1]
cds add github-actionsaddsif: always()to the scripts retrieving Cloud Foundry logs. - [cds-dk@9.2.1]
cds upuses a default timeout of 10 minutes for Helm upgrades. - [cds-dk@9.2.1]
cds bindworks out-of-the-box for PostgreSQL databases. - [cds-dk@9.2.1]
cds bind -agives warning if no services are bound to the targeted app. - [vscode-cds@9.2.1] OData Annotation Modeler's sub features can be enabled distinctively. For performance reasons, only code completion and hover information are enabled by default. Enable others via user settings:
cds.contributions.features.<feature> - [vscode-cds@9.2.1] Performance optimizations when updating dependency net of CDS file dependencies
- [cds-compiler@6.3.0] Update OData vocabularies: Common
- [cds-compiler@6.3.0] cdsc: EDMX output uses XML comments as service separators instead of
//. If there is only one service, no header is printed, allowing piping the output to a file. - [cds-compiler@6.3.0] to.sql: path expressions which end in a foreign key are now always optimized to use the element of the source side.
- [cds@9.3.0]
UCLServiceonly pushes the application template to UCL ifcds.requires.ucl.applicationTemplateis present - [cds@9.3.0]
cds.User.tokenInfois deprecated. Usecds.context.user.authInfo.tokeninstead. - [cds@9.3.0] Undocumented compat
cds.context.http.req.authInfois deprecated. Usecds.context.user.authInfoinstead. - [cds@9.3.0] Delete all persisted draft messages, when the first request targeting a draft child without containment is handled.
- [cds@9.3.0] cds build now trims leading or trailing whitespace characters for all values in CSV files deployed to SAP HANA.
Fixed
- [cds-dk@9.2.1]
cds add github-actionswon't try to merge acf-infoaction if there's an existingmta.yaml. - [cds-dk@9.2.1]
cds add workzonewith missingsap.appconfig inmanifest.jsondoes not throw aTypeError. - [cds-dk@9.2.1]
cds compile --to xsuaagenerates roles for@requiresin bound actions. - [cds-dk@9.2.1]
cds add lintnow adds proper configuration to enable linting of JavaScript and TypeScript files in VS Code. - [cds-dk@9.2.1]
cds add mtadoes no longer adds services inmta.yamlfor plugins coming fromdevDependencies. - [vscode-cds@9.2.1] Using paths which end with a folder name were not resolved correctly
- [vscode-cds@9.2.1] Formatter support for
==operator - [cds-compiler@6.3.0] compiler: Redirecting associations to non-query entities was fixed.
- [cds-compiler@6.3.0] to.sql/to.edm(x): References to associations can now be compared to other associations and structures.
- [cds-compiler@6.3.0] to.sql: Referencing a foreign key of an
@cds.persistence.skipentity previously caused an error in queries. Now the foreign key in the source entity is resolved and rendered. - [cds@9.3.0] Errors when reading complementary drafts
- [cds@9.3.0] Apply configurations in case
cds.envwas loaded beforecds.logis initialized. - [cds@9.3.0]
req.diffresolves correctly deleted nested composition by deep update - [cds@9.3.0]
cds-deploydid not terminate correctly even though deployment was successful - [cds@9.3.0] Requests to an unimplemented unbound action/ function are rejected
- [cds@9.3.0] Custom app-service implementations configured through
cds.requires.app-service.implis now correctly resolved (again) - [cds@9.3.0] Validation of UUID format for navigation by key
- [cds@9.2.1] Check whether token validation was configured
- [cds@9.2.1]
UPDATE(Foo).withfoo=${'bar'}erroneously constructed the equivalent ofUPDATE(Foo).withfoo=barinstead ofUPDATE(Foo).withfoo='bar'` - [cds@9.2.1] Errors in emits for file-based messaging are thrown
- [cds@9.2.1] Queue: Ensure
method,path,entityandparamsare correctly taken over when creating tasks - [cds@9.2.1] Reject navigations in
$expandwithout parsing the navigation path
Removed
- [cds-compiler@6.3.0] for.odata/to.edm(x): The
addAnnotationAddressViaNavigationPathoption has been removed. Its functionality is included in thedraftMessagesoption. - [cds@9.3.0] Internal property
cds.services._pendingwas removed => usecds.servicesinstead. - [cds@9.3.0] Internal property
srv._is_darkwas removed => use!srv.endpoints?.lengthinstead. - [cds@9.3.0] Internal method
cds.env.requires._resolvedwas removed => usecds.requiresinstead. - [ux-cds-odata-language-server-extension@1.18.6] Removed code completion suggestions with the deprecated
$valuesyntax
July 2025
Added
- [cds-dk@9.1.1] shipping an
index.d.tsfile containing a subset of the dk types now. - [cds-dk@9.1.0]
cds add testto generate test files for CDS services [experimental] - [cds-dk@9.1.0]
cds debug --no-devtoolsallows to skip opening the developer tools. - [vscode-cds@9.2.0] goto implementation for NodeJS services, entities, events, actions and functions, services and entities for Java
- [vscode-cds@9.1.3] Formatting options
whitespaceBeforeColonInParamListandwhitespaceAfterColonInParamListto control whitespace around colons in parameter lists - [vscode-cds@9.1.0] Performance/Responsiveness:
- Reduce "lagging red underline" while typing - configurable via user setting
cds.workspace.fastDiagnosticsMode - Outdated compilations in background are aborted fast. This increases responsiveness and reduces CPU usage and is especially useful for large projects with many files.
- Reduce "lagging red underline" while typing - configurable via user setting
- [vscode-cds@9.1.0] Formatter: New option
argsInNewLineto put multiple arguments to e.g. function calls on a new line - [vscode-cds@9.1.0] Outline/Workspace Symbols: use distinct icons for
AssociationandCompositionelements - [cds-compiler@6.2.0] parser: CDL-casts in queries now support all type expressions, e.g.
field : many String not null. - [cds-compiler@6.2.0] compiler: Association paths in annotation expressions can now end with a filter, e.g.
@anno: (assoc[1=1]). - [cds.java@4.2.0] Added support for the
$applyqueries in Remote OData. - [cds.java@4.2.0] Added support for filter restriction annotations
@Capabilities.FilterRestrictions.Filterable,@Capabilities.FilterRestrictions.RequiresFilter,@Capabilities.FilterRestrictions.RequiredPropertiesand@Capabilities.FilterRestrictions.NonFilterablePropertiesby settingcds.query.restrictions.enabledtotrue. - [cds.java@4.2.0] Added support for expand restriction annotations
@Capabilities.ExpandRestrictions.MaxLevels,@Capabilities.ExpandRestrictions.Expandableand@Capabilities.ExpandRestrictions.NonExpandablePropertiesby settingcds.query.restrictions.enabledtotrue. - [cds.java@4.2.0] Change-tracked root entities will now respect
@cascade: { delete }on thechangesassociation and no longer write changelogs in case the entity is deleted. All changelogs of that entity are removed together with the entity. - [cds.java@4.2.0] The token issuer (e.g. the subscriber IAS tenant host) is now propagated for outboxed events by default.
- [cds.java@4.2.0] Validation annotations
@mandatory,@disabled,@assert.rangeand@assert.formatnow support custom messages, by defining the annotation<anno>.messagewith an error text or message bundle key. - [cds.java@4.2.0] The
DraftService.runmethods now delegate to their respective counter-parts for draft patch and cancel, when statements explicitly target inactive entities. - [cds.java@4.2.0] The
Result.single()method now throws a ServiceException with http status code 404, if no entity is available andcds.errors.preferServiceExceptionis set totrue. - [cds.java@4.2.0] OData V4 adapter now supports ETags for Remote OData entities where ETag element is not known. Such entities must be annotated with the annotation
@odata.etagon the entity level. The ETag value is stored in the metadata container and provided as plain ETag predicate. - [cds.java@4.1.0] Event handlers can now return objects of arbitrary types. They are put into the EventContext as
resultand set the context as completed. - [cds.java@4.1.0] Event handler methods can now use arguments of type
StructuredTypeand its entity-specific subclasses in their signature. The given (typed) reference is the one of the event's CQN. - [cds.java@4.1.0] Event handler methods can now use arguments of type
Serviceand its subclasses in their signature. The provided service is the one the event is emitted on. - [cds.java@4.1.0] Actions and functions in OData V4 now support returning media streams.
- [cds.java@4.1.0] Remote OData supports reading and writing streamed properties.
- [cds.java@4.1.0] Feature
cds-feature-change-trackingcreates correct change links for statements targeting items of compositions when these statements contain path from the root given that this path references keys. - [cds.java@4.1.0] Introduced a new setting
cqnServiceGettersfor thegenerategoal of the CDS Maven Plugin. When enabled the methodgetService()in generatedEventContextinterfaces is overridden to return the typed service interface. - [cds4j@4.2.0] Introduced
Optional<CdsParameter> returns()forCdsOperationin reflection API reflectingreturnsparameter of actions and functions. - [cds4j@4.2.0] Support Fiori Tree Table (recursive hierarchy) requests on PostgreSQL (beta).
- [cds4j@4.2.0] Introduced a new result supertype
CdsResult<T>that can be typed with the entity row type. - [cds4j@4.2.0] Introduced a new
StructuredTypesub-interface which can link query builder interfaces with accessor interfaces. - [cds4j@4.2.0] Option to disable runtime cascade delete via Delete statement hint
cascade.delete: false. - [cds4j@3.10.3] Support query hint
cds.sql.runtimeView.modeto override the runtime view mode for a select statement. - [cds@9.2.0]
srv.scheduleallows to specify the time in a more readable way, e.g.srv.schedule(...).after('1min') - [cds@9.2.0] Support for
jwt/xsuaa-auth on XSA - [cds@9.2.0] Enable
@sap/xssec's caching mechanisms (requires@sap/xssec^4.8)- The signature cache can be configured via
cds.requires.auth.config, which is passed to@sap/xssec's authentication services - The token decode cache can be configured programmatically via
require('@sap/xssec').Token.enableDecodeCache(config?)and deactivated viarequire('@sap/xssec').Token.decodeCache = false
- The signature cache can be configured via
- [cds@9.2.0]
cds.requirescorrectly resolve service credentials on Kyma when its merged env configuration is onlytrueand the service is found via its property name. - [cds@9.2.0]
ias-auth: Support for fallback XSUAA-based authentication meant to ease migration to IAS- The fallback is automatically enabled if XSUAA credentials are available. To enable the credentials look-up, simply add
cds.requires.xsuaa = trueto your env. - In case you need a custom config for the fallback (passed through to
@sap/xssecas is!), configure it viacds.requires.xsuaa = { config: { ... } }
- The fallback is automatically enabled if XSUAA credentials are available. To enable the credentials look-up, simply add
- [cds@9.2.0] Better error message if
cds.xt.Extensionstable is missing in extensibility scenarios.
Changed
- [cds-dk@9.1.1]
cds add httpnow generates auth headers with:separators again, as this is the only separator supporting empty passwords with the RestClient extension in VS Code. (For use with IntelliJ, separate username and password with a blank.) - [cds-dk@9.1.0]
cds add helmdoesn't route the subscription callbacks through the app router any longer. - [cds-dk@9.1.0]
cds lintnow uses local copy ofeslinthelp content. - [cds-dk@9.1.0]
cds add cloud-loggingwill correctly add the Helm dependency toChart.yaml. - [vscode-cds@9.1.1] Maximum log-file size can now be increased to at most 1 GB (default limit unchanged at 10 MB)
- [vscode-cds@9.1.0] Minimum VSCode version is now 1.99.0
- [vscode-cds@9.1.0] Formatter: Chained method-like function calls are now broken into separate lines
- [cds-compiler@6.2.0] compiler: Annotation
@extension.codeis no longer propagated. - [cds-compiler@6.2.0] Update OData vocabularies: Common
- [cds-compiler@6.2.0] The list of CDL keywords was updated for the latest CDL grammar.
- [cds-compiler@6.2.0] to.cdl: Foreign keys of managed associations are only rendered explicitly if the compiler can't infer them when recompiled.
- [cds-compiler@6.2.0] cdsc: The command
parseCdlwas renamed toparse, since it also supports CSN input. - [cds.java@4.1.0] The SMS dependencies endpoint triggered during subscription now supports the hybrid mode with SaaS Registry and XSUAA. In that case it only returns the own XSUAA binding as a dependency.
- [cds.java@3.10.3] The SMS dependencies endpoint triggered during subscription now supports the hybrid mode with SaaS Registry and XSUAA. In that case it only returns the own XSUAA binding as a dependency.
- [cds4j@4.2.0] Constant temporal literals are now rendered as constants in SQL instead of as parameters.
- [cds4j@4.2.0] Select statements that only have virtual elements on the select list don't throw a
select * not expectederror anymore. - [cds4j@4.1.1] Runtime Views: Only generate CTEs for association targets if required for join.
- [cds4j@3.10.3] Aligned runtime view mode annotation name with config property.
- [cds@9.2.0] Upgrade to Peggy 5 version
- [cds@9.2.0] Enabled conversion of
not exists where notto ODataall, integrating the inverse of the policy applied by the OData parser. - [cds@9.2.0] Numeric values in
.csvfiles are now returned as numbers instead of strings, e.g.1instead of'1'; when pre-padded with zeros, e.g.,0123, they are returned as strings, e.g.'0123'instead of123. - [cds-mtxs@3.2.0] The
metadatafield in t0's tenants table supports more than 5000 characters. - [cds-mtxs@3.2.0] Improved resilience for subscriptions after incomplete unsubscriptions.
- [cds-mtxs@2.7.5] The
metadatafield in t0's tenants table supports more than 5000 characters. - [ux-cds-odata-language-server-extension@1.18.2] Updated to support latest changes in OData annotation vocabularies
Fixed
- [cds-dk@9.1.3] Fix installation issues with version 9.1.2.
- [cds-dk@9.1.2] CVE-2025-7783: vulnerability with
form-dataversions <4.0.4. - [cds-dk@9.1.2]
cds build --for hanano longer excludes external entities when not in mocking mode. - [cds-dk@9.1.1]
cds deploy --to hana --no-buildnow works correctly - [cds-dk@9.1.1] fixed bug in call from SAP Business Application Studio wizard
- [cds-dk@9.1.0]
cds add hanafor Java correctly adds the HANA dependencies tochart/Chart.yaml. - [cds-dk@9.1.0]
cds add xsuaafor Java doesn't throw an error when the.cdsrc.jsonis not existing. - [cds-dk@9.1.0]
cds build --for fioristores EDMX files again relative ifdataSources.mainService.settings.localUriin UI5'smanifest.jsonis a relative path. - [cds-dk@9.1.0]
cds add ams/iasadd therepositoryin combination withcds add helm-unified-runtime. - [cds-dk@9.1.0]
cds add xsuaaadds a wildcard prefix to the domain name to allow for multitenancy use cases. - [cds-dk@9.1.0]
cds add portalfor Java binds the HTML5 repo runtime and portal service to the Java server instead of the MTX sidecar, to allow for CAP Java built-in dependencies resolution. - [cds-dk@9.1.0]
cds repl --runcan now run again w/o@cap-js/cds-testinstalled. - [cds-dk@9.1.0]
cds pushand other commands now handle request errors more robustly - [cds-dk@9.1.0]
cds debugnow also honors the--hostparameter when it startscds watch. - [vscode-cds@9.1.3] Workspace symbols could have been incomplete due to a bug in the where-used index
- [vscode-cds@9.1.1] Colons in type paths are no longer aligned with other colons, nor are they padded with spaces
- [vscode-cds@9.1.0] Formatter:
- Original empty lines are now correctly preserved before single-lined blocks
- Separate alignment of annotations before resp. within projection-like entities
- [cds-compiler@6.2.2] compiler:
@extension.codewas accidentally restricted to non-expression values. - [cds-compiler@6.2.0] compiler:
- Calculated elements can now have a localized type.
- Associations in sub-queries of an
order byof aUNIONare now redirected.
- [cds-compiler@5.9.8] compiler: Calculated elements can now have a localized type
- [cds.java@4.2.0] Fixed a bug causing message targets in OData V4's
sap-messagesheader to miss the$Parameter/prefix when referring to action or function parameters. - [cds.java@4.2.0] Fixed ClassCastException in DraftScenarioAnalyzer on pass-through search.
- [cds.java@4.2.0] Fixed a bug in the goal
cdsof thecds-maven-pluginthat caused this goal to fail, if the version output ofcds versioncontains anundefined. - [cds.java@4.2.0] Fixed a bug that can cause connection leaks in remote OData batch requests.
- [cds.java@4.2.0] Fixed a bug causing
*not to be recognized as "all-active" in a user's feature list. - [cds.java@4.2.0] Fixed a bug causing typescript-based UI5 webapp links to miss on the index page.
- [cds.java@4.2.0] Fixed a bug in
cds-feature-change-trackingcausing duplicate changelog entries for association elements that are also keys. - [cds.java@4.2.0] Fixed a bug, causing authorization predicate to appear in all
whereclauses ofSelectstatements usingSelectstatements in theirfromclauses. - [cds.java@4.1.1] Update CDS4j to 4.1.1 with performance improvements for TreeTable on H2.
- [cds.java@4.1.0] Fixed a bug, causing UnauthorizedRequestEvent not to be logged with the AuditLogService.
- [cds.java@4.1.0] Fixed a bug, causing exceptions to be thrown in case errors were written to
Messagesin an@Afterhandler. - [cds.java@4.1.0] Fixed a bug, causing
Selectqueries extended with conditions generated from@restrictannotations to be always false for drafts. - [cds.java@4.1.0] Fixed a bug, causing the ETag header to miss on OData V4 responses, when targeting entity properties.
- [cds.java@4.1.0] Fixed a bug, causing a huge number of Service Manager calls, when it returned with a rate limit error code.
- [cds.java@3.10.3] Fixed a bug, causing exceptions to be thrown in case errors were written to
Messagesin an@Afterhandler. - [cds.java@3.10.3] Fixed a bug, causing
Selectqueries extended with conditions generated from@restrictannotations to be always false for drafts. - [cds.java@3.10.3] Fixed ClassCastException in DraftScenarioAnalyzer on pass-through search.
- [cds4j@4.2.0] Fixed upserts on projections w/ (forward-mapped) assocication paths
- [cds4j@4.2.0] Fixed a bug, enforcing UUID normalization on UUID keys with OData Type
Edm.Stringin deep updates. - [cds4j@4.2.0] Fixed unsupported method ProxyList.removeIf
- [cds4j@4.2.0] Fixed a bug in
CdsJsonConvertercausing an exception when parsing a JSON object with a Map type field. - [cds4j@4.2.0] Fixed a bug causing exceptions in the methods
keys()andkeyValues()of the interfacePathwhen underlying data use immutable maps. - [cds4j@3.10.3] Gracefully handle forward mapped associations with unsupported on condition on the select list instead of throwing UnsupportedOperationException
- [cds@9.2.0] Runtime error in transaction handling in messaging services when used with outbox
- [cds@9.2.0] Always use
cds.contextmiddleware forenterprise-messagingendpoints - [cds@9.2.0] Crash during Location header generation caused by custom response not matching the entity definition.
- [cds@9.2.0] Support for logging of correct error locations with
cds watchandcds run. - [cds@9.2.0] Double-unescaping of values in double quotes during OData URL parsing
- [cds@9.2.0] Throw explicit error if the result of a media data query is not an instance of
Readable, rather than responding withNo Content - [cds@9.2.0] When loading
.csvfiles quoted strings containing the separator (comma or semicolon) where erroneously parsed as two separate values instead of one. - [cds@8.9.6] Batch insert using
INSERT.entries()on draft enabled entities - [cds@8.9.5]
req.diffin case of draft entities using associations to joins/unions - [cds@8.9.5] Locale detection does not enforce
<http-req>.queryto be present. Some protocol adapters do not set it. - [cds@8.9.5] View metadata for requests with $apply
- [cds@8.9.5] Handling of bad timestamps in URL ($filter and temporals)
- [cds-mtxs@3.2.0]
cds.requires.html5-hostandcds.requires.html5-runtimecan be used as shortcuts to define SaaS dependencies withcds-mtxsversion 3 again (using CAP plugin technique). - [cds-mtxs@3.2.0] Job configuration is merged if specified both in
cds.requires.multitenancyandcds.requires['cds.xt.SaasProvisioningService']orcds.requires['cds.xt.SmsProvisioningService']. - [cds-mtxs@2.7.5] Initialization of
t0tenant usingcds-mtx-migrate --init-tenant-listnow uses the database_id of any existing tenant. - [ux-cds-odata-language-server-extension@1.18.2] False positive diagnostic for enum references in annotation expressions.
- [ux-cds-odata-language-server-extension@1.18.2] False positive diagnostic for a single path in expression
June 2025
Added
- [cds-compiler@6.1.0] for.odata:
- Introduce a new option
addAnnotationAddressViaNavigationPathto annotate services containing draft-enabled entities with@Common.AddressViaNavigationPath. - Introduce a new option
draftMessagesthat enhances the draft generation logic.
- Introduce a new option
- [cds.java@4.0.0] Introduced a new setting
betterNamesfor thegenerategoal of the CDS Maven Plugin. This enables technical conversions to better support CDS models with names with characters invalid for Java identifiers or clashing with Java keywords. - [cds4j@4.1.0] Generated
EventContextinterfaces now provide an overridengetService()method which returns the generated service interface orCqnService. - [cds4j@4.1.0] Support query hint
cds.sql.runtimeView.modeto override the runtime view mode for a select statement. - [cds4j@4.1.0] Support Fiori Tree Table (recursive hierarchy) requests on H2 (beta).
- [cds4j@4.0.0] Value.length() to determine the length of a String value
- [cds4j@4.0.0] Added new switch
betterNamesto the code generator configuration to introduce the following conversions:- the names from CDS entities that match Java keywords are suffixed with
_. - the characters
/and$are treated as_during conversion to camel case or screaming case. - the leading
_in elements remains in the resulting names. - the characters that are not valid for Java identifiers are replaced with
_in the resulting name.
- the names from CDS entities that match Java keywords are suffixed with
- [cds4j@4.0.0] Added the public API
CdsJsonConverter(beta) to convert JSON toCdsDataand vice versa. - [cds4j@4.0.0] Added support for calculated elements (
null as LimitedDescendantCount : Int16, etc.) in hierarchical views (projected entities only). - [cds4j@4.0.0] Added support for match predicates
anyMatch/allMatchin filters of recursive Hierarchies. - [cds@9.1.0] CDS config schema validations for
cds.requires.auth.tenants,cds.cdsc,cds.query,cds.log,cds.server - [cds@9.1.0] Queue option
targetPrefixto prefixtargetvalue ofcds.outbox.Messagesentries for microservice isolation - [cds@9.1.0] Basic support for CRUD for hierarchy entities
Changed
- [cds-dk@9.0.6]
cds buildnow adds anengines.node = ">=20"entry to the effective package.json iff it is missing from the project's package.json to avoid engine confusion when deploying to Cloud Foundry - [cds-dk@9.0.6]
cds addwithout any flag now shows the help (cds add --help) instead of throwing an error - [cds-dk@9.0.5]
cds inituses latest Maven Java archetype version 4.0.2 for creating Java projects. - [vscode-cds@9.0.2] Telemetry now requires the user to install
SAP Business Application Studio Toolkitextension - [cds-compiler@6.1.0] Update OData vocabularies: Capabilities, Common
- [cds-compiler@6.0.12] Update OData vocabularies: 'Common', 'Hierarchy'
- [cds.java@4.0.0] Runtime views are now by default rendered via CTEs pushing the projection into the SQL. Set
cds.sql.runtimeView.mode: resolveto use the previous mode, which resolved projections explicitly by transforming CQN statements. - [cds.java@4.0.0] Renamed
cds.multiTenancy.subscriptionManager.clientCertificateHeadertocds.security.authentication.clientCertificateHeader. - [cds.java@4.0.0] Renamed
cds.multiTenancy.security.internalUserAccess.enabledtocds.security.authentication.internalUserAccess.enabled. - [cds.java@4.0.0] Security checks have been hardened by enabling the following properties by default:
cds.security.authorization.deep.enabled,cds.security.authorization.instanceBased.rejectSelectedUnauthorizedEntity.enabledandcds.security.authorization.instanceBased.checkInputData.enabled. - [cds.java@4.0.0] Translations for error messages for built-in input validation annotations are now enabled by default. You can disable these translations by setting
cds.errors.defaultTranslations.enabledtofalse. - [cds.java@4.0.0] Subscription hooks in
com.sap.cds.feature.mt.lib.subscription.exitsfrom former MT library have been deprecated. Use event handler forDeploymentServiceinstead. - [cds4j@4.1.0] Improved SQL for nested runtime views in CTE mode and calculated elements on read.
- [cds4j@4.0.0] Runtime views are now by default rendered via CTEs. Set
cds.sql.runtimeView.mode: resolveto use the resolve mode. - [cds4j@4.0.0] StructDataParser now rejects non-array nodes as value for to-many associations.
- [cds4j@4.0.0] With cds-compiler 6 (cds 9)
$nowin projections is replaced by the value of the session variablenow. - [cds4j@4.0.0] Removed deprecated function Xpr.length(), use Xpr.size() instead.
- [cds4j@4.0.0] Removed deprecated configuration parameters
sharedInterfacesanduniqueEventContextsfrom code generator. - [cds4j@4.0.0] Removed deprecated
Modifier.selectListValue(Value<?>), useselectListValue(SelectableValue)instead. - [cds4j@4.0.0] Removed deprecated
CqnSearchPredicate, use CqnSearchTermPredicate instead. - [cds4j@4.0.0] Removed deprecated
SelectableValue::withoutAlias(). - [cds4j@4.0.0] Removed deprecated
Modifier::search(String term), useModifier::searchTerm(CqnSearchTermPredicate)instead. - [cds@9.1.0] Reduced the amount of SELECT nesting the OData adapter does for
$applyqueries. - [cds@9.1.0] Better error messages for unresolved parent associations in hierarchy requests
- [cds@9.1.0] Enabled updated behavior of
draftActivateto move updates to fields of draft enabled entities with typecds.LargeBinaryfrom draft to active table on the database level, with feature flagcds.env.fiori.move_media_data_in_db. - [cds-mtxs@3.1.0]
cds.requires.multitenancy.jobs.clusterSizeis set to 3 by default. - [cds-mtxs@3.1.0]
cds.requires.multitenancy.jobs.workerSizeis set to 4 by default.
Fixed
[cds-dk@9.0.5]
cds buildfor extensions now filters built-in entities such ascds.outbox.Messagesto fix the extension upload withcds push.[cds-dk@9.0.5]
cds add datanow correctly works for nested structured properties.[cds-dk@9.0.5]
cds add data/httpno longer create decimal numbers with too many precision places[cds-dk@8.9.5] Bump
tar-fsto address CVE-2024-12905.[cds-dk@8.9.5]
cds add datanow correctly works for nested structured properties.[cds-dk@8.9.5] Help text of
cds debug.[cds-compiler@6.1.0] compiler: The ternary condition operator
…?…:…is now right-associative as usual (in v5, chaining it like in…?…:…?…:…was not possible without parentheses).[cds-compiler@6.0.14] to.sql: Fix error when calculated element refers to a localized element.
[cds-compiler@6.0.14] to.edm(x): Correctly handle
PropertyPathin a collection when using expressions as annotation values[cds-compiler@6.0.12] compiler: Fix artifact refs in annotated annotation expressions, i.e. the
Typeinsideannotate … with @SomeAnno: (cast( … as Type )).[cds-compiler@6.0.12] to.sql: Checks around managed associations for mocked entities have been relaxed.
[cds-compiler@6.0.12] to.edm(x): Resolved a crash caused by references in annotation expressions that were not properly updated.
[cds-compiler@5.9.6] to.sql: Fix error when calculated element refers to a localized element.
[cds-compiler@5.9.6] to.edm(x):
- Fix errors for service entities containing multiple path steps (e.g.
Service.Prefix.MyEntity). - Support enum references in annotation expressions that were resolved by the compiler.
- Fix errors for service entities containing multiple path steps (e.g.
[cds.java@4.0.1] Native HANA associations are no longer explicitly disabled in new projects, as this is the default behaviour in cds9
[cds.java@4.0.1] Fixed a bug, causing the sample UI to trigger unsupported requests
[cds.java@4.0.1] Fixed a bug, causing
draftActivateto return error targets withIsActiveEntity=true, if there is exactly one error message.[cds.java@4.0.0] Fixed a bug in
cds-feature-flow, causing exceptions when updating the status of a draft-enabled entity.[cds.java@4.0.0] Fixed a bug, causing
draftActivateto return error targets withIsActiveEntity=true.[cds.java@4.0.0] Fixed an NPE in
cds-adapter-odata-v2when media entity element is null.[cds.java@4.0.0] Fixed a bug causing concurrent modification issues with
ModifiableUserInfoorModifiableParameterInfoduring parallel read access.[cds.java@3.10.2] Fixed a bug causing concurrent modification issues with
ModifiableUserInfoorModifiableParameterInfoduring parallel read access.[cds4j@4.1.0] Fixed a bug, causing missing updates to
nullwhen writing to paths in a (runtime) view.[cds4j@4.1.0] Fixed rendering of non-refs on the select list of subqueries.
[cds4j@4.1.0] Gracefully handle forward mapped associations with unsupported on condition on the select list instead of throwing UnsupportedOperationException.
[cds4j@4.1.0] Fixed a bug in the code generator, causing compilation error if a service is empty and doesn't contain any operations or entities.
[cds4j@4.0.1] Fixed search on entities using elements of
@cds.externalentities as@Common.Text[cds4j@4.0.1] Ignore to-one expands to virtual entities in Runtime View CTE mode.
[cds4j@3.10.2] Fixed UnsupportedOperationException on
CqnAnalyzer.analyze(statement).targetKeys()where no keys can be extracted due to the complexity of the statement.[cds4j@3.10.2] The exceptions that occur within methods of accessor interface proxies, for example
forEach, are no longer wrapped inInvocationTargetException, but thrown directly.[cds4j@3.10.2] StructDataParser now rejects non-array nodes as value for to-many associations.
[cds4j@3.10.2] SQLite: Fixed an issue where setting a new session variable inside a transaction unintentionally cleared other session variables.
[cds4j@3.10.2] Don't ignore expands to
@cds.externalentities to support remote service mocks[cds4j@3.10.2] Fixed NPE in
FromClauseBuilderon accessing on-condition of association[cds4j@3.10.2] Fixed search on entities using elements of
@cds.externalentities as@Common.Text[cds4j@3.10.2] Ignore to-one expands to virtual entities in Runtime View CTE mode
[cds@9.1.0] Copies of
cds.contextwithlocale[cds@9.1.0] Support for relative paths in
@odata.bind[cds@9.1.0]
cds buildon Windows OS - fixed cli tar usage for resources.tgz[cds@9.1.0] Actions and functions with scalar return types use same
@odata.contextcalculation as other return types, fixing e.g.cds.odata.contextAbsoluteUrlnot being respected[cds@9.1.0] Improve content-type and content-length handling in OData adapter
[cds@9.1.0] Parsing incorrect function parameters
[cds@9.1.0]
cds deploy --dryno longer tries to load a DB adapter, so that it works w/o one installed.[cds@9.1.0] Fix
@mandatoryfor actions and functions[cds@9.0.4] In some cases, the app crashed if an element was named like a reserved CSN key.
[cds@9.0.4] Locale detection does not enforce
<http-req>.queryto be present. Some protocol adapters do not set it.[cds@9.0.4]
betweenoperator for remote OData requests[cds@9.0.4]
cds serve/watchandcds.test()no longer try to connect to an SQLite database if none is configured.[cds@9.0.4]
cds.connect.tofor required queueable services if no persistence is configured[cds@9.0.4] Persistent queue is not enabled if no persistence is configured
[cds@9.0.3] Handling of bad timestamps in URL ($filter and temporals)
[cds@9.0.3] View metadata for requests with $apply
[cds@9.0.3] Server crash for some URLs
[cds-mtxs@3.1.0] Properly catching errors in the
t0cleanup intervals.[cds-mtxs@3.1.0] eTag determination for
ModelProviderService.getCsn()only evaluates active extensions now if not explicitly requested differently.[cds-mtxs@2.7.4] Extension of aspects is now possible. It needs to be enabled using
jsonc"requires": { "extensibility": { "enable-aspect-extension": true } }in the root project configuration.
[cds-mtxs@2.7.3] More reliable detection of forbidden annotations in entity extensions
[cds-mtxs@2.7.3] Event 'activated' now only available as internal event to avoid deadlocks.
Removed
- [cds.java@4.0.0] Removed deprecated property
cds.security.authorization.emptyAttributeValuesAreRestricted. Empty attributes are always considered restricted by default and explicitis nullconditions must be used to treat empty attributes as unrestricted. - [cds.java@4.0.0] Removed deprecated property
cds.odataV4.serializer.buffered. OData V4 responses are now always streamed while serialized. - [cds.java@4.0.0] Removed deprecated property
cds.messaging.services.<key>.structuredand deprecated plain String-based methods inMessagingServiceandTopicMessageEventContext. Messages are now structured by default and always represented as separated data and header maps. - [cds.java@4.0.0] Removed deprecated custom K8s service binding handling via properties
cds.environment.k8s. - [cds.java@4.0.0] Removed deprecated classes
ClientCredentialJwtAccess,ClientCredentialsJwtReaderandXsuaaParams. - [cds.java@4.0.0] Removed the resource bundle template
cds-messages-template.propertiesin thecds-services-utilsjar.
May 2025
Added
- [cds-dk@9.0.1]
cds debug --forceautomatically enables SSH for Cloud Foundry application instances. - [cds-dk@9.0.1] Faster table deployments on SAP HANA using HDI param
com.sap.hana.di.table/try_fast_table_migration=trueincds build --for hana,cds deploy --to hana,cds add hana. - [eslint-plugin-cds@4.0.2] Add new rule sets for JS
js.allandjs.recommendedto detect bad practice in service implementations. - [eslint-plugin-cds@4.0.2] Add rule
no-shared-handler-variablesto detect when state is shared between handlers. - [eslint-plugin-cds@4.0.2] Add rule
use-cql-select-template-stringsto mitigate potential for SQL injections. - [eslint-plugin-cds@4.0.2] Add rule
no-cross-service-importto detect when typer artifacts are imported in an unrelated service. - [eslint-plugin-cds@4.0.2] Add rule
no-deep-sap-cds-importto forbid importing from below the facade of@sap/cds. - [vscode-cds@9.0.1] Support for telemetry - See
README.mdfor details - [cds-compiler@6.0.8] for.odata/to.edm(x):
- Annotating the generated
DraftAdministrativeDataartifacts and their elements is now supported.
- Annotating the generated
- [cds.java@3.10.0] Support functions
round,floor,ceiling,length,indexof, andtrimin OData V4. - [cds.java@3.10.0] Added expression validations with
@assert.constraint. - [cds.java@3.10.0] Added support for
@mandatorywith expressions. - [cds.java@3.10.0] Added support for
@readonlywith 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
addof thecds-maven-pluginfor 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
@restrictpredicates for modifying statements. - [cds.java@3.10.0]
@readonly(and it's@Common.FieldControlvariants) and@Core.Computedcan now be evaluated already on draft instances by settingcds.drafts.enforceReadonlytotrue. 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:rowTypefor insert, upsert and update results - [cds4j@3.10.0] Added numeric rounding functions
round,floorandceilingonValueand onCQL - [cds4j@3.10.0] Function
averageis synonym foravg - [cds4j@3.10.0] Type propagation for the
avg|averagefunction - [cds4j@3.10.0] Added String functions
length,indexOfandtrim - [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
- [cds@9.0.0] CAP-native task queues (beta; replacing generic outbox -- see section Changed for additional details)
- Events and requests to a "queued service" are written to the database in the current transaction (with default kind
persistent-queue) and processed as asynchronous tasks- Programmatically queue or unqueue any service via
cds.queued(srv)/cds.unqueued(srv) - Statically queue instances of
cds.MessagingServiceorAuditLogServicevia configcds.requires.<srv>.queued = true - Disable the persistent task queue via
cds.requires.queue = false
- Programmatically queue or unqueue any service via
- Tasks are processed in dedicated transactions (except on SQLite, where there are no concurrent transactions)
- Tasks are retried until processed successfully or the max. retry count is reached, i.e., adding resiliency to the respective service
- Tasks that cause unrecoverable or programming errors will remain in the database table but will not be retried
- Experimental task scheduling API
<srv>.schedule()as variant of<srv>.send()with fluent API options.after(<ms>)and.every(<ms>) - Experimental task callback API
<srv>.after('<event>/#succeeded', (results, req))/<srv>.after('<event>/#failed', (error, req)) - Experimental task trigger API
<srv>.flush() - Experimental application-level task status management to avoid long-lasting database locks
- Enable via
cds.requires.queue.legacyLocking = false - Caution: Application-level task status management only works if all active app deployments are on cds^9!
- Enable via
- Events and requests to a "queued service" are written to the database in the current transaction (with default kind
- [cds@9.0.0] Inbox: Inbound messages can be accepted as asynchronous tasks via config
cds.requires.messaging.inboxed = true - [cds@9.0.0] Not null validations for actions and functions
- [cds@9.0.0]
cds.auth: Provide custom configuration to@sap/xssec-based authentication viacds.requires.auth.config - [cds@9.0.0] IAS: Token validation for requests to the app's "cert url" (with
.certsegment in the domain) - [cds@9.0.0] Support refs with longer path expressions like
ref: ['root', 'child', 'subchild', 'ID']when resolving queries to the target entity - [cds@9.0.0]
PATCHas synonym forUPDATEduring event handler registration - [cds@9.0.0]
UPSERTsemantics forPUTrequests can be deactivated via flagcds.runtime.put_as_upsert=false - [cds-mtxs@3.0.1]
cds-mtx upgrade t0can be used to (re)initialize thet0tenant, e. g. in a cf hook to avoid concurrency issues. - [cds-mtxs@3.0.1] The
cds.xt.ExtensibilityService.activatedevent now also sends the payload of the activation call. It also sends the tenant in thex-tenant-idheader field now.
Changed
[cds-dk@9.0.4]
cds add typescriptadds atsxdependency. It no longer adds awatchscript pointing tocds-tsxbecausecds watchwill runtsxautomatically.[cds-dk@9.0.3]
DEBUG=build cds builddoes not log the CDS env any more.[cds-dk@9.0.3]
cds init --java:mvndoes not prefix the-Dto options any more to allow for options not starting with-D.[cds-dk@9.0.3]
cds add html5-repofor Helm does not add XSUAA configuration for IAS-only projects.[cds-dk@9.0.3]
cds add html5-repofor Helm has improved support for IAS.[cds-dk@9.0.3]
cds watchwithtsxwill no longer be print notifications toconsole.logwithout environment variableDEBUGset.[cds-dk@9.0.3]
cds add html5-repowill add missingrequiresfor itsbuild-parameterssetting, even if ran with a preexistingrequireskey.[cds-dk@9.0.3]
cds unknown-command valid-file.cdsnow fails due to the unknown command instead of compiling the cds file.[cds-dk@9.0.1] Change license from SAP DEVELOPER LICENSE AGREEMENT '3.1' to '3.2 CAP'. See https://cap.cloud.sap/resources/license/developer-license-3_2_CAP.txt.
[cds-dk@9.0.1] The
CHANGELOG.mdfile now only contains changes from 8.0.0 onwards.[cds-dk@9.0.1] cds-dk now requires
@sap/cdsversion 8.3.0 or higher. An error is raised for older versions.[cds-dk@9.0.1] cds-dk now requires
@sap/cds-mtxsversion 2 or higher.[cds-dk@9.0.1]
cds add multitenancyandcds add xsuaause theproductionprofile by default.[cds-dk@9.0.1]
cds add helmuses a default for the Docker secret name (docker-registry), instead of asking for it in interactive mode.[cds-dk@9.0.1]
cds add helmuses the pre-configured domain name for your Kyma cluster as a default, instead of asking for it.[cds-dk@9.0.1]
cds add workzoneuses the backend destinationsrv-apiinstead of-srv-apion Cloud Foundry.[cds-dk@9.0.1]
cds add approuterin combination withxsuaaadds aredirect-uristomta.yamlfor Cloud Foundry projects.[cds-dk@9.0.1]
cds build --ws-packnow recursively packs dependencies from workspaces. If theworkspacesdefinition in the project root contains glob patterns with braces{…}, Node.js 22 or later will be required.[cds-dk@9.0.1]
cds add xsuaaadds aredirect_urlsto themta.yamlfor Cloud Foundry projects.[cds-dk@9.0.1]
cds deploy --to hanathrows an error if an unsupported option is passed.[cds-dk@9.0.1] The Node version in
gen/db/package.jsonfile generated bycds buildis now>=18, matching to what@sap/hdi-deployspecifies.[cds-dk@9.0.1]
cds watchonly auto-resolves bindings if eitherCDS_ENVor--profileare set.[cds-dk@9.0.1]
cds compile --helpno longer mentions thehdbcdsformat.[cds-dk@9.0.1]
cds add pipelinealso creates UI5 resources if required.[cds-dk@9.0.1]
cds add hanadoes not addnative_hana_associationsconfiguration any more.[cds-dk@9.0.1]
cds upsupports embedded multitenancy scenarios with no sidecar.[cds-dk@9.0.1]
cds lintrequires projects to installeslintlocally (or system-wide), ascds-dkwill no longer includeeslintinternally.[cds-dk@9.0.1]
cds add telemetryadds limits the version of added@opentelemetrydependencies to<0.200.[cds-dk@9.0.1]
cds add cf-manifestuses a 1 GB disk quota instead of 512 MB for Java apps.[cds-dk@8.9.4]
cds inituses latest Maven Java archetype version 3.10.1 for creating Java projects.[eslint-plugin-cds@4.0.2] Bumped peer dependency to
@sap/cdsto 9.[vscode-cds@9.0.1] Change license from SAP DEVELOPER LICENSE AGREEMENT '3.1' to '3.2 CAP v2'
[vscode-cds@9.0.1] Where-used functionality now based on new index
[vscode-cds@9.0.1] Improved
cds json schemaretrieval[vscode-cds@9.0.1] Refactored CLI call handling to cds and other tools
[vscode-cds@9.0.1] More compact formatting of
casestatements[vscode-cds@9.0.1] Refactoring when renaming/deleting CDS files is now disabled by default. Corresponding user settings are
cds.refactoring.files.rename.enabledandcds.refactoring.files.delete.enabled[cds-compiler@6.0.8] License changed to "SAP DEVELOPER LICENSE AGREEMENT Version 3.2 CAP"
[cds-compiler@6.0.8] Node 20 is now the minimum required version.
[cds-compiler@6.0.8] Namespace
cds.coreis no longer reserved by the cds-compiler. It is used by the CAP runtimes.[cds-compiler@6.0.8] compiler:
Providing a filter for a function call now is a syntax error (was a warning before). Example:
count(*)[ uncheckedFilterRef > 0 ].Providing a default value for an array-like action or function parameter is a syntax error now (was a warning before). Example:
action A( par: many Integer default 42 ).Providing an annotation for an array-like element in the middle of a type expression is no longer allowed (was a warning before), as this leads to unexpected results. Example:
bar: many String null @anno enum { symbol };. Fix this by moving the annotation out of the type expression, e.g. before the element name.A simple query inside parentheses (e.g.
entity V as (select from E)) is no longer represented assetin CSN. Repeatedorder byorlimitclauses are no longer allowed (e.g.entity V as ( select from E order by id ) order by id;).Defining an element or parameter as
not null default nownow is an error.A virtual element can be defined in a view without providing a value or reference.
cdsentity V as select from E { virtual a } //defines new virtual element 'a'In this example, the compiler no longer tries to resolve the name of the virtual element as reference to an element of the view's data source.
If a select item selects an element of a virtual structure that itself is not explicitly marked as virtual, then the select item must be explicitly marked as virtual, too.
To-many associations without ON-condition no longer get a
keysproperty, i.e.Association to many Foo;does not get any foreign keys.Annotation
@cds.persistence.journalis now propagated to generated entities, including.textsentities.Doc comments are no longer propagated; use option
propagateDocComments: trueto propagate them again.With CSN input, the compiler does not accept anymore type properties like
enumin thecastproperty for the SQL functioncastwhich were simply ignored by the SQL backend. Remark: inside a directcastproperty for select columns (CDL-stylecast), these type properties are still allowed.
[cds-compiler@6.0.8] to.sql/to.hdi:
- Default for option
booleanEqualityistrue, i.e.!=is rendered asIS DISTINCT FROMor a similar expression and therefore has boolean logic instead of three-valued logic. - To-many associations with neither an explicit foreign key list (i.e. without
keys) nor an ON-condition are reported as errors. - For SAP HANA, CDS associations are by default no longer reflected in the respective database tables and views by native HANA Associations (HANA SQL clause
WITH ASSOCIATIONS). They can be switched on via configurationcds.sql.native_hana_associations: true. - A set of OData and SAP HANA functions are translated to database-specific variants. See https://cap.cloud.sap/docs/guides/databases#standard-database-functions.
- For SQL and HDI rendering,
$nowis no longer rendered asCURRENT_TIMESTAMP, but as a session variableSESSION_CONTEXT('NOW')for SAP HANA,SESSION_CONTEXT('$now')for SQLite,@nowfor H2, andcurrent_setting('cap.now')::timestampfor Postgres. Fordefaultvalues,CURRENT_TIMESTAMPis kept, asdefaultclauses only allow static expressions. To restore the old behavior, use optiondollarNowAsTimestamp: true. count(*)inside nested projections is rejected, as there is no proper representation in SQL
- Default for option
[cds-compiler@6.0.8] to.cdl:
- Nested definition rendering is now the default, i.e. definitions inside services are rendered in
service { … }, instead of being rendered top-level using their absolute name. to.cdlno longer returns an entrynamespace, onlymodel.
- Nested definition rendering is now the default, i.e. definitions inside services are rendered in
[cds-compiler@6.0.8] for.odata/to.edm(x):
- References to foreign keys in annotation expressions are now adjusted to directly reference the corresponding local foreign key element.
- Annotating the generated
DraftAdministrativeDataartifacts and their elements is now supported.
[cds4j@3.10.0] New method
Xpr.size()replaces (deprecated) methodXpr.length()[cds@9.0.2] REVERT: For drafts, read-only fields must be set in
CREATEhandlers (calculated values set inNEWhandlers are cleansed). If children are added in draftCREATEhandlers, the fieldDraftAdministrativeData_DraftUUIDmust be set.[cds@9.0.1] Lean draft handler is registered in a service only if a draft-enabled service entity exists
[cds@9.0.0] Evolution of the generic outbox to CAP-native task queues:
cds.queued()/cds.unqueued()replacecds.outboxed()/cds.unboxed()(temporary compat in place)- Global configuration
cds.requires.queuereplacescds.requires.outbox(temporary compat in place) - New default
cds.requires.queue = true. This change requires a database deployment (for tablecds.outbox.Messages) ifcds.requires.outboxwas not manually set totruebefore. - Default
chunkSizereduced from100to10. If parallel processing is disabled (parallel = false), thechunkSizeconfig is ignored and the effectivechunkSizeis1.
[cds@9.0.0] Support for
@sap/cds-mtxsversion 1 is dropped[cds@9.0.0] Service level restrictions for application service calls are enforced by default
- Opt out with
cds.features.service_level_restrictions=falseuntil next major version
- Opt out with
[cds@9.0.0]
req.diffuses a deep expand to fetch data for deep update comparison. Previously, it read each composition layer sequentially.[cds@9.0.0]
cds.testnow requires module@cap-js/cds-testto be installed. Test dependencies likeaxios,chai,chai-as-promised, andchai-subsetcan be usually removed in favor of@cap-js/cds-test.[cds@9.0.0]
cds.context.localeis only set if initiated from an HTTP client specifying a locale[cds@9.0.0] Only new major version 4 of SAP Cloud SDK is supported from now on . Please make sure to upgrade. Detailed changes are documented in the migration guide.
[cds@9.0.0]
cds-servenow fails if@sap/cdswould be loaded from different installation paths to prevent inconsistent server state. Such situations are always a setup issue, often caused by plugins that require diverging versions. Disable withcds.server.exit_on_multi_install: false.[cds@9.0.0] For drafts, read-only fields must be set in
CREATEhandlers (calculated values set inNEWhandlers are cleansed). If children are added in draftCREATEhandlers, the fieldDraftAdministrativeData_DraftUUIDmust be set.[cds@9.0.0]
hdbtabledatafiles created bycds compile/buildnow instruct SAP HANA to decode base64 values in CSV files forLargeBinaryelements. This aligns the behavior with SQLite and H2, avoiding manual base64 decoding. It can be disabled withcds.hana.table_data.column_mapping.LargeBinary=false.[cds@9.0.0]
PATCHrequests no longer create the target resource if it doesn't exist (UPSERTsemantics)- Re-enable via flag
cds.runtime.patch_as_upsert=true
- Re-enable via flag
[cds@9.0.0]
PUTrequests no longer set unprovided properties to their default values (REPLACEsemantics)- Re-enable via flag
cds.runtime.put_as_replace=true - If enabled, the defaulting is now done in the protocol adapter
- Re-enable via flag
[cds@9.0.0]
req.paramsis an array of objects (instead of plain values for single-keyed entities with keyID)- Opt out with
cds.features.consistent_params=falseuntil next major version
- Opt out with
[cds-mtxs@3.0.2]
cds.requires.multitenancy.jobs.clusterSizeis set to 3 by default.[cds-mtxs@3.0.2]
cds.requires.multitenancy.jobs.workerSizeis set to 4 by default.[cds-mtxs@3.0.1]
@sap/cds-mtxsnow also conforms to the CAP plugin protocol.[cds-mtxs@3.0.1]
@sap/cds-mtxsnow declares a peer dependency to@sap/cdsversion 9. Lower versions will fail.[cds-mtxs@3.0.1] For the
javaprofile,cds.requires.authis set to"kind": "dummy"in the sidecar by default.[cds-mtxs@3.0.1]
com.sap.hana.di.table/try_fast_table_migrationdeployment parameter is now enabled as default.[cds-mtxs@3.0.1] Outdated MTX configuration now throws an error.
[cds-mtxs@3.0.1] Outdated provisioning parameter configuration now causes an error.
[cds-mtxs@3.0.1] The extension validation (aka linting) now always checks extensions including existing extensions. This can be disabled using
jsonc"requires": { "cds.xt.ExtensibilityService": { "check-existing-extensions": false } }[cds-mtxs@3.0.1] The extension validation (aka linting) now also checks if the model can be compiled to EDMX. This also detects e.g. missing key fields of entities.
[cds-mtxs@3.0.1] If the
subscription-managerprofile is used, IAS will be the default authentication kind for production.[cds-mtxs@3.0.1] The MTX sidecar now always uses the compiler configuration of the project root. To use a separate compiler configuration, you need to add the configuration
jsonc"requires": { "cds.xt.ModelProviderService": { "use-local-cdsc-config": true } }
Fixed
[cds-dk@9.0.4] Bring shrinkwrap back.
[cds-dk@9.0.4]
cds import --from edmxno longer produces invalid CSN for function imports with return types of the same name.[cds-dk@9.0.4]
cds watchno longer shows the outbox model for empty projects.[cds-dk@9.0.3]
cds up -2 k8sfails for errors inctzinstead of only logging the messages.[cds-dk@9.0.3]
cds add helmnow correctly prompts for the registry server.[cds-dk@9.0.2]
cds add multitenancyadds the@sap/cds-mtxstodevDependenciesin for Java projects.[cds-dk@9.0.2]
cds add iasrewrites theurl: ~{srv-url}tourl: ~{srv-cert-url}if required.[cds-dk@9.0.2]
cds add iasaddsforwardAuthCertificatesandstrictSSLsettings to the app router if required.[cds-dk@9.0.1]
cds uphas improved support for monorepos.[cds-dk@9.0.1]
cds add html5-repoworks in combination with multitenancy when no app router or Work Zone is set up.[cds-dk@9.0.1]
cds add dynatracesets theenvironment_nameproperty according to the specification.[cds-dk@9.0.1]
cds deploy --to hananow supports--with-mocks.[cds-dk@9.0.1]
cds bindgives better error messages if the Cloud Foundry org or space are not found.[cds-dk@9.0.1]
cds add enterprise-messagingwith xsuaa now addsprocessed-afterin themta.yaml.[cds-dk@9.0.1]
cds deploy --to hanacorrectly hands over--profiletocds buildwhen deploying.[cds-dk@9.0.1]
cds importadds@mandatoryannotations to properties marked asrequiredin the schema.[cds-dk@9.0.1]
cds add amsfor Java adds a custom builder to themta.yamlto circumvent the missingsrv/src/gen/policies.[cds-dk@9.0.1]
cds add multitenancyrequires thesrv-apiinstead of themtx-apifor Java projects.[vscode-cds@9.0.1] Avoid exception during json schema hover when no hover text is available
[vscode-cds@9.0.1] Welcome page (
CAP Release Notes) now show title of code block sections[vscode-cds@9.0.1] Formatter: Separate alignment of annotations to entity and select items
[vscode-cds@9.0.1] Syntax highlighting of parenthesized annotations with strings containing a colon
[vscode-cds@9.0.1] Syntax highlighting of comments in queries
[cds-compiler@6.0.10] to.sql/to.hdi:
- Fixed internal error for to-many associations without ON-condition in entities with
@cds.persistence.skip.
- Fixed internal error for to-many associations without ON-condition in entities with
[cds-compiler@6.0.10] for.odata/to.edm(x):
- In annotation expressions: enum references that have already been resolved by the compiler are correctly rendered to EDMX.
[cds-compiler@6.0.8] to.edm(x): Fixed crash for rare case if annotation expressions were used.
[cds-compiler@5.9.4] to.edm(x): Parameters are marked optional unless explicitly marked as
not null. AnnotationCore.OptionalParameterwill be added to optional parameters.[cds.java@3.10.1] Fixed a bug in the Service Manager v2 API integration that leads to 400 Bad Request errors when service instances or service bindings are requested by ID.
[cds.java@3.10.1] Fixed a bug in
cds-services-archetypecausing an invalid default package name.[cds.java@3.10.1] Fixed a bug in
cds-feature-change-trackingcausing the compositionchangesto be written when the entity itself is deleted.[cds.java@3.10.1] Fixed a bug causing instance-based authorization conditions to be executed on inactive draft-enabled instances during
draftActivateordraftEdit. This fix requirescds.security.authorization.instanceBased.checkInputData.enabledto be set totrue.[cds.java@3.10.1] Fixed a bug in
cds-feature-flowcausing server errors in case an action with@flowannotations was triggered on a non-existent entity instance.[cds.java@3.10.0] Fixed a bug, causing
com.sap.cloud.sdk.datamodel.odata.client.exception.ODataDeserializationExceptionwhen querying the@odata.singletonannotated 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-trackingcausing the links between the projections of the entities that exclude elements of aspectchangelog.changeTrackedand 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-trackingcausing statement with wrong selection predicate being generated whenUpdatestatement uses CDS delta lists as payloads for compositions.[cds.java@3.10.0] Fixed a bug in
cds-feature-change-trackingcausingDeletestatements to consider localized values for images.[cds.java@3.10.0] Fixed a bug in
cds-feature-change-trackingcausing parametrizedUpdatestatements to select more data than needed for changelogs.[cds4j@3.10.1] Fixed duplication issue due to left join in runtime view CTE mode on RT views with filtered to-many associations
[cds4j@3.10.1] Support redirected associations, nested projections and structs in runtime view CTE mode
[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@9.0.2]
cds.load()ignores the outbox model if it's the only model source, helpingwatchto suppress it as well.[cds@9.0.1]
cqn2odata: value formatting in OData v4 lambda expressions[cds@9.0.1] Processing in
filed-based-messagingmust be async[cds@9.0.1]
Locationresponse header for REST protocol[cds@9.0.1]
cds.logis unwired fromcds.envnow, which allows to usecds.login plugins, without risk of loadingcds.envtoo early.[cds@9.0.1] Elements from
mixinare now being considered byminify[cds@9.0.1] Lean draft: Insert.entries on draft enabled entity
[cds@9.0.1] Remote call of action/function always forwards passed headers
[cds@9.0.1]
cds serveno longer fails with an duplicate install error if the shell's working directory differs in case (likeC:vsc:on Windows).[cds@9.0.1] Erroneously skipped input validation for local service calls
[cds@9.0.0] Webhook creation in
enterprise-messagingis more resilient in case of multiple instances[cds@9.0.0]
cdsjsonschemaprotocol in lower case for cds json schema[cds@9.0.0] In
CREATEhandlers for drafts, the original path is preserved[cds@9.0.0]
@sap/cds-mtxsis now loaded before other plugins so that they can register handlers for mtx services.[cds@9.0.0] The default index page respects now
cds.odata.containment[cds@9.0.0] Remove incorrect
Typesuffix from@odata.contextfor views with parameters[cds@9.0.0] Support where clauses in refs
[cds@8.9.4] No longer require
@sap/cds-compilerversions 6.x as these are not supported with CAP Java 3.[cds@8.9.4] Regression in view resolving with mixins
[cds@8.9.4] View resolving for external service entities aborted too early
[cds@8.9.4]
cds.Mapvalidation in action/function parameters[cds@8.9.3] OData:
$valueaccess of primitive properties returned by custom handler[cds@8.9.3] UCL: Add missing declaration of variable
$inputin mutation for creating an application template[cds@8.9.3] Purge of
serversfrom.cds-services.jsonfile[cds@8.9.3] Loading of relative service implementations in plugins
[cds@8.9.3]
cds.compile.to.edmxin case the model was manipulated in a plugin[cds-mtxs@3.0.2] Properly catching errors in the
t0cleanup intervals.[cds-mtxs@3.0.1] Extension validation (aka linting) for new entities now works properly, also if no other extensions exist.
[cds-mtxs@3.0.1] Extension validation now ignores internal definitions with namespace
cds.core.[cds-mtxs@3.0.1] Base model pulled for extension projects using
cds pullno longer contains internal definitions with namespacecds.core,cds.outboxorcds.xt.[cds-mtxs@3.0.1] [Beta] Extension of aspects is now possible. For now, it needs to be enabled using
jsonc"requires": { "cds.xt.ExtensibilityService": { "allow-aspect-extension": true } }
Removed
- [cds-dk@9.0.1]
cds build --cleanis removed. - [cds-dk@9.0.1]
cds buildno longer supports configuration withcds.dataandcds.servicein package.json. - [cds-dk@9.0.1]
cds watchstill allows options--includeand--exclude, but CDS configuration is ignored. - [cds-dk@9.0.1]
cds deploy --to hana --store-credentialsis removed. - [eslint-plugin-cds@4.0.2] Removed support for ESLint8
- [vscode-cds@9.0.1] User setting
cds.useOldParser - [vscode-cds@9.0.1] Official support for CDS < 8 and CDS compiler < 5 (a fallback to the latest compiler is done)
- [cds-compiler@6.0.8] compiler:
- The Antlr-based parser is removed.
- v5 deprecated flags are removed.
- Option
compositionIncludesis removed, as its default istrue; instead, a deprecated flag was added.
- [cds-compiler@6.0.8] to.hdbcds: The HDBCDS backend is deprecated and can no longer be invoked.
- [cds@9.0.0] Legacy OData adapter which was enabled with compat
cds.features.odata_new_adapter=false - [cds@9.0.0] Legacy Database services which were enabled with
@sap/cds-hanaorsqlite3 - [cds@9.0.0]
@cds.default.orderand@odata.default.orderfor implicit sorting - [cds@9.0.0]
cds.auth: Support for@sap/xssec^3(incl. compatibility mode of@sap/xssec^4) - [cds@9.0.0] Undocumented compat flag
cds.features.odata_v2_result_conversion - [cds@9.0.0] Undocumented util
cds.utils.pool - [cds@9.0.0] Undocumented method
INSERT.as. UseINSERT.frominstead to insert subSELECTqueries. - [cds@9.0.0] Undocumented method
req._queryOptionsofcds.Requestbelonging to the new OData adapter - [cds@9.0.0] Undocumented method
_resetof thecds.qlAPI - [cds@9.0.0] Undocumented property
cmdof thecds.qlQueryclass. Please use methodkindinstead. - [cds@9.0.0] Undocumented method
protocol4of theProtocolclass. Please use propertydef.protocolsinstead. - [cds@9.0.0] Undocumented methods
implandwithof theApplicationServiceclass. Please useprependinstead. - [cds@9.0.0] Undocumented compat flag
cds.features.rest_error_handler - [cds@9.0.0] Deprecated compat flags
cds.features.compat_restrict_boundandcds.env.features.compat_restrict_where - [cds@9.0.0] Deprecated compat flag
cds.features.stream_compat - [cds@9.0.0] Deprecated feature flag
cds.log.kibana_custom_fields. Please usecds.log.als_custom_fieldsinstead`. - [cds@9.0.0] Deprecated compat flag
cds.features.keys_in_data_compat - [cds@9.0.0] Deprecated element-level annotation
@Search.defaultSearchElement. Please use annotation@cds.searchinstead. - [cds@9.0.0] Deprecated stripping of unnecessary topic prefix
topic:in messaging - [cds@9.0.0] Deprecated messaging
Outboxclass. Please use config orcds.outboxed(srv)to outbox your service.
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.OptionalParametersupport for bound and unbound function parameters. Supported values aretrueandfalse. - [cds.java@3.9.0] Subscription dependencies for
portalandhtml5-apps-repoare 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: DEBUGin the application.yaml. Warnings are turned on by default. - [cds.java@3.9.0]
cds-feature-auditlog-v2now ignores auditlog service bindings relevant for the XSA platform.
Changed
- [cds-dk@8.9.3]
cds add pipelinealso creates UI5 resources if required. - [cds-dk@8.9.2] The Node version in
gen/db/package.jsonfile generated bycds buildis now>=18, matching to what@sap/hdi-deployspecifies. - [cds-dk@8.9.2]
cdscommands now fail if used in combination with the upcoming@sap/cdsversion 9. - [vscode-cds@8.9.0] use new CDS parser by default
Fixed
- [cds-dk@8.9.3]
cds add workzoneuses the backend destinationsrv-apiinstead of-srv-apion Cloud Foundry. - [cds-dk@8.9.3]
cds inituses latest Maven Java archetype version 3.9.1 for creating Java projects. - [cds-dk@8.9.2]
cds bindgives better error messages if the Cloud Foundry org or space are not found. - [cds-dk@8.9.2]
cds add html5-repoworks in combination with multitenancy when no app router or Work Zone is set up. - [cds-dk@8.9.1]
cds buildrestores compatibility with@sap/cds7, no more crashing there withTypeError: Cannot read properties of undefined (reading 'enabled'). - [cds-dk@8.9.1]
cds add containerizeworks if run beforecds add helm. - [cds-dk@8.9.1]
cds add httpno longer writes headers starting with a placeholder (IntelliJ compatibility) - [cds-dk@8.9.1]
cds init --forceoverwrites 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
allowMixinInProjectionExtensionwhich 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
@opentypes. - [cds4j@3.9.1] Fix queries with filtered path over runtime views
- [cds@8.9.2]
forUpdatewill not considerwaitifignoreLockedis set - [cds@8.9.2] Do not crash in case of custom
DraftAdministrativeDatatable - [cds@8.9.1]
cds.envmerging fornullvalues - [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-messaginginbound handlers - [cds@8.9.1] Compat flag
cds.features.draft_compatfor 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 importnow adds Cloud SDK dependencies to package.json if an OData service is imported.[cds-dk@8.9.0]
cds deploy --to hana --on k8sis now supported.[cds-dk@8.9.0]
cds upautomates freezing dependencies, building, and deploying your application.[cds-dk@8.9.0]
cds pullincludes existing extensions if the server is configured accordingly.[cds-dk@8.8.0]
cds add xsuaalets you pass a--planoption, e.g. forcds add xsuaa --plan broker.[cds-dk@8.8.0]
cds add workzoneandcds add workzone-standardsupport for Kyma.[cds-dk@8.8.0]
cds add typernow adds abefore:cds-watchscript to run cds-typer before startingcds watch.[cds-dk@8.8.0]
cds watchsupports abefore:cds-watchnpm script in yourpackage.json, executed once before the initialcds watchstartup.[cds-compiler@5.9.0] compiler:
- Generated entities for compositions of named aspects now have an
includeon 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
renderCdlDefinitionNestingandrenderCdlCommonNamespace. - 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
namespaceis 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 FROMor an equivalent expression. - [cds-compiler@5.9.0] Using option
booleanEquality, operator!=is rendered asIS DISTINCT FROMor 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
CqnStatementor it's specific sub-interfaces andCqnStructuredTypeRef.[cds.java@3.8.0] The
buildgoal of thecds-maven-pluginnow supports execution from project root folder. It also takes a new propertygoalsto 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-nameto 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.draftMessagesis set totrue.[cds.java@3.8.0] When using State Messages annotation-based validations such as
@mandatoryor@assert...are now executed on draft entities.[cds.java@3.8.0] Event Handler methods now support
CqnStatementor its subtypes andCqnStructuredTypeRefas arguments.[cds.java@3.8.0] Bound and unbound function parameters now support
@Core.OptionalParameterannotations.[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.Textannotation 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/allMatchin 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.bindto reference foreign keys[cds@8.9.0] Support for plugins in ESM format
[cds@8.9.0] Dependency to
@eslint/jsso thateslintworks w/o the application having to install it.[cds@8.9.0] IAS: In the
client_credentialsflow, the array ofias_apis(if present) is added to the technical user's roles[cds@8.9.0] Opt-in feature
cds.features.consistent_paramsforreq.paramsalways 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.qlmethodSELECT.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.databasein 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.testnow uses package@cap-js/cds-testif 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.LargeBinaryannotated with@Core.MediaTypemay send stream responses. - REST: Operations may send stream responses.
- Annotations
@Core.MediaType,@Core.ContentDisposition.Filenameand@Core.ContentDisposition.Typeon 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.pullnow returns csn including existing extensions ifcheck-existing-extensionsis configured (see below)[cds-mtxs@2.7.0] Beta: Event
cds.xt.ExtensibilityService.activatedis sent if an asynchronous call ofcds.xt.ExtensibilityService.activateis finished.[cds-mtxs@2.6.0]
html5-runtime: trueandhtml5-host: trueare shortcuts incds.requiresto specify SAP BTP HTML5 Repository service SaaS dependencies.[cds-mtxs@2.6.0]
ExtensibilityServicenow supports draft extensions, allowing to separately validate and activate extensions.[cds-mtxs@2.6.0]
ExtensibilityService.activatenow allows to pass HDI deployment parameters.[cds-mtxs@2.6.0]
cds.env.odata.containmentis respected when compiling to EDMX.
Changed
- [cds-dk@8.9.0]
cds buildlogging is simplified. - [cds-dk@8.9.0]
cds add html5-repoignores folders inapp/starting with. - [cds-dk@8.8.0] Running
cds deployin 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 workzoneadds a transpilation task for UI5 deployment descriptors in TypeScript projects. - [cds-dk@8.8.0]
cds add workzonedoes not use the deprecatedwebide-extension-task-updateManifestJsontask any more. - [eslint-plugin-cds@3.2.0] Rules
@sap/cds/sql-null-comparisonand@sap/cds/no-java-keywordsare moved from theexperimentalrule set toall. - [vscode-cds@8.8.1] using native Node.js
fetchfor 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-modulesoption. - [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_scopeto 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 telemetryis order-independent with othercds addcommands for Java. - [cds-dk@8.9.0] Build task
mtx-extensionnow 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 inituses latest Maven Java archetype version 3.8.0 for creating Java projects. - [cds-dk@8.8.1]
cds init --add lintwrites complete eslint.config.mjs. - [cds-dk@8.8.1]
cds importno longer fails with anEXDEVerror indockercontainers. - [cds-dk@8.8.1]
cds importjson schema now contains correct references. - [cds-dk@8.8.0]
cds add approuterdoesn't create entries forappandappconfiglocal directories any more. - [cds-dk@8.8.0]
cds add telemetryfor Java doesn't erroneously addcdsconfiguration ordependenciesto thepackage.json. - [cds-dk@8.8.0]
cds add sampleadds the workzone-specific configuration ifcds.requires.workzoneistrue. - [cds-dk@8.8.0]
cds compile -ouses the correct file suffix if explicitly specified in the file name. - [cds-dk@8.8.0]
cds bindcaches the promise of itscf -vcall 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 workzonehas improved support for multitenancy. - [eslint-plugin-cds@3.2.0] Rules
@sap/cds/sql-null-comparisonwill not warn about!= null, as it may be supported by future CDS compiler versions. - [eslint-plugin-cds@3.2.0] Some rules had
docsmeta 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/cdsasdevDependencyorpeerDependency - [vscode-cds@8.8.2] Welcome Page was shown after each restart
- [vscode-cds@8.8.1] use lowercase
cdsjsonschemaas protocol for cds schema urls. - [vscode-cds@8.8.1] user setting
cds.useOldParserdid not work correctly - [vscode-cds@8.8.0] removed rendering issues in
CAP Release Notesview - [vscode-cds@8.8.0]
Generate data modelnow also works forschema.cdsfiles in subfolders. - [cds-compiler@5.9.0] to.odata: Annotation expressions using
LabeledElementwere 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
Selectstatement. - [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
NullPointerExceptionwhile 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.envshortcuts 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.validatecrashed with unknown target - [cds@8.9.0]
cds.parse.exprparsed SAP HANA native functions likecurrent_utctimestamperroneously asref - [cds@8.9.0]
nullvalues in logger ifcustom_fieldsare configured - [cds@8.9.0] User-provided instances of SAP Cloud Logging should have either tag
cloud-loggingorCloud Logging - [cds@8.9.0] The
@odata.contextfor entities and views with parameters should refer to the EntityType with/Setat 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/messageswere occasionally missing - [cds@8.8.1] Requests violating
cds.odata.max_batch_header_sizeare terminated with431 Request Header Fields Too Largeinstead 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
POSTwith payload that contains array of entity representation - [cds@8.8.1]
cds.validatefilters 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
$batchsub requests - [cds@8.8.1] Instance-based authorization for modeling like
$user.<property> is null - [cds@8.8.1] Respect
cds.odata.contextAbsoluteUrlin new OData adapter - [cds@8.8.1]
cds.odata.context_with_columnsalso 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.connectcalled 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
chaiandchai-as-promisedon Node >= 23 with the built-in test runner andmocha. Thejestrunner 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/upgradefor 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.SaasProvisioningServiceis still served for Java projects withsubscription-managerprofile.
Removed
- [cds-dk@8.9.0] Removed
before:cds-watchscript.
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_SYMBin all (sub) expressions and conditions. It can be validated if the compiler can deduce itsenumtype from its use context:- when the enum symbol is used as
defaultvalue,selectcolumn expression, argument when navigating along an association to an entity with a parameter, or argument of acastfunction call, or - when the enum symbol is compared to a reference or
castfunction call; we consider the operators=,<>,!=,in,not inand also analyze enum symbols aswhenoperands if thecaseoperand 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 thethens and/or theelse. - An enum symbol can be validated if the deduced type is a direct or indirect
enumtype, or an managed association with one foreign key having anenumtype. - 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
precisionofcds.Decimaland allow extendingscaleifprecisionis increased by at least the same amount. - [cds-compiler@5.8.0] to.edm(x):
@assert.rangenow 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
csnInteropEffectiveis 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 -ofixes the output file name in-o <service>.json. - [cds-dk@8.7.3]
cds lintwon't stumble over scalar config objects anymore. - [cds-dk@8.7.3]
cds inituses latest Maven Java archetype version 3.7.2 for creating Java projects. - [cds-dk@8.7.3]
cds deploy --to hana --drydoesn't exit with aTypeErrorif there are no models. - [cds-dk@8.7.3]
cds add iasfixes a few scenarios in combination with multitenancy. - [cds-dk@8.7.2]
cds compile -owith a file name such ascds c srv/cat-service.cds -o srv/cat-service.json. - [cds-dk@8.7.2]
cds compilewithout-odoesn't print the file name header for single services any more. - [cds-dk@8.7.2]
cds add workzonein combination with multitenancy doesn't throw an error any more. - [cds-dk@8.7.2]
cds import --from rfcstores the input file again insrv/external/<destination>/...instead ofsrv/external/.... - [cds-dk@8.7.2]
cds import --nameno longer crashes with aTypeError. - [cds-dk@8.7.2]
cds import --out <filename>no longer crashes with aError: EEXIST. - [cds-dk@8.7.2]
BuildErrorno longer cuts off its stack. - [cds-dk@8.7.2]
cds bind -adoesn't concurrently try to check the Cloud Foundry version or OAuth token. - [cds-dk@8.7.2]
cds importnow resolves target of association/composition correctly for multiple schema files. - [cds-dk@8.7.1]
cds add mtanow setsparameters.instancesexplicitly to1in Java projects, same as for Node.js projects. - [cds-dk@8.7.1]
cds add mtadoes not add thereadiness-health-check-typeandreadiness-health-check-http-endpointproperties to themta.yamlany more. - [cds-dk@8.7.1]
cds add -pcorrectly parses plugin-contributed options. - [cds-dk@8.7.1]
cds watchcorrectly escapes its default ignored directories on Windows. - [cds-dk@8.7.1]
cds compilecorrectly uses--service=allas its default. - [cds-dk@8.7.1]
cds add iascorrectly writes MTX sidecar config in combination withcds add multitenancy. - [cds-compiler@5.8.0] New CDL parser: parse all entity definitions using
projection onwithout 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
truefor=were not checked. - [cds-compiler@5.8.0] Annotation
@Core.Computedwas 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.nameonly 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-trackingwhenUpdateorUpsertstatements 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-trackingcausing 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-trackingwhenUpdateorUpsertstatements 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
Zsuffix of values ofcds.Timestampwith 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.yamlescapes strings including colons if necessary - [cds@8.7.1] Loading of CAP Plugins implemented in Typescript
- [cds@8.7.1]
Locationheader if read after write returns empty result due to missing read authentication - [cds@8.7.1] Enable accessing
req.paramswhen handling requests on parameterized views - [cds@8.7.1]
cds.connect.to(class {...})did not call theinitfunction - [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 watchsupports--excludeand--includeoptions to specify additional paths to include or exclude. Alternatively, setcds.watch.[include|exclude]in your CDS config.[cds-dk@8.7.0]
cds importnow updates configuration for Java projects (inapplication.yamletc.)[cds-dk@8.7.0]
cds import --confignow 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 debugnow supports Java applications, both local and remote.[cds-dk@8.7.0]
cds importcan 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
defaultvalue orselectcolumn 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
newParseris 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.enabledtotrue. 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.customEventsis disabled, instance based authorization can now rejectdraftEditevents with 403 instead of filtering via optioncds.security.authorization.instance-based.reject-selected-unauthorized-entityas well.[cds.java@3.7.0] Added debug logs when calculating object key for Kafka messages.
[cds.java@3.7.0] The goal
addof thecds-maven-pluginsupports 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
addof thecds-maven-pluginsupports 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.enabledtofalse.[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
$enclosedproperty 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.qlsupports 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.heartbeatAgeandcds.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 mtasets backend and MTXparameters.instancesto a default of1for improved discoverability. - [cds-dk@8.7.0]
cds add samplegenerates sample .ts files if the project is a TypeScript project - [cds-dk@8.7.0]
cds importnow 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 portalnow 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
newParserto 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 anSelectableValueinstead of aValue - [cds4j@3.7.0] In-Predicate (
Value.in) now takes aCollectioninstead 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.Floatis now correctly deprecated incds.builtin.types. - [cds@8.7.0] Input provided via protocol adapter for elements annotated with
@cds.api.ignoreare rejected. Previously, they were ignored.
Fixed
- [cds-dk@8.7.0]
cds add mtain combination withcds add iascorrectly adds all routes to the backend module. - [cds-dk@8.7.0]
cds add mtaadds the DB deployer module without prior installation of@cap-js/hana. - [cds-dk@8.7.0]
cds add mtaadds the npm-ci builder for nodejs modules to use fixed package-lock versions for dependency vendoring. - [cds-dk@8.7.0]
cds build --wswill no longer require adb/folder in the root directory of the project. - [cds-dk@8.7.0]
cds importdoesn'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
targetAspectin the OData CSN. - [cds-compiler@5.7.0] to.edm(x): In annotation translation, by default map
SemanticObjectMappingAbstracttoSemanticObjectMappingTypeto avoid regressions. - [cds-compiler@5.7.0] to.cdl: Fix quoting of identifier
manyinComposition 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.urlstarts 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
NullPointerExceptionwhen 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
ApplicationServicecalls within@Beforehandlers (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-trackingcausing 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
expressto^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-
$batchrequests!
- [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.ignorecan 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.jsonwas not loaded anymore when in production mode. - [cds@8.6.1] i18n texts like
1ortruewere returned as numbers, or booleans instead of strings - [cds@8.6.1] CSN files produced by
cds buildnow 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]
averageaggregation used with draft enabled entities - [cds-mtxs@2.5.1] Schema evolution for the
t0tenant 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.