

# Changelog 2024

:::info Open Source Changelogs
For repositories and plugins that are open source, please check out the respective changelogs in the [cap-js organization](https://github.com/cap-js) and the [CAP Community](https://github.com/cap-js-community).
:::

<style scoped >
  em { font-style:normal; font-weight: 500 }
  em:after { content:" —" }
  li { margin: 5px 0; }
</style>

## December 2024

### Added {#dec-24-added}

- _[cds-dk@8.6.0]_ `cds repl` got new option `--run` to run a server; also available through `.run` command within the REPL.
- _[cds-dk@8.6.0]_ `cds repl` got new option `--use` to make the features of a `cds` available as globals.
- _[cds-dk@8.6.0]_ `cds repl` got new builtin `.inspect` command to inspect object with configurable depth, e.g. `.inspect cds .depth=1`.
- _[cds-dk@8.6.0]_ `cds watch` now detects a TypeScript project and tries to run with `tsx` if this is installed locally or globally. Otherwise a warning message is emitted.  `CDS_TYPESCRIPT=false` can be used to opt out of this behavior.
- _[cds-dk@8.6.0]_ `cds import --group` to allow RFC importer to organize imported modules under a logical name.
- _[cds-dk@8.6.0]_ `cds init/add` for Java projects automatically create a `package-lock.json`.
- _[cds-dk@8.6.0]_ `cds add ias` adds IAS configuration (beta).
- _[cds-dk@8.6.0]_ `cds add ams` adds AMS configuration (beta).
- _[cds-compiler@5.6.0]_ Allow to refer to draft state element `HasActiveEntity` and `HasDraftEntity` via variable `$draft` in annotation path expressions.
- _[cds-compiler@5.6.0]_ for.odata|to.edm(x): Introduce annotating the generated foreign keys
- _[cds.java@3.6.0]_ Feature `cds-feature-ord` now also exposes EDMx metadata documents which are linked from ORD documents with the same authentication scheme as the ORD document.
- _[cds.java@3.6.0]_ The goal `generate` of the `cds-maven-plugin` executed with option `-Dcds.generate.feature=EVENT_HANDLERS` can be executed from project root.
- _[cds.java@3.6.0]_ Optimized HANA JDBC connection retrieval in MT applications with shared pool configured. In particular, recently used connections of the same tenant can be reused much more quickly if they are not taken by an other tenant already.
- _[cds.java@3.6.0]_ Support for Apache Kafka messaging in CAP Java application running in a DwC environment, see [util-cap-kafka](https://github.tools.sap/deploy-with-confidence/spring-utils/tree/master/util-cap-kafka) for details.
- _[cds.java@3.6.0]_ CAP integration for IAS now also supports [SAP BTP, Kyma runtime](https://discovery-center.cloud.sap/serviceCatalog/kyma-runtime).
- _[cds.java@3.6.0]_ Events, for which registered handlers on Event Hub messaging services are available, will be automatically exposed as integration dependencies in the ORD document of the CAP application. For each topic one integration dependency will be created.
- _[cds4j@3.6.0]_ Support match predicates `anyMatch`/`allMatch` in infix filters of element refs on the select list.
- _[cds@8.6.0]_ `SELECT.from` now supports full-query tagged template literals, e.g.: ``` SELECT.from`Books where ID=${201}` ```
- _[cds@8.6.0]_ `cds.ql` enhanced by functions to facilitate construction of CQN objects.
- _[cds@8.6.0]_ `cds.ql` became a function to turn CQN objects, CQL strings, or tagged template literals into instances of the respective `cds.ql` class.
- _[cds@8.6.0]_ New `cds` events to allow multitenant plugins: `compile.for.runtime`, `compile.to.dbx`, `compile.to.edmx`.
- _[cds@8.6.0]_ `cds.env` now supports `.cdsrc.js` and `.cdsrc.yaml` files, also in plugins.
- _[cds@8.6.0]_ `cds.env` now supports profile-specific `.env` files, e.g. `.hybrid.env` or `.attic.env`.
- _[cds@8.6.0]_ Experimental OData parsing for hierarchy requests (`descendants`, `ancestors`, `TopLevels`)
- _[cds@8.6.0]_ The new OData adapter now supports `cds.odata.containment`. Contained entities can only be accessed via their parents and do not show up as EntitySets in $metadata and the service document.

### Changed {#dec-24-changed}

- _[cds-dk@8.6.0]_ Running `cds init` in the user's home dir w/o a project name now fails. This is to prevent creation of configuration that would act as global (user) configuration leading to follow-up problems with later projects.
- _[vscode-cds@8.5.1]_ enabling `newParser` via `cds.env` will no longer interfere with CDS editor
- _[cds-compiler@5.6.0]_ Update OData vocabularies: 'Common', 'EntityRelationship', 'UI'
- _[cds.java@3.6.0]_ cds-feature-kafka now uses mTLS for authentication. **OAuth authentication is deprecated by Kafka on BTP and will be removed starting February 2025.**
- _[cds.java@3.6.0]_ The goal `install-cdsdk` of the `cds-maven-plugin` has been deprecated.
- _[cds.java@3.6.0]_ The `cds-services-archetype` generates new CAP Java projects with a `pacakge.json` and `package-lock.json` containing a devDependency to `@sap/cds-dk`. The `srv/pom.xml` is generated with the execution of `npm ci` instead of using goal `install-cdsdk`.
- _[cds.java@2.10.6]_ cds-feature-kafka now uses mTLS for authentication. **OAuth authentication is deprecated by Kafka on BTP and will be removed starting February 2025.**
- _[cds@8.6.0]_ `CDL`, `CQL`, and `CXL` globals are deprecated => use respective functions from `cds.ql` instead.
- _[cds@8.6.0]_ `CREATE`, and `DROP` globals are deprecated => use respective functions from `cds.ql` instead.
- _[cds@8.6.0]_ Zulu time zone information is stripped from `cds.DateTime` properties when querying Odata V2 remote services
- _[cds@8.6.0]_ Processing of `@restrict.where` was aligned with CAP Java:
  - Instance-based authorization on app service calls does not consider custom `WHERE` clauses of `UPDATE`/`DELETE` queries
    - Until `@sap/cds^9`, this change can be deactivated via `cds.env.features.compat_restrict_where = true`
  - Simple static clauses (e.g., `$user.level > 5`) are no longer evaluated by the server but added to the respective SQL regardless. As a result, requests may receive a response of `2xx` with an empty body instead of a `403`.
    - Until `@sap/cds^9`, this change can be deactivated via `cds.env.features.compat_static_auth = true`
  - Read restrictions on the entity are no longer taken into consideration when evaluating restrictions on bound actions/ functions
    - Until `@sap/cds^9`, this change can be deactivated via `cds.env.features.compat_restrict_bound = true`

### Fixed {#dec-24-fixed}

- _[cds-dk@8.6.1]_ `cds add ams` now creates correct dependencies for Java projects.
- _[cds-dk@8.6.0]_ `cds add html5-repo` adds an `index.html` as `welcomePage` to the `xs-app.json`, if available.
- _[cds-dk@8.6.0]_ `cds bind` fixes the recursive call to `mergeCredentials`.
- _[cds-dk@8.6.0]_ `cds add` won't add a duplicated `SUBSCRIPTION_URL` if it doesn't match the template specification.
- _[cds-dk@8.6.0]_ `cds watch` gives a better error message for TypeScript projects started with if `tsx` isn't installed.
- _[cds-dk@8.6.0]_ `cds build` no longer throws an undefined error when processing build plugin messages.
- _[cds-dk@8.5.1]_ `cds build` now logs existing plugin build messages if a BuildError is thrown.
- _[cds-compiler@5.5.2]_ to.hdi|sql|edm[x]: Correctly handle `cds.Map`, ensure that it does not have `.elements` yet.
- _[cds.java@3.6.0]_ Fixed an issue in `add` goal of the `cds-maven-plugin` causing a wrong yaml syntax of mock user roles in `application.yaml`.
- _[cds.java@3.6.0]_ Fixed a bug causing URL encoded client certificates being incorrectly rejected on Kyma when calling endpoints secured with mTLS (e.g. SMS and UCL).
- _[cds.java@3.6.0]_ Fixed a bug causing the close of DB sessions when the outbox tries to process an outbox entry that shall be emitted using a Kafka messaging service.
- _[cds.java@3.6.0]_ Fixed a bug that bound service manager instances where no plan could be determined on K8S are ignored.
- _[cds.java@2.10.6]_ Values for key elements annotated with `@Core.Immutable` are no longer removed from the payload of updates.
- _[cds.java@2.10.6]_ For ST applications, the request user name is written to Auditlog V2 instead of the technical provider user.
- _[cds4j@3.6.1]_ Fixed a bug in handling case of `node_id` and `parent_id` for HANA hierarchies
- _[cds4j@3.6.0]_ Fixed a bug, causing duplicate elements `node_id` and `parent_id` on the select list of a source of a hierarchy
- _[cds4j@3.6.0]_ Fixed a bug, causing a wrong value for `IsActiveEntity` in a nested select from inactive drafts
- _[cds4j@3.6.0]_ Reject write operations through projections using paths or infix filters
- _[cds4j@3.6.0]_ Don't generate UUIDs for association key elements on insert
- _[cds4j@2.10.6]_ Reject write operations through projections using paths or infix filters
- _[cds4j@2.10.6]_ Don't generate UUIDs for association key elements on insert
- _[cds@8.6.0]_ ETag calculation if column was provided as Javascript Date
- _[cds@8.6.0]_ Forwarding of `/$count` queries while mocking the external service
- _[cds@8.6.0]_ Resolving of implicit function parameters (e.g `GET .../test.foo?x='bar'`)
- _[cds@8.6.0]_ Arrayed elements are not part of response unless explicitly selected with `$select`
- _[cds@8.6.0]_ In case of nonexistent user attributes (`$user.X`), only the subclause gets substituted with `false`
- _[cds@8.6.0]_ `@odata.context` in new OData adapter:
  - Fixed crash for requests to actions/functions when `cds.env.odata.context_with_columns` is enabled
  - Aggregation functions with `$apply` are now returned when `cds.env.odata.context_with_columns` is enabled
  - `@odata.context` is now the first property in the response values of `concat` requests
  - Binary key values are now properly encoded and formatted
  - Fixed keys appearing as `(undefined)` for updates via navigation to-one
  - Fixed key value pairs being returned as `undefined=undefined` for property access of aspects
  - Backlinks no longer appear as keys for property access of aspects
  - Non-anonymous structured types are now prefixed with the service name
  - Structured types no longer end with `/$entity`
- _[cds@8.5.1]_ `cds deploy --dry --model-only` no longer tries to load a SQLite database
- _[cds@8.5.1]_ Requests with HTTP methods other than `POST` to the `/$batch` endpoint are now rejected when using the new OData adapter
- _[cds-mtxs@2.4.2]_ The annotation check of the extension linter can now properly handle extensions like `extend service CatalogService with @cds.query.limit;`
- _[cds-mtxs@2.4.1]_ `cds-mtx upgrade "*"` correctly parses metadata supplied by the `--body` parameter.

### Removed {#dec-24-removed}

- _[vscode-cds@8.5.1]_ obsolete support for CAP Notebook urls

## November 2024

### Added {#nov-24-added}

- _[cds-dk@8.5.0]_ `cds debug` lets you debug Node.js applications running locally or in Cloud Foundry.
- _[cds-dk@8.5.0]_ `cds watch --inspect` and `cds watch --inspect-brk` activate the debugger in the same way as the standard Node.js CLI options, i.e. they accept a `host:port` combination and `0` as values.
- _[cds-dk@8.5.0]_ The existing `cds watch --debug` is now an alias to `cds watch --inspect`.
- _[cds-dk@8.5.0]_ `cds add cloud-logging` adds cloud-logging as an alternative for application logging in Kyma.
- _[cds-dk@8.5.0]_ `cds add cloud-logging --with-telemetry` or `cds add telemetry` adds cloud-logging as well as support for `cap-js/telemetry` plugin in Kyma.
- _[cds-dk@8.5.0]_ `cds add handler` now also works for Node.js projects. It creates an implementation file for each service with event handlers for all entities and actions.
- _[cds-dk@8.5.0]_ `cds add esm` creates ESM-compatible Node.js projects. Sample code added by `add sample` and `add handler` will respect this setting if added afterwards. Existing code will not be adjusted by `cds add esm`, though.
- _[cds-dk@8.4.1]_ `cds deploy --no-build` lets you skip the implicit `cds build`.
- _[cds-dk@8.4.1]_ `cds add data/http` supports new type `cds.Map`.
- _[vscode-cds@8.4.3]_ refactoring `using` statements when renaming/deleting files or folders now considers ignore files (.cdsignore or .gitignore) and will not refactor ignored files
- _[vscode-cds@8.4.2]_ user setting to disable refactoring support when renaming/deleting CDS files (`cds.refactoring.files.rename.enabled` and `cds.refactoring.files.delete.enabled`)
- _[vscode-cds@8.4.0]_ Rename or move of CDS files and folders will update all `using` statements to the renamed file
- _[vscode-cds@8.4.0]_ Deletion of CDS files or folders will show all `using` statements to the renamed file with possibility to remove those.
  Note: The referencing files will likely have compilation errors afterward.
- _[vscode-cds@8.4.0]_ Telemetry reporting in SAP Business Application Studio
- _[cds-compiler@5.5.0]_ CDL parser: when the new experimental option `newParser` is used, the compiler
  uses a CDL parser with a significantly smaller footprint (among other things).
- _[cds-compiler@5.5.0]_ to.sql|hdi.migration: For SAP HANA, render `ALTER` statements as one big statement to improve performance.
- _[cds-compiler@5.5.0]_ to.sql.migration: Give more helpful comments when using option `script`.
- _[cds.java@3.5.0]_ Added feature `cds-feature-ucl` which allows CAP applications to write custom event handlers for Unified Customer Landscape´s (UCL) SPII Tenant Mapping API.
- _[cds.java@3.5.0]_ Added feature `cds-feature-ord` which allows CAP applications to serve Open Resource Discovery (ORD) documents.
- _[cds.java@3.5.0]_ Added the option to validate semi-open intervals with `@assert.range`.
- _[cds.java@3.5.0]_ Instance based authorization can now reject WRITE/DELETE/custom events with 403 instead of filtering via option `cds.security.authorization.instance-based.reject-selected-unauthorized-entity`
- _[cds4j@3.5.0]_ Codegen: added an option to improve naming for CDS entities with upper case characters containing slashes.
- _[cds4j@3.5.0]_ Support `Select.from(CqnTableFunction)` to use `HANA.hierarchy` as source of a query
- _[cds4j@3.5.0]_ Automatically rename node_id/parent_id based on the @Aggregation.RecursiveHierarchy annotation
- _[cds4j@3.5.0]_ Support `CqnAnalyzer.analyze()` for `CqnFilterableStatement` as convenience
- _[cds4j@3.5.0]_ Add support for filters and orderBy of elements in cds.Map (beta)
- _[cds@8.5.0]_ New `cds.i18n` module used consistently for both, UI labels and runtime messages.
- _[cds@8.5.0]_ Enhanced `cds.validate` to support open intervals for: `@assert.range:[(0),(Infinity)]` -> `0 < x < ∞`
- _[cds@8.5.0]_ `package.json` validation and suggestions for messaging services.
- _[cds@8.5.0]_ `cds.log()`: Detect binding to SAP Cloud Logging via user provided service. The user provided service must have tag `cloud-logging`.
- _[cds@8.5.0]_ Support for function parameters via query component (example: `GET /foo?bar=baz` instead of `GET /foo(bar='baz')`)
- _[cds@8.5.0]_ Experimental support for programmatic draft actions `srv.new(MyEntity, data)`, `srv.cancel(MyEntity.drafts, keys)`, `srv.edit(MyEntity, data)` and `srv.save(MyEntity.drafts, keys)`
- _[cds-mtxs@2.4.0]_ Deployment logs written by HDI to `stderr` are now attached to deployment error messages.
- _[cds-mtxs@2.4.0]_ For HANA, the initial job status for asynchronous tenant upgrades is now `QUEUED`.
- _[cds-mtxs@2.4.0]_ Annotation in extensions that are blocked by default can now be allow-listed:

  ```jsonc
  "requires": {
    "cds.xt.ExtensibilityService": {
        "extension-allowlist": [
          {
            "for": ["my.bookshop.Books"],
            "annotations": ["@mandatory", "@cds.api.ignore"]
          }
        ]
    }
  }
  ```

- _[cds-mtxs@2.3.1]_ The `X-Correlation-ID` header is set for requests to Service Manager.
- _[cds-mtxs@2.3.1]_ Extension projects can now be tested using `cds w` even if the application base model contains `@impl` annotations.

### Changed {#nov-24-changed}

- _[cds-dk@8.5.0]_  `cds import` now generates generic action/function in case of bound action/function collision and unbound function collision with @cds.validate = false.
- _[cds-dk@8.5.0]_ `cds add typescript` creates projects with `cds-tsx` to run apps instead of former `cds-ts`.
- _[cds-dk@8.5.0]_ `cds deploy` writes error output to `stderr`.
- _[cds-dk@8.5.0]_ `cds add http` now evaluates mocks users when creating `Authorization` headers
- _[cds-dk@8.4.2]_ `cds init` uses latest Maven Java archetype version 3.4.1 for creating Java projects.
- _[vscode-cds@8.4.3]_ (performance) expensive workspace scanning is only done during renaming/deleting files or folders if those contain CDS files
- _[vscode-cds@8.4.2]_ performance improved when scanning the workspace and calculating refactorings when renaming/deleting CDS files
- _[vscode-cds@8.4.0]_ Improve handling of fall back cds-lsp version 7.9.0
- _[vscode-cds@8.4.0]_ Improve dynamic schema loading for `package.json` and `cds-rc.json`
- _[vscode-cds@8.4.0]_ Improve size and start-up time by bundling
- _[cds-compiler@5.5.0]_ Update OData vocabularies: 'Common', 'PersonalData', 'UI'.
- _[cds.java@3.5.0]_ Property `cds.multiTenancy.subscriptionManager.clientCertificateHeader` has been deprecated. Use 'cds.security.authentication.clientCertificateHeader' instead.
- _[cds.java@3.5.0]_ Property `cds.multiTenancy.security.internalUserAccess.enabled` has been deprecated. Use `cds.security.internalUserAccess.enabled` instead.
- _[cds@8.5.0]_ `cds-deploy` script has a non-zero exit code on deployment failure
- _[cds@8.5.0]_ Properties of type `cds.Binary` in URLs as well as request payload are converted to `Buffer`s.
  Properties of type `cds.LargeBinary` in request payload are converted to `Readable`s.
  Previously, both were provided as Base64-encoded strings.
  This change can be deactivated via `cds.env.features.base64_binaries = true`, which is set by default for profile `attic`.

### Fixed {#nov-24-fixed}

- _[cds-dk@8.5.0]_ `cds import` throws proper error message if Annotation element doesn't have Term attribute.
- _[cds-dk@8.5.0]_ `cds add approuter` no longer enforces Node.js 22, which is not supporter by current `@sap/approuter` version 17. The previous Node.js version 20 is used again.
- _[cds-dk@8.5.0]_ `cds add -p` with custom options now works if the entry was not in the `package.json` beforehand.
- _[cds-dk@8.5.0]_ `cds add http` works for actions without parameters.
- _[cds-dk@8.5.0]_ `cds add workzone` includes the `updateManifestJson` task on initial generation.
- _[cds-dk@8.5.0]_ `cds build --ws` no longer creates migration tables in shared database or wrong workspace.
- _[cds-dk@8.4.2]_ `cds add -p/--package` correctly parse plugin-contributed options.
- _[cds-dk@8.4.2]_ `cds add side-by-side-extensibility` does not throw an error.
- _[cds-dk@8.4.2]_ fix method name in `cds bind` credential handling.
- _[cds-dk@8.4.2]_ `cds add --help` no longer has missing line breaks in help text.
- _[cds-dk@8.4.2]_ `cds` commands no longer fail with an error `cds.extend is not a function` with very old versions of `@sap/cds`.
- _[cds-dk@8.4.2]_ `cds add hana` adds the `requires.db` entry to `.cdsrc.json` for Java projects.
- _[cds-dk@8.4.2]_ `cds add data` creates decimal values with correct scale `0` if only precision is given, like in `Decimal(15)`.
- _[cds-dk@8.4.1]_ `cds compile --to <unknown>` shows a cleaner error message.
- _[cds-dk@8.4.1]_ `cds add data` handles composition of one correctly.
- _[cds-dk@8.4.1]_ `cds add http` creates payloads for unbound actions in services.
- _[cds-dk@8.4.1]_ `cds compile --to xsuaa` can now handle annotation expressions in `where` clauses.
- _[cds-dk@8.4.1]_ `cds add http` produces requests for all expected data and no longer relies on existing data on the side.
- _[cds-dk@8.4.1]_ `cds add typer` creates `tsconfig.json` that works with `cds-tsx`.
- _[vscode-cds@8.4.1]_ Deleting CDS files now also suggests to remove `using` statements without artifacts
- _[vscode-cds@8.4.0]_ Preview uses text document listener for refreshing preview file
- _[vscode-cds@8.4.0]_ highlighting of escaped identifiers and parameter lists
- _[vscode-cds@8.4.0]_ `using` path proposals could have been suggesting JS files instead of CDS files in certain cases
- _[vscode-cds@8.4.0]_ on Windows if client mixes upper- and lowercase drive letters some requests could have failed
- _[vscode-cds@8.4.0]_ CDS Typer was called when deleting a file which led to a misleading error output
- _[vscode-cds@8.4.0]_ Analysis of dependencies failed when handling non-npm `package.json` files (e.g. from `pnpm` lacking `name` property)
- _[cds-compiler@5.4.4]_ Re-allow referring to mixins (and table aliases) in added columns
- _[cds-compiler@5.4.4]_ Re-add foreign keys of named aspects to the OData CSN.
- _[cds-compiler@5.4.2]_ to.sql: For SQLite, map `cds.Map` to `JSON_TEXT` to ensure text affinity.
- _[cds.java@3.5.0]_ Fixed a bug in `cds-feature-mt`, causing data sources accidentally being initialized for service instances of `service-manager` which were meant for single tenancy use cases. Now data sources in multi-tenant environments are only created for service plan `container`.
- _[cds.java@3.5.0]_ Fixed a bug causing an `HTTP 500 Internal Server Error` (`CdsDefinitionNotFoundException`) when a CDS service which is inactive due to a feature toggle is targeted in an OData V4 request.
- _[cds.java@3.5.0]_ Fixed a bug in `cds-feature-change-tracking` causing the `StackOverflowError` exception being thrown, when change-tracking entities with references to self.
- _[cds.java@3.5.0]_ Fixed a bug in the `version` goal of the `cds-maven-plugin` printing the version information of the wrong sub-module.
- _[cds.java@3.5.0]_ Fixed a bug, causing client certificates not to be handled correctly on endpoints secured with mTLS (e.g. SMS and UCL).
- _[cds.java@3.5.0]_ Values for key elements annotated with `@Core.Immutable` are no longer removed from the payload of updates.
- _[cds.java@3.4.1]_ Fixed a bug causing an `HTTP 500 Internal Server Error` (`CdsDefinitionNotFoundException`) when a CDS service which is inactive due to a feature toggle is targeted in an OData V4 request.
- _[cds.java@3.4.1]_ Fixed a bug in `cds-feature-change-tracking` causing the `StackOverflowError` exception being thrown, when change-tracking entities with references to self.
- _[cds.java@3.4.1]_ Added filename support for annotation @Core.ContentDisposition.Type: 'inline' in cds-adapter-odata-v4. This ensures that the browser saves the content with the correct filename, if it can't be shown in browser window (e.g. zip archive).
- _[cds.java@3.4.1]_ Fixed an issue in the `cds-services-archetype` causing to create initial CAP Java projects with a reference to a snapshot version of the `@sap/cds-dk`.
- _[cds.java@2.10.5]_ Fixed a bug, causing redundant change log entries being generated for changed localized elements.
- _[cds.java@2.10.5]_ Fixed a bug, causing translated values depending on user locale to appear in values for identifiers for change log entries.
- _[cds.java@2.10.5]_ Fixed a bug, causing UI provided by `cds-feature-change-tracking` to omit text for attributes of the change tracked entities when the respective field is hidden from the UI.
- _[cds.java@2.10.5]_ Fixed a bug in `cds-feature-change-tracking` causing the `StackOverflowError` exception being thrown, when change-tracking entities with references to self.
- _[cds4j@3.5.0]_ Fix builder interface methods for structured elements by adding `@CdsName` annotations.
- _[cds4j@3.5.0]_ `@cds.java.ignore` annotations on structured elements are respected
- _[cds4j@2.10.5]_ Fixed a bug, causing database implementations to fail to load in ForkJoinPool threads
- _[cds4j@2.10.5]_ SAP HANA HEX mode: fixed fallback to non-hex SQL on "HEX enforced but cannot be selected" errors on HANA QRC 3/2024
- _[cds@8.5.0]_ `cds.validate` should not delete readonly keys from `req.data`
- _[cds@8.5.0]_ `cds.validate` should not reject imported associations
- _[cds@8.5.0]_ Readonly fields must not be set when creating draft entities
- _[cds@8.5.0]_ Validation of mandatory properties caused streams to be rejected for new OData adapter
- _[cds@8.5.0]_ `cds.log` with null parameters and JSON format
- _[cds@8.5.0]_ `cds.compile.to.sql` proper replacement for sqlite session variables in java projects
- _[cds@8.5.0]_ `cds.compile.to.serviceinfo` ignores only the `endpoints` property for unknown protocols
- _[cds@8.5.0]_ `Preference-Applied` header is returned in OData adapter if requested
- _[cds@8.5.0]_ No location header is returned on OData update requests if `minimal` preference is set
- _[cds@8.5.0]_ Handling of invalid requests for views with parameters
- _[cds@8.4.2]_ `cds.compile.to.edmx` if using the new builtin type `cds.Map`
- _[cds@8.4.1]_ Validate request method for operations
- _[cds@8.4.1]_ Correctly generate CQN for lambda expressions in new OData adapter
- _[cds@8.4.1]_ `req.diff()` on old database with property transitions
- _[cds-mtxs@2.4.0]_ Status codes for parallel async requests are always reported correctly.
- _[cds-mtxs@2.3.1]_ The access token coming from Service Manager is redacted with `DEBUG` output on.
- _[cds-mtxs@2.3.1]_ The Service Manager client will now poll the ongoing operation for containers which are on "in progress" if it can find an existing instance instead of erroring out.
- _[cds-mtxs@2.3.1]_ `cds login --client` works correctly with client credentials from a service key.
- _[cds-mtxs@2.3.1]_ Synchronous upgrades don't fail for all tenants when there's a tenant for which the upgrade fails.

## October 2024

### Added {#oct-24-added}

- _[cds-dk@8.4.0]_ Added support for `import` and `export` for auto-completion in `package.json` and `.cdsrc.json`.
- _[cds-dk@8.4.0]_ `cds add side-by-side-extensibility` adds configuration for logic extensibility via extension points (Java).
- _[cds-dk@8.4.0]_ `cds init --java` can be used as an alias to `cds init --add java`.
- _[cds-dk@8.4.0]_ Add cds schema for `helm` build plugin.
- _[vscode-cds@8.3.0]_ Preview of `mta.yaml` via Mermaid diagram
- _[vscode-cds@8.3.0]_ show absolute name and kind of artifact in hover and completion details
- _[cds-compiler@5.4.0]_ to.edm(x): `cds.Map` as empty open complex type with name `cds_Map` or if the definition
  has been assigned `@open: false` as empty open complex type `cds_Map_closed` in OData V4.
- _[cds.java@3.4.0]_ Added support for annotation `@Core.ContentDisposition.Type` in `cds-adapter-odata-v4`.
- _[cds.java@3.4.0]_ Added support for [Preference `omit-values=nulls`](https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_Preferenceomitvalues) for OData V4. To omit `null` values in payload the header `Prefer` with value `omit-values=nulls` must be specified.
- _[cds.java@3.4.0]_ The goal `add` of the `cds-maven-plugin` supports adding AMS integration to a CAP Java project.
- _[cds4j@3.4.0]_ Support `where in <subquery>` predicates in Select, Update and Delete
- _[cds4j@3.4.0]_ New case-when-then API to build case expressions
- _[cds4j@3.4.0]_ SAP HANA: optimized search over to-many associations
- _[cds4j@3.4.0]_ Add basic support for `cds.Map` type (beta)
- _[cds@8.4.0]_ Set the maximum allowed size of HTTP headers in bytes for `$batch` subrequests via flag `cds.env.odata.max_batch_header_size` (default: 64 KiB)
- _[cds@8.4.0]_ New OData flag `cds.env.odata.context_with_columns` that adds selected and expanded columns to `@odata.context`. Default is `false`
- _[cds@8.4.0]_ New experimental option `--workers` to `cds watch/run/serve` that allows running a `cds.server` cluster
  (process env variable `WORKERS` or `CDS_WORKERS` can be used alternatively)
- _[cds-mtxs@2.3.0]_ If extensibility is disabled, the upgrade operation now checks if extensions exist to avoid potential data loss. If intended the check can be disabled by setting `cds.requires['cds.xt.DeploymentService'].upgrade.skipExtensionCheck: true`.
- _[cds-mtxs@2.3.0]_ Requests to Service Manager now forward the correlation ID.

### Changed {#oct-24-changed}

- _[cds-dk@8.4.0]_ `cds init` does not put comments in JSON files within `.vscode/`.
- _[cds-dk@8.4.0]_ `cds import --from asyncapi` now uses CloudEvents type in `@topic` annotation.
- _[cds-dk@8.4.0]_ `cds deploy` does not fall back to the deprecated `hanatrial` service plan any more.
- _[eslint-plugin-cds@3.1.1]_ `no-db-keywords` is no longer part of the 'recommended' rules,
  as the cds-compiler takes care of quoting SQL keywords, if they are used as identifiers.
- _[vscode-cds@8.3.0]_ Visualize dependencies:
  - no longer need to install 3rd party extension
  - no longer need to show `.dot` text file first to render the graph i.e. less flickering
  - removed clumsy zoom buttons. Use mouse wheel or touchpad gestures to zoom in/out, mouse drag to move
- _[vscode-cds@8.3.0]_ Improved UI code formatter settings: better usage of horizontal space, number settings are now shown in same line
- _[cds-compiler@5.4.0]_ Update OData vocabularies: 'Capabilities', 'Common', 'Core', 'PersonalData', 'PDF', 'UI'.
- _[cds-compiler@5.4.0]_ to.cdl: Identifiers using non-ASCII unicode characters, as introduced in v4.4.0, are no longer quoted.
- _[cds-compiler@5.4.0]_ For propagated expressions as annotation values, the `=` is changed as well, if it is a simple identifier.
- _[cds.java@3.4.0]_ Removed deprecated goals `addTargetPlatform` and `addIntegrationTests` from the `cds-maven-plugin`. Both are replaced by goal `add` with corresponding feature parameter.
- _[cds.java@3.4.0]_ Dependencies to modules with groupId `com.sap.cloud.mt` have been removed. Classes originating from these dependencies have been directly packaged into `cds-feature-mt` and other internal modules. Packages `com.sap.cloud.mt` and `com.sap.cds.mtx` have been renamed to `com.sap.cds.feature.mt` and `com.sap.cds.services.util.lib`.
- _[cds.java@3.4.0]_ Classes `ClientCredentialJwtAccess` and `ClientCredentialJwtReader` have been deprecated.
- _[cds.java@3.4.0]_ Minimum version of `com.sap.dwc:util-cap` library for DWC integration into CAP Java has been increased to `2.3.15`.
- _[cds.java@3.4.0]_ Added property `cds.multiTenancy.security.internalUserAccess.enabled` to control authorization of MT lifecycle endpoints for internal users. In production profile, `internal-user` is not authorized by default anymore.
- _[cds@8.4.0]_ For remote service calls to OData v2 services, less conversions are performed on the returned data
- _[cds@8.4.0]_ Internal API `srv.endpoints` now always is an array of endpoint objects, an empty one if the service is not served to any protocol

### Fixed {#oct-24-fixed}

- _[cds-dk@8.4.0]_ `cds env` now colors is output honoring settings like `FORCE_COLOR`.
- _[cds-dk@8.4.0]_ `cds add` commands correctly detect Java/Node in Microsoft PowerShell.
- _[cds-dk@8.4.0]_ `cds add hana` doesn't add `dependencies` to `.cdsrc.json` any more.
- _[cds-dk@8.4.0]_ `cds add cf-manifest` uses the new `sap_java_buildpack_jakarta` buildpack.
- _[cds-dk@8.4.0]_ `cds build --production` now correctly formats console log output.
- _[cds-dk@8.4.0]_ `cds add` correctly handles entries like `cds.requires.auth` if the following configuration is scoped in a profile.
- _[cds-dk@8.4.0]_ `cds add` plugins can use a shortcut for their options.
- _[cds-dk@8.4.0]_ `cds import` fix for no entity schema in OData V2.
- _[eslint-plugin-cds@3.1.1]_ `auth-restrict-grant-service` can now handle invalid values for `@restrict`
- _[eslint-plugin-cds@3.1.1]_ `auth-use-requires` now handles `null` values for `@restrict.grant.to`
- _[eslint-plugin-cds@3.1.1]_ `auth-valid-restrict-to` is now more robust against invalid properties such as `__proto__`
  and reduces the number of false positives
- _[eslint-plugin-cds@3.1.1]_ `auth-valid-restrict-where` now handles and reports invalid value `@restrict: [{where: null}]`
- _[eslint-plugin-cds@3.1.1]_ `auth-no-empty-restrictions` now handles invalid value `@restrict: [null]`
- _[vscode-cds@8.3.0]_ highlighting of CASE-statement keywords when put in their own line
- _[vscode-cds@8.3.0]_ analysis of dependencies for certain cases
- _[cds-compiler@5.4.0]_ compiler: Some invalid CDL snippets could crash the parser and compiler.
- _[cds-compiler@5.4.0]_ to.edm(x): OData V2: `Core.Links` watermark annotation has a `xmlns` attribute now.
- _[cds-compiler@5.4.0]_ for.seal: Remove unapplied extensions from CSN.
- _[cds-compiler@5.4.0]_ to.sql.migration: Handle `ALTER COLUMN` for columns with `NOT NULL` and a default value.
- _[cds-compiler@5.3.2]_ to.sql|hdi|hdbcds|effective: Handle subexpressions in conjunction with exists predicate.
- _[cds.java@3.4.0]_ Fixed the messaging default error handler behaviour when receiving messages of not subscribed tenants. By default, such messages are now acknowledged (i.e. skipped) to avoid growing error queues in the messaging broker.
- _[cds.java@3.3.1]_ Fixed a bug, causing an HTTP connection leak in health indicator `modelProvider`.
- _[cds.java@3.3.1]_ Fixed a bug, causing `deploymentService` health indicator being enabled by default.
- _[cds.java@3.3.1]_ Fixed a bug, causing UI provided by `cds-feature-change-tracking` to omit text for attributes of the change tracked entities when the respective field is hidden from the UI.
- _[cds4j@3.4.0]_ Fixed a bug in code generator, causing builder interfaces to be generated with incorrect references when builders for nested inline structured types are generated.
- _[cds4j@3.3.1]_ SAP HANA HEX mode:
  - fixed fallback to non-hex SQL on "HEX enforced but cannot be selected" errors on HANA QRC 3/2024
  - fixed SQL mode statement hints for hierarchy search queries
- _[cds@8.4.0]_ Commands like `cds deploy` now fail with a clear error message if called with an invalid value for `cds.features.assert_integrity` (like `true`)
- _[cds@8.4.0]_ Authentication validation errors (e.g., expired token, wrong audience) are logged as warning
- _[cds@8.4.0]_ Requests using `$apply` will always apply implicit sorting on best effort mechanism
- _[cds@8.4.0]_ Properly handle empty content-type in new OData adapter
- _[cds@8.4.0]_ Error/crash with `cds.features.odata_new_parser` for requests containing `$expand=*` and `$select`, which selects individual columns and star, e.g. `$select=ID,*`
- _[cds@8.4.0]_ Referencing new entities in `$batch` with new OData adapter did not work properly when using non integer content IDs in multipart/mixed
- _[cds@8.4.0]_ `cds.compile.to.serviceinfo` to ignore unknown protocols
- _[cds@8.4.0]_ New OData adapter and `cds.spawn` did not crash on programming errors (for example TypeError)
- _[cds@8.3.1]_ Erroneous caching in `cds.validate`
- _[cds@8.3.1]_ Precedence of request headers for `cds.context.id`
- _[cds@8.3.1]_ For `quoted` names, overwrite `@cds.persistence.name` for drafts and localized views properly
- _[cds@8.3.1]_ Do not use hana error code as http status code
- _[cds-mtxs@2.3.0]_ Migration command `cds-mtx-migrate --syncTenantList` is now more robust.
- _[cds-mtxs@2.3.0]_ `DEBUG=mtx` redacts Service Manager credentials.
- _[cds-mtxs@2.3.0]_ When deleting a tenant HDI container, all of its service bindings are deleted – not just the ones labeled with the tenant ID.
- _[cds-mtxs@2.3.0]_ Extension linter now checks `@mandatory` and `@readonly` more accurately.
- _[cds-mtxs@2.3.0]_ `cds.xt.JobsService` inserts jobs and tasks in one transaction.

## September 2024

### Added {#sep-24-added}

- _[cds-dk@8.3.0]_ `cds add mta`, `cds add helm` and `cds add cf-manifest` execute the `mvn cds:add -Dfeature CF/K8S` under the hood for Java projects.
- _[cds-dk@8.3.0]_ `cds compile --to mermaid` now supports `mta.yaml` to generate a visualization of your deployment descriptor.
- _[cds-dk@8.3.0]_ `cds add data` now also generates data for models imported with `cds import`.
- _[cds-dk@8.3.0]_ `cds add data` now also supports structured types.
- _[cds-dk@8.3.0]_ `cds deploy` now can also write its DDL statements to a separate log file with the `--out <file>` parameter.
- _[cds-dk@8.3.0]_ `cds add dynatrace` is now supported for Kyma.
- _[cds-dk@8.3.0]_ `cds import --name ...` to be used in RFC importer (`@sap/cds-rfc`).
- _[cds-dk@8.3.0]_ `cds add cloud-logging --with-telemetry` and `cds add dynatrace` are added to the `production` profile by default and respect the `for` option.
- _[cds-dk@8.2.0]_ `cds add dynatrace` adds configuration for Dynatrace.
- _[cds-dk@8.2.0]_ `cds add cloud-logging` adds configuration for SAP Cloud Logging. Option `--with-telemetry` allows for configuration with telemetry.
- _[cds-dk@8.2.0]_ `cds version` shows version information for `@cap-js/db-service`.
- _[cds-dk@8.2.0]_ `cds add portal` now adds SAP Cloud Portal configuration for Kyma.
- _[cds-dk@8.2.0]_ `cds add handler` allows to create handler stubs (for Java only, beta)
- _[cds-dk@8.2.0]_ `cds init --add java --no-db` lets you create a Java project without persistent database.
- _[cds-dk@8.2.0]_ `cds import` supports plugins.
- _[cds-dk@8.2.0]_ `cds add containerize` now supports unified-runtime.
- _[cds-dk@8.2.0]_ `cds add helm` now supports templating in the mountPath in the additionalVolumes.
- _[cds-dk@8.2.0]_ Experimental support for `tsx` through `cds-tsx`.
- _[cds-dk@8.2.0]_ `cds bind --to-app-services` now uses `vcap.name` to resolve multiple services with same type. A warning is issued in case of ambiguities.
- _[cds-dk@8.2.0]_ `cds compile --to ord -o <name>` supports `.json` file extension.
- _[cds-dk@8.2.0]_ `cds import --destination` applies destination credentials to existing service configurations.
- _[eslint-plugin-cds@3.1.0]_ api:
  - rules now have a `name` property, containing the rule name
  - new exported property `parser`
- _[eslint-plugin-cds@3.1.0]_ rules: there is now an `experimental` rule group, containing new rules that can be tested
- _[eslint-plugin-cds@3.1.0]_ new experimental rules were added:
  - `@sap/cds/sql-null-comparison`
  - `@sap/cds/no-java-keywords`
- _[eslint-plugin-cds@3.1.0]_ `auth-valid-restrict-grant` now proposes '*' when incorrect `@restrict.grant` value 'any' is used
- _[vscode-cds@8.2.0]_ code completion for artifacts within `using` statements now also completes single name segments with complete name
- _[cds-compiler@5.3.0]_ compiler:
  - A warning is emitted if a string enum's values are longer than the specified length.
  - ON-condition rewriting has been improved and now supports secondary associations.
- _[cds-compiler@5.3.0]_ to.edm(x): Support optional action and function parameters in OData V4. The following rules apply:
  - A parameter declared `not null` without default value is mandatory.
  - A **function** parameter declared `null` without default value is mandatory.
  - An **action** parameter declared `null` without default value is optional as it is equivalent to
    `@Core.OptionalParameter { DefaultValue: null }`.
  - A parameter with a default value is optional and the default value is rendered as
    `@Core.OptionalParameter { DefaultValue: <value> }` regardless of its nullability.
  - `@Core.OptionalParameter: true` can be used to turn a mandatory parameter into an optional parameter
    (especially function parameters) and to signal an unspecified default value in the API if the parameter
    has no default clause.
  - `@Core.OptionalParameter: false` turns the creation of a `@Core.OptionalParameter: { Default: ... }`
    annotation off.
  - A default clause or `@Core.OptionalParameter: <bool>` have no effect on an explicit binding parameter.
  - Mandatory and optional **action** parameters may appear in any order.
  - Optional **function** parameters must not be followed by mandatory parameters.
- _[cds-compiler@5.3.0]_ to.edm: Forward `@OpenAPI {...}` into EDM Json with option `--odata-openapi-hints`.
- _[cds-compiler@5.3.0]_ cdsc: Option `--transitive-localized-views` was added.
- _[cds.java@3.3.0]_ Introduced a new health indicator `modelProvider` to include the health status of MTX sidecar into the application's `/actuator/health` endpoint.
- _[cds.java@3.3.0]_ Introduced a new setting `strictSetters` for the `generate` goal of the CDS Maven Plugin. This enables stricter type-safe setters for data access interfaces, instead of using a plain `Map<String, Object>` type.
- _[cds.java@3.3.0]_ OData V4 protocol adapter now supports parameter aliases for entity keys.
- _[cds.java@3.3.0]_ OData V4 protocol adapter now supports parameter aliases for function calls.
- _[cds.java@3.3.0]_ New property `cds.odata-v4.fiori-preview.ui5.version` allows to configure the UI5 version used by the Fiori Preview.
- _[cds.java@3.2.0]_ The goal `add` of the `cds-maven-plugin` supports adding CloudFoundry / Kubernetes support and health checks to a CAP Java project.
- _[cds.java@3.2.0]_ The goal `generate` of the `cds-maven-plugin` supports generation of template handlers for actions and functions from the CDS models.
- _[cds.java@3.2.0]_ `TenantProviderService.readTenantsInfo` now accepts a set of strings that filters the fields of the retrieved `TenantInfo` objects. This helps to reduce memory consumption when there is a large number of subscribed tenants.
- _[cds.java@3.2.0]_ OData V4 PATCH or PUT requests now handle `If-Match: *` and `If-None-Match: *`, allowing to enforce a strict update respectively insert behaviour instead of the default upsert behaviour.
- _[cds.java@3.2.0]_ The goal `add` of the `cds-maven-plugin` supports adding application logging to a CAP Java project.
- _[cds.java@3.2.0]_ Deep authorizations now support conditions with paths involving associations in `@restrict` predicates.
- _[cds.java@3.2.0]_ Support OData hierarchical requests, using `com.sap.vocabularies.Hierarchy.v1.TopLevels`, `ancestors`, `descendants` transformations. The feature is supported only on SAP HANA and needs to be enabled by setting `cds.query.hierarchy.enabled` to `true`.
- _[cds.java@3.2.0]_ Support `null` values for collection-typed arguments for OData V4 as arguments for actions and functions.
- _[cds4j@3.3.0]_ Support predicates comparing managed to-one associations with structured target key values
- _[cds4j@3.3.0]_ `@cds.java.name` can be used as alias with lower priority in all places where `@cds.java.this.name` is supported
- _[cds@8.3.0]_ `cds.deploy` can now also write its DDL statements to a separate log
- _[cds@8.3.0]_ Symlinks are followed in `cds test`
- _[cds-mtxs@2.2.0]_ `PUT /-/cds/saas-provisioning/tenant` and `POST /-/cds/saas-provisioning/subscribe` accept additional environment variables to the HDI deployment via the generic options `_`, e. g. additional `VCAP_SERVICES`:

  ```jsonc
  "_": {
    "hdi": {
      "deployEnv": {
        "VCAP_SERVICES": { ... },
        "SOMETHING_ELSE": "something"
      },
      ...
    }
  }
  ```

### Changed {#sep-24-changed}

- _[cds-dk@8.3.0]_ `cds add sample` now uses `@ui5/cli` version 4.
- _[cds-dk@8.3.0]_ `cds import` now throws a warning for OpenAPI files containing recursive data types.
- _[cds-dk@8.2.0]_ `cds add hana` writes configuration for `cds build/compile` to no longer produce native SAP HANA associations. This improves deployment performance, but has a one-time performance penalty (in the next deployment).
- _[cds-dk@8.2.0]_ `cds login` prints shorter messages about refresh tokens.
- _[cds-dk@8.2.0]_ `cds init` uses latest Maven Java archetype version 3.2.0 for creating Java projects.
- _[vscode-cds@8.2.0]_ hover and completion proposal details now show artifact kind
- _[vscode-cds@8.2.0]_ Minimum VSCode version is now 1.90.2
- _[cds.java@3.2.0]_ Reading inactive instances of draft-enabled entities no longer issues data access events to the audit log.
- _[cds.java@2.10.4]_ Reading inactive instances of draft-enabled entities no longer issues data access events to the audit log.
- _[cds4j@3.3.0]_ Copy Select w/ modifier: when replacing element refs on the select list with non-ref values, the ref's display name is now propagated as alias to `Modifier::selectListValue`
- _[cds@8.3.0]_ Unknown protocols in `@protocol` annotations formerly prevented server starts; they are merely ignored now with a warning in the logs.
- _[cds@8.3.0]_ Deprecated configuration flag `cds.env.features.keys_in_data_compat` because of incompatibility with data validation in new OData adapter.
- _[cds@8.3.0]_ `@cds.api.ignore` doesn't suppress an association, the annotation is propagated to the (generated) foreign keys.
- _[cds@8.3.0]_ Where clauses of restrictions for bound actions and functions defined by `@restrict` are now enforced and no longer ignored.
- _[cds@8.3.0]_ `@cap-js/telemetry` is now loaded before other plugins to allow better instrumentation.
- _[cds@8.2.3]_ All annotations in input data are skipped and removed from the input by `cds.validate()` - as we did in legacy OData adapter
- _[cds-mtxs@2.2.0]_ HANA deployments without `resources.tgz` will now skip the deployment instead of failing with an error.
- _[cds-mtxs@2.2.0]_ Debug logs for HANA deployments can be set using `DEBUG=deploy`.
- _[cds-mtxs@2.2.0]_ The error about an invalid scope when fetching a token now contains the expected scope.
- _[cds-mtxs@2.2.0]_ Logs for enqueued jobs are not colored in non-TTY environments any more.

### Fixed {#sep-24-fixed}

- _[cds-dk@8.3.0]_ `cds add workzone`-created apps can now directly be added via Content Manager in SAP Build Work Zone.
- _[cds-dk@8.3.0]_ Less obtrusive warning about `cds` instead of `cds-ts` in Typescript projects.
- _[cds-dk@8.2.3]_ In `cds.cli.command`, commands now show up in the correct case.
- _[cds-dk@8.2.3]_ `cds add` plugins don't throw a `TypeError` if `cds.cli.options` is `undefined`.
- _[cds-dk@8.2.3]_ `cds watch` no longer ignores `*git/` folders, but only `.git/`.
- _[cds-dk@8.2.3]_ `cds import` updates `package.json` file in `srv` folder if existing. The `srv` folder name is determined by `cds.env.folders.srv` config or parameter `--out`.
- _[cds-dk@8.2.3]_ `cds import` doesn't change existing service configuration data. Now, `destination` credentials are only saved for the `production` profile.
- _[cds-dk@8.2.2]_ BDSA-2024-6188: vulnerability with express.js 4.19.2
- _[cds-dk@8.2.2]_ `cds import --out` copies the given metadata file to the correct output folder. CLI options are propagated to the `cds.import` API.
- _[cds-dk@8.2.2]_ `cds add sample` no longer creates a irregular whitespace in `admin-service.js`.
- _[cds-dk@8.2.2]_ `cds login` now correctly fetches tokens again with client credentials (or hints at invalid credentials).
- _[cds-dk@8.2.2]_ `cds add handler` can now also be called from the `srv` dir.
- _[cds-dk@8.2.1]_ Update `@sap/hdi-deploy` to fix CVE-2024-4067 with `micromatch` 4.0.7
- _[cds-dk@8.2.1]_ `cds add` plugins now correctly parse flags (options with `type: 'boolean'`) if not used as the last argument.
- _[cds-dk@8.2.0]_ `cds import` fix for single entity schema in OData V2.
- _[cds-dk@8.2.0]_ `cds add portal` correctly sets the `appId` in its `CommonDataModel.json` from the `manifest.json` app ID.
- _[cds-dk@8.2.0]_ `cds add html5-repo` adds the SAP BTP Destination service as a hard dependency again for Kyma projects.
- _[cds-dk@8.2.0]_ `cds build --ws-pack` correctly creates tarball archives for workspaces with nested `node_modules` folders.
- _[cds-dk@8.2.0]_ `cds import` now shows proper error message in case of bound action collision.
- _[cds-dk@8.2.0]_ `cds deploy --to hana` now runs an existing `hana` build task configuration instead of a default one.
- _[cds-dk@7.9.8]_ BDSA-2024-6188: vulnerability with express.js 4.19.2
- _[eslint-plugin-cds@3.1.0]_ cli: Running `eslint` on the command line now runs `inferred` rules again
- _[eslint-plugin-cds@3.1.0]_ `start-entities-uppercase` no longer reports false positives for elements
- _[eslint-plugin-cds@3.1.0]_ Typescript errors in `lib/types.d.ts` were fixed
- _[eslint-plugin-cds@3.1.0]_ Rule property `hasSuggestions: true` was removed from rules that did not have suggestions
- _[eslint-plugin-cds@3.1.0]_ Custom rule tests using `runRuleTester` did not catch errors in files inside `valid/`.
  Tests can now also be run with other test runners such as `mocha` and `node --test` instead of just `jest`
- _[eslint-plugin-cds@3.1.0]_ `auth-` lint rules have been reworked to reduce the number of false positives and negatives
  - `auth-valid-restrict-where` no longer runs in quadratic time and now handles "expressions as annotation values"
  - `auth-no-empty-restrictions` now runs for actions and functions, too
  - `auth-use-requires` will not propose `@requires` anymore, if the `@restrict` has a `where` condition
  - `auth-valid-restrict-grants` incorrectly proposed to use `WRITE` instead of other events; it no longer crashes for invalid value types and now runs on all CSN artifacts
  - `auth-valid-restrict-keys` has improved reporting about misspelled vs unknown properties; it now runs on all CSN artifacts
- _[eslint-plugin-cds@3.0.5]_ Inferred rules did not run when executed via `eslint` or `cds lint`.
- _[vscode-cds@8.2.0]_ highlighting of element names in annotate statements and of special element names `entity`, `type`, `event`
- _[vscode-cds@8.2.0]_ completion: rename of source folders led to wrong using path proposals
- _[vscode-cds@8.2.0]_ completion: using path proposals did not work in multi-line using statements
- _[vscode-cds@8.2.0]_ maintain translation quickfix sent wrong document version
- _[cds-compiler@5.3.0]_ CDL parser: Issue warning if annotation assignments have been written
  at an invalid position inside a type expressions.
- _[cds-compiler@5.3.0]_ CDL parser: Issue warning for arrayed parameter with default value.
- _[cds-compiler@5.3.0]_ to.cdl: Arrayed parameters with default values were not rendered correctly.
- _[cds.java@3.3.0]_ Fixed a bug, causing excessive serialization of elements of complex type not present in the payload returned via OData action/function import.
- _[cds.java@3.3.0]_ Fixed a bug, preventing OData V4 parser to correctly parse entities, actions or functions with the elements or the arguments of types defined within the CDS services.
- _[cds.java@3.3.0]_ Fixed a bug, causing redundant change log entries being generated for changed localized elements.
- _[cds.java@3.3.0]_ Fixed a bug, causing translated values depending on user locale to appear in values for identifiers for change log entries.
- _[cds.java@3.2.0]_ Fixed a bug, causing audit log implementation to fail with `NullPointerException` when processing the associations with elements relevant to Audit Logging.
- _[cds.java@3.2.0]_ Fixed a bug, causing failed unsubscriptions triggered by Subscription Manager Service in a Deploy with Confidence context.
- _[cds.java@3.2.0]_ Fixed a bug, causing incorrect EDMX being returned by the `$metadata` endpoint when special characters are used in the I18N texts.
- _[cds.java@3.2.0]_ Fixed a bug, causing `ErrorStatusException` being thrown when auditing accesses to inactive instances of draft-enabled entities.
- _[cds.java@3.2.0]_ Fixed a bug, causing failing requests to `/cds` actuator when one of the internal contributors throws an exception.
- _[cds.java@3.2.0]_ Fixed an incompatible change, causing applications with multiple xsuaa bindings to fail on startup due to missing XSUAA configuration for secondary bindings. These applications now can set `cds.security.xsuaa.allowMultipleBinding` to `true` so that all xsuaa bindings are available in custom spring auto-configurations. Note: CAP Java still does not process multiple bindings and requires a dedicated spring configuration. In general, applications should refrain from configuring several XSUAA bindings.
- _[cds.java@2.10.4]_ Fixed a bug, causing audit log implementation to fail with `NullPointerException` when processing the associations with elements relevant to Audit Logging.
- _[cds.java@2.10.4]_ Fixed a bug, causing incorrect EDMX being returned by the `$metadata` endpoint when special characters are used in the I18N texts.
- _[cds.java@2.10.4]_ Fixed a bug, causing `ErrorStatusException` being thrown when auditing accesses to inactive instances of draft-enabled entities.
- _[cds.java@2.10.4]_ Fixed a bug, causing failing requests to `/cds` actuator when one of the internal contributors throws an exception.
- _[cds4j@3.3.0]_ Fixed a bug, causing SQL exceptions when processing deep updates from flattened runtime views
- _[cds4j@3.3.0]_ Fixed a bug in code generator leading to missing annotations `@CdsName` on setters and getters in FLUENT mode.
- _[cds4j@3.3.0]_ Fixed a bug causing database implementations to fail to load in ForkJoinPool threads
- _[cds4j@3.3.0]_ Fixed a bug in $apply processing causing filter preceding a filter by grouped values to be ignored
- _[cds4j@3.3.0]_ Fixed bugs in code generator:
  - _[cds4j@3.3.0]_ leading to incorrect interfaces being generated for entities annotated with the `@cds.java.extends` naming entities that contain inline types.
  - _[cds4j@3.3.0]_ causing builder interfaces for global structured types to be omitted.
  - _[cds4j@3.3.0]_ leading to missing annotations `@CdsName` on setters and getters in FLUENT mode.
- _[cds4j@3.3.0]_ Fixed inline count for queries which use top 0
- _[cds4j@2.10.4]_ Skip updates with empty entries
- _[cds4j@2.10.4]_ Fixed a bug, causing `Cds4jServiceLoader` failing to load certain classes when used in asynchronous code
- _[cds@8.3.0]_ When modifying active children of of draft-enabled entities directly (`bypass_draft`), the error message was misleading.
- _[cds@8.3.0]_ Cleaning up drafts calls `CANCEL` handlers
- _[cds@8.3.0]_ Allow to call `CANCEL` on draft entities programmatically
- _[cds@8.3.0]_ Encoding of `@odata.nextLink` path
- _[cds@8.3.0]_ Computed fields are ignored in projections
- _[cds@8.3.0]_ Consider `id` in a `ref` step for mapping of service elements to their name on the db.
- _[cds@8.3.0]_ Feature toggles with new OData adapter.
- _[cds@8.3.0]_ Target entity was incorrectly calculated for some actions in new OData adapter.
- _[cds@8.3.0]_ `req.diff()` does not manipulate existing queries anymore.
- _[cds@8.3.0]_ New OData adapter: normalize on commit error in `/$batch`
- _[cds@8.2.3]_ Unmanaged associations are excluded from `@mandatory` checks
- _[cds@8.2.3]_ Properly reject direct requests to `DraftAdministrativeData`
- _[cds@8.2.3]_ Virtual elements annotated with `@Core.MediaType`
- _[cds@8.2.3]_ OData Requests targeting a specific instance and custom handler returns empty array
- _[cds@8.2.3]_ `cds-serve` and `cds-deploy` now set `cds.cli` information
- _[cds@8.2.2]_ Erroneous caching in `cds.validate`
- _[cds@8.2.2]_ Properly check `$filter` element types across navigations
- _[cds@8.2.1]_ Date validation of legacy OData protocol adapter
- _[cds@8.2.1]_ Content-Length headers in multipart batch request body
- _[cds@8.2.1]_ Streaming requests with virtual properties
- _[cds@8.2.1]_ Bring back support for `x-correlationid`
- _[cds@8.2.1]_ Validation of inlined elements
- _[cds@8.2.1]_ multipart `$batch` parsing with _--_ as part of payload
- _[cds-mtxs@2.2.0]_ `/-/cds/saas-provisioning/dependencies` show a better error message when it can't resolve its configured SaaS dependencies.
- _[cds-mtxs@2.2.0]_ The Service Manager client re-fetches the authorization token on retries.
- _[cds-mtxs@2.2.0]_ Better error handling in `cds.xt.JobsService`.

### Removed {#sep-24-removed}

- _[cds-dk@8.2.0]_ Removed `build` and `build:ts` npm scripts that were generated into `package.json` when adding the `typescript` facet.
- _[eslint-plugin-cds@3.1.0]_ api: `genDocs` was removed
- _[cds@8.3.0]_ Alpha support for SAP Event Broker-based messaging (kind `event-broker`). Use CDS plugin `@cap-js/event-broker` instead.


## August 2024

### Added {#aug-24-added}

- _[cds-dk@8.1.1]_ Add more features to CAP project creation wizard in SAP Business Application Studio.
- _[cds-dk@8.1.1]_ `cds.add.merge` now you specify a `key` in its `deletions` semantics.
- _[vscode-cds@8.0.2]_ Mermaid: add option for layout direction
- _[cds-compiler@5.2.0]_ to.edm(x): Add `@Core.Links { rel: 'author', href: 'https://cap.cloud.sap' };` as watermark to lead schema.
- _[cds-compiler@5.2.0]_ to.sql.migration: Introduce option `script` to aid in generation of manual migration scripts by not aborting when encountering lossy changes.
- _[cds4j@3.2.0]_ SAP HANA:
  - Support to resolve and normalize queries, that use hierarchy transformations: `CqnTopLevelsTransformation`, `CqnDescendantsTransformation`, `CqnAncestorsTransformation`
  - Use `SCORE` function to search hierarchies in HEX mode
- _[cds4j@3.2.0]_ Extended support for runtime views
- _[cds@8.2.0]_ Allow `cds.connect.to (SomeService)` where `SomeService` is a class
- _[cds@8.2.0]_ Lean draft: support CDS orderBy in `list status: all`
- _[cds@8.2.0]_ Support where not in as object in `cds.ql` expressions like: `where({ID:{not:{in:[...]}}})`
- _[cds@8.2.0]_ Unbound CDS functions now show up in the server's index page along with an exemplary call signature
- _[cds@8.2.0]_ `cds.log`'s JSON formatter:
  - Field `w3c_traceparent` is filled based on request header `traceparent` (cf. W3C Trace Context) for improved correlation
  - Custom fields `cds.env.log.cls_custom_fields` are filled if bound to an instance of SAP Cloud Logging
  - Default `cds.env.log.als_custom_fields` enhanced by `{ reason: 3 }` (project config takes precedence)
- _[cds@8.2.0]_ Support for `cds.hana` types like `cds.hana.ST_POINT` in `cds.builtin`
- _[cds@8.2.0]_ Internal `cds.debug()` API now always returns a logger instance, which allows switching on debugging subsequently, e.g. by the like of `cds.log('sql','debug')`
- _[cds@8.2.0]_ New config flag `cds.server.shutdown_on_uncaught_errors` allows to control whether the server should shut down on uncaught errors. Default is `true`

### Changed {#aug-24-changed}

- _[cds-dk@8.2.0]_ `cds add hana` writes configuration for `cds build/compile` to no longer produce native SAP HANA associations. This improves deployment performance, but has a one-time performance penalty (in the next deployment).
- _[cds-dk@8.2.0]_ `cds login` prints shorter messages about refresh tokens.
- _[cds-dk@8.2.0]_ `cds init` uses latest Maven Java archetype version 3.2.0 for creating Java projects.
- _[cds-dk@8.1.1]_ `cds init` uses latest Maven Java archetype version 3.1.0 for creating Java projects.
- _[cds-compiler@5.2.0]_ for.odata: No longer reject default values on action/function parameters.
- _[cds-compiler@5.2.0]_ to.edm(x): Raise warning for default values on action/function parameters that they are ignored.
- _[cds@8.2.0]_ Revert workaround from 8.1.0 for server startup message `WARNING: Package '@sap/cds' was loaded from different installations`. This is now addressed in `@sap/cds-mtxs` 2.0.5.
- _[cds@8.2.0]_ When parsing CSV files, `cds.deploy` no longer doubles a literal `\` character (backslash) with a second backslash (`\\`), but retains it as-is.  This caused unwanted data changes.
- _[cds@8.2.0]_ Optimized handling of large binaries (BLOBs) in case of drafts. Unchanged BLOBs are not copied into the draft entity. If those BLOBs from draft entities are requested, the unchanged BLOBs will be fetched from the corresponding active entity. Note that this change may require adjustment of custom logic, if large binaries from draft entities are requested (for example, using `ql.SELECT` statement). To restore previous behavior use `cds.features.binary_draft_compat`.

### Fixed {#aug-24-fixed}

- _[cds-dk@8.2.0]_ `cds import` fix for single entity schema in OData V2.
- _[cds-dk@8.2.0]_ `cds add portal` correctly sets the `appId` in its `CommonDataModel.json` from the `manifest.json` app ID.
- _[cds-dk@8.2.0]_ `cds add html5-repo` adds the SAP BTP Destination service as a hard dependency again for Kyma projects.
- _[cds-dk@8.2.0]_ `cds build --ws-pack` correctly creates tarball archives for workspaces with nested `node_modules` folders.
- _[cds-dk@8.2.0]_ `cds import` now shows proper error message in case of bound action collision.
- _[cds-dk@8.2.0]_ `cds deploy --to hana` now runs an existing `hana` build task configuration instead of a default one.
- _[cds-dk@8.1.2]_ Dependency update for `axios` to fix CVE-2024-39338.
- _[cds-dk@8.1.2]_ `cds login` now fetches the passcode URL for the subscriber tenant if the subdomain is given.
- _[cds-dk@8.1.2]_ `cds build` now correctly generates migration tables for `CodeList` entities.
- _[cds-dk@8.1.1]_ `cds import` now gives proper error message for OData import in case of invalid OData version or invalid encoding.
- _[cds-dk@8.1.1]_ `cds import` now able to ignore invalid escape sequence in the description of properties for OData V2.
- _[cds-dk@8.1.1]_ `cds add mta` does not error when the `app/router` folder was deleted.
- _[cds-dk@8.1.1]_ `cds version -i` does not show a globally installed version when none is installed or linked.
- _[cds-dk@8.1.1]_ `cds compile --to openapi` no longer fails with `Error: Unknown protocol: graphql`.
- _[cds-dk@8.1.1]_ `cds add data` can now correctly handle circular dependencies in entities that point to themselves via associations and compositions.
- _[cds-dk@8.1.1]_ `cds add` returns correct suggestions for shell completion.
- _[cds-dk@8.1.1]_ `cds version` reports correct `@sap/cds-compiler` version.
- _[cds-dk@8.1.1]_ `cds deploy` falls back correctly to `@sap/hana-client` when `HDI_DEPLOY_OPTIONS='{"use_hdb":false}'` is set.
- _[cds-dk@7.9.7]_ Dependency update for `axios` to fix CVE-2024-39338
- _[cds-dk@7.9.7]_ `cds build --for mtx-sidecar` now correctly supports different `srv` folder name.
- _[cds-dk@7.9.7]_ `cds build --ws-pack` correctly creates tarball archives for workspaces with nested `node_modules` folders.
- _[cds-dk@7.9.7]_ `cds version` now reports the correct version of `@sap/cds` if this one is installed locally along with a local `@sap/cds-dk` installation.
- _[cds-dk@7.9.7]_ `cds version -i` does not show a globally installed version when none is installed or linked.
- _[cds-dk@7.9.7]_ `cds version` reports correct `@sap/cds-compiler` version.
- _[cds-dk@7.9.7]_ `cds version` can skip over check for Java version
- _[cds-compiler@5.2.0]_ compiler: Fix extensions with bound actions using an explicit binding parameter in `parseCdl` CSN.
- _[cds-compiler@5.2.0]_ for.odata, to.edm(x): Fix some issues with resolving annotation expressions in nested objects and
  reliably replace value of `=` attribute with `true` after processing.
- _[cds-compiler@5.1.2]_ compiler: In parseCdl mode, bound actions specifying the binding parameter with `$self` did not work.
- _[cds.java@3.2.0]_ Fixed a bug, causing audit log implementation to fail with `NullPointerException` when processing the associations with elements relevant to Audit Logging.
- _[cds.java@3.2.0]_ Fixed a bug, causing failed unsubscriptions triggered by Subscription Manager Service in a Deploy with Confidence context.
- _[cds.java@3.2.0]_ Fixed a bug, causing incorrect EDMX being returned by the `$metadata` endpoint when special characters are used in the I18N texts.
- _[cds.java@3.2.0]_ Fixed a bug, causing `ErrorStatusException` being thrown when auditing accesses to inactive instances of draft-enabled entities.
- _[cds.java@3.2.0]_ Fixed a bug, causing failing requests to `/cds` actuator when one of the internal contributors throws an exception.
- _[cds.java@3.2.0]_ Fixed an incompatible change, causing applications with multiple XSUAA bindings to fail on startup due to missing XSUAA configuration for secondary bindings. These applications now can set `cds.security.xsuaa.allowMultipleBinding` to `true` so that all XSUAA bindings are available in custom spring auto-configurations. Note: CAP Java still does not process multiple bindings and requires a dedicated spring configuration. In general, applications should refrain from configuring several XSUAA bindings.
- _[cds.java@3.1.1]_ Fixed a bug, causing runtime exceptions when loading I18n data from MTXS sidecar running with @sap/cds >= `8.1.0`.
- _[cds.java@3.0.2]_ Fixed a bug, causing runtime exceptions when loading I18n data from MTXS sidecar running with @sap/cds >= `8.1.0`.
- _[cds4j@3.2.0]_ Consider expand ref filter in optimized parent-key expands
- _[cds4j@3.2.0]_ Fix usage of context variables in match predicates
- _[cds4j@3.2.0]_ Fix handling of external imported draft entities when parsing the CDS model
- _[cds4j@3.2.0]_ Fixed a bug, causing `Cds4jServiceLoader` to fail to load certain classes inside asynchronous code
- _[cds4j@3.2.0]_ Consider `@cds.search` in select from subquery
- _[cds@8.2.0]_ Resolving views with path expression renamings
- _[cds@8.2.0]_ Set content-type-header in batch for actions with 204 No Content
- _[cds@8.2.0]_ URI encoding of `@odata.nextLink` in OData response
- _[cds@8.2.0]_ Requests reading media data streams did not provide `req.params`
- _[cds@8.2.0]_ `cds.compile.to.hana` for legacy hana service with `@cap-js/sqlite` as dev dependency
- _[cds@8.2.0]_ Better redaction of debug output
- _[cds@8.2.0]_ Instance-based authorization using functions
- _[cds@8.2.0]_ Fixed flaws in `cds.connect.to()` that lead to deadlocks in case of errors due to invalid service configurations or initializations.
- _[cds@8.2.0]_ Navigation with backlink as key can now omit backlink keys for new OData adapter
- _[cds@8.1.1]_ For `accept-language`, ignore additional options
- _[cds@8.1.1]_ Global `describe`, `before`, `beforeAll`, `afterAll` hooks are now writable again. They were accidentally made read-only in 8.0.0.
- _[cds@8.1.1]_ Expand to `DraftAdministrativeData` for active instances of draft-enabled entities over drafts
- _[cds@8.1.1]_ Deduplication of columns for certain on conditions for the legacy database driver
- _[cds@8.1.1]_ For legacy-sqlite/-hana: Add keys to expands with only non-key elements to ensure not returning null for expand.
- _[cds@8.1.1]_ New parser was to restrictive regarding an empty line at the end of batch body.
- _[cds@8.1.1]_ Error target for operations with complex parameters
- _[cds@8.1.1]_ Remote services: JWT gets found in authorization header
- _[cds@8.1.1]_ Search with invalid characters
- _[cds@8.1.1]_ Invoke `srv.on('error')` for each failing batch subrequest
- _[cds-mtxs@2.1.0]_ On-the-fly CSN calculations are only done with `extensibility: true` in the main app.
- _[cds-mtxs@2.1.0]_ The request correlation ID is appended to generic HDI deployment error messages.
- _[cds-mtxs@2.1.0]_ Asynchronous extension activation now reverts faulty extensions correctly.
- _[cds-mtxs@2.1.0]_ Parallel extension activation calls do no longer create inconsistent extension states.
- _[cds-mtxs@2.0.6]_ Subscription Manager service subscriptions are now working again.
- _[cds-mtxs@2.0.6]_ The `cds.features.assertIntegrity` is correctly added to the compiler options for HANA builds.
- _[cds-mtxs@2.0.6]_ The job status now always returns a non-null value also when using `@cap-js/hana`.
- _[cds-mtxs@2.0.6]_ The passcode URL now reflects the subscriber subdomain, if such is received from the client.
- _[cds-mtxs@2.0.5]_ The server startup no longer yields the `WARNING: Package '@sap/cds' was loaded from different installations:` message in PNPM setups with `--global-bin-dir` on. This happened in BAS, for example on `cds watch/serve` etc.
- _[cds-mtxs@2.0.5]_ Setting `HDI_DEPLOY_OPTIONS` to `'{"use_hdb": false}'` now works correctly for `@sap/hana-client` fallbacks.

### Removed {#aug-24-removed}

- _[cds-dk@8.2.0]_ Removed `build` and `build:ts` npm scripts that were generated into `package.json` when adding the `typescript` facet.
- _[cds@8.2.0]_ Array methods `forEach`, `filter`, `find`, `map`, `some`, `every` from [`LinkedDefinitions`](https://cap.cloud.sap/docs/node.js/cds-reflect#iterable). Convert linked definitions into arrays before using these methods, for example:

   ```js
   [...linked.definitions].map(d => d.name)
   ```

## July 2024

### Added {#jul-24-added}

- _[cds-dk@8.1.0]_ `cds compile --to mermaid` can be configured with a layout direction like `LR`.
- _[cds-dk@8.1.0]_ `cds deploy --to hana` now shows the `hdi-deploy` version when running.
- _[cds-compiler@5.1.0]_ cdsc: Option `--stdin` was added to support input via standard input, for example, `cat file.cds | cdsc --stdin`
- _[cds-compiler@5.1.0]_ Allow to refer to draft state element `IsActiveEntity` via magic variable `$draft.IsActiveEntity` in annotation path expressions.
  - for.odata: During draft augmentation, `$draft.IsActiveEntity` is rewritten to `$self.IsActiveEntity` for all draft-enabled
    entities (root and sub-nodes but not for named types or entity parameters).
  - to.edm(x): (V4 only) Allow to refer to an entity element in a bound action via `$self` and not only via explicit binding parameter
    in an annotation path expression. The API generator will prefix the path with the actual binding parameter name (explicit, annotation or
    default).
- _[cds.java@3.0.1]_ Added switch `cds.multiTenancy.serviceManager.acceptInstancesWithoutTenant.enabled` (default: false) to allow reading tenant labels also from HDI container bindings in case the underlying HDI service instance is missing the label due to a data inconsistency. You may use this switch to temporarily activate the work-around for the broken service instances, but you should manually patch the instances with the correct tenant label as soon as possible via the ServiceManager API.
- _[cds.java@2.10.3]_ Added switch `cds.multiTenancy.serviceManager.acceptInstancesWithoutTenant.enabled` (default: false) to allow reading tenant labels also from HDI container bindings in case the underlying HDI service instance is missing the label due to a data inconsistency. You may use this switch to temporarily activate the work-around for the broken service instances, but you should manually patch the instances with the correct tenant label as soon as possible via the ServiceManager API.
- _[cds4j@3.1.0]_ `@Search.ranking` annotation to define the ranking weight for an element ('HIGH' = 1.0, 'MEDIUM' = 0.7, 'LOW' = 0.5).
- _[cds@8.1.0]_ Streaming of data with content type 'application/json'
- _[cds@8.1.0]_ Service annotation `@cds.server.body_parser.limit` and global config option `cds.server.body_parser.limit` allow to configure the maximum request body size in bytes. The default value by express' body parser middleware is 100 kb. See [express docs](https://expressjs.com/en/resources/middleware/body-parser.html) for details.
- _[cds@8.1.0]_ Translations for new languages: bg (Bulgarian), el (Greek), he (Hebrew), hr (Croatian), kk (Kazakh), sk (Slovak), sl (Slovenian), sr (Serbian), uk (Ukrainian)

### Changed {#jul-24-changed}

- _[cds-dk@8.1.0]_ Better generation of http files with `cds add http`, especially for draft requests.
- _[cds-compiler@5.1.0]_ Update OData vocabularies: 'Common', 'Core', 'HTML5', 'UI'.
- _[cds-compiler@5.1.0]_ to.cdl|hdbcds|hdi|sql: Remove `generated by` comment.
- _[cds.java@3.0.1]_ Deep authorizations are not enabled by default (`cds.security.authorization.deep.enabled: false`)
- _[cds@8.1.0]_ Event Broker: Standardize behavior for cloud events and header propagation

### Fixed {#jul-24-fixed}

- _[cds-dk@8.1.0]_ `cds add` recognizes `hasCfManifest` as inactive unless a `manifest.yml` file exists.
- _[cds-dk@8.1.0]_ `cds add` help and suggestions are only shown when the `help` method is implemented.
- _[cds-dk@8.1.0]_ `cds add sample` does not include the deprecated `synchronizationMode` property in `manifest.json` files anymore.
- _[cds-dk@8.1.0]_ `cds compile --to mermaid` no longer produces empty `namespace` blocks that would lead to rendering errors.
- _[cds-dk@8.1.0]_ `cds compile --to mermaid` no longer fails for complex queries like joins.
- _[cds-dk@8.1.0]_ `cds build --for mtx-sidecar` now correctly supports different `srv` folder name.
- _[cds-dk@8.1.0]_ `cds add audit-log` in combination with `cds add multitenancy` correctly adds the audit-log dependency to the MTX sidecar.
- _[cds-dk@8.1.0]_ `cds build` adds the correct hdbtabledata file paths to the hana result set.
- _[cds-dk@8.1.0]_ `cds add` plugins can now correctly interpret `cds.cli` properties.
- _[cds-dk@8.1.0]_ `cds deploy --to hana --dry` now shows correct files with their content.
- _[cds-dk@8.1.0]_ `cds version` now reports the correct version of `@sap/cds` if this one is installed locally along with a local `@sap/cds-dk` installation.
- _[cds-dk@8.1.0]_ Shell completion now works correctly for `cds init --add`.
- _[cds-dk@8.1.0]_ `cds build --for mtx-sidecar` no longer fails if the severity of a compilation error has been downgraded from `Error` to `Warning`.
- _[cds-dk@8.0.3]_ `cds build --ws` no longer creates migration tables in shared db if already existing in a workspace.
- _[cds-dk@8.0.3]_ `cds add destination` adds the destination service as an MTX SaaS dependency.
- _[cds-dk@8.0.3]_ `cds add html5-repo` adds the HTML5 repo runtime as an MTX SaaS dependency.
- _[cds-dk@8.0.3]_ `cds add html5-repo` does not add a destination service anymore if not required by other services.
- _[cds-dk@8.0.3]_ `cds add workzone` runs `cds add destination` as a dependent facet.
- _[cds-dk@8.0.3]_ `cds add` plugins don't fail if custom options are provided via the `options` API.
- _[cds-dk@8.0.3]_ `cds add data` can now correctly handle circular associations. The maximum depth of associations is increased to 5.
- _[cds-dk@8.0.3]_ `cds add redis` is separated from `cds add redis-messaging` to allow for separate consumption.
- _[cds-dk@8.0.3]_ `cds add redis` uses the `standard` service plan by default.
- _[cds-dk@8.0.3]_ `cds watch` no longer leads to a warning `'@sap/cds' was loaded from different installations` when local project dependencies are installed.
- _[cds-dk@8.0.3]_ `cds init` uses latest Maven Java archetype version 3.0.0 for creating Java projects.
- _[cds-dk@7.9.6]_ `cds add data` can now correctly handle circular associations. The maximum depth of associations is increased to 5.
- _[cds-compiler@5.1.0]_ compiler: checks for associations now work for nested projections of the form `association.{ id }`
- _[cds-compiler@5.1.0]_ to.edm(x): No `Nullable` attribute for `$ReturnType` of `Collection(<entity type>)` [OData V4 CSDL, section 12.8 Return Type](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_ReturnType)
- _[cds-compiler@5.1.0]_ to.sql|hdi|hdbcds: Detect and error on "cross-eyed" backlinks, where we cannot construct a valid on-condition.
- _[cds-compiler@5.1.0]_ to.sql|hdi.migration: Correctly detect that a view was dropped - this was previously just silently ignored.
- _[cds-compiler@4.9.8]_ compiler: Fix extensions with bound actions using an explicit binding parameter in `parseCdl` CSN.
- _[cds-compiler@4.9.8]_ to.edm(x): No `Nullable` attribute for `$ReturnType` of `Collection(<entity type>)` [OData V4 CSDL, section 12.8 Return Type](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_ReturnType)
- _[cds.java@3.0.1]_ Fixed a bug in `cds-feature-postgresql` which caused a connection issue to a PostgreSQL database due to an invalid CA certificate.
- _[cds.java@2.10.3]_ Fixed a bug in `cds-feature-postgresql` which caused a connection issue to a PostgreSQL database due to an invalid CA certificate.
- _[cds4j@3.1.0]_ Support nested select with inline count
- _[cds4j@3.1.0]_ Setting session context variables is no longer implicitly assumed to have a surrounding transaction
- _[cds4j@3.1.0]_ Skip updates with empty entries
- _[cds@8.1.0]_ Erroneous authentication of `enterprise-messaging`
- _[cds@8.1.0]_ `@odata.context` for actions/functions returning an array of `<type>`
- _[cds@8.1.0]_ `cds-deploy` script terminates if deployment fails
- _[cds@8.1.0]_ Allow backslashes, quotation marks and ampersands in search terms
- _[cds@8.1.0]_ Search compatibility for new parser and old db
- _[cds@8.1.0]_ The server startup no longer yields the `WARNING: Package '@sap/cds' was loaded from different installations:` message in PNPM setups using `--global-bin-dir`. This happened in BAS, for example on `cds watch/serve`
- _[cds@8.0.4]_ Localized views like `localized_de_Books` where accidentally generated for new sqlite service.
- _[cds@8.0.4]_ Atomicity group handling in `$batch`
- _[cds@8.0.4]_ `$batch` in combination with `commit` hooks
- _[cds@8.0.4]_ `continue-on-error` preference for JSON `$batch`
- _[cds@7.9.4]_ View resolving for `cds.features.lean_draft`
- _[cds@7.9.4]_ Error in the `enterprise-messaging` deploy script
- _[cds@7.9.4]_ Properly forward path expression in front of lambda functions for `odata-v2` remote services
- _[cds@7.9.4]_ OData queries selecting the same column with `$count=true`
- _[cds@7.9.4]_ Closed higher end of version range for dependency on `cds-types`

## June 2024

### Added {#jun-24-added}

- _[cds-dk@8.0.2]_ `cds add malware-scanner` adds configurations for `SAP Malware Scanning service`.
- _[cds-dk@8.0.1]_ `cds add hana` and `cds build` now support the SAP HANA artifact type `.hdbeshconfig` required for enterprise search integration.
- _[cds-dk@8.0.1]_ `cds init` adds simplistic `eslint.config.mjs` file to newly created projects.
- _[cds-dk@8.0.1]_ Running any `cds` command in a TypeScript project will print a hint to `cds-ts`.
- _[cds-dk@8.0.1]_ The `cds.build.Plugin` class now supports a `baseModel()` method that returns a CSN that doesn't include features when feature toggles are enabled.
- _[cds-dk@8.0.1]_ `cds add workzone` adds support for SAP BTP Work Zone, Standard Edition.
- _[cds-dk@8.0.1]_ `cds add helm` now supports using external destinations in `backendDestinations` key.
- _[cds-dk@8.0.1]_ `cds add` supports the `--java:mvn` option.
- _[cds-dk@8.0.0]_ `cds init --add` now also allows the shortcut `cds init -a`.
- _[cds-dk@8.0.0]_ `cds add audit-logging` adds configuration for `@cap-js/audit-logging`.
- _[cds-dk@8.0.0]_ `cds add typescript` initializes a bare CDS project with TypeScript nature.
- _[cds-dk@8.0.0]_ `cds add containerize` generates `containerize.yaml` file with configuration required to build the container images by `ctz` CLI.
- _[cds-dk@8.0.0]_ Setting `FORCE_COLOR=1` will now force colored log output.
- _[cds-dk@8.0.0]_ `cds add --package/-p` allows you to specify remote packages (in `npm add` format).
- _[cds-dk@8.0.0]_ `cds add helm` asks prompts to fill in data at first execution.
- _[cds-dk@8.0.0]_ `cds add http` can now generate requests for entities annotated with `odata.draft.enabled`.
- _[cds-dk@8.0.0]_ `cds import` will now support references in `requestBody` for OpenAPI files.
- _[cds-dk@8.0.0]_ Multitenancy-related commands now always print the HTTP status on request errors.
- _[cds-dk@8.0.0]_ `cds add helm` added `HorizontalPodAutoscaler` which can be enabled by `srv.hpa.enabled`.
- _[cds-dk@8.0.0]_ `cds add attachments` adds configurations for `@cap-js/attachments`.
- _[cds-dk@8.0.0]_ Shell completion now supports `fish` shell.
- _[cds-dk@8.0.0]_ `cds add portal` creates configuration for the SAP Cloud Portal service.
- _[cds-dk@8.0.0]_ `compile --to mermaid` exports a CDS model as a mermaid diagram.
- _[cds-dk@7.9.5]_ `cds add hana` and `cds build` now support the HANA artifact type `.hdbeshconfig` required for enterprise search integration.
- _[vscode-cds@8.0.1]_ Commands _CDS: Preview as diagram_ to create a _Mermaid_ class diagram. `@sap/cds-dk 8` is required.
- _[vscode-cds@8.0.1]_ If trace is enabled via `cds.trace.level` the trace file location is shown in the `vscode-cds` _Output_ view.
- _[cds.java@3.0.0]_ Added support for @sap/cds-dk version `8`.
- _[cds.java@3.0.0]_ Implemented instance-based authorization for bound actions & functions.
- _[cds.java@3.0.0]_ Added properties `cds.odataV2.searchMode` and `cds.odataV4.searchMode` to configure how `$search` is handled.
- _[cds.java@3.0.0]_ Correlation IDs are now propagated for messaging services running in structured mode (separating headers from data).
- _[cds.java@3.0.0]_ Setting the new parameter `persistence` of the cds-maven-archetype to `false` generates an application without the JDBC persistence layer.
- _[cds.java@3.0.0]_ The goal `add` of the `cds-maven-plugin` supports adding AuditLog V2 support to a CAP Java project.
- _[cds.java@3.0.0]_ Introduced deep role-based and instance-based authorization checks for CQN statements.
- _[cds.java@3.0.0]_ The goal `npm` of the `cds-maven-plugin` supports the new parameter `commands` to execute multiple npm commands in one execution block.
- _[cds.java@3.0.0]_ Added OpenTelemetry instrumentation for Outbox Services.
- _[cds.java@3.0.0]_ Added actuator end point `/actuator/cds/outboxes` to introspect outbox services.
- _[cds.java@3.0.0]_ Properties `cds.model.provider.extensibility` and `cds.model.provider.toggles` can be used to disable tenant-specific extensions and/or feature toggles dimensions when loading models dynamically from MTX Sidecar.
- _[cds.java@3.0.0]_ The switch `interfacesForAspects` in the `cds-maven-plugin` enables the generation of accessor interfaces for the entities representing targets of the compositions of aspects.
- _[cds4j@3.0.0]_ `CqnPassThroughSearchPredicate` to pass-through search strings to the data store.
- _[cds4j@3.0.0]_ Added new switch `interfacesForAspects` to the code generator configuration to enable the generation of accessor interfaces for targets of the compositions of aspects.
- _[cds@8.0.3]_ Translations for the technical SAP language `1Q` used in support scenarios, for example for translation issues.  See <https://sapui5.hana.ondemand.com/sdk/#/topic/91f21f176f4d1014b6dd926db0e91070> for more.
- _[cds@8.0.2]_ `express` is now an optional peer dependency, to indicate to applications to install it as part of their dependencies.  It is needed for all runtime scenarios, but can be omitted for pure design-time cases like `cds compile` calls.
- _[cds@8.0.0]_ Profile `[attic]` to quickly test with deprecated features like so `CDS_ENV=attic cds watch` or `CDS_ENV=attic jest`.
- _[cds@8.0.0]_ New OData Adapter: Default location header for actions that return an entity (custom handler must set the response status code to 201)
- _[cds@8.0.0]_ New `cds.utils` methods `.stack()` and `.location()` to get the stack trace and location of the caller (not publicly released yet).
- _[cds@8.0.0]_ Protected the methods inherited from `LinkedDefinitions` prototype against accidental and undetected interpretation and usage as CSN element: An error is thrown, when trying to access one of the usual CSN properties, like `.name`, `.kind`, `.type`, ... on them.
- _[cds@8.0.0]_ Escaping single quotes with doubled ones `''` in `.properties` files
- _[cds@8.0.0]_ Support for `@sap/xssec^4`
- _[cds@8.0.0]_ New OData and REST adapter pass error to next such that a custom error middleware added to `cds.middlewares.after` is called
  - Note: The custom middleware must precede the default error middleware (if it remains), for example, by adding via `unshift()`
- _[cds@8.0.0]_ Support for extensibility scenarios in RESTful protocol adapters
- _[cds@8.0.0]_ The built-in CORS middleware can be enabled explicitly with `cds.server.cors = true`.  By default, this is `false` if in production.
- _[cds@8.0.0]_ Remote Service: `useCache` destination option is enabled by default
- _[cds@8.0.0]_ New model processor `cds.compile.to.hana` to generate `.hdbtable`, `.hdbview` files including migration table support.
- _[cds@8.0.0]_ Added `cds.requires.connectivity` indicating whether SAP BTP Connectivity service is required.
- _[cds@8.0.0]_ Support inline where conditions in `@restrict` like `where: (prop = $user.id)`.
- _[cds-mtxs@2.0.1]_ Added HANA build plugin mappings `.hdbeshconfig` and `.hdbcalculationview` required for enterprise search and embedded analytics integration.
- _[cds-mtxs@2.0.1]_ The Service Manager client reports the container state on timeouts.
- _[cds-mtxs@2.0.0]_ Additional end point to get the passcode URL.
- _[cds-mtxs@2.0.0]_ Dependencies for the SAP BTP Connectivity, Audit Logging, and Destinations services are automatically added if `cds.requires.[connectivity|audit-log|destinations]` properties are set, respectively.

### Changed {#jun-24-changed}

- _[cds-dk@8.0.2]_ `cds add http` stores `http` files in a folder `test/http/` by default. Previously, this was `http/`.
- _[cds-dk@8.0.2]_ `cds add helm` removed `saasRegistryParameters` key and moved parameters to `saas-registry`.
- _[cds-dk@8.0.2]_ `cds init` no longer creates a `.cdsrc.json` for Node.js projects.
- _[cds-dk@8.0.2]_ `cds build` configuration cleanup for `data.model` and `service.model` to only support configuration of a single model folder.
- _[cds-dk@8.0.1]_ `cds add multitenancy` now adds the `java` profile in the MTX sidecar config, in addition to `mtx-sidecar`.
- _[cds-dk@8.0.1]_ `cds init` uses Maven Java archetype version 2.10.1 for creating Java projects.
- _[cds-dk@8.0.1]_ `cds init --add java` and other `cds add` commands use Java 21 by default.
- _[cds-dk@8.0.1]_ `cds add helm` now adds env variables directly in _values.yaml_ file instead of mtxs-configmap ref.
- _[cds-dk@8.0.1]_ `cds init` for a Node.js project adds `@cap-js/cds-types` to its `devDependencies`.
- _[cds-dk@8.0.1]_ `cds login` now informs about command-line options ignored when fetching a token.
- _[cds-dk@8.0.1]_ `cds login` now exits with an error in case of clashing parameters.
- _[cds-dk@8.0.1]_ cds shell completion now suggests files/folders when called directly after cds command, for example, `cds pac<tab>` will return files/folders starting with `pac`.
- _[cds-dk@8.0.0]_ `cds deploy --to hana` uses `@sap/hdi-deploy` version 5.
- _[cds-dk@8.0.0]_ `cds deploy` resolves the existing binding for deployment.
- _[cds-dk@8.0.0]_ `cds import` will not generate `ON condition` for association or composition.
- _[cds-dk@8.0.0]_ `cds import` will not add the `@cds.ambiguous` annotation for association or composition.
- _[cds-dk@8.0.0]_ `cds import` now supports OData V2 EDMX file with empty or missing `EntityContainer`.
- _[cds-dk@8.0.0]_ `cds init` will now initialize a cds 8 project.
- _[cds-dk@8.0.0]_ `cds add approuter` will not add XSUAA under the hood any longer.
- _[cds-dk@8.0.0]_ `cds add hana` and `cds build` use `@sap/hdi-deploy` version 5.
- _[cds-dk@8.0.0]_ `cds add hana` now uses `@cap/js-hana`.
- _[cds-dk@8.0.0]_ `cds add multitenancy` uses `@sap/cds-mtxs` version 2.
- _[cds-dk@8.0.0]_ `cds add multitenancy` does not add the `UIFlexDeveloper` role anymore.
- _[cds-dk@8.0.0]_ `cds add helm` doesn't expose srv and sidecar workload in multi tenant mode if approuter is present.
- _[cds-dk@8.0.0]_ `cds add helm` changed `values.yaml` structure.
- _[cds-dk@8.0.0]_ `cds add helm` command doesn't generate static files (subcharts and templates) when `cds add` is executed. Instead, it generates the `chart` folder containing all the static data in the `gen` folder when `cds build` is executed.
- _[cds-dk@8.0.0]_ `cds add xsuaa` now uses `@sap/xssec` version 4.
- _[cds-dk@8.0.0]_ `cds add tiny-sample` uses the same `schema.cds` file name as `cds add sample`.
- _[cds-dk@8.0.0]_ `cds add html5-repo` now adds the `deploy_mode: html5-repo` parameter to the _mta.yaml_.
- _[cds-dk@8.0.0]_ `cds add html5-repo` uses `gen` (Node.js) or `.` (Java) for the app deployer `path`.
- _[cds-dk@8.0.0]_ `cds add mta` now creates an _mta.yaml_ with schema version 3.3.0.
- _[cds-dk@8.0.0]_ `cds login` no longer falls back to a legacy URL or a GET request for tokens.
- _[cds-dk@8.0.0]_ `cds login` now enforces HTTPS when contacting remote URLs.
- _[cds-dk@8.0.0]_ `cds login` no longer saves Refresh Tokens by default for security reasons. (Use `--save-refresh-token` to enable this feature.)
- _[cds-dk@8.0.0]_ `cds build` cleanup of build task property `use`.
- _[cds-dk@8.0.0]_ `cds add helm` default value of `xsappname` will contain Release Namespace as well.
- _[cds-dk@8.0.0]_ `cds build` allows custom plugins to be executed after the built-in plugins.
- _[cds-dk@8.0.0]_ `cds login` eagerly fetches the passcode URL (if supported by `@sap/cds-mtxs`) and prints it on prompt.
- _[cds-dk@8.0.0]_ `cds extend` and `cds activate` have been deprecated and are now removed. (You can still migrate and download projects, see `cds migrate --help` and `cds extend --help`.)
- _[cds-dk@8.0.0]_ Remove obsolete classic MTX checks and enforce `@sap/cds` >= 7.
- _[cds-dk@8.0.0]_ `cds build` uses cds.compile.to.hana API with `@sap/cds` 8.
- _[cds-dk@8.0.0]_ `cds bind` and `cds deploy` use direct http requests instead of `cf curl`.
- _[cds-dk@8.0.0]_ `cds build --for java` no longer generates localized EDMX files by default. It can be enabled using `contentLocalizedEdmx` build task option.
- _[cds-dk@8.0.0]_ `@cap-js/sqlite`/`better-sqlite3` is used in dependencies instead of `sqlite3`.
- _[cds-dk@8.0.0]_ `cds add sample` now generates comma-separated CSV files, instead of semicolon-separated, in order to be more consistent with `cds add data`.
- _[cds-dk@8.0.0]_ `cds build` no longer supports the deprecated register API for custom plugins.
- _[cds-dk@8.0.0]_ `cds init` no longer adds `devDependencies` for `eslint` and `@sap/eslint-plugin-cds` when creating a new project.
- _[cds-dk@8.0.0]_ `cds init` now creates `eslint.config.mjs` file with reference to `@sap/cds/eslint.config.mjs`.
- _[cds-dk@7.9.4]_ `cds init` uses latest Maven Java archetype version 2.10.1 for creating Java projects.
- _[cds-dk@7.9.4]_ `cds bind` and `cds deploy` use direct http requests instead of `cf curl`.
- _[eslint-plugin-cds@3.0.4]_ Internal refactorings
- _[vscode-cds@8.0.1]_ Dropped official support for CDS compilers <4. The extension likely still works with older versions, but compatibility is not guaranteed.
- _[vscode-cds@8.0.1]_ Minimum VSCode version is now 1.89.1
- _[cds-compiler@5.0.2]_ Node 18 is now the minimum required version.
- _[cds-compiler@5.0.2]_ API `CompilationError`s will no longer serialize all compiler messages into `e.message`.
  Use `e.messages[]` instead or `e.toString()` to serialize errors into a string.
- _[cds-compiler@5.0.2]_ CDL parser: Annotations that can't be applied are now rejected.
- _[cds-compiler@5.0.2]_ compiler:
  - `extend` statements on "namespaces" (paths that are not definitions) are now always errors.
  - non-structured events are rejected
  - `$self` references in JOINs are rejected if they could lead to issues in SQL rendering.
  - non-string enum definitions must have a value.
  - A top-level definition `$self` is rejected. `$self` is considered a reserved name.
  - `$at.from`/`$at.to` are deprecated; use `$valid.from`/`$valid.to` instead.
- _[cds-compiler@5.0.2]_ to.hdbcds: The HDBCDS backend is now considered deprecated.
- _[cds-compiler@5.0.2]_ to.edm(x):
  - Set default nullability to `true` for collection like properties (was `false` before).
  - Raise message ids `odata-spec-violation-namespace`, `odata-spec-violation-no-key` from warning to error.
- _[cds-compiler@5.0.2]_ to.sql:
  - `@cds.persistence.exists` is _not_ propagated to generated localization views (`localized.*`)
  - Option `fewerLocalizedViews` is now enabled by default.
  - Option `betterSqliteSessionVariables` is now enabled by default.
- _[cds.java@3.0.0]_ The minimum required @sap/cds-dk version is now `7`.
- _[cds.java@3.0.0]_ The minimum required Cloud SDK version is now `5.9.0`.
- _[cds.java@3.0.0]_ The minimum required Maven version for a CAP Java project is now `3.6.3`.
- _[cds.java@3.0.0]_ The default Node.js version installed by the CDS Maven Plugin is updated to `v20.14.0`.
- _[cds.java@3.0.0]_ Enabled parameters `sharedInterfaces` and `uniqueEventContext` by default in goal `generate`.
- _[cds.java@3.0.0]_ The Spring Boot `cloud` profile is now set as production profile by default.
- _[cds.java@3.0.0]_ CSRF Token Handling for Remote OData Services is now disabled by default. It can be enabled by setting `cds.remote.services.<key>.http.csrf.enabled` to `true`.
- _[cds.java@3.0.0]_ The SQL optimization mode for SAP HANA is now set to `hex` by default.
- _[cds.java@3.0.0]_ Setting the configuration property `cds.outbox.persistent.enabled` to `false` now disables all persistent outbox services.
- _[cds.java@3.0.0]_ The lazy internationalization of OData V4 metadata is enabled by default. It can be disabled by setting `cds.odata-v4.lazy-i18n.enabled` to `false`.
- _[cds.java@3.0.0]_ The `ModelChangedEventContext` now takes an `Instant` instead of a `Long` as timestamp. This timestamp is used to only refresh model caches where the model was cached before that time.
- _[cds.java@3.0.0]_ The ["proof of possession"](https://github.com/SAP/cloud-security-services-integration-library/tree/main/java-security#proof-token-validation) check in the SAP Security Library is enabled by default for IAS scenarios. This requires clients to always send the client certificate in addition to the actual JWT token. It can disabled by setting the configuration property `sap.spring.security.identity.prooftoken` to `false`.
- _[cds.java@3.0.0]_ The property `cds.auditLog.personalData.throwOnMissingDataSubject` now defaults to `true`, causing exceptions in case of incomplete personal data annotations.
- _[cds.java@3.0.0]_ CQN queries on application services using expand or inline without specifying an association to expand resp. inline all associations are rejected now.
- _[cds.java@3.0.0]_ The `cds-services-archetype` generates CAP Java projects using JDK 21 by default, if no JDK version is specified.
- _[cds.java@3.0.0]_ MessagingServices now represent message and headers in a structured Map-based format by default. The old string-based format can be used by setting `cds.messaging.services.<key>.structured: false`
- _[cds4j@3.0.0]_ Deprecated `CqnSearchPredicate`, instead use `CqnSearchTermPredicate`
- _[cds4j@3.0.0]_ Deprecated `Modifier.search(String)`, instead use `Modifier.searchTerm(CqnSearchTermPredicate)`
- _[cds4j@3.0.0]_ Deprecated session context variable `$user.tenant`, instead use `$tenant`
- _[cds4j@3.0.0]_ Deprecated session context variables `$at.from` and `$at.to`, instead use `$valid.from` and `$valid.to`
- _[cds4j@3.0.0]_ Removed deprecated option `supported_locales` for using locale-specific views on H2 and SQLite
- _[cds4j@3.0.0]_ Removed deprecated `cqn(String)` methods in `Insert`, `Update` and `Upsert`
- _[cds4j@3.0.0]_ Optimized SQL for to-many expands by parent-keys
- _[cds@8.0.2]_ Creation via draft by association is forbidden with `403` response.
- _[cds@8.0.2]_ New OData adapter captures input of `$search` as plain val without applying OData grammar.
- _[cds@8.0.2]_ ´not null´ is not validated for action/function params. Use `@mandatory` instead.
- _[cds@8.0.2]_ REST adapter rejects unknown input if not annotated with `@open`. Previously, it removed the unknown elements from the payload.
- _[cds@8.0.0]_ Meant for tests only: `cds.User.default` points to a singleton instance of `cds.User` instead of a class now.
- _[cds@8.0.0]_ Never public: `express.Request.user` or `.tenant` must not be used anywhere
  > NOTE: that was never public nor guaranteed to exist at all!
  > Always only use `cds.Request.user/tenant` or `cds.context.user/tenant`.
- _[cds@8.0.0]_ Never public: `cds.Request.protocol` was 'odata-v4' and is now 'odata'.
- _[cds@8.0.0]_ Errors sent to clients now include a stack trace in the `stack` property during development and in tests
  > NEVER test with `.toEqual()` but always only with `.toMatchObject()`.
- _[cds@8.0.0]_ Node.js 18 is now the minimum required Node.js version. Version 16 is no longer supported.
- _[cds@8.0.0]_ `cds.fiori.draft_deletion_timeout` is enabled with default value `30d`
- _[cds@8.0.0]_ `srv.on('error')` is only invoked for errors during `srv.dispatch()`, i.e., for errors that occur while the respective request is being processed by a service instance
  - Specifically, `srv.on('error')` is no longer invoked for an error that occurs in the protocol adapter. Instead, use a custom middleware added to the beginning of `cds.middlewares.after`.
  - This change does not affect the legacy OData adapter.
- _[cds@8.0.0]_ In `bypass_draft`, direct active modifications now have event `CREATE` instead of `NEW`.
- _[cds@8.0.0]_ `cds compile --to serviceinfo` returns the correct URL path for Java applications.
- _[cds@8.0.0]_ The default index page is no longer served if `NODE_ENV` is set to `production`. Set `cds.server.index = true` to restore previous behavior.
- _[cds@8.0.0]_ Delete deprecated cds build stub.
- _[cds@8.0.0]_ Multiple entries in `cds.requires.<name>.vcap` are now ANDed instead of ORed, so that e.g. multiple bound services of the same kind can be filtered more easily.  For example, `{ "vcap": { "label": "xsuaa", "tag": "broker" }}` can be used to only bind an XSUAA instance (out of many) with the `xsuaa` label AND the `broker` tag.
- _[cds@8.0.0]_ Role `cds.Subscriber` removed from predefined mock users.
- _[cds@8.0.0]_ REST adapter uses managed transactions
- _[cds@8.0.0]_ The default index page got a new design.
- _[cds@8.0.0]_ Syntax error in batch body is handled as bad request
- _[cds-mtxs@2.0.2]_ Calls to Service Manager now include the `Client-ID` and `Client-Version` headers.
- _[cds-mtxs@2.0.0]_ `@sap/cds-mtxs` now requires `@sap/hdi-deploy >= 4`.
- _[cds-mtxs@2.0.0]_ Deprecated endpoint `upgradeAll` has been removed from `SaasProvisioningService`.
- _[cds-mtxs@2.0.0]_ Use the `cds.compile.to.hana` API to support cds plugins such as embedded analytics.
- _[cds-mtxs@2.0.0]_ When pushing an extension, the extension is blocked if it contains critical annotations.
- _[cds-mtxs@1.18.2]_ All requests to Service Manager are now retried 3 times by default. This value can be modified by setting `cds.requires.mulitenancy.serviceManager.retries`.
- _[ux-cds-odata-language-server-extension@1.14.1]_ Updated to support changes in annotation vocabularies
- _[ux-cds-odata-language-server-extension@1.14.1]_ Enhanced code completion performance

### Fixed {#jun-24-fixed}

- _[cds-dk@8.0.1]_ `cds add` is failing if one of the `canRun` conditions in the plugin isn't satisfied.
- _[cds-dk@8.0.1]_ `cds version` and other CLI commands no longer color their output if e.g. stdout is redirected.
- _[cds-dk@8.0.1]_ `CHANGELOG.md` is part of npm package.
- _[cds-dk@8.0.1]_ `cds build` determines the correct feature names if a `.cds` file path contains the name `fts`.
- _[cds-dk@8.0.1]_ `cds watch` now ignores `.git/**`
- _[cds-dk@8.0.0]_ `cds add mta` correctly adds the logging service with `@sap/cds >= 7.5`, if not explicitly disabled.
- _[cds-dk@8.0.0]_ `cds add` doesn't fail for Java projects if `srv/pom.xml` doesn't exist.
- _[cds-dk@8.0.0]_ `cds login` now prints the App URL, reports HTTP 404 errors correctly and gives better mitigation hints.
- _[cds-dk@8.0.0]_ `cds deploy` consistently resolves configured service models, where previously the db model had priority.
- _[cds-dk@8.0.0]_ `cds build` checks for the existence of a package.json file in the root folder of Node.js projects.
- _[cds-dk@8.0.0]_ `cds add` sets `cds.cli` before plugins are loaded.
- _[cds-dk@8.0.0]_ `cds add http` supports custom keys, including composite keys.
- _[cds-dk@8.0.0]_ `cds add approuter` will not create a `router` subfolder if an `xs-app.json` is found in the `app` directory.
- _[cds-dk@7.9.5]_ `cds add` is failing if one of the `canRun` conditions in the plugin isn't satisfied.
- _[cds-dk@7.9.5]_ `cds watch` now ignores `.git/**`
- _[cds-dk@7.9.4]_ Dependency update to fix CVE-2024-37890
- _[cds-dk@7.9.3]_ `cds add data` now has a more precise foreign key type conversion from CSV data, covering edge cases.
- _[cds-compiler@5.0.6]_ for.seal: Don't generate DRAFT artifacts.
- _[cds-compiler@5.0.4]_ CDL parser: an `extend entity` and `extend aspect` with an extensions for the
  same element now correctly leads to an error, because it resulted in part of the
  extension being simply dropped.  Remark: an `extend type` and the recommended
  plain `extend` led to an error in that situation already before.
- _[cds-compiler@5.0.4]_ to.sql: Conditions inside filters in combination with foreign key aliases were
          not properly translated in rare cases.
- _[cds-compiler@5.0.4]_ Update OData Vocabularies: 'PDF', 'UI'.
- _[cds-compiler@5.0.2]_ for.odata: Propagate all `@odata { Type, MaxLength, Precision, Scale, SRID }` to generated foreign keys.
- _[cds-compiler@4.9.6]_ for.seal: Don't generate DRAFT artifacts.
- _[cds-compiler@4.9.6]_ for.odata: Propagate all `@odata { Type, MaxLength, Precision, Scale, SRID }` to generated foreign keys.
- _[cds-compiler@4.9.6]_ to.edm(x): Respect `AppliesTo` specification in term definitions for actions and functions.
- _[cds-compiler@4.9.6]_ to.sql: Conditions inside filters in combination with foreign key aliases were not properly translated in rare cases.
- _[cds.java@3.0.0]_ Fixed a bug, causing draft fields to be generated for structured types and arrays of structured types.
- _[cds.java@3.0.0]_ Fixed a bug, causing issues when using `@cds.java.version` on draft-enabled entities.
- _[cds.java@3.0.0]_ Fixed a variable scale of `Decimal` used as action/function parameter.
- _[cds.java@2.10.2]_ Fixed a bug, causing the SMS client to retrieve subscribed tenants from the Subscription Manager Service without pagination.
- _[cds.java@2.10.1]_ Fixed a bug in MT applications, causing even more requests to ServiceManager in an overload situation (429 responses).
- _[cds.java@2.10.1]_ Fixed a bug, causing unexpected transaction rollbacks during processing of outbox messages. This might have resulted in messages delivered with a delay.
- _[cds.java@2.10.1]_ Fixed a bug in the developer dashboard which caused a crash when the application is reloaded by Spring Dev Tools in CDS watch mode.
- _[cds.java@2.10.1]_ Fixed a bug, causing the developer dashboard to not be completely disabled in production.
- _[cds4j@3.0.0]_ OData v4 - select list items of `$select` are not ignored any longer but correctly applied to the result of the `$apply`-pipeline, if a request contains both `$apply` and `$select`
- _[cds4j@2.10.1]_ SAP HANA: Don't generate statement-level collation clause in subqueries
- _[cds4j@2.10.1]_ Fix UnsupportedOperationException on deep updates with `@cds.java.version` elements
- _[cds@8.0.3]_ Empty feature set by switched off feature toggles
- _[cds@8.0.3]_ Allow deviating response types for `$batch`, e. g. input `multipart` and output `json`
- _[cds@8.0.2]_ `cds.log(…, 0)` now properly changes log level to `SILENT` if called after the respective logger had already been created.
- _[cds@8.0.2]_ `cds.test` recommends version 7 of `chai-as-promised`.  Version 8 is ESM-only and does not work with `cds.test` at the moment.
- _[cds@8.0.2]_ Loading of `cds.plugins` now respects the (internal!) property `cds.env.plugins` again.
- _[cds@8.0.2]_ Proper error handling for invalid draft requests in combination with `$apply`
- _[cds@8.0.2]_ Usage of `Date` values in `cds.ql` expressions
- _[cds@8.0.2]_ Error in `enterprise-messaging` deploy script
- _[cds@8.0.2]_ Error handling for bad navigation properties (like in `$orderby=prop1/prop2`) in new OData adapter
- _[cds@8.0.2]_ Properly forward path expression in front of lambda functions for `odata-v2` remote services
- _[cds@8.0.1]_ always enforce `attic` profile
- _[cds@8.0.0]_ Failing logins with internal pre-release versions from git main branches.
- _[cds@8.0.0]_ Prevent inconsistent ordering when selecting messages from outbox
- _[cds@8.0.0]_ Creating child-nodes with `@Core.Immutable` fields
- _[cds@8.0.0]_ ETag handling in draft cancel
- _[cds@8.0.0]_ `if-none-match` with asterisk in update handler
- _[cds@8.0.0]_ `odata.mediaContentType` for empty stream is always `null`
- _[cds@8.0.0]_ `$select/$expand` large binaries by draft edit and activate does not return large binaries
- _[cds@8.0.0]_ Error message for actions/functions with wrong path
- _[cds@8.0.0]_ Direct `READ` of entities that are `@cds.autoexposed` when the `cds.env.features.odata_new_adapter` flag is set to `true`
- _[cds@8.0.0]_ Reject `PATCH` requests where foreign keys cannot be determined statically or where multiple entities need to be updated
- _[cds@8.0.0]_ actions / functions bound to a collection of entities in case `cds.features.odata_new_parser` is enabled
- _[cds@8.0.0]_ `cds.compile.to.hana` generates `afterImage` only if migration tables exist.
- _[cds@7.9.3]_ `cds compile --to serviceinfo` returns the correct URL path for Java applications.
- _[cds@7.9.3]_ Prevent HANA deadlocks when processing outbox table
- _[cds@7.9.3]_ Invalid cache for `SiblingEntity` requests
- _[cds@7.9.3]_ `cds.test` recommends version 7 of `chai-as-promised`.  Version 8 is ESM-only and does not work with `cds.test` at the moment.
- _[cds@7.9.3]_ Loading of `cds.plugins` now respects the (internal!) property `cds.env.plugins` again.
- _[cds@7.9.3]_ `req.data` and `req.INSERT.entries` were not pointing to same object if it contains more than one entry.
- _[cds-mtxs@2.0.2]_ Reduced number of Service Manager requests to `service_instances` in the error case.
- _[cds-mtxs@2.0.1]_ Improved robustness in case of temporary extension inconsistencies.
- _[cds-mtxs@2.0.1]_ The Service Manager client now stores instance and binding locations used for async polling in-memory, allowing parallel subscriptions for single-instance applications.
- _[cds-mtxs@2.0.1]_ The Service Manager client automatically recreates instances in "creation failed" state on subscription.
- _[cds-mtxs@1.18.2]_ Certificate check for sms subscription now also compatible with kyma.
- _[cds-mtxs@1.18.2]_ Feature toggles can contain `.` again.
- _[cds-mtxs@1.18.2]_ Extension field limit check now correctly accepts `0` as no fields to be extended.

### Removed {#jun-24-removed}

- _[cds-dk@8.0.0]_ `cds add notebook` is removed.  CAP Jupyter Notebooks have been replaced by custom CAP Notebooks for VS Code which are now part of the CDS Editor.  See <https://cap.cloud.sap/docs/tools/#add-cds-editor> for more.
- _[cds-compiler@5.0.2]_ API: Deprecated functions `preparedCsnToEdmx` and `preparedCsnToEdm` were removed.
  Use `to.edm(x)` instead.
- _[cds.java@3.0.0]_ Removed deprecated feature `cds-feature-xsuaa`. As a consequence, support for SAP's `spring-xsuaa` library has been removed as well. Use `cds-feature-identity` in combination with SAP's `spring-security` library instead.
- _[cds.java@3.0.0]_ Removed support for the classic MTX Sidecar. The `cds.multitenancy.mtxs.enabled` property has been removed, as it is now obsolete.
- _[cds.java@3.0.0]_ The deprecated `MtSubscriptionService` API and the corresponding compatibility mode `cds.multitenancy.compatibility.enabled` have been removed in favor of the `DeploymentService`.
- _[cds.java@3.0.0]_ The deprecated HTTP-based tenant upgrade APIs `/mt/v1.0/subscriptions/deploy` and `PUT /messaging/v1.0/em/<tenant id>` have been removed in favor of the task-based upgrade approach.
- _[cds.java@3.0.0]_ The goal `addSample` is removed from the `cds-maven-plugin` and replaced with goal `add` with parameter `-Dfeature=TINY_SAMPLE`.
- _[cds.java@3.0.0]_ Removed various deprecated classes, methods and properties.
- _[cds@8.0.2]_ Type information is no longer shipped as part of `@sap/cds`. Instead, the `@cap-js/cds-types` package has to be explicitly installed as devDependency for projects requiring type support. Installing the package is sufficient to add type support back in.
- _[cds@8.0.2]_ Invalid annotations `@Common.FieldControl.Mandatory` and `@FieldControl.Mandatory` → use `@Common.FieldControl: #Mandatory` instead
- _[cds@8.0.2]_ Invalid annotations `@Common.FieldControl.ReadOnly` and `@FieldControl.ReadOnly` → use `@Common.FieldControl: #ReadOnly` instead
- _[cds@8.0.0]_ Legacy leftovers for old middlewares: `ExtensedModel:middleware4` (in combination with extensibility)
- _[cds@8.0.0]_ Legacy request header `x-correlationid` which was always just a misspelled variant of `x-correlation-id`.
- _[cds@8.0.0]_ Legacy configuration option `cds.requires.middlewares = false`
- _[cds@8.0.0]_ Legacy configuration option `cds.features.serve_on_root = true`
- _[cds@8.0.0]_ Legacy draft implementation `cds.fiori.lean_draft = false`
- _[cds@8.0.0]_ Legacy API `req.user.locale`. Use `req.locale` instead.
- _[cds@8.0.0]_ Legacy API `req.user.tenant`. Use `req.tenant` instead.
- _[cds@8.0.0]_ Legacy configuration `cds.drafts.cancellationTimeout`. Use `cds.fiori.draft_lock_timeout` instead.
- _[cds@8.0.0]_ Legacy annotation `@assert.enum`. Use `@assert.range` instead.
- _[cds@8.0.0]_ Legacy properties of `cds.Request`: `req.tokenInfo`, `req._.shared`, and `req.attr`
- _[cds@8.0.0]_ Legacy type facade files from `@sap/cds/apis/...`. Use `@sap/cds` as only type import.
- _[cds@8.0.0]_ Legacy quirks mode. From now on, `cds.ql` generates spec compliant `ref` paths in INSERT/UPDATE/DELETE CQNs. The database services expect the same.
  - Use `{ INSERT: { into: { ref: ['Authors']}}}` instead of `{ INSERT: { into: 'Authors' }}`
  - Use `{ UPDATE: { entity: { ref: ['Authors']}}}` instead of `{ UPDATE: { entity: 'Authors' }}`
  - Use `{ DELETE: { from: { ref: ['Authors']}}}` instead of `{ DELETE: { from: 'Authors' }}`
- _[cds@8.0.0]_ Deprecated csn entity proxy `<entity>_texts`. Use `<entity>.texts` instead.
- _[cds@8.0.0]_ Deprecated built-in `cds.compile.to.gql` and `cds.compile.to.graphql` compile targets. These are provided by `@cap-js/graphql` plugin versions >= 0.9.0.
- _[cds@8.0.0]_ Deprecated API `srv.stream`. Use `SELECT` with a single `cds.LargeBinary` column instead.
- _[cds-mtxs@2.0.1]_ `@sap/instance-manager` is not supported any longer as a fallback to the built-in Service Manager client.

## May 2024

### Added {#may-24-added}

- _[vscode-cds@7.9.0]_ Commands _CDS: Generate Model Data as JSON/CSV_ to create a number of records with test data for a selected entity.
- _[vscode-cds@7.9.0]_ Command _CDS: Generate HTTP Requests_ to create HTTP requests for a selected service or entity.
- _[vscode-cds@7.9.0]_ Syntax highlighting for the `cds` language to the markdown editor (not to the _preview_ though).
- _[cds.java@2.10.0]_ Option to set a `Cache-Control: max-age=<seconds>` HTTP header via `@http.CacheControl: {maxAge: <seconds>}` CDS annotation on stream properties. The header allows to control the behavior of caches, the `max-age` (in seconds) specifies the maximum age of the content before it becomes stale.
- _[cds.java@2.10.0]_ Change Tracking: Annotation `@changelog` on compositions and to-one associations can be used to write human-readable values into the change log instead of technical keys of the target entity.
- _[cds.java@2.10.0]_ Support OData V4 [Key-as-Segment Convention](https://docs.oasis-open.org/odata/odata/v4.02/csd01/part2-url-conventions/odata-v4.02-csd01-part2-url-conventions.html#KeyasSegmentConvention)
- _[cds.java@2.10.0]_ Support filtering grouped data by aggregated values with `$these/aggregate` for OData V4 analytical queries.
- _[cds.java@2.10.0]_ New Developer Dashboard (alpha) that provides a centralized point where developers can efficiently manage and monitor their CAP applications.
- _[cds.java@2.10.0]_ Introduced Kafka consumer/producer configuration via messaging configuration (`cds.messaging.services.[my_kafka_service].queue.config.[consumer/producer].[property]: "value"`).
- _[cds4j@2.10.0]_ Introduced `CdsDiffProcessor` API to compare images of the data between each other and observe differences in them.
- _[cds4j@2.10.0]_ Support fuzzy search on SAP HANA
  - via config option `cds.sql.hana.search.fuzzy: true`
  - fuzziness threshold default `cds.sql.hana.search.fuzzinessThreshold` (default: 0.8)
  - `@Search.fuzzinessThreshold` element annotation to override the default fuzziness threshold
- _[cds4j@2.10.0]_ Support exact search with wildcards `*` and `?`.
- _[cds4j@2.10.0]_ New `ContainmentTest` modes `MATCH` and `SEARCH` with wildcard support.

### Changed {#may-24-changed}

- _[cds-dk@7.9.1]_ `cds add mta` will now use the new `sap_java_buildpack_jakarta` buildpack configuration in the `mta.yaml`.
- _[cds-mtxs@1.18.1]_ Extension linter can now be configured for extensions of existing fields.
- _[cds-mtxs@1.18.1]_ With extensions, the deployment service now uses a separate folder for each deployment to improve parallel upgrade and extension operations.
- _[cds-mtxs@1.18.1]_ Trailing parts of secrets are not logged in case of errors anymore.

### Fixed {#may-24-fixed}

- _[cds-dk@7.9.2]_ `cds add data` now uses the correct JSON type for foreign keys from CSV data, e.g. number instead of string
- _[cds-dk@7.9.2]_ `cds bind` now calls resolve in sequence to avoid file access exceptions
- _[cds-dk@7.9.1]_ `eslint` 9 doesn't crash anymore if called in a project created with `cds init`
- _[eslint-plugin-cds@3.0.3]_ Disabling ESLint for the next line via `eslint-disable-next-line` now works properly in _cds_ files
- _[vscode-cds@7.9.0]_ code completion for elements snippet now works when annotating artifacts using paths such as `MyService.SomeEntity` or when triggered at particular positions including line start
- _[vscode-cds@7.9.0]_ maintain translation quickfix could have used an existing translation file of a reuse component
- _[cds-compiler@4.9.4]_ to.sql:
  - always include `tenant` column in foreign key references.
  - reject `tenantDiscriminator` option only if sql dialect is `hana` and if  `withHanaAssociations` option is set.
- _[cds-compiler@4.9.2]_ compiler: Rewriting annotation expression paths in structures of projections has been improved.
- _[cds-compiler@4.9.2]_ to.edm(x):
  - Operator `/` represents `DivBy` operator, explicit `DivBy` is replaced with `Div` as integer division.
- _[cds-compiler@4.9.2]_ to.sql: consider all associations in tenant dependent entity for referential constraint generation
- _[cds.java@2.10.0]_ Fixed a bug, causing incorrect session context variables when processing database statements.
- _[cds.java@2.9.2]_ Fixed a bug, causing connections to PostgreSQL databases on Google Cloud Platform (GCP) to fail because missing support for mutual TLS.
- _[cds.java@2.9.1]_ Fixed a bug, causing the index page to fail to load in a Native Image application.
- _[cds4j@2.10.0]_ Fixed "Cannot set reference. Reverse associations are not supported" exception on insert with data for to-many associations.
- _[cds@7.9.2]_ Server crash in case of certain errors in Cloud SDK
- _[cds@7.9.2]_ Bug in restriction of entities modeled as composition of aspects
- _[cds@7.9.2]_ `$search`: resolve an exception accessing `req.query.elements`
- _[cds@7.9.2]_ Ignore flattened associations in projection on remote entities
- _[cds@7.9.2]_ Falsy keys in `cds.ql` were ignored in usage like `SELECT.from(Books, 0)`
- _[cds@7.9.1]_ `cds.compile.to.sql` doesn't fail for older compiler versions if `postgres` keywords aren't defined
- _[cds@7.9.1]_ `cds compile --to serviceinfo` no longer detects a Java project if there is a pom.xml file in a subfolder of `app/`
- _[cds@7.9.1]_ `acquireTimeoutMillis` is ensured if custom pool config is provided
- _[cds-mtxs@1.18.1]_ Callback to saas-registry now works properly with certificate-based binding.
- _[cds-mtxs@1.18.1]_ The passcode URL returned by the token endpoint no longer contains a 'cert' subdomain.

### Removed {#may-24-removed}

- _[vscode-cds@7.9.0]_ Toolbar button _Open with CDS Text Editor_ from graphical modeler, modeler now handles both directions
  to switch between graphical and textual editor.

## April 2024

### Added {#apr-24-added}

- _[cds-dk@7.9.0]_ Shell completion in Linux, macOS, Windows for cds commands and parameters (beta)
- _[cds-dk@7.9.0]_ `cds bind` supports shared service instances. Service keys are created in the space where a service instance was shared from.
- _[cds-dk@7.9.0]_ `cds add data` now can generate actual data (not only a header line), both as `csv` and `json` structure.
- _[cds-dk@7.9.0]_ `cds subscribe` now allows to pass tenant metadata and HDI parameters using parameter `--body <json>`.
- _[cds-dk@7.9.0]_ `cds add http` has a `--dry` flag to write the generated http requests to stdout.
- _[cds-dk@7.9.0]_ `cds add hana` and `cds build` support undeploy of calculation views by default.
- _[cds-dk@7.9.0]_ `cds bind` supports custom credentials to overwrite cloud service credentials.
- _[cds-dk@7.9.0]_ Better support for `profiles` in cds schema for `package.json` and `.cdsrc.json`.
- _[cds-dk@7.9.0]_ `cds bind` supports custom credentials to overwrite cloud credentials of multiple services.
- _[cds-dk@7.8.2]_ `cds compile` to `openapi` now maps `@ODM.oidReference.entityName` annotation to generate `x-sap-odm-oid-reference-entity-name`.
- _[cds-dk@7.8.1]_ `cds add` plugins now support custom flags.
- _[cds-dk@7.8.1]_ `cds add kafka` is also enabled for Helm deployments.
- _[cds-dk@7.8.1]_ `cds add enterprise-messaging` and `cds add enterprise-messaging-shared` now support a `--cloudevents` flag which automatically adds `cds.requires.messaging.format = 'cloudevents'`.
- _[eslint-plugin-cds@3.0.0]_ Support ESLint flat configurations (`eslint@v9`) and make them available as _recommended_, _all_.
- _[eslint-plugin-cds@2.7.0]_ Add `getRootPath()` method to `context` object to get the project rootPath.
- _[cds-compiler@4.9.0]_ compiler: Annotations with expressions are now rewritten when propagated.
- _[cds-compiler@4.9.0]_ for.seal: Added API function that produces a CSN for SEAL.
- _[cds-compiler@4.9.0]_ for.odata/to.edm(x): Support annotation path expressions including path flattening.
- _[cds.java@2.9.0]_ UI content from the `app` folder is now served automatically for local development.
- _[cds.java@2.9.0]_ Links to web applications from `app` folder are now added automatically to the index page for local development.
- _[cds.java@2.9.0]_ OData V4 index page content now provides a `Fiori Preview` link for each entity, loading a dynamically generated Fiori sample application.
- _[cds.java@2.9.0]_ Added support for communicating with MTX sidecar based on a bound instance of identity service (IAS).
- _[cds.java@2.9.0]_ CSRF token retrieval for Remote OData Services can now be disabled by setting `cds.remote.services.<key>.http.csrf.enabled` to `false`.
- _[cds.java@2.9.0]_ The goal `add` of the `cds-maven-plugin` supports adding a complex and tiny sample to a CAP Java project.
- _[cds.java@2.9.0]_ A set of property defaults recommended for production can now be set at once by setting `cds.environment.production.enabled` to `true` or marking a specific Spring profile as the production profile by setting `cds.environment.production.profile` to (for example) `cloud`. The properties set include strict disabling of mock users and the index page.
- _[cds.java@2.9.0]_ The goal `generate` of the `cds-maven-plugin` provides the new switch `uniqueEventContexts` to prefix event context interfaces for bound actions / functions with the entity name. This avoids possible naming clashes for operations with the same name for different entities.
- _[cds.java@2.9.0]_ Added a new property `cds.sql.inlineCount.mode` to configure how inline counts are calculated.
- _[cds4j@2.9.0]_ Configuration option `cds.sql.inlineCount` to specify if inline-count is executed via `window-function` or an additional `query`.
- _[cds@7.9.0]_ Option `cds.env.sql.transitive_localized_views: false` to skip generating transitive localized views for entities which don't have own localized elements, but only associations to such. Supported for Java and new database services in Node.js (ignored for old ones).
- _[cds@7.9.0]_ Option `cds.env.sql.native_hana_associations: false` to skip generating native HANA associations.
- _[cds@7.9.0]_ Running `cds compile --to sql` with `@cap-js/sqlite` installed now uses `session_context('$user.locale')` in generated DDL statements instead of generating static localized views for 'en', 'fr', and 'de' (same for `cds.deploy`).
- _[cds@7.9.0]_ `api`: export reserved keywords for postgres via `cds.compiler.to.sql.keywords.postgres`
- _[cds@7.9.0]_ Kind `legacy-hana` and profile `better-hana` for local testing scenarios.
- _[cds@7.9.0]_ Support for PDF files (MIME type `application/pdf`) when the `cds.env.features.odata_new_adapter` flag is set to `true`
- _[cds@7.9.0]_ Lean draft: Support for filtered compositions (remain in the document)
- _[cds@7.9.0]_ Support for `COUNT_DISTINCT` as OData data aggregation default method
- _[cds@7.9.0]_ Better support for `profiles` in cds schema for `package.json` and `.cdsrc.json`
- _[cds@7.9.0]_ Performance improvement for generating `@odata.context` url if `cds.features.odata_new_parser` is enabled
- _[cds@7.9.0]_ Alpha support for SAP Event Broker-based messaging (kind `event-broker`)
- _[cds-mtxs@1.18.0]_ `cds-mtx subscribe <tenant> --body <json>` now allows to pass tenant metadata and HDI parameters.

### Changed {#apr-24-changed}

- _[cds-dk@7.9.0]_ `cds deploy --to hana` warns about using custom service name, e.g `--to hana:myService` and `--vcap-file` at the same time.
- _[cds-dk@7.9.0]_ `cds compile` to `openapi` now throws an error when `@protocol : 'none'` is given.
- _[cds-dk@7.9.0]_ `--data:for` of `cds add data` is now deprecated in favor of `--filter`.
- _[cds-dk@7.9.0]_ `cds add data` sorts columns with own elements first, assuming they are more significant than the inherited/included elements.
- _[cds-dk@7.9.0]_ `cds add http --filter` accepts a service/entity/action name or a regex instead of a path.
- _[cds-dk@7.9.0]_ `cds deploy` and `cds bind` both use Cloud Foundry client for backend communication.
- _[cds-dk@7.9.0]_ Changes in the `package-lock.json` file don't restart the server e.g. during `cds watch`
- _[cds-dk@7.9.0]_ `cds init --add java` uses the currently installed Java version for the `pom.xml`.
- _[cds-dk@7.9.0]_ `cds add mta` derives the JDK version from the `pom.xml` version.
- _[cds-dk@7.9.0]_ `cds add helm` update default gateway to `kyma-system/kyma-gateway`
- _[cds-dk@7.9.0]_ `cds lint` supports both legacy (`@eslint@^8`) and flat (`@eslint@^9`) ESLint configurations.
- _[cds-dk@7.9.0]_ `cds add lint` adds flat ESLint configurations with `@eslint@^9`, `@sap/eslint-plugin-cds@^3.0.0`.
- _[cds-dk@7.9.0]_ `cds add lint` now requires `ESLint` version 8 or above.
- _[cds-dk@7.8.2]_ New versions of `@sap/cds` and `@sap/eslint-plugin-cds`
- _[cds-dk@7.8.2]_ `cds add helm` moved `TENANT_HOST_PATTERN` key from configmap to `values.yaml`.
- _[cds-dk@7.8.2]_ `cds add helm` `web-application` subchart now supports controlling the health probe timings and updated default gateway to `kyma-system/kyma-gateway`
- _[eslint-plugin-cds@3.0.2]_ requires `ESLint` version 8 or above
- _[eslint-plugin-cds@3.0.0]_ Plugin configurations (_recommended_, _all_) for `eslint@<v9` are now available with the `-legacy` suffix.
- _[eslint-plugin-cds@2.7.0]_ Rule option "show" now allows inferred rules to rerun/recompile instead of just running once (as is the CLI behavior).
- _[eslint-plugin-cds@2.7.0]_ Removed `min-node-version` rule, as it is now covered by the cds CLI.
- _[vscode-cds@7.8.1]_ Formatter now puts `actions` keyword after projection or query in a new line
- _[cds-compiler@4.9.0]_ parser: A space between `.` and `*`/`{` (nested projections) is now a warning.  
  Use `bin/cds_remove_invalid_whitespace.js` to automatically fix this warning.
- _[cds-compiler@4.9.0]_ compiler:
  - Published compositions with filters are changed to associations.
  - Expressions as annotation values are rejected for few known annotations that don't expect them.
- _[cds-compiler@4.9.0]_ Update OData vocabularies: 'Aggregation', 'Capabilities', 'Common', 'Hierarchy', 'PersonalData', 'Session', 'UI'.
- _[cds-compiler@4.9.0]_ to.edm(x): Exposed anonymous parameter types are now prefixed with `ap`, `bap` and `ep` for actions, bound actions and entities.
- _[cds.java@2.9.0]_ Renamed property `cds.odataV4.apply.inCqn.enabled` to `cds.odataV4.apply.transformations.enabled` to align with `@odata.apply.transformations` annotation name.
- _[cds.java@2.9.0]_ The CSV data importer shows a warning instead of stopping the application, if it finds a CSV file for a not existing entity.
- _[cds.java@2.9.0]_ An empty quoted value in a CSV files (`""`) is no longer interpreted as `null`, but as an empty String value.
- _[cds4j@2.9.0]_ SAP HANA HEX mode: fallback to non-hex SQL on "hex enforced but cannot be selected" errors.
- _[cds4j@2.9.0]_ The inline-count of a query is now computed with an SQL window function if the query has a filter.
- _[cds4j@2.9.0]_ Segments of structured types created from a Path no longer contain a filter, as they don't have an identity.
- _[cds4j@2.8.2]_ `DeepUpdateSplitter` locks only entities annotated with `@cds.java.version` to calculate FKs.
- _[cds@7.9.0]_ Deprecated _INSERT.into(...) **.as** (SELECT...)_ → use _INSERT.into(...) **.entries** (SELECT...)_ instead.
- _[cds@7.9.0]_ Default value of `cds.env.log.mask_headers` changed to `['/authorization/i', '/cookie/i', '/cert/i', '/ssl/i']` (adding `'/cert/i'` and `'/ssl/i'`)
- _[cds@7.9.0]_ Error messages for entities annotated with '@cds.autoexpose'
- _[cds@7.9.0]_ For Java apps `cds.sql.transitive_localized_views` now defaults to `false` to create less database views.
- _[cds@7.9.0]_ For Java apps `cdsc.betterSqliteSessionVariables` now defaults to `true` to enable session variables on H2 and SQLite by default.
- _[cds-mtxs@1.18.0]_ Retries for failed upgrades are more resilient, using an exponential backoff mechanism and more retries.

### Fixed {#apr-24-fixed}

- _[cds-dk@7.9.0]_ Revert json schema for cds schemas to `draft-07` to prevent VS Code warnings about unsupported schema features.
- _[cds-dk@7.9.0]_ `cds add` doesn't fail for projects with a minimal `package.json` w/o `name` and `version` fields
- _[cds-dk@7.9.0]_ `cds add data` can be executed in projects w/o `package.json` and `.cdsrc.json` files.
- _[cds-dk@7.9.0]_ `cds add sample` does not fail if the `srv` folder doesn't exist.
- _[cds-dk@7.9.0]_ `cds add helm` fixed xsuaa tenant-mode not updating on adding `multitenancy`
- _[cds-dk@7.9.0]_ `cds watched` cannot be called from command line anymore.
- _[cds-dk@7.9.0]_ `cds login` now correctly handles the case of an expired refresh token and gives more information about token-request errors.
- _[cds-dk@7.9.0]_ `cds login` now refreshes the token URL if it had previously reverted to a legacy URL.
- _[cds-dk@7.9.0]_ Command retrieval during cds bootstrap is now more robust.
- _[cds-dk@7.9.0]_ `cds watch` now ignores all `gen`-folder content to allow tenant subscription in hybrid mode.
- _[cds-dk@7.9.0]_ `cds build` doesn't copy `.cdsrc-private.json` file into the deployment folder.
- _[cds-dk@7.8.2]_ `cds run/serve --resolve-bindings` correctly work with the new runtime authentication middleware.
- _[cds-dk@7.8.2]_ `cds add helm-unified-runtime` fixed backend destinations urls for deployments that aren't exposed.
- _[cds-dk@7.8.1]_ `cds build` does no longer add the model _@sap/cds-mtxs/srv/bootstrap_ for Java projects by mistake if the `--ws` option is set.
- _[eslint-plugin-cds@3.0.2]_ Internal parser call now handles `ESLint` version 8 and 9
- _[eslint-plugin-cds@3.0.1]_ Add namespace `@sap/cds` to plugin configuration
- _[eslint-plugin-cds@3.0.0]_ In _latest-cds-version_, get output from `npm outdated` on exit code 1.
- _[eslint-plugin-cds@2.7.0]_ In _no-db-keywords_, use `getRootPath()` instead of dirname, as wrong paths lead to missing db entries, disabling the rule.
- _[vscode-cds@7.8.1]_ Revert json schema to `draft-07` due to unsupported features in `2020-12` and `2019-09`
- _[vscode-cds@7.8.1]_ `workspace/symbols` request could have shown interactive popup if LSP plugins are slow
- _[vscode-cds@7.8.1]_ Indexing of entities with enum elements that led to wrongly reported unused imports
- _[vscode-cds@7.8.1]_ Indexing of namespaces after internal compiler changes
- _[vscode-cds@7.8.1]_ Indexing of annotations was slow
- _[cds-compiler@4.9.0]_ compiler:
  - Deprecated `$parameters` is no longer proposed in code completion.
  - Duplicate mixin definitions lead to failing name resolution.
- _[cds-compiler@4.9.0]_ to.cdl: Types were always rendered for associations with filters, even if it would lead to a compilation failure.
- _[cds-compiler@4.9.0]_ to.edm(x):
  - Fix a recursion bug in entity parameter handling.
  - Fix event exclusion in service preprocessing.
- _[cds.java@2.9.0]_ Fixed a bug, causing a failure when upgrading webhooks in Enterprise Messaging for tenants subscribed using Subscription Management Service (SMS).
- _[cds.java@2.9.0]_ Fixed a bug, causing `@mandatory` or `not null` validations to run on nested data of non-cascading associations.
- _[cds.java@2.9.0]_ Fixed a bug, causing `ext_attr` XSUAA claim not to be available in `UserInfo.getAdditionalAttributes()`.
- _[cds4j@2.9.0]_ Fixed deletes via to-one compositions with backlink association key.
- _[cds4j@2.9.0]_ Fixed setting of structured foreign keys with nesting level greater than two.
- _[cds4j@2.9.0]_ Fixed result of inserts on draft-enabled projections, containing projected data.
- _[cds4j@2.8.2]_ Fixed type of `cds.Vector` elements in generated accessor interfaces.
- _[cds@7.9.0]_ `cds.compile.to.yaml` produced invalid YAML for compacted lines
- _[cds@7.9.0]_ Handling of If-None-Match header for non-existing entity
- _[cds@7.9.0]_ Revert json schema for cds schemas to `draft-07` to prevent VS Code warnings about unsupported schema features.
- _[cds@7.9.0]_ Remote services: JSON representation of error shall include `request` and `response`
- _[cds@7.9.0]_ Aliasing of associated entity column in case of expand by CQN build with joins.
- _[cds@7.9.0]_ `$apply` scenarios when used alongside `cds.env.features.odata_new_adapter = true` and the new database layer
- _[cds@7.9.0]_ ETag handling combined with where restrictions
- _[cds@7.9.0]_ `cds compile --to hdbtabledata` now correctly supports CSV files using format `.texts_<lang>.csv`. Before the `include_filter` wasn't set in the generated `.hdbtabledata` files.
- _[cds@7.9.0]_ `cds` commands no longer crash when executed in the `@sap/cds` installation dir.
- _[cds@7.9.0]_ `cds.infer`: exposed association of query is inferred as `cds.Association` and not as it's target
- _[cds@7.8.2]_ `.find` and `.filter` in `linked.entities()` now returns values instead of names
- _[cds@7.8.2]_ `cds.app.serve.from(pkg,folder)` did not consider `pkg` for serving static resources
- _[cds@7.8.1]_ In some cases, `<entity>.drafts` erroneously pointed to a CSN entity stub.
- _[cds@7.8.1]_ Feature vectors including falsy values like `{ ft1: true, ft2: true, ft3: false }`
- _[cds-mtxs@1.18.0]_ Extension linter is now also called if extensions are created via API.
- _[cds-mtxs@1.18.0]_ The Service Manager credentials cache is correctly invalidated following a resubscription.

## March 2024

### Added {#mar-24-added}

- _[cds-dk@7.8.0]_ `cds add mta` configures readiness health checks via http to `/` for Java and `/health` for Node.js.
- _[cds-dk@7.8.0]_ `cds add` facets can now also be space-separated, e.g. `cds add mta mtx pipeline`.
- _[cds-dk@7.8.0]_ `cds add http` adds an `http` folder with `.http` files generated for all services.
- _[cds-dk@7.8.0]_ `cds add http --filter [path to dir or file]` generates `.http` files only for the specified file or directory. The shortcut is `-f`.
- _[cds-dk@7.8.0]_ `cds add http --for-app [app name]` uses the hostname and the auth of the specified deployed app.
- _[cds-dk@7.8.0]_ `cds add http --out` allows to specify the output folder for the http files. The shortcut is `-o`.
- _[cds-dk@7.8.0]_ `cds build` reclassifies compilation warnings as info messages for extension projects in case they are caused by the SaaS application base model. `cds build --log-level info` logs all messages. Reclassification of message IDs can be customized.
- _[cds-dk@7.8.0]_ `cds version` now also prints the version of the CAP Java SDK as well as the Java and Maven versions
- _[cds-dk@7.8.0]_ `cds build` now uses argument `--ws-pack` instead of `--ws` to enable tarball based packaging of npm workspace dependencies for Node.js apps (beta).
- _[cds-dk@7.8.0]_ `cds import` can now import the Action/Function with binding parameter type of different schema in the scope of a document.
- _[cds-dk@7.7.2]_ `cds import` now has `beta` flag which can be used to import beta functionality in the CSN/CDS.
- _[vscode-cds@7.8.0]_ Add preview commands to editor title
- _[cds-compiler@4.8.0]_ compiler: Type `cds.Vector` was added.  It is mapped to `REAL_VECTOR` on SAP HANA.
- _[cds-compiler@4.8.0]_ Support associations to/from entities with parameters for SAP HANA SQL (hdi/direct).
- _[cds-compiler@4.8.0]_ to.sql/to.hdi:
  - SAP HANA keywords `ABSOLUTE`, `REAL_VECTOR`, and `ST_ASESRIJSON` are now included for smart quoting.
  +PostgreSQL keyword `SYSTEM_USER` is now included for smart quoting.
- _[cds-compiler@4.8.0]_ API: Added `to.sql.postgres.keywords` and `to.sql.h2.keywords`.
  They contain keywords for the respective SQL dialect.
- _[cds.java@2.8.1]_ Added a new property `cds.multiTenancy.dependencies.destination.enabled` to automatically declare Destination service as a dependency during subscription.
- _[cds.java@2.8.1]_ Remote Services can now be configured with a service binding, from which a destination is derived automatically, by configuring the new properties section `cds.remote.services.<key>.binding`.
- _[cds.java@2.8.1]_ Remote OData services now support the `ETagPredicate` for update and delete queries. The `ETagPredicate` is translated into a corresponding `If-Match` header.
- _[cds.java@2.8.1]_ Remote OData services now store values from `ETag` response headers in the `CdsData` metadata (`data.getMetadata("etag")`). When executing an update statement ETags are automatically set in `If-Match` if present in the metadata of the data provided for the update.
- _[cds.java@2.8.1]_ The switch `sharedInterfaces` in the `cds-maven-plugin` allows to replace the inner interfaces for global types with inlined arrayed types in the event contexts for an actions and functions with global ones.
- _[cds.java@2.8.1]_ The goal `watch` of the `cds-maven-plugin` can be executed from the project root folder.
- _[cds.java@2.8.1]_ Introduced a new API `OutboxService.outboxed(Service, Class)` to wrap a service with an asynchronous suited API while outboxing it.
- _[cds.java@2.8.1]_ Introduced the interface `AsyncCqnService` and the API `AsyncCqnService.of(CqnService, OutboxService)`, providing an asynchronous suited API for CqnServices wrapped by an outbox.
- _[cds.java@2.8.1]_ Added a new property `cds.outbox.services.<key>.ordered` (default: `true`) to disable strict ordering of outbox messages, allowing for parallelized message processing.
- _[cds.java@2.8.1]_ Improved parallelization of tenant processing across outbox processors in multiple application instances.
- _[cds.java@2.8.1]_ The new `EventContext.proceed()` method allows to explicitly proceed with executing the next On event handler.
- _[cds.java@2.8.1]_ The goal `add` of the `cds-maven-plugin` supports adding Kafka support to a CAP Java project.
- _[cds.java@2.8.1]_ The mock user security configuration now allows loading iFrames, to support H2 console out-of-the-box for local development.
- _[cds.java@2.8.1]_ The mock user security configuration now triggers authentication also for XMLHttpRequests, to fix authentication issues with local UIs running under a parallel path to the API endpoints in some browsers.
- _[cds.java@2.7.1]_ CQN transformations for `$apply` can now be selectively enabled per service using annotation `odata.apply.transformations`
- _[cds4j@2.8.1]_ Added new switch `uniqueEventContexts` to the code generator configuration to enable the generation of unique event context interfaces. This is an incompatible change, because the event context interfaces are generated with the prefix of bound entities.
- _[cds4j@2.8.1]_ SAP HANA: added support for CDS type `cds.Vector`:
  - the data type `com.sap.cds.Vector`
  - similarity functions `CQL.cosineSimilarity` and `CQL.l2Distance`
- _[cds4j@2.8.1]_ Support spaces in ref paths for structure preserving element selections.
- _[cds@7.8.0]_ Health check endpoint `/health` in default server
- _[cds@7.8.0]_ Class `cds.service` now provides getters for `entities`, `types`, `events` and `operations`. These return iterable objects, which can be used in `for...of` loops.
- _[cds@7.8.0]_ Class `cds.entity` getters for `keys`, `associations`, `operations` also return `Iterable` objects now
- _[cds@7.8.0]_ Method `compile.to.serviceinfo()` now lists all Node.js service endpoints in cases where multiple protocols are configured. For Java, the list is still limited to the first endpoint. This will be fixed in a future release.
- _[cds@7.8.0]_ More warnings for deprecated features, functions and annotations.
- _[cds-mtxs@1.17.0]_ Ignore non-existing container if running upgrade `*` by setting `cds.requires['cds.xt.SaasProvisioning'].upgrade.ignoreNonExistingContainers: true`.
- _[cds-mtxs@1.17.0]_ `cds-mtx-migrate '*'|<tenant>[,<tenant>] --init-tenant-list [--force] [--dry]` now allows to fill the internal tenant list (e. g. for migration of Dynamic Deployer base applications).
- _[cds-mtxs@1.17.0]_ `cds-mtx-migrate '*'|<tenant>[,<tenant>] --sync-tenant-list [--force] [--dry]` now allows to sync the internal tenant list with existing containers. Entries without a corresponding HDI container will be removed.

### Changed {#mar-24-changed}

- _[cds-dk@7.8.0]_ `cds add helm` uses `/health` for liveness and readiness checks for Node.js.
- _[cds-dk@7.7.1]_ `cds init` uses latest Maven Java archetype version 2.7.0 for creating Java projects.
- _[eslint-plugin-cds@2.6.6]_ Removed `require-2many-oncond` rule, as it is now covered by the compiler.
- _[vscode-cds@7.8.0]_ Move menu item `Preview as yaml` to the top of the menu items list indicating its default character
- _[vscode-cds@7.8.0]_ Formatting logging now includes whitespace even if it may be reduced to empty string, relative alignment positions, and details on inserting delayed items
- _[vscode-cds@7.8.0]_ Minimum supported VSCode version is now 1.86.0
- _[cds-compiler@4.8.0]_ compiler: Overriding an included element must not change the type to an association
  if it wasn't an association before and vice versa.
- _[cds-compiler@4.8.0]_ Update OData vocabularies: 'Authorization', 'Common', 'UI'.
- _[cds.java@2.8.1]_ Moved property `cds.remote.services.<key>.destination.type` to `cds.remote.services.<key>.type`. Also moved properties `suffix`, `service`, `queries` and `headers` from section `cds.remote.services.<key>.destination` to section `cds.remote.services.<key>.http`. Backwards compatibility for the old properties remains.
- _[cds.java@2.8.1]_ CQN statements are not added to Open Telemetry spans anymore by default for performance reasons, but only if logger `com.sap.cds.otel.spans.CQN` is set to `DEBUG`.
- _[cds4j@2.8.1]_ SQL: only use localized helper views if necessary
- _[cds4j@2.7.1]_ Code generator: Constant classes for an enums are not generated anymore if the enum is defined as inline type for the element.
- _[cds-mtxs@1.17.0]_ `/-/cds/saas-provisioning/upgrade` sent as an async request with payload `"tenants": ["*"]` will now return job information even if no tenants are found.

### Fixed {#mar-24-fixed}

- _[cds-dk@7.8.0]_ `cds deploy` always included models from existing `fts/*` folders. Now, it only does so if `cds.requires.toggles` is switched on.
- _[cds-dk@7.8.0]_ `cds build` now adds the correct HANA tenant database artifacts for a multitenant application in case a second shared database exists.
- _[cds-dk@7.8.0]_ `cds bind --to-app-services` will throw a better error message if no app name is supplied.
- _[cds-dk@7.7.2]_ `cds deploy --to hana` environment entries from `--vcap-file` option now overwrite environment entries.
- _[cds-dk@7.7.2]_ `cds add helm` `web-application` subchart now allows annotations to be added to the K8s services and `content-deployment` subchart now allows to set `imagePullPolicy`.
- _[cds-dk@7.7.1]_ `cds build` now allows the SaaS application base model to be located in a subfolder of the mtx extension project using npm workspace setup. Before, such a scenario caused duplicate model definitions.
- _[cds-dk@7.7.1]_ `cds init` shows better error message if project name contains unsupported characters.
- _[eslint-plugin-cds@2.6.7]_ Removed loading of previously removed rule.
- _[vscode-cds@7.8.0]_ Code completion for annotations with ![] identifiers
- _[cds-compiler@4.8.0]_ compiler: `cast()`s to structured types and associations are now rejected. They could lead to crashes before.
- _[cds-compiler@4.8.0]_ to.edm(x):
  - Reject action/function return types that are declared `many of many`.
  - Render user defined annotation type `cds.Integer` as `Edm.Int`.
- _[cds-compiler@4.8.0]_ to.sql|hdi|hdbcds:
  - Correctly handle `.list` during flattening.
  - Improve handling of `.items`.
- _[cds-compiler@4.8.0]_ to.sql|hdi.migration:
  - Turn types and aspects into dummies to reduce CSN size.
  - Correctly detect a removed `.default` and forcefully set the default to `null`.
- _[cds.java@2.8.1]_ Fixed a bug that prevents deactivating the draft gc as a side-effect of a draft activation.
- _[cds.java@2.7.1]_ Fixed a bug, causing event-mesh tenant upgrades not to be executed.
- _[cds4j@2.8.1]_ Fixed a bug in code generator causing the event context interfaces being generated for the operations that are renamed with `@cds.java.name`.
- _[cds4j@2.8.1]_ Structured compound foreign keys have priority over flat foreign keys, even if only partially defined.
- _[cds4j@2.8.1]_ Fixed write operations on elements of a projections that are referenced via an alias prefix in the CDS model.
- _[cds4j@2.7.1]_ Fixed a bug causing `ClassCastException` for `BetweenPredicate` in the CQL Statement Builder
- _[cds4j@2.7.1]_ Fixed a bug causing key values to be set to `null` when setting an association to `null` containing the source key in the ON condition
- _[cds@7.8.0]_ Reverted `cds.Association` being derived from `cds.struct`; it's now derived from `cds.type` again.
- _[cds@7.8.0]_ Entity definitions using joins were erroneously marked as `_unresolved`
- _[cds@7.8.0]_ Consistent error messages for query options validation with new parser
- _[cds@7.8.0]_ Validation for mandatory associations which target entities with defaulted keys
- _[cds@7.8.0]_ Transaction handling for aborted streaming requests
- _[cds@7.8.0]_ Create/Update over filtered managed compositions
- _[cds@7.8.0]_ Templates are cached at the model (instead of the service)
- _[cds@7.8.0]_ Deprecation warnings use `cds.log()` in production
- _[cds@7.8.0]_ Single quote in a string in `.where` for remote service
- _[cds@7.8.0]_ Escaped characters in double quoted search term when using `odata_new_parser`
- _[cds@7.7.3]_ `cds.log`: preserve message property of details through stringification (it's non-enumerable if the detail entry is an error)
- _[cds@7.7.3]_ Auto-exposed child entities with multiple restrictions
- _[cds@7.7.3]_ Calculation of read-only values in custom code during creation of new drafts
- _[cds@7.7.2]_ Requests to actions/functions on entities in draft state via navigation.
- _[cds@7.7.2]_ PUT/PATCH with if-none-match: * forces insert
- _[cds@7.7.1]_ JWT authentication for Event Mesh endpoints
- _[cds@7.7.1]_ `cds.log`'s json formatter: ensure `type` is set (required on kubernetes until CLS defaults this)
- _[cds@7.7.1]_ Erroneously generated foreign keys in `req.data` for UPDATE using path expressions
- _[cds@7.7.1]_ `INSERT.columns.rows` for multiple nested composition of aspects
- _[cds@7.7.1]_ Paths passed to `tar` on Windows are now normalized to use forward slashes.
- _[cds-mtxs@1.17.0]_ The `dataEncryption` provisioning parameter is disabled for `t0` when using HANA native tenants.
- _[cds-mtxs@1.17.0]_ Ignore non-existing container if running upgrade `*` by setting `cds.requires['cds.xt.SaasProvisioning'].upgrade.ignoreNonExistingContainers: true`.
- _[cds-mtxs@1.17.0]_ The built-in Service Manager client filters bindings by `ready = true`.

## February 2024

### Added {#feb-24-added}

- _[cds-dk@7.7.0]_ Schema support for declaring schema contributions in cds plugins.
- _[cds-dk@7.7.0]_ `cds import` now supports `ref` in schema properties for AsyncAPI files.
- _[cds-dk@7.7.0]_ `cds add html5-repo` is now supported for Cloud Foundry (Beta).
- _[vscode-cds@7.6.1]_ Add preview commands to editor title
- _[vscode-cds@7.6.0]_ Hover over import path of `using` statement shows `README.md` or `package.json#description` if absolute (i.e. module) import
- _[cds-compiler@4.7.0]_ compiler: Virtual elements can now be referenced in expressions in annotation
- _[cds.java@2.7.0]_ Introduced a new API `OutboxService.outboxed(Service)` to wrap services with outbox handling. Events triggered on the wrapper are stored in the outbox first, and executed asynchronously. Relevant information from the `RequestContext` is stored with the event data, however the user context is downgraded to a system user context.
- _[cds.java@2.7.0]_ If the outbox is enabled for Messaging and AuditLog services the new outbox wrapper API is used. The outbox wrapper can be programmatically removed by using `OutboxService.unboxed(Service)`, returning a synchronously operating instance.
- _[cds.java@2.7.0]_ Added properties section `cds.outbox.services` to configure additional outbox services. The previous properties `cds.outbox.persistent` still configure the default outbox services named `DefaultOutboxOrdered` and `DefaultOutboxUnordered`, if they are not configured explicitly within the new section.
- _[cds.java@2.7.0]_ The default outbox used by a Messaging or AuditLog service can now be configured through properties `cds.messaging.services.<key>.outbox.name` and `cds.auditlog.outbox.name`.
- _[cds.java@2.7.0]_ Added support for case insensitive contains CQN queries with the `cds-feature-remote-odata` to remote OData V2/V4 services.
- _[cds.java@2.7.0]_ Added support for `CqnBetweenPredicate` in remote OData requests.
- _[cds.java@2.7.0]_ Added OpenTelemetry spans for outbox and draft GC background activity.
- _[cds.java@2.7.0]_ Improved Draft GC to request tenant-specific CDS models only if there is at least one stale draft in the tenant database.
- _[cds.java@2.7.0]_ The goal `add` of the `cds-maven-plugin` supports adding Spring-Boot Security support to a CAP Java project with `-Dfeature=SECURITY`.
- _[cds.java@2.7.0]_ Added beta version of change tracking feature `cds-feature-change-tracking` to capture changes in the database.
- _[cds4j@2.7.0]_ Between predicate (`CqnBetweenPredicate`) using `CQL.between()`
- _[cds4j@2.7.0]_ Code generator: For an enums defined in the CDS model, the constant classes are generated with the constants reflecting the values of the enum members
- _[cds4j@2.7.0]_ Added support for parsing Base64 encoded binary data in a JSON document
- _[cds4j@2.7.0]_ Support `cds.Vector` type on SAP HANA <Beta />
- _[cds@7.7.0]_ Improved trace output for bootstrap phase. For example try that:

   ```js
   DEBUG=trace cds w bookshop | grep trace
   ```

- _[cds@7.7.0]_ Support for `@odata.draft.bypass` to allow direct modifications of active instances.
- _[cds@7.7.0]_ `req.user.tokenInfo` for `@sap/xssec`-based authentication (`ias`, `jwt`, `xsuaa`)
- _[cds@7.7.0]_ `cds.fiori.draft_lock_timeout` as successor of `cds.drafts.cancellationTimeout`.
  - Possible values are /^([0-9]+)(h|hrs|min)$/ or a number in milliseconds.
- _[cds@7.7.0]_ There is a new `sap.common.Timezones` entity with a basic time zone definition. There will be accompanying data in package `@sap/cds-common-content`.
- _[cds@7.7.0]_ Deprecation warnings for configuration options `cds.drafts.cancellationTimeout`, `cds.features.serve_on_root`, `cds.features.stream_compat`, `cds.fiori.lean_draft` and `cds.requires.middlewares`, as well as for the properties `req.user.locale` and `req.user.tenant`. The deprecation warnings can be turned off by setting `cds.features.deprecated` to `off`.
- _[cds-mtxs@1.16.0]_ `cds-mtx upgrade` now allows to pass `*` to upgrade all tenants.

### Changed {#feb-24-changed}

- _[cds-dk@7.7.0]_ `cds add mta` will add `npm ci` to its `before-all` build scripts to make `mbt build` more self-contained.
- _[cds-dk@7.6.1]_ `cds login` now automatically discards invalid refresh tokens and retries instead of exiting with an error.
- _[cds-dk@7.6.1]_ `cds login` now saves the passcode URL received from a failing token request and prints it along with the error and any subsequent passcode prompt.
- _[cds-dk@7.6.1]_ `cds login` now hints at missing user role as the cause of an error, if applicable.
- _[vscode-cds@7.6.0]_ Formatting option `alignAfterKey` option now applies to views and projections as well
- _[cds-compiler@4.7.0]_ Update OData vocabularies: 'Authorization', 'Common', 'Hierarchy', 'UI'.
- _[cds-compiler@4.7.0]_ to.edm(x): `@cds.odata.valuelist` renders all non-key elements of the value help list as `ValueListProperty`.
- _[cds.java@2.7.0]_ Properties section `cds.outbox.persistent` has been deprecated in favor of `cds.outbox.services`.
- _[cds.java@2.7.0]_ Properties `cds.auditlog.outbox.persistent.enabled` and `cds.messaging.services.<key>.outbox.persistent.enabled` have been deprecated in favor of the existing `...outbox.enabled` and new `...outbox.name` property.
- _[cds.java@2.7.0]_ System users now generally run with all feature toggles enabled by default. This aligns with the behaviour of the recently introduced `RequestContextRunner.systemUser(String)` methods.
- _[cds4j@2.7.0]_ `CdsAssociationType::getTargetAspect` now returns `Optional<CdsStructuredType>` as aspects are always structured
- _[cds@7.7.0]_ The index page now lists all service endpoints, which is important for services that are exposed through multiple protocols.
- _[cds@7.7.0]_ `cds.deploy` improves error diagnostics with deeper `Query` object inspection.
- _[cds@7.7.0]_ Slightly changed the default export for ESM compatibility. This fixed failing ESM imports in Vitest tests.
- _[cds-mtxs@1.16.0]_ The Service Manager polling timeout is increased from 60 to 180 seconds.
- _[cds-mtxs@1.16.0]_ On failing UAA token request, MTXS now responds to client with JSON to enable parsing the passcode URL.

### Fixed {#feb-24-fixed}

- _[cds-dk@7.7.0]_ `cds build` for MTX extensions no longer fails in case of duplicate model definitions.
- _[cds-dk@7.7.0]_ `cds version -i` now prints the same versions in MD form as `cds version`
- _[cds-dk@7.6.1]_ `cds import` now fixed the `AnnotationPath` attribute value import for Annotation in OData V4 EDMX correctly in the CSN.
- _[cds-dk@7.6.1]_ `cds import` will now move the imported EDMX file to `srv/external` only if the import is successful.
- _[cds-dk@7.6.1]_ `cds import` now captures the annotations present within EntityContainer for OData V4 EDMX in the CSN.
- _[cds-dk@7.6.1]_ `cds deploy` allows usage of `SERVICE_REPLACEMENTS` without specifying `VCAP_SERVICES`.
- _[cds-dk@7.6.1]_ `cds deploy` gives an error if its service key corresponds to a Service Manager instance.
- _[vscode-cds@7.6.1]_ Elements snippet now works when annotating artifacts in namespaces and/or contexts or if the brace after the elements is still missing
- _[vscode-cds@7.6.0]_ Removed padding after unary plus, minus or parameter colon
- _[vscode-cds@7.6.0]_ Artifact-elements snippet in `annotate` statement now appears regardless of cursor position between braces (or logs reason for not appearing)
- _[vscode-cds@7.6.0]_ Highlighting after semicolon in certain contexts
- _[vscode-cds@7.6.0]_ On Windows editor potentially no longer updated diagnostics for sources with annotations
- _[vscode-cds@7.6.0]_ Wrong diagnostics about unused imports
- _[vscode-cds@7.6.0]_ First code completion could have been slow as workspace was scanned unnecessarily
- _[vscode-cds@7.6.0]_ Code completion for annotations was not shown in certain cases
- _[vscode-cds@7.6.0]_ `untitled` i.e. new not yet saved files no longer worked in VSCode
- _[cds-compiler@4.7.6]_ OData: Restored compatibility with the Java runtime.
  Drafts generation was applied twice.
- _[cds-compiler@4.7.4]_ OData: Fixed infinite recursion in draft handling for nested recursive compositions.
- _[cds-compiler@4.7.2]_ Restored compatibility with `@sap/cds-dk` for Java runtime
- _[cds-compiler@4.7.0]_ CDL parser: a `select` after two or more `(`s in an expression or condition
  could cause some constructs in that query, such as `virtual`, to be not properly parsed.
- _[cds-compiler@4.7.0]_ compiler: published associations with filters sometimes had the filter applied twice
  if used in inline aspect compositions
- _[cds-compiler@4.7.0]_ to.sql|hdi|hdbcds[.migration]:
  - With `withHanaAssociations`: `false`, remove the association elements from the final CSN in order to correctly detect them during migration scenarios and
  with generated `hdbcds`.
  - Skip expensive processing (for calculated elements and nested projections) if the model doesn't use it.
  - Don't greedily set alias on subqueries if not required.
  - Remove bound actions and turn all non-database relevant artifacts into dummies to simplify and shrink CSN.
- _[cds-compiler@4.6.2]_ compiler: Fix incorrect error about type properties if deprecated flag `ignoreSpecifiedQueryElements` is set.
- _[cds-compiler@4.6.2]_ Update OData vocabularies: 'Authorization', 'Common'.
- _[cds.java@2.7.0]_ Fixed a bug, causing an `Internal Server Error` if an OData V2 request without `/$value` is sent to a stream entity with a field annotated with `@Core.MediaType`.
- _[cds.java@2.7.0]_ Fixed a bug, causing `FeatureToggleInfoProvider` to be skipped, when using `RequestContextRunner.systemUser(String)` to set a system user context.
- _[cds4j@2.7.0]_ Fixed a bug causing syntax errors in the consumption interfaces that used the global types with an inlined arrayed types
- _[cds4j@2.7.0]_ Fixed a bug, causing wrong signatures being generated for the methods representing an actions and functions with the arrayed arguments or return types
- _[cds4j@2.7.0]_ Fixed a bug, causing virtual structured elements not being ignored outside of filters and where conditions
- _[cds4j@2.7.0]_ Fixed a bug in the Boolean comparison of row values with IS/IS NOT on H2 and SAP HANA
- _[cds4j@2.6.1]_ SAP HANA: Fix "hex enforced but cannot be selected" for subqueries using `LIMIT/OFFSET` in optimizationMode `hex`
- _[cds4j@2.6.1]_ Fixed a bug, causing unexpected manipulations of shared `Expand` objects
- _[cds@7.7.0]_ Persistent outbox must not be used for `t0` tenant.
- _[cds@7.7.0]_ Second `await cds.connect.to('X')`, where initialization of `X` results in an error, did not return.
- _[cds@7.7.0]_ Support additional draft requests.
- _[cds@7.7.0]_ `cds.log` with `null` as argument.
- _[cds@7.6.4]_ Emitting multiple message with an in-memory outbox
- _[cds@7.6.4]_ Occasional crash for invalid draft requests
- _[cds@7.6.4]_ On the index page, additional links now show up again for non-OData services.
- _[cds@7.6.4]_ Handling of thenables for queries
- _[cds@7.6.3]_ Event Mesh webhooks now add standard `before` middlewares in case of custom authorization
- _[cds@7.6.3]_ `compile.to.serviceinfo` no longer fails for services marked with `@protocol:'none'`. Such internal services are not shown in the output.
- _[cds@7.6.2]_ Introduce i18n `BATCH_TOO_MANY_REQ` key for error message: "Batch request contains too many requests"
- _[cds@7.6.2]_ Properly handle `$orderby` in lean draft
- _[cds@7.6.2]_ View resolving in combination with `@cap-js/cds-db`
- _[cds@7.6.2]_ Allow `cds.requires.someService.outbox` to be a string
- _[cds@7.6.2]_ `cds.log`: errors, when not the first argument, were considered objects carrying custom fields
- _[cds@7.6.2]_ `accept` header parsing for OData requests if quality factor `q` is included
- _[cds@7.6.2]_ Broken links on index page if multiple protocols are configured
- _[cds-mtx@2.6.7]_ `provisioning_parameters` set via `cds.mtx.provisioning.container` or `CDS_MTX_PROVISIONING_CONTAINER` are correctly merged into request options.
- _[cds-mtxs@1.16.0]_ `upgrade` action is now also provided by `cds.xt.SmsProvisioningService`.
- _[cds-mtxs@1.16.0]_ Cleanup option of MTXS Migration deletes old `__META__` tenant only if cleanup is triggered for `*` (all tenants).
- _[cds-mtxs@1.16.0]_ Improved formatting of errors when fetching auth tokens.

## January 2024

### Added {#jan-24-added}

- _[cds-dk@7.6.0]_ `cds add application-logging` is now supported for Java.
- _[cds-dk@7.6.0]_ `cds add` and `cds init` help shows a more complete list of available commands.
- _[cds-dk@7.6.0]_ `cds bind -2 <service-name>` automatically creates service key named `<service-name>-key` on Cloud Foundry.
- _[cds-dk@7.6.0]_ `cds bind --to-app-services <app-name>` binds to all services of a deployed app.
- _[cds-dk@7.6.0]_ `cds build` requires feature toggles to be switched-on in order to get the corresponding features generated.
- _[cds-dk@7.6.0]_ `cds build` supports npm workspace setups <Beta />.
- _[cds-compiler@4.6.0]_ compiler: Events can now be projections on other structured events and types.
- _[cds-compiler@4.6.0]_ to.cdl: `parseCdl` and `gensrc` style CSN (a.k.a. `inferred` and `xtended`) is now supported as input.
- _[cds.java@2.6.0]_ Optionally handle `$apply` in custom code. Requires setting `cds.odataV4.apply.inCqn.enabled` to `true`.
- _[cds.java@2.6.0]_ Support for calling actions and functions via HCQL has been added to `cds-adapter-hcql` and `cds-feature-remote-hcql`.
- _[cds.java@2.6.0]_ Added Open Telemetry spans for individual requests of an OData $batch request.
- _[cds.java@2.6.0]_ Added Open Telemetry spans for executed CQN statements.
- _[cds.java@2.6.0]_ Support for Cloud SDK 5 (>= 5.2.0) in addition to Cloud SDK 4.
- _[cds.java@2.6.0]_ Entities associated through composition and explicitly annotated with `@odata.draft.enabled: false` are now excluded from the draft tree (incl. `.texts` entities in case of missing `@fiori.draft.enabled` annotation).
- _[cds4j@2.6.0]_ ETag predicate (`CqnEtagPredicate`) for optimistic verification with `CQL.eTag()` and `StructuredType.eTag()` factory methods.
- _[cds4j@2.6.0]_ Add typed query builder API for Update::set
- _[cds@7.6.0]_ `cds.upsert` as shortcut for `cds.db.upsert`
- _[cds@7.6.0]_ Automatic deletion of stale drafts. Feature is enabled if `cds.env.fiori.deletionTimeout` is set to a value of `true`; `true` uses the default timeout of `30d` (30 days).
- _[cds@7.6.0]_ Support for default exports (ESM/TS) in custom authentication
- _[cds@7.6.0]_ Support for executing SAP HANA procedures from SYS schema
- _[cds@7.6.0]_ Support for more complex on-conditions in case of READ requests
- _[cds@7.6.0]_ Best effort mechanism for supporting lambda expressions targeting remote odata-v2 services
- _[cds@7.6.0]_ Support for actions and functions which are bound to singletons
- _[cds-mtxs@1.15.0]_ MTXS now supports subscription via Subscription Manager Service also for Node.js applications.
- _[ux-cds-odata-language-server-extension@1.12.2]_ Enhanced code completion to restrict the suggestions for annotation terms, complex types and properties to more meaningful based on `Validation.ApplicableTerms` set in OData vocabulary definitions .
- _[ux-cds-odata-language-server-extension@1.12.2]_ Enhanced validation to display warning if the usage of annotation terms, complex types and properties is restricted in OData vocabulary definitions with `Validation.ApplicableTerms`.

### Changed {#jan-24-changed}

- _[cds-dk@7.6.0]_ Json schemas for `build` and `deploy` moved here from `@sap/cds`.
- _[cds-dk@7.6.0]_ cds build plugins can provide additional json schemas, including root nodes <Beta />.
- _[cds-dk@7.6.0]_ `cds add helm` doesn't expose srv workload in single tenant mode if App Router is present.
- _[cds-dk@7.6.0]_ `cds add hana` also adds draft tables to the `undeploy.json`.
- _[cds-dk@7.6.0]_ `cds build` uses existing `.npmrc` file from project root for the MTX sidecar build,
  precedence has `.npmrc` in sidecar folder.
- _[cds-dk@7.6.0]_ `cds logout --clear-invalid` also deletes expired tokens.
- _[cds-dk@7.5.1]_ Bump of dependencies
- _[cds-dk@7.5.1]_ MTXS commands will now use a request timeout to avoid hanging on invalid URLs.
- _[cds-dk@7.5.1]_ Error messages for invalid URLs have been improved.
- _[cds-dk@7.5.1]_ Reverting the fix from `7.5.0`: `cds compile` to `openapi` now adds correct schema `$ref` for patch operation.
- _[cds-compiler@4.6.0]_ Update OData vocabularies: 'Aggregation', 'Validation'
- _[cds-compiler@4.6.0]_ to.sql/hdi/hdbcds: Removed warnings for number and type of keys in draft-enabled entities.
- _[cds.java@2.6.0]_ Outbox messages are no longer stored with a `partition` number, but with a `target`, which identifies the outbox service and collector processing the message. The `OutboxService.PERSISTENT_NAME` instance (formerly managing two partitions) was replaced by two distinct outbox services (`OutboxService.PERSISTENT_UNORDERED_NAME` and `OutboxService.PERSISTENT_ORDERED_NAME`) each handling messages with a dedicated `target`. Compatibility with auditlog or messaging events stored in the old format is ensured.
- _[cds.java@2.6.0]_ The OutboxService API has been changed from `enroll(String, String)` to `submit(String, Map<String, Object>)`. The `OutboxMessageEventContext.getMessage()` method now respectively returns `Map<String, Object>` as well.
- _[cds.java@2.6.0]_ `cds.multiTenancy.serviceManager.timeout` has been removed.
- _[cds4j@2.6.0]_ SQLite: `CQL.matchesPattern` now also throws an exception on unsupported patterns to align with H2
- _[cds4j@2.6.0]_ To check for equality of `CdsElement`s obtained from the `CdsModel` they now need to be compared with `equals`
- _[cds4j@2.6.0]_ Optimizations for SAP HANA HEX engine
  - a subselect to search in active entities is avoided
  - search can now search from a subquery
  - search can now search computed elements
  - search does not search the fallback text of localized elements
  - enforce searching the fallback text with the annotation `@cds.sql.search.mode: 'localized-association'
- _[cds4j@2.6.0]_ Rename config option `cds.sql.search.use-localized-view: true` to `cds.sql.search.mode: 'localized-view'`
- _[cds@7.6.0]_ Draft: Standard Sorting Behavior for SAP Fiori List Report Floorplan
- _[cds@7.6.0]_ Use new CDS schema for validation and code completion in `package.json` and `.cdsrc.json` files
- _[cds@7.6.0]_ Media Data Streaming
  - OData: Large binaries without `@Core.MediaType` annotation were previously returned as base64-encoded buffer. Starting from this `@sap/cds` version also not-annotated large binaries are ignored by OData. It is strongly recommended to annotate all large binary properties with `@Core.MediaType` and use it according to streaming scenarios.
  - Custom Handlers: `SELECT` with explicitly listed `SELECT.columns` of type `cds.LargeBinary` returns them as Readable streams. Large binary columns requested implicitly by `SELECT` (for example, with `.columns('*')`) are ignored.
  - Streaming API: `cds.stream()` and `srv.stream()` are deprecated and will be removed with the next major release. Use `SELECT` with a single `cds.LargeBinary` column instead. The resulting object will contain the name of the column and a stream value. For example, `SELECT.one.from(E).columns(['image']).where(...)` returns `{ image: <media stream> }`.
  - Backward Compatibility: To restore previous behavior use `stream_compat`.
- _[cds-mtxs@1.14.3]_ The temporary workaround for `cds.env.requires.['cds.xt.ModelProvideService'].loadSync = true` is removed. This setting won't have an effect for future versions.

### Fixed {#jan-24-fixed}

- _[cds-dk@7.6.0]_ `cds build` no longer throws `maximum call stack size exceeded` error when building SaaS extensions.
- _[cds-dk@7.6.0]_ `cds add approuter` no longer adds `SUBSCRIPTION_URL` configuration to Java projects in some scenarios.
- _[cds-dk@7.6.0]_ `cds add html5-repo` in combination with `cds add helm` or `cds add helm-unified-runtime` correctly adds HTML5 repo runtime configuration.
- _[eslint-plugin-cds@2.6.5]_ Performance got improved significantly for projects with many non `.cds` files (like `.js` files)
- _[vscode-cds@7.5.1]_ Retrieval of `@sap/cds-dk` global installation path is now more robust in SAP Business Application Studio
- _[vscode-cds@7.5.1]_ Activate extension also for `jsonc` files
- _[cds-compiler@4.6.0]_ compiler:
  - ON-conditions of associations with filters in calculated elements were incorrectly rewritten when included
    in other entities, and the filter was applied twice in some scenarios.
  - redirecting an association with filter did not rewrite paths relative to the redirection target.
  - Unknown type references with an explicit named type argument such as `Unknown(length: 10)` crashed.
- _[cds-compiler@4.6.0]_ to.edm(x):
  - `@Core.IsURL` is not rendered in combination with `@Core.MediaType` (V4 only).
  - No 'odata-navigation' warning for association targets annotated with `@cds.autoexpose: false`.
  - No empty annotation in API, when a non-existent base annotation is annotated
    (eg. `@Common.Label.@Core.Description` without `@Common.Label`).
  - Don't crash if value for `$Type` is not a string.
  - Generated foreign keys of type `cds.UUID` that are also primary key are not annotated with
    `@Core.ComputedDefaultValue`. This is a follow up correction to 4.5.0.
- _[cds.java@2.6.0]_ Fixed a bug, causing the `UnsupportedOperationException` being thrown during creation or an update of an entity with to-one compositions to other entities that are subject to the audit logging.
- _[cds.java@2.6.0]_ The event contexts generated in the fluent style now autocomplete the event context when the method `result(...)` is called. An explicit call to `setCompleted()` is no longer necessary.
- _[cds.java@2.6.0]_ Readded Cloud SDKs resilience implementation as a dependency to `cds-integration-cloudsdk`.
- _[cds.java@2.6.0]_ Fixed a bug, preventing `;` to be used in OData V2 search words.
- _[cds.java@2.6.0]_ Fixed a bug, causing `Number` types (e.g. `Integer`) to `BigDecimal` `ClassCastException` in OData v4 Serializer.
- _[cds.java@2.6.0]_ Fixed a bug, causing `ClassCastException` when using typed service interfaces to call remote OData actions or functions.
- _[cds.java@2.6.0]_ Fixed a bug, which prevents setting the correct tenant for the draft GC after draft activation.
- _[cds4j@2.6.0]_ Fix UnsupportedOperationException on expand by parent-keys with orderBy on result sets > 100
- _[cds4j@2.6.0]_ Fix upserts via projections using element ref paths
- _[cds4j@2.6.0]_ Fix exception that occurs if the name of an element equals the qualified name of its entity
- _[cds4j@2.6.0]_ Queries with inline count and the filters that are always false have inline count set to zero instead of a default value
- _[cds@7.6.1]_ Garbage collection of draft is configured with `cds.fiori.draft_deletion_timeout`
- _[cds@7.6.0]_ `cds.minify` returned a shallow clone. When callers like 2sql `cds.linked` that subsequently, this left the passed-in csn in a broken, partially linked state. Now, `cds.minify` doesn't clone anymore, but modifies the passed in csn.
- _[cds@7.6.0]_ Handling of read-only fields in drafts
- _[cds@7.6.0]_ Event Mesh: Better error message for incoming messages without a topic
- _[cds@7.6.0]_ `cds build` now logs a better error message if an incompatible `@sap/cds` version is used.
- _[cds@7.6.0]_ Better error message for runtime requests to non-existing tenants in extensibility scenario.
- _[cds@7.6.0]_ Do not generate UUIDs for association key during `CREATE` operation.
- _[cds@7.6.0]_ OData aggregation with lean draft
- _[cds@7.6.0]_ Sorting in new odata parser with nested select statements. The default sort order is now added to the outer select statement.
- _[cds@7.6.0]_ Server crash in case of misformatted `groupby` transformation in `$apply`
- _[cds@7.6.0]_ Switched EM webhook endpoints to also use new authentication implementation
- _[cds@7.6.0]_ `odata_new_parser`: better error message and code for expand on non-existing elements
- _[cds@7.5.3]_ `cds.localize` and `cds build` produce `i18n.json` again with keys from all base languages
- _[cds@7.5.3]_ `cds.compile.to.serviceinfo` now correctly parses SpringBoot config with nested objects, e.g. for `cds.odata-v4.endpoint.path`
- _[cds@7.5.3]_ Recommend to use `chai` 4 for the time being, as `chai` 5 doesn't properly work yet (requires ESM, `chai-as-promised` not working)
- _[cds@7.5.3]_ View resolving for entities using property names that are identical to entity names
- _[cds@7.5.3]_ Direct modifications with `cds.fiori.bypass_draft` if `cds.fiori.draft_compat` is not enabled
- _[cds@7.5.3]_ Draft: Field validation error message does not display the name of the field
- _[cds@7.5.2]_ Service-level ETag handling in legacy OData server
- _[cds@7.5.2]_ Only provide model to ModelProvider if extensibility or feature toggles are active
- _[cds@7.5.2]_ OData server driven paging when using feature flags `cds.env.features.odata_new_parser` and `cds.env.features.okra_skip_query_options`
- _[cds-mtxs@1.15.0]_ Additional services needed when using `SERVICE_REPLACEMENTS` for HDI deployment can now also be consumed in Kyma after adding them to the `cds` configuration like

  ```json
  "requires": {
        "myuserprovided": {
            "vcap": {
                "label": "user-provided",
                "name": "myuserprovided"
            }
        },
  ```

  See also <https://help.sap.com/docs/SAP_HANA_PLATFORM/4505d0bdaf4948449b7f7379d24d0f0d/a4bbc2dd8a20442387dc7b706e8d3070.html#environment-variables-for-hdi-configuration>
- _[cds-mtxs@1.15.0]_ Temporary files for build and deployment are created in the OS temp directory if file system permissions do not allow the creation in the cds root directory.
- _[cds-mtxs@1.14.4]_ Fixed a `TypeError` in the credentials cache invalidation for HANA deployments.
- _[cds-mtxs@1.14.3]_ i18n translations missing in some Java setups are now correctly resolved.
- _[cds-mtxs@1.14.3]_ CSNs loaded in a worker thread are correctly linked. In earlier versions, this could lead to a stack overflow in projects having `cds.requires.db.schema_evolution: false` and cyclic actions such as this:

  ```cds
  entity C_Books as projection on Books { * } actions {
    action returnSelf() returns C_Books;
  }
  ```

- _[cds-mtxs@1.14.3]_ Sync upgrades for `tenants = *` with `clusterSize > 1` are working correctly.
- _[cds-mtxs@1.14.2]_ `POST /-/model-provider/getEdmx` correctly ad-hoc compiles EDMX files for extended or toggled models.
- _[cds-mtxs@1.14.2]_ `POST /-/model-provider/getEdmx` re-compiles the EDMX if a `model` is passed.
- _[cds-mtxs@1.14.2]_ More resilient retry handling for 'authentication failed' errors in SAP HANA deployments.

### Removed {#jan-24-removed}

- _[cds@7.6.0]_ Experimental `STREAM` CQN is removed and cannot be used anymore
