Skip to content


    February 2023


    • [cds-dk@6.5.1] cds init uses latest Maven Java archetype version 1.31.0 for creating Java projects.


    • [cds-dk@6.5.1] cds deploy no longer fails to write to a package.json file that has no cds section

    January 2023


    • [cds-dk@6.5.0] cds run/serve/migrate --resolve-bindings now pulls required service credentials if bound via cds bind. (beta)
    • [cds-dk@6.5.0] cds add helm now supports multitenancy.
    • [cds-dk@6.5.0] cds bind now supports binding of user-provided service instances from SAP BTP’s Cloud Foundry.
    • [cds-compiler@3.6.0] API: There are new API functions for to.cdl: smartId, smartFunctionId and delimitedId.
    • [cds-compiler@3.6.0] CDL parser: when defining a parameter for entities, actions or functions, you can use a regular identifier for its name even if that is a reserved name like in.
    • [cds-compiler@3.6.0] The first parameter of a bound action or function can be typed with $self or many $self even if no type named $self exists.
    • [cds-compiler@3.6.0] If an aspect sap.common.TextsAspect exists in the sap.common context, it will be included in all .texts entities. This allows to extend .texts entities via extending the aspect. Example:
      entity E {
        key id : Integer;
        content: localized String;
      extend sap.common.TextsAspect with {
        elem: String;
      // from @sap/cds common.cds
      aspect sap.common.TextsAspect {
        key locale: String;
    • [cds-compiler@3.6.0] to.edm(x): Support explicit binding parameter <id>: [many] $self for OData V4 only. The explicit binding parameter is rendered as any other parameter and $self is replaced with the binding type but only if no $self definition exists in the model. This gives full control over the binding parameter including name, nullability, default value and annotations. The explicit binding parameter is ignored for OData V2 and has precedence over @cds.odata.bindingparameter.
    • [cds@6.5.0] New aspect sap.common.TextsAspect in common.cds
    • [cds@6.5.0] New syntax for collection bound entities
    • [cds-mtxs@1.5.0] The built-in Service Manager client now caches binding information in-memory.
    • [cds-mtxs@1.5.0] The optimise_file_upload HDI deployment option is now supported.
    • [cds-mtxs@1.5.0] MTX migration script now allows to split extensions based on extension file names using regular expressions.
    • [cds-mtxs@1.5.0] Now, provisioning supports SaaS applications using extensibility in combination with migration tables. Before, provisioning failed with a HDI deployment error. Note: Extending migration table artifacts is not supported.
    • [vscode-cds@6.5.0] Experimental user setting cds.typeGenerator.enabled to trigger a globally installed cds type generator when saving a model file.
    • [cds4j@1.35.0] New Update.entry(Map<String, ?> entry) method to improve the API for single updates with key values in update data.
    • [cds4j@1.35.0] Added generation of builder interfaces for CDS defined events.
    • [cds4j@1.35.0] New syntax defining the binding parameter for bound functions and actions is supported.
    • [cds4j@1.35.0] Added top and skip methods to Modifier to modify pagination settings
    • [cds4j@1.35.0] New interfaces CdsBoundAction and CdsBoundFunction represent bound functions and actions of an entity.


    • [cds-mtxs@1.4.4] cds.xt.DeploymentService configuration has been flattened. Instead of
      "hdi": {
        "create": {
          "provisioning_parameters": {
            "database_id": "<ID>"
          "binding_parameters": {
            "key": "value"

      you can now also write

      "hdi": {
        "create": {
          "database_id": "<ID>"
        "bind": {
          "key": "value"

      The old configuration is still supported, but you’re advised to migrate to the new configuration for improved readability.

    • [cds-mtxs@1.4.4] /-/cds/jobs/pollJob now also returns a tenants field, so tenant-specific tasks don’t have to be polled individually. An example response format looks like this:
        "status": "FAILED",
        "op": "upgrade",
        "tenants": {
            "non-existing-tenant": {
               "status": "FAILED",
               "error": "Tenant 'non-existing-tenant' does not exist"
            "existing-tenant": {
               "status": "FINISHED"
    • [cds-dk@6.5.0] cds push now runs a build of the extension project to update the pushed extension archive (unless custom archive given).
    • [cds-dk@6.5.0] cds init and cds bind no longer use a spinner when performing long running operations.
    • [eslint-plugin-cds@2.6.1] Fixed rule name in ESLint config:all to @sap/cds/start-elements-lowercase.
    • [eslint-plugin-cds@2.6.1] Allow expensive rules to be reported when running from ESLint Cli.
    • [eslint-plugin-cds@2.6.1] In auth-valid-restrict-grant, only suggest closely related user roles.
    • [eslint-plugin-cds@2.6.1] In auth-valid-restrict-to, only suggest * if other entries apart from * exist.
    • [cds-compiler@3.6.0] Many messages concerning the CDL and CSN syntax are improved: affects message ids (syntax-…), message texts and the error locations.
    • [cds-compiler@3.6.0] Duplicate doc-comments are now errors, similar to duplicate annotations.
    • [cds-compiler@3.6.0] Update OData vocabularies ‘Aggregation’, ‘Analytics’, ‘Capabilities’,’Common’, ‘ODM’, ‘Offline’, ‘PDF’, ‘Session’, ‘UI’.
    • [] The personal data annotation @PersonalData.EntitySemantics: 'Other' now has the same effect on entities like @PersonalData.EntitySemantics: 'DataSubjectDetails.
    • [] Renamed the annotation to @kafka.topic.
    • [cds@6.5.0] Successive calls to SELECT.where() wraps existing clause in brackets if it contains or. E.g.
       SELECT.from `X` .where `x` .or `y` .where `z`
       //> SELECT from X where (x or y) and z`
    • [cds@6.5.0] cds build for SAP HANA now adds an engines.node version to the generated db/package.json. This will help in the future when runtime environments change their default to some version higher than the one supported by @sap/hdi-deploy.
    • [cds@6.5.0] cds build checks the consistency of built-in models for java projects. An error is logged if some model files could not successfully be resolved indicating that a required npm module might be missing.
    • [cds@6.5.0] Status code of draft actions are set in respective handler instead of protocol adapter
    • [cds@6.5.0] cds deploy --dry no longer loads the sqlite3 module by mistake. This fixes a regression when building Java projects. As a side effect a file with the name undefined was created in the project root folder.
    • [cds@6.5.0] Internal representation of pseudo roles internal-user and system-user
    • [vscode-cds@6.5.0] CAP notebooks: code cells (terminal and shell) have now their own working directory
    • [vscode-cds@6.5.0] minimum VSCode version is now 1.73.0
    • [cds4j@1.35.0] In SQL statements generated by the runtime CDS identifiers are now always in db-specific casing and delimited.
    • [cds4j@1.35.0] Moved generation of CDS_NAME constant to builder interfaces of CDS events.
    • [cds4j@1.35.0] Annotate generated accessor and builder interfaces with @Generated from the package javax.annotation.processing only if compiled with Java > 8.
    • [cds4j@1.35.0] Deprecate interface CqnModifier, instead use Modifier
    • [cap-js/graphql@0.2.0] Register aliasFieldResolver during schema generation instead of passing it to the GraphQL server
    • [cap-js/graphql@0.2.0] The filters contains, startswith, and endswith now generate CQN function calls instead of generating like expressions directly


    • [cds-compiler@3.5.4] Allow window functions also with a deprecated flag being set.
    • [cds-compiler@3.5.4] to.edm(x): Fix program abort due to malformed error location in EDM annotation preprocessing.
    • [cds-compiler@3.5.4] to.sql/hdi/hdbcds: The option pre2134ReferentialConstraintNames can be used to omit the referential constraint identifier prefix “c__”.
    • [cds-mtxs@1.4.4] cds.xt.SaasProvisioningService: * is not allowed as a tenant name any more.
    • [cds-mtxs@1.4.4] Namespace check for new entities in extensions now also covers new root entities.
    • [cds-mtxs@1.4.4] Asynchronous operations now correctly send the callbacks defined via status_callback or mtx_status_callback.
    • [cds-odata-v2-adapter-proxy@1.9.17] Fix special replacement pattern in $filter conversion
    • [cds-dk@6.5.0] cds import now generates flattened value for @Common.FieldControl annotation in the CSN for OData V4 files.
    • [cds-dk@6.5.0] cds import now treats the CollectionKind property attribute in OData V2 similar to Collection(<data_type>) in OData V4.
    • [cds-compiler@3.6.0] If an entity with parameters is auto-exposed, the generated projection now has the same formal parameters and its query forwards these parameters to the origin entity.
    • [cds-compiler@3.6.0] to.hdbcds: Aliases for foreign keys were not quoted if necessary.
    • [cds-compiler@3.6.0] to.cdl:
      • Aliases for expand and foreign keys were not quoted if necessary.
      • Query functions that are CDL keywords were not properly quoted.
      • CSN doc properties containing */ resulted in invalid CDL. To avoid compilation issues, */ is escaped as *\/.
    • [cds-compiler@3.6.0] to.edm(x): Respect record type hint $Type in EDM JSON as a fully qualified @type URI property.
    • [cds-compiler@2.15.10] If an entity with parameters is auto-exposed, the generated projection now has the same formal parameters and its query forwards these parameters to the origin entity.
    • [cds-compiler@2.15.10] to.edm(x): Respect record type hint $Type in EDM JSON as a fully qualified @type URI property.
    • [] Fixed a bug in the cds-maven-plugin which caused the goal generate to fail when triggered in IDEs.
    • [] Fixed a bug which caused events to be silently dropped by the logical layer if qualified names of CDS-defined events didn’t match, even when using @topic.
    • [cds4j@1.34.1] Move CDS_NAME constant to generated builder interfaces of CDS events
    • [cds4j@1.34.1] Fixed hashCode of Row
    • [cds4j@1.34.1] Fixed structure of empty results for queries w/ toOne expands that only have nested toMany expands
    • [cds4j@1.34.1] Don’t allow to connect a conjunction/disjunction to itself (fixed stack overflow)
    • [cds4j@1.34.1] Fixed search on entities w/ virtual String elements
    • [cds@6.5.0] Resolve i18n folders from the root directory
    • [cds@6.5.0] Types for cds.test
    • [cds@6.5.0] Types for srv.send
    • [cds@6.5.0] Optimized Search: Search queries for localized entities will now use default values, if no localized data is found in the corresponding localized tables on SAP HANA. Corrected aliasing by search queries with navigation.
    • [cds@6.5.0] Resolution of type of references during minify in bootstrap
    • [cds@6.5.0] Generation of odata-v2 URL in case of select=* in urlify()
    • [cds@6.5.0] Build resets changed cds.env and cds.root when finished
    • [cds@6.5.0] Expand error when using infix filters
    • [cds@6.5.0] CDS configuration schema validation for @sap/cds-mtxs
    • [cds@6.5.0] Typings for QL API
    • [cds@6.5.0] Return types of asynchronous service API
    • [cds-mtxs@1.5.0] MTX migration script now detects enabled multitenancy also for a sidecar project setup.
    • [cds-mtxs@1.5.0] Improved robustness for MTX migration script, e. g. with inconsistent old metadata tenants.
    • [cds-odata-v2-adapter-proxy@1.9.18] Unicode encode messages header
    • [cds-dk@6.5.0] cds import now generates flattened value for @Common.FieldControl annotation in the CSN for OData V4 files.
    • [cds-dk@6.5.0] cds import now treates CollectionKind property attribute in OData V2 similar to Collection(<data_type>) in OData V4.
    • [vscode-cds@6.5.0] workspace/symbols request didn’t include definitions of a file after it was closed.
    • [cds4j@1.35.0] temporal data: truncate validFrom and validTo to precision supported by DB
    • [cap-js/graphql@0.2.0] Schema generation crash that occurred if an entity property is named localized
    • [cap-js/graphql@0.2.0] The field totalCount could not be queried on its own


    • [vscode-cds@6.5.0] @cds.doc annotation, which was marked as deprecated for a long time, is no longer considered in requests like document/hover. Please use doc comments (/** ... */) instead. The quick fix to migrate from @cds.doc to doc comments is still in place, but is likely to be removed in near future.

    Changelog 2022

    Changelog 2021

    Changelog 2020

    Changelog 2019

    Changelog 2018