
# Changelog 2023

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

## December 2023

### Added {#dec-23-added}

- _[cds-dk@7.5.0]_ `cds add` plugin support <Beta />.
- _[cds-dk@7.5.0]_ `cds compile` to `openapi` now creates readonly endpoints for entities annotated with `@cds.autoexpose(d)`.
- _[cds-dk@7.5.0]_ `cds compile` to `openapi` now supports deepInsert and deepUpdate in case of entity property containing a composition.
- _[cds-dk@7.5.0]_ `cds add liquibase` support for Java.
- _[vscode-cds@7.5.0]_ Unused imports are reported as warning and grayed out incl. quickfix to remove them
- _[vscode-cds@7.5.0]_ Snippet proposals for artifact elements in an `annotate` statement
- _[vscode-cds@7.5.0]_ New user setting `cds.contributions.enablement.additionalAnalyticalAnnotations` (default: off) to get
  annotation support for analytical queries (experimental)
- _[cds-compiler@4.5.0]_ parser: `annotate` can now annotate entity parameters, elements and bound actions in one statement.
- _[cds-compiler@4.5.0]_ compiler: A single `annotate` statement can now be used to annotate parameters, elements and
  bound actions in one statement.
- _[cds-compiler@4.5.0]_ to.edm(x): Key elements of type `cds.UUID` are annotated with `@Core.ComputedDefaultValue` if they are
  defined directly in the entity. Elements of type `cds.UUID` that are defined in a named structured type
  and used to define a key element are not annotated, instead a warning is raised if such elements are
  not annotated with `@Core.ComputedDefaultValue`.
- _[cds-compiler@4.5.0]_ to.sql|hdi: Add option `withHanaAssociations` which, for sqlDialect `hana`, allows suppressing
  the generation of the `WITH ASSOCIATIONS`.
- _[cds.java@2.5.0]_ EDMX metadata loaded from MTXS sidecar is now localized lazily, if `cds.odata-v4.lazy-i18n.enabled` is set to `true`. This avoids caching different translations of the same EDMX in memory.
- _[cds.java@2.5.0]_ `CqnService` beans, whose name match their CDS definition are now marked as primary, avoiding `@Qualifier` annotations when autowiring these.
- _[cds.java@2.5.0]_ `app_tid` is now preferred over `zoneId` when reading tenants from Subscription Manager Service.
- _[cds.java@2.5.0]_ The function `matchesPattern` is now supported in incoming and outgoing OData V4 requests.
- _[cds.java@2.5.0]_ The `where` property of `@restrict` annotations now supports expressions as alternative to the String format.
- _[cds.java@2.5.0]_ Draft GC for a specific tenant and service now occurs asynchronously as a side effect of a draft activation.
- _[cds.java@2.5.0]_ Feature `cds-feature-auditlog-v2` now also supports the service plan `premium` of the Audit Log Service and, by that, can be used by external customers.
- _[cds.java@2.5.0]_ Creation of CAP-specific spans for Open Telemetry can be controlled using a dedicated logger `com.sap.cds.otel.span`.
- _[cds4j@2.5.0]_ CDS Model Reader: Support expressions in annotations
- _[cds4j@2.5.0]_ SAP HANA JSON Document Store: support `orderBy` for queries that target a document collection
- _[cds4j@2.5.0]_ New `CQL.matchesPattern` filter with regular expression support
- _[cds4j@2.5.0]_ The code generator supports annotating services with `@cds.java.name` to customize the name of the corresponding generated service interface
- _[cds4j@2.5.0]_ Beta: Support using session context variable `$tenant` in view definitions
- _[cds4j@2.5.0]_ Beta: Capture transformation from OData v4's `$apply` option as `CqnTransformation`s
- _[cds4j@2.5.0]_ Beta: Support updates with expressions via `Update::set` method
- _[cds@7.5.0]_ Support for expressions in where clause of `@restrict` annotation.
  - Example: `@(restrict : [{ grant : ['*'], where : (NAME = $user) }])`
- _[cds@7.5.0]_ Function `cds.unboxed(srv)` to get the non-outboxed variant of the service
- _[cds@7.5.0]_ Service implementations can now be provided in .mjs modules.
- _[cds@7.5.0]_ Remote services: advanced configurable `CSRF` token fetching HTTP method and the URL.
  For example, in the configuration of your remote services, you can now configure the HTTP method and URL as follows:

  ```json
  "cds": {
    "requires": {
      "API_BUSINESS_PARTNER": {
        "kind": "odata",
        "model": "srv/external/API_BUSINESS_PARTNER",
        "csrf": { // this configuration implies `csrf: true`
          "method": "get",
          "url": "..."
        }
      }
    }
  }
  ```

- _[cds@7.5.0]_ `cds.log`'s built-in JSON formatter:
  - Extract custom fields (`cds.env.log.als_custom_fields`) and categories from args (not only error-like first objects)
    - Example: `LOG.info('foo', { query: 'SELECT * FROM DUMMY' }, 'bar', { categories: ['baz'] })`
  - `cds.env.log.mask_headers = [...]` allows to specify a list of matchers for which the header value shall be masked (i.e., printed as `***`)
    - Default: `['/authorization/i', '/cookie/i']`
- _[cds@7.5.0]_ `cds.env.fiori.bypass_draft` feature flag, designed to enable direct modifications via `POST` and `PATCH` of
active instances in lean draft mode (`cds.env.fiori.lean_draft=true`). For example:

```http
POST /Orders
{
  "IsActiveEntity": true
}
```

- _[cds@7.5.0]_ Auth kind `ias`: same SAML attr API as auth kind `xsuaa` for easier migration

### Changed {#dec-23-changed}

- _[cds-dk@7.5.0]_ `cds add application-logging` can now be used in place of `cds add kibana`. `cds add kibana` is deprecated.
- _[cds-dk@7.5.0]_ `cds add application-logging` now uses the `standard` service plan in the `mta.yaml`, instead of `lite`.
- _[cds-dk@7.5.0]_ `cds add application-logging` doesn't add the `cds.features.kibana_formatter` flag any more.
- _[cds-dk@7.5.0]_ `cds v -i` will now insert a default placeholder if `repository` or `repository.url` is undefined in your `package.json`.
- _[cds-dk@7.5.0]_ Use supported node versions in SAP HANA database modules.
- _[cds-dk@7.5.0]_ `cds build` uses console.log to correctly format log output.
- _[cds-dk@7.5.0]_ Retrofit `cds build` plugin register API.
- _[cds-dk@7.5.0]_ `cds build` log output has been streamlined.
- _[cds-compiler@4.5.0]_ Update OData Vocabulary: 'Common'.
- _[cds-compiler@4.5.0]_ api: Reject CSN as input in backends, if it is a CSN in flavor `parsed` with a non-empty `requires` array.
  Reason being that the model is not considered a "full" CSN, as dependencies were not resolved.
- _[cds.java@2.5.0]_ The periodic draft GC job pauses for some time after each GC execution for a tenant to reduce load on the MTXS sidecar.
- _[cds.java@2.5.0]_ The outbox processor now checks existence of outbox entries using the base model, before processing outbox entries, to reduce load on the MTXS sidecar.
- _[cds@7.5.0]_ Removed and integrated former `ctx-auth` middleware into `cds.auth` middleware
- _[cds@7.5.0]_ `cds.log`:
  - `cds.env.log.format = 'plain'|'json'` allows to configure which built-in formatter is used. Defaults to `json` in production, `plain` otherwise.
  - If a built-in JSON formatter is used:
    - Field `tenant_subdomain` is filled if running on CF and information is available through authentication
    - Additional CF-related fields are filled if running on CF
    - Custom fields (`cds.env.log.als_custom_fields`) are filled if bound to an instance of Application Logging Service
    - Field `categories` is filled if bound to an instance of Application Logging Service
  - Config `cds.env.log.kibana_custom_fields` changed to `cds.env.log.als_custom_fields` (ALS = Application Logging Service) with compatibility until the next major
- _[cds@7.5.0]_ Package `passport` is no longer required (if `cds.env.requires.middlewares` is not set to `false`)
- _[cds@7.5.0]_ Type definitions for the APIs of this package are now maintained in package [`@cap-js/cds-types`](https://npmjs.com/package/@cap-js/cds-types).
  - If you used one of the types `CSN`, `Definitions`, `entity` of _@sap/cds/apis/reflect_, use the `Linked` counterparts instead.
  - If you used the type `CQNQuery` of _@sap/cds/apis/cqn_, use `SELECT` or a union type instead.
  - This also includes various fixes to Typings for
    - `req.subject` like `SELECT.from(req.subject)`
    - `SELECT.columns([...])`
    - `cds.db`
    - `cds.util`
    - `cds.context.features`
- _[cds@7.5.0]_ The number of files logged on `cds serve` is now limited to 30 by default. You can run with `DEBUG=serve` to show all files.
- _[cds@7.5.0]_ `express.static` is only mounted if the target folder (`cds.folders.app`) exists
- _[cds@7.5.0]_ `cds.outbox.Messages` no longer uses aspect `cuid` to reduce model size impact in case `@sap/cds/common` is not used otherwise
- _[cds-mtxs@1.14.1]_ `lazyT0` now also works in a sidecar scenario with `multitenancy` not explicitly set to `true`.
- _[cds-mtxs@1.14.1]_ The default for `cds.requires.multitenancy.jobCleanupIntervalStale` is reduced from one week to two days.
- _[cds-mtxs@1.14.0]_ Various performance improvements for retrieving EDMX or CSN models.
- _[cds-mtxs@1.14.0]_ Improved logging for `cds.xt.JobsService` or `cds.xt.DeploymentService`.
- _[cds-mtxs@1.13.4]_ The built-in Service Manager client uses async APIs for creating or deleting service bindings by default.

### Fixed {#dec-23-fixed}

- _[cds-dk@7.5.0]_ `cds add postgres` for Java now uses the `default` profile when called without the `--for` option.
- _[cds-dk@7.5.0]_ `cds compile` to `openapi` now adds `title` and `description` from `@Core.Description` and `@Core.LongDescription` respectively to reduce duplicate descriptions.
- _[cds-dk@7.5.0]_ `cds build --production` now loads cds plugins from `devDependencies`.
- _[cds-dk@7.5.0]_ Less redundant messages on request errors.
- _[cds-dk@7.5.0]_ Avoid empty error message when `cds push` fails.
- _[cds-dk@7.5.0]_ Better type definitions for programmatic APIs provided by `cds-dk`.
- _[cds-dk@7.5.0]_ Better error message if old `@sap/cds` versions <= 5 are used.
- _[cds-dk@7.5.0]_ Calls from Yeoman generator are now handled correctly.
- _[cds-dk@7.5.0]_ `cds compile` to `openapi` now adds correct schema `$ref` for patch operation.
- _[vscode-cds@7.5.0]_ CDS schema loading is more robust
- _[vscode-cds@7.5.0]_ Removed failing `copy` function for code blocks from `CAP Release Notes`
- _[vscode-cds@7.5.0]_ CAP with Typescript <Beta />: command line for creating types now also works correctly on Windows
- _[vscode-cds@7.5.0]_ Padding and highlighting of identifiers with Unicode characters
- _[vscode-cds@7.5.0]_ Highlighting of `stored` keyword
- _[cds-compiler@4.5.0]_ compiler:
  - Fix false positives of cyclic dependencies for calculated elements.
  - Fix cardinality on source associations when publishing them with a filter (+ different cardinality)
    in a projection.  The cardinality was incorrectly changed on the source as well.
- _[cds-compiler@4.5.0]_ CDL parser:
  - More numbers that would lose relevant digits due to precision loss are
    stored as strings in CSN (i.e. `{ "literal":"number", "val": "1.0000000000000001" }`).
  - Nested table expressions and queries in the FROM clause (with surrounding parentheses)
    could cause some constructs such as `virtual` to be not properly parsed.
- _[cds-compiler@4.5.0]_ to.hdi.migration: Don't drop-create the primary key when only a doc-comment has changed.
- _[cds-compiler@4.5.0]_ to.cdl: Fix edge case where `@A.![B#]` was not rendered correctly.
- _[cds-compiler@3.9.12]_ compiler:
  - SQL function `STDDEV(*)` was not parsable.
  - Numbers in scientific notation `-1e1` were sometimes not recognized via CSN input.
- _[cds-compiler@3.9.12]_ for.odata: Fix crash when using a projection with associations as action parameter type.
- _[cds-compiler@3.9.12]_ for.hana: Fix a bug in association to join translation, expect ON condition operand to be a function without arguments.
- _[cds-compiler@3.9.12]_ to.edm(x):
  - Omit `EntitySet` attribute on `Edm.FunctionImport` and `Edm.ActionImport` that return a singleton.
  - Don't render `Scale: variable` for `cds.Decimal(scale:0)`.
- _[cds-compiler@3.9.12]_ to.sql/hdi/hdbcds: consider `having` predicate for `exists` expansion
- _[cds.java@2.5.0]_ Fixed a bug, causing `internal-user` role not correctly set on the system user of the provider tenant.
- _[cds.java@2.5.0]_ Fixed a bug, causing OData Serializer to return `0E-8` for zero-value (`0`) Decimals.
- _[cds.java@2.5.0]_ Fixed a bug, causing `/$count` requests to fail on draft-enabled entities.
- _[cds.java@2.5.0]_ Fixed a bug, causing number values to be handled incorrectly for messaging queue configurations.
- _[cds.java@2.4.1]_ Fixed a bug, causing requests to MTX Sidecar during shutdown of the application.
- _[cds.java@1.34.8]_ Fixed a bug, causing audit log messages not being written on behalf of the named user when the persistent outbox is used.
- _[cds@7.5.1]_ Resolving custom authentication implementation pointer
- _[cds@7.5.0]_ Messaging: Listen to `*`
- _[cds@7.5.0]_ Drafts of `@readonly` entities cannot be deleted
- _[cds@7.5.0]_ Made `srv.prepend()` robust by not allowing async callbacks and hence not being an async function itself anymore
- _[cds@7.5.0]_ Formatting for stringified number-literal value
- _[cds@7.5.0]_ Secrets are now masked with `DEBUG=cds.service.factory`
- _[cds@7.5.0]_ The timestamp of cds.context is not propagated to new root contexts
- _[cds@7.5.0]_ `cds.localize` uses less memory to create translation bundles
- _[cds@7.5.0]_ `UPSERT` operation failed to fill DateTime/Timestamp fields
- _[cds@7.5.0]_ Use original logic (based on `NODE_ENV`) to load cds plugins from `devDependencies`
- _[cds@7.5.0]_ Property `tenant` also available on express' `req` object with basic and mocked auth
- _[cds@7.5.0]_ Empty `req.data` in before `DELETE` handler in draft
- _[cds@7.5.0]_ Loading `cds-plugins` now offers a hook to add a more flexible plugin loader, e.g., for corrupt `package.json` files.
- _[cds@7.5.0]_ Ignore default values of associations for draft entities
- _[cds@7.5.0]_ OData: client-side errors (4xx) logged as warnings instead of errors
- _[cds@7.5.0]_ IAS authentication: use `tokenInfo.getClientId()` instead of `payload.azp` as it implements a fallback
- _[cds@7.5.0]_ Deep updates with binary keys
- _[cds@7.5.0]_ Allow `null` values in `cds.env` (example package.json excerpt: `{ "cds": { "features": { "foo": null } } }`)
- _[cds@7.5.0]_ Collection-bound actions/functions called via navigation
- _[cds-mtxs@1.14.1]_ A sidecar setup can be started for local development even with `multitenancy: false`.
- _[cds-mtxs@1.14.1]_ Additional resilience measures for the new Service Manager APIs if a healthy instance exists, but no binding.
- _[cds-mtxs@1.14.1]_ `cds.env.requires.['cds.xt.ModelProvideService'].loadSync = true` can be set to skip using worker threads when loading the application model.
- _[cds-mtxs@1.13.3]_ `PUT /-/cds/saas-provisioning/tenant` can now be used for upgrade purposes with shared deployment directories in non-extensible apps.
- _[cds-mtxs@1.13.3]_ `POST /-/cds/saas-provisioning/upgrade` correctly determines the deployment directory in non-extensible apps if just one tenant is passed in the request body.
- _[cds-mtxs@1.13.2]_ Projects with `cds.features.assert_integrity = 'db'` don't generate constraints for `t0` any more.
- _[cds-mtxs@1.13.2]_ Deployment resources for `t0` are not created in the `base` directory any more.
- _[cds-mtxs@1.13.2]_ Fixed a race condition for the shared `base` directory.

### Removed {#dec-23-removed}

- _[cds-compiler@4.5.0]_ to.edm(x): Remove option `--odata-open-type` introduced with 4.4.0.
- _[cds@7.5.0]_ Deprecated global configuration feature flag `cds.env.features.fetch_csrf`.
  Instead, please use `csrf` and `csrfInBatch` to configure your remote services.
  These options will allow to configure CSRF-token handling.
- _[cds@7.5.0]_ Compat for deprecated `cds.env.auth.passport`. Use `cds.env.requires.auth` instead.

## November 2023

### Added {#nov-23-added}

- _[cds-dk@7.4.0]_ `cds init` for Node.js now has `@cds-models` for `@cap-js/cds-typer` in its `.gitignore`.
- _[cds-dk@7.4.0]_ `cds add local-messaging` is now supported for Node.js.
- _[cds-dk@7.4.0]_ `cds add postgres` is now supported for Java.
- _[cds-dk@7.4.0]_ `cds build` now supports the command line argument `--no-clean` <Beta />. Clients need to clean the output folder(s) manually for consistent build results.
- _[cds-dk@7.4.0]_ `cds build` now supports the build task option `flavorLocalizedEdmx` to generate localized instead of non-localized edmx files for Java apps - default is `false`.
- _[cds-dk@7.4.0]_ `cds subscribe`, `cds unsubscribe`, `cds upgrade` now also support the `--resolve-bindings` flag.
- _[cds-dk@7.4.0]_ `cds build` now supports the command line argument `--ws` to enable tarball based packaging of npm workspace dependencies for Node.js apps. <Beta />
- _[cds-dk@7.4.0]_ `cds build` now supports SAP HANA schema evolution for draft tables.
- _[cds-compiler@4.4.0]_ compiler: International letters such as `ä` can now be used in CDS identifiers without quoting.
  Unicode letters similar to JavaScript are allowed.
- _[cds-compiler@4.4.0]_ to.edm(x):
  - Allow to render all complex types within a requested service as `OpenType=true` with option `--odata-open-type`.
    Explicit `@open: false` annotations are not overwritten.
  - Allow to annotate the generated draft artifacts but not generated foreign keys (as with any other managed association).
- _[cds-compiler@4.4.0]_ to.sql|hdi|hdbcds: Allow annotating the generated `.drafts` tables.
- _[cds.java@2.4.0]_ Select queries on draft-enabled entities are now optimized and executed with simpler SQL statements, avoiding JOINs and subselects between active and draft persistence whenever this introduces a performance gain.
- _[cds.java@2.4.0]_ Events for reading of active instances and draft instances of draft-enabled entities can now be handled in distinct event handlers. This enables redirection of all events on active instances to a different datasource, for example a remote S/4 system. The property `cds.drafts.persistence` should be set to `split` in that case to ensure JOINs and subselects are avoided in all SAP Fiori UI queries.
- _[cds.java@2.4.0]_ Queries to remote OData services now support tuple comparisons and tuple IN predicates.
- _[cds.java@2.4.0]_ EDMX metadata loaded from JAR resources is now localized lazily upon request, if unlocalized EDMX resources are generated by `cds build`. This avoids caching different translations of the same EDMX in memory.
- _[cds.java@2.4.0]_ Introduced a `EdmxV4Provider` interface, allowing custom code to overwrite how EDMX metadata is loaded.
- _[cds.java@2.4.0]_ Introduced a new generic interface `CdsProvider`, implemented by all specific provider interfaces, for example `UserInfoProvider`.
- _[cds.java@2.4.0]_ The `generate` goal of the `cds-maven-plugin` now generate typed `CqnService` interfaces based on the CDS model definitions. These typed interfaces contain explicit methods for all actions and functions the service defines.
- _[cds.java@2.4.0]_ CqnServices registered during startup are automatically proxied with a typed interface, if available.
- _[cds.java@2.4.0]_ The goal `install-node` of the `cds-maven-plugin` supports re-tries, if the download of the Node.js distribution fails.
- _[cds.java@2.4.0]_ The goal `install-node` of the `cds-maven-plugin` supports installing Node.js on the architecture `aarch64`.
- _[cds.java@2.4.0]_ A new property `cds.csdk-version` can be set in `pom.xml` for the `cds-maven-plugin`. If this property is set `@sap/cds-dk` is referenced using `npx --package` in the `cds` goal. This avoids installing npm modules into the project.
- _[cds.java@2.4.0]_ The `watch` goal of the `cds-maven-plugin` now includes a new `testRun` property, which helps to configure the specific goal for starting the application in the `spring-boot-maven-plugin`.
- _[cds.java@2.4.0]_ The goal `add` of the `cds-maven-plugin` supports adding PostgreSQL and Liquibase support to a CAP Java project.
- _[cds.java@2.4.0]_ Pagination is now handled when retrieving subscribed tenants from Subscription Manager Service (SMS).
- _[cds.java@2.4.0]_ The new method `systemUserProvider()` of `RequestContextRunner` allows to easily execute code as a system user on behalf of the provider tenant.
- _[cds.java@2.4.0]_ The new method `systemUser()` of `RequestContextRunner` allows to easily execute code as a system user on behalf of the current tenant.
- _[cds.java@2.4.0]_ The new method `systemUser(tenantId)` of `RequestContextRunner` allows to easily execute code as a system user on behalf of a specific tenant.
- _[cds.java@2.4.0]_ CSV file loader now supports files with headers and content quoted with double quotes.
- _[cds.java@2.4.0]_ Setting the new property `cds.sql.hana.optimizationMode` to `hex` generates SQL specific for the SAP HANA HEX engine.
- _[cds4j@2.4.0]_ Default values for to-one managed associations to entities with one key element
- _[cds4j@2.4.0]_ CqnAnalyzer: support in predicates, which compare list-values
- _[cds4j@2.4.0]_ Generate SQL specific for SAP HANA HEX engine using configuration `cds.sql.hana.compatibilityMode: "hex"` or statement hint `"hdb.USE_HEX_PLAN"`
- _[cds4j@2.4.0]_ Typed entity refs via `CQL.entity(type)`
- _[cds4j@2.4.0]_ Resolved segments of analyzed refs now provide the element
- _[cds@7.4.0]_ Any service is outboxable via `srv = cds.outboxed(srv)`
- _[cds@7.4.0]_ Draft: support `HasActiveEntity eq false` by read
- _[cds@7.4.0]_ Check if OData function/action params exist for complex types
- _[cds@7.4.0]_ Remote services: destination option `jwt` set to `null` instructs that an incoming request's JWT shall not be passed to SAP Cloud SDK, e.g., when it shall use a fresh client credentials flow token
  - Example:

    ```json
    "requires": {
      "API_BUSINESS_PARTNER": {
        [...]
        "destinationOptions": {
          "jwt": null
        }
      }
    }
    ```

- _[cds@7.4.0]_ Alpha feature flag `cds.env.fiori.wrap_multiple_errors` to toggle the following behaviour for OData errors meant to be consumed by SAP Fiori Elements:
  In cases where multiple errors occur and the flag is set to `false`, the first error is presented as the top-level error (replacing the generic "multiple errors" wrapper).
  The default value is `true`, but `false` will become the default value in cds^8.
- _[cds@7.4.0]_ On CF, the default keep alive timeout of the server is set to 91s (to exceed the 90s of CF's gorouter)
- _[cds@7.4.0]_ `cds deploy` now auto-fills the `ID_texts` field (which get created for entities marked with `@fiori.draft.enabled`) in csv and json data files with a stable UUID.  This way, it does not need to be manually added to data files.  Also, as the value is stable (a hash of the semantic key fields `ID` and `locale`), it works with `UPSERT` statements.
- _[cds-mtxs@1.13.1]_ `DEBUG=mtx` will now log all outgoing requests to Service Manager.
- _[cds-mtxs@1.13.1]_ For `multitenancy.jobs.clusterSize > 1` the Service Manager request will throw an error for a corrupt tenant without credentials.
- _[cds-mtxs@1.13.0]_ `GET /-/cds/saas-provisioning/tenant` now also returns `createdAt` and `modifiedAt` fields.
- _[ux-cds-odata-language-server-extension@1.11.5]_ Enhanced code completion and validation to support annotating inline composition

### Changed {#nov-23-changed}

- _[cds-dk@7.4.1]_ `cds push` uses the synchronous server API by default again due to stability problems. Use `--async` for the asynchronous call.
- _[cds-dk@7.4.1]_ `cds add enterprise-messaging` will now correctly replace all `_` by `-`.
- _[cds-dk@7.4.0]_ `cds build` plugins can now require their APIs directly from `@sap/cds` (instead of `@sap/cds-dk`).
- _[cds-dk@7.4.0]_ `cds init` uses latest Maven Java archetype version 2.4.0 for creating Java projects.
- _[vscode-cds@7.4.0]_ Formatting
  - Projections now similar to that of views
  - Markdown formatting inside doc comments is now done with `marked` parser AST instead of `remark`.
    Previously, this was enabled by default but due to slightly different formatting this feature is
    disabled by default, now. Thus, already formatted markdown won't be changed and thus
    won't lead to file changes when used in CI/CD via `format-cds` command.
    Enable it via format setting `formatDocComments`.
- _[vscode-cds@7.4.0]_ Simplified trace configuration - just use `cds.trace.level`
- _[cds-compiler@4.4.0]_ CDL parser: improve error recovery inside structured annotation values
- _[cds-compiler@4.4.0]_ Update OData vocabularies: 'Aggregation', 'Common', 'Core', 'Hierarchy', 'ODM', 'UI'.
- _[cds.java@2.4.0]_ The `cds-maven-plugin` installs Node.js 18 by default.
- _[cds.java@2.4.0]_ The archetype now supports creating projects for Java 21 and no longer for Java 20.
- _[cds4j@2.4.0]_ To-many expand SQL: only add hidden @-prefixed key elements if not already selected
- _[cds4j@2.3.1]_ Reduce statement-level collating on SAP HANA to order relations on String elements in where/having of Select statements
- _[cds4j@2.3.1]_ Don't use `COLLATE` in orderBy clause of SAP HANA queries with statement-level collating or if type propagation yields a non-string type
- _[cds4j@2.3.1]_ Don't use statement-wide collating in update and delete statements
- _[cds4j@1.38.8]_ SAP HANA: Don't use statement-wide collating in update and delete statements
- _[cds4j@1.38.8]_ SAP HANA: Reduce statement-wide collating to order relations on String elements in where/having
- _[cds4j@1.38.8]_ SAP HANA: Don't use COLLATE in queries using statement-level collating
- _[cds@7.4.0]_ Default outbox configuration (overridable via `cds.env.requires.outbox = { ... }`):
  - `kind` changed to `persistent-outbox` (was `in-memory-outbox`)
  - `parallel` changed to `true` (i.e., messages are not emitted in sequence)
- _[cds@7.4.0]_ Internal class `OutboxService` is deprecated and will be removed
- _[cds-mtx@2.6.6]_ Upgraded `@sap/instance-manager` to version 4.
- _[cds-mtxs@1.13.1]_ For non-extensibility projects, a shared deployment folder is used across tenants for resource extraction. For `n` simultaneous tenant upgrades, this decreases the number of extracted files `n`-fold.
- _[cds-mtxs@1.13.0]_ The internal job runner now has an in-memory queuing mechanism. For non-scaled sidecar instances, this avoids tasks for the same tenant from being run at the same time.

### Fixed {#nov-23-fixed}

- _[cds-dk@7.4.1]_ `semver` is bumped to version `^7` to mitigate [CVE-2022-25883](https://github.com/advisories/GHSA-c2qf-rxjj-qqgw)
- _[cds-dk@7.4.0]_ `cds deploy --to hana --dry` now prints out the SAP HANA SQL files which will be deployed if `--dry` is not specified.
- _[cds-dk@7.4.0]_ `cds build` no longer fails if multiple service protocols are configured in object notation.
- _[cds-dk@7.4.0]_ `cds build` now uses configured compiler options when building Node.js projects.
- _[cds-dk@7.4.0]_ `cds pull` when amending package.json applies the original indentation
- _[cds-dk@7.4.0]_ `cds watch --profile hybrid` no longer produces a value `hybrid,hybrid` for `process.env.CDS_ENV`
- _[cds-dk@7.4.0]_ `cds.schema` now loads lazily.
- _[cds-dk@7.4.0]_ `cds init` does not print `cd` hint if creating a project in current folder.
- _[vscode-cds@7.4.0]_ Formatting
  - Padding of quoted identifiers
  - Treat only /** (no additional asterisks) as start of doc comments
- _[vscode-cds@7.4.0]_ Syntax highlighting of comments within braced select item lists
- _[vscode-cds@7.4.0]_ Update of diagnostic messages could have got lost
- _[cds-compiler@4.4.4]_ to.hdi.migration: Changes in only `doc`-comments should not result in a drop-create of the primary key.
- _[cds-compiler@4.4.2]_ for.odata: Fix crash when using a projection with associations as action parameter type.
- _[cds-compiler@4.4.2]_ to.edm(x): `Edm.AnyPropertyPath` is hard to `Edm.PropertyPath`. As there is no dynamic path evaluation,
  `Edm.NavigationPropertyPath` must be enforced via `$edmJson`.
  `Edm.AnyPropertyPath` has been used in `@Aggregation.ApplySupported.GroupableProperties` for the first
  time after vocabulary update with 4.4.0.
- _[cds-compiler@4.4.0]_ parser:
  - `/**/` was incorrectly parsed as an unterminated doc-comment, leading to parse errors.
  - Doc-comments consisting only of `*` were not correctly parsed.
- _[cds-compiler@4.4.0]_ compiler: do not propagate `default`s in a CSN of flavor `xtended`/`gensrc`.
- _[cds-compiler@4.4.0]_ to.hana: Fix various bugs in association to join translation. Support `$self` references
  in filter expressions.
- _[cds-compiler@4.4.0]_ to.edm(x): Omit `EntitySet` attribute on `Edm.FunctionImport` and `Edm.ActionImport` that return
  a singleton.
- _[cds-compiler@4.4.0]_ to.sql|hdi.migration: Improve handling of primary key changes - detect them and render corresponding drop-create.
- _[cds.java@2.4.0]_ Fixed a bug, causing applications without `spring-boot-starter-web` dependencies to fail during startup.
- _[cds.java@2.4.0]_ Fixed a bug, causing a hard to understand error message, when custom handlers don't implement `/$count` queries correctly.
- _[cds.java@2.4.0]_ Fixed a bug, causing statements with incorrect comparisons when using OData singletons.
- _[cds.java@2.4.0]_ Fixed a bug, causing `@cds.collate: false` to be ignored on draft-enabled entities.
- _[cds.java@2.4.0]_ Fixed a bug, causing selection of too many elements in remote OData V2 and V4 queries.
- _[cds.java@2.4.0]_ Fixed a bug, causing the annotation-based audit log handling, not to send a data modification event if a personal data attribute was deleted.
- _[cds.java@2.4.0]_ Fixed a bug in the `add` goal of the `cds-maven-plugin`, causing an incomplete MTX setup for local testing.
- _[cds.java@2.4.0]_ Fixed a bug in the `resolve` goal of the `cds-maven-plugin`, causing CDS reuse dependencies in the same reactor build to be omitted.
- _[cds.java@2.4.0]_ Fixed a bug in goal `generate` of the `cds-maven-plugin`, causing the POJO generation to fail in Eclipse and other IDEs.
- _[cds.java@2.4.0]_ Fixed a bug, causing HTTP requests to be rejected with status code 401 when technical user JWT tokens issued by IAS were used.
- _[cds.java@2.3.1]_ Fixed a bug, causing audit log messages not being written on behalf of the named user when the persistent outbox is used.
- _[cds4j@2.4.1]_ Fix exception on queries using elements of undefined type in `order by` or in ordering relations in filters
- _[cds4j@2.4.1]_ Fix to-many expand for queries using where exists subqueries with paths
- _[cds4j@2.4.1]_ Fixed a code generation issue, if there is no CDS model available and typed service interface should be generated
- _[cds4j@2.4.1]_ Consider `cds.sql.hana.ignoreLocale: true` in `ORDER BY` for SAP HANA
- _[cds4j@2.4.1]_ Fixed a code generation issue, if an action or function is renamed with `@cds.java.name`.
- _[cds4j@2.4.1]_ Fix HEX hint for queries using search
- _[cds4j@2.4.0]_ Fixed a bug, causing memory leak when the methods of the accessor interfaces that return a list were called
- _[cds4j@2.4.0]_ Values of virtual elements are no longer removed from the payload of the `Insert`, `Update` and `Upsert` statements and are available in the `Result` of these statements
- _[cds4j@1.38.8]_ SAP HANA: Render COLLATE in order by only if type propagation yields STRING
- _[cds@7.4.2]_ Typing for `DELETE.from(<e>.drafts)`
- _[cds@7.4.2]_ UUID keys must not be generated for associations
- _[cds@7.4.1]_ Add dynamic properties to result when experimental feature `cds.env.features.okra_skip_query_options` is active
- _[cds@7.4.1]_ Allow negative integers in new parser
- _[cds@7.4.1]_ Allow deletion of instances outside the draft tree
- _[cds@7.4.1]_ Tenant lookup in OData metadata requests
- _[cds@7.4.1]_ `cds.parse.csv` and `cds deploy` correctly parse CSV files with Windows file endings (CRLF) and quoted values
- _[cds@7.4.1]_ Typescript Typings
- _[cds@7.4.0]_ `req.subject` in lean-draft handlers
- _[cds@7.4.0]_ `cds.odata.batch_limit` wasn't taken into account
- _[cds@7.4.0]_ Enterprise-Messaging: Only set tenant information for multitenant apps
- _[cds@7.4.0]_ Enterprise-Messaging: Race condition in `subscribe` event
- _[cds@7.4.0]_ Draft: delete of active entity is forbidden, if draft exist
- _[cds@7.4.0]_ Draft: sorting of draft entities in `list status: all`
- _[cds@7.4.0]_ Draft: invalid delete draft request now rejects with error
- _[cds@7.4.0]_ Draft: Enhance Draft Edit functionality with exclusive record lock
- _[cds@7.4.0]_ Typings for `req.reject/error/info/warn`
- _[cds@7.4.0]_ Deep delete with mixins on new db layer did not work
- _[cds@7.4.0]_ Special strings like `'$now'`, `'$user'` and `'$uuid'` expanded automatically
- _[cds@7.4.0]_ Only services that are served via OData are precompiled during startup
- _[cds@7.4.0]_ Response status of not existing mocks returned 200 instead of 404
- _[cds@7.4.0]_ Calculation of @Capabilities in case of complex $apply
- _[cds@7.4.0]_ `test.data.reset()` did not delete drafts
- _[cds@7.4.0]_ `resolveView` considers `list` for renamed columns
- _[cds@7.4.0]_ `cds.schema` now loads lazily
- _[cds@7.4.0]_ `odata_new_parser`: `$expand=` no longer throws an error with and is simply ignored
- _[cds@7.4.0]_ `odata_new_parser`: Empty custom query params like `Foo?bar` are ignored
- _[cds@7.4.0]_ `odata_new_parser`: generated wrong CQN for queries like `$filter=false or ref eq 5`

### Removed {#nov-23-removed}

- _[cds-dk@7.4.0]_ `cds repl` no longer loads `cds.plugins` on startup to keep `cds` lazy.
- _[vscode-cds@7.4.0]_ Workspace validation modes `OpenEditorsAndDirectSources` and
  `OpenEditorsDirectSourcesAndDirectDependencies` are no longer supported.
  In real-world models they led to high CPU usage and slow responsiveness.
  Any of these user setting values are now treated as `ActiveEditorOnly`
  if supported by IDE, else `OpenEditorsOnly`.

## October 2023

### Added {#oct-23-added}

- _[cds-dk@7.3.1]_ `cds build` supports the option `contentLocalizedEdmx` to enable/disable the generation of localized edmx files for Java apps - default is `true`.
- _[cds-dk@7.3.1]_ `cds repl` now loads `cds.plugins` on startup.
- _[cds-dk@7.3.1]_ `cds add enterprise-messaging-shared` also supports Kyma deployment.
- _[cds-dk@7.3.1]_ `cds add notifications` adds configurations for notifications plugin.
- _[cds-dk@7.3.0]_ `cds push` now uses the asynchronous server API by default. Use `--sync` for the synchronous one.
- _[cds-dk@7.3.0]_ `cds activate` and `cds push` now support the `-2` shortcut for the `--to` option.
- _[cds-dk@7.3.0]_ Improved error logging for failed HTTP requests.
- _[cds-dk@7.3.0]_ `cds build` support for custom build plugins.
- _[cds-dk@7.3.0]_ `cds compile` support for custom compile plugins.
- _[cds-dk@7.3.0]_ `cds build` creates non-localized edmx files for the nodejs apps. Translations will be applied at runtime.
- _[cds-dk@7.3.0]_ `cds.schema.overlay4` gets the cds default schema plus overlays from cds-dk.
- _[cds-dk@7.3.0]_ `cds build` creates non-localized edmx files for the java apps. Translations will be applied at runtime.
- _[cds-dk@7.3.0]_ `cds import` now introduces new option `--config` to add custom configuration data in the package.json.
- _[cds-dk@7.3.0]_ `cds add helm` now adds `html5-apps-repo-runtime` binding for `approuter` if `html5-repo` is present.
- _[cds-dk@7.3.0]_ (BETA) `cds add postgres` adds configuration for PostgreSQL. This requires `@cap-js/postgres` 1.3.0.
- _[eslint-plugin-cds@2.6.4]_ New `auth-restrict-grant-service` rule that validates events on restricted services.
- _[vscode-cds@7.3.0]_ support for `cdsc.moduleLookupDirectories`
- _[vscode-cds@7.3.0]_ Support for merged cds schemas returned by `cds-dk`
- _[cds.java@2.3.0]_ Feature `cds-feature-identity` is now supporting pure XSUAA-based scenarios. A service binding to IAS is not mandatory anymore. With this change, it is feature compatible with `cds-feature-xsuaa` which eventually will be removed in a future release.
- _[cds.java@2.3.0]_ `UserInfo.isInternalUser()` is now supported in case of IAS-based authentication.
- _[cds.java@2.3.0]_ The archetype now generates projects with encoding UTF-8 configured for the Java compile plugin.
- _[cds.java@2.3.0]_ Service Bindings from  `default-env.json` are now provided through a plugin in the Service Binding Library and are therefore visible to other libraries, for example Cloud SDK.
- _[cds.java@2.3.0]_ Cloud SDK's new `ServiceBindingDestinationLoader` API is now used to create destinations from service bindings.
- _[cds.java@2.3.0]_ PostgreSQL SSL connections are now properly configured to validate the SSL certificate and hostname.
- _[cds.java@2.3.0]_ CAP Java is now tested with SapMachine 21 and no longer with SapMachine 20.
- _[cds.java@2.3.0]_ Out of the box integration with Subscription Manager Service (SMS) to offer IAS tenant lifecycle.
- _[cds.java@2.3.0]_ The goal `add` of the `cds-maven-plugin` merges changes into existing profiles in application.yaml instead of replacing them.
- _[cds4j@2.3.0]_ Allow to control collating on SAP HANA per statement via hint "collating.hana"
- _[cds4j@2.3.0]_ Config option `cds.sql.collate: "localized-strings"`
- _[cds4j@2.3.0]_ Annotation `@cds.collate` to disable/enable collation for specific elements
- _[cds4j@2.3.0]_ Support tuples in CDS QL `IN` clauses
- _[cds4j@2.3.0]_ Annotation `@cds.java.expand: {using: 'load-single'}` to expand by parent keys with individual selects
- _[cds4j@2.3.0]_ Support Runtime Views annotated with `@cds.persistence.skip`
- _[cds@7.3.0]_ `cds.localized` now caches i18n bundles per locale and per model to speed up repeated usages of the same bundle at runtime, for example, in repeated calls to `cds.compile.for.edmx()`.
- _[cds@7.3.0]_ Based on `cds.localized` with cached bundles, a new operation `cds.localized.lookup(i18n_key, locale)` is provided.
- _[cds@7.3.0]_ If env variable `CDS_TEST_ENV_CHECK` is set, `cds.test.in()` detects if `cds.env` was loaded before from a different folder.
- _[cds@7.3.0]_ `cds.test.log()` allows to capture and analyze any console log output. `cds.test.verbose()` is now deprecated.
- _[cds@7.3.0]_ Typings for `cds.tx`
- _[cds@7.3.0]_ Add method `cds.schema.default4(schemaId)` to retrieve json schema based on its id
- _[cds@7.3.0]_ Support for pseudo role `internal-user` with authentication kind `ias`
- _[cds@7.3.0]_ CSV files with multiline values, i.e. line breaks, are now supported with `cds deploy`
- _[cap-js/graphql@0.8.0]_ [beta] Translate CDS error messages and include additional error properties in `GraphQLError` `extensions`. Only specific allowed properties are exposed when running in production.
- _[cap-js/graphql@0.8.0]_ [beta] Option `errorFormatter` that can be pointed to a function that overwrites the default logic of how CDS errors are formatted before they are added to the GraphQL error response. Please note that this may overwrite sanitization logic that is otherwise applied to error messages in production.
- _[cap-js/graphql@0.8.0]_ [beta] Logging of errors that occur during query and mutation execution
- _[cap-js/audit-logging@0.4.0]_ Support for Premium plan of SAP Audit Log Service
- _[cap-js/audit-logging@0.4.0]_ Support for XSUAA credential type `x509`
- _[cap-js/audit-logging@0.4.0]_ Support for generic outbox
- _[cap-js/postgres@1.3.0]_ `cds build` is now natively supported in `@cap-js/postgres`. Thus, a `cds build` will automatically generate deployment artifacts for Postgres-enabled projects.
- _[cds-mtxs@1.12.0]_ Beta: Setting `cds.requires.multitenancy.humanReadableInstanceName = true` will create human-readable tenant IDs for instances created via Service Manager, instead of hashed strings. This is incompatible with existing tenants using hashed instance names.
- _[cds-mtxs@1.12.0]_ Extensions of internal entities / services starting with `cds.xt.` are no longer allowed.
- _[cds-mtxs@1.12.0]_ If no extensions exist, `ModelProviderService.getEdmx()` now uses edmx files prebuilt by `cds build`.
- _[cds-mtxs@1.12.0]_ `ModelProviderService.getEdmx()` with empty `locale` parameter returns non-translated edmx.
- _[cds-mtxs@1.12.0]_ `ModelProviderService.getI18n()` returns the translated texts for a given `locale` and `tenant`.
- _[cds-mtxs@1.12.0]_ Migrated extension projects can now be downloaded using `cds extend <url> --download-migrated-projects`.

### Changed {#oct-23-changed}

- _[cds-dk@7.3.1]_ `cds watch --livereload` now reload the client w/o a server restart, so that for e.g. an `.html` file, a reload event is sent, but the server is not restarted.  Previously, the two events were coupled.
- _[cds-dk@7.3.1]_ `cds build` now provides a programmatic plugin API instead of the former configuration based one.
- _[cds-dk@7.3.0]_ `cds login` now eagerly detects expired token and asks for a new passcode if applicable
- _[cds-dk@7.3.0]_ `cds login` now presents the passcode URL as early as possible
- _[cds-dk@7.3.0]_ `cds env` now requires `@sap/cds` >= 7.3 to resolve configuration contributed by cds plugins
- _[cds-dk@7.3.0]_ `cds add connectivity` does not add `connectivity: true` to your `package.json` any more.
- _[cds-dk@7.3.0]_ `cds watch` now ignores more files/folders: `app/(webapp|dist|target)`, `app/*/(webapp|dist|target)`, `tsconfig.json`, `*.tsbuildinfo`
- _[cds-dk@7.3.0]_ `cds build` now uses `compile.to.hdbtable` if no migration tables exist.
- _[cds-dk@7.3.0]_ Refactoring `cds build plugin` API
- _[vscode-cds@7.3.0]_ formatting of action and function parameters according to existing newlines
- _[vscode-cds@7.3.0]_ Minimum VS Code version is now 1.80.0. Note: This is likely the last version that supports NodeJS 16
- _[cds.java@2.3.0]_ `4.24.0` is the new minimum required Cloud SDK version.
- _[cds.java@2.3.0]_ For event brokers that don't provide an explicit unique message ID the ID is now determined from the cloudevents `ID` property, if available. Message IDs are no longer generated when receiving an event without any ID.
- _[cds.java@2.3.0]_ Active instances of draft-enabled entities are now locked for deletion, if a locked draft exists, that is owned by a different user. The user owning the draft can always delete the active instance and with that also delete the corresponding draft.
- _[cds.java@2.3.0]_ `TenantProviderService.readProviderTenant()` now uses `app_tid` field if present instead of `zone_uuid` field in case of IAS service bindings.
- _[cds4j@2.3.0]_ HANA: Use `COLLATE` in `ORDER BY` clause
- _[cds4j@2.3.0]_ Expand by `parent-keys` is executed as a bulk operation
- _[cds4j@2.3.0]_ Reduce memory allocation of proxies for accessor interfaces
- _[cds4j@2.3.0]_ Simplify `IS` and `IS NULL` if neither operand is nullable
- _[cds4j@1.38.7]_ HANA: Don't enforce statement-level collating on Conjunction, Disjunction and Negation
- _[cds@7.3.0]_ If omitted in the accept header, `ExponentialDecimals` no longer gets defaulted (to `true`), which violated the OData 4.0 specification.
  This change can _temporarily_ be overridden via `cds.env.odata.defaultExponentialDecimals = 'true/false'`.
- _[cds@7.3.0]_ Make type signature of `extend.with` more general
- _[cds@7.3.0]_ `cds.test.data.autoReset()` is deprecated in favor of explicit `cds.test.data.reset()` call, like `beforeEach (test.data.reset)`.
- _[cds@7.3.0]_ `cds.utils.uuid()` now uses `randomUUID` function of node `crypto` module instead of `uuid` package
- _[cds@7.3.0]_ `@Capabilities` restrictions defined on entity level are also applied if navigating to the entity. Restrictions defined directly on the navigation now override restrictions defined on the target entity.
- _[cap-js/graphql@0.8.0]_ Bump required `@sap/cds` version to `>=7.3`
- _[cap-js/graphql@0.8.0]_ Bump required `graphql-http` version to `^1.18.0`
- _[cap-js/audit-logging@0.4.0]_ Always use outbox (as configured in project)
- _[cap-js/db-service@1.3.0]_ `INSERT.into(...).rows/values()` is not allowed anymore without specifying `.columns(...)`. #209
- _[cap-js/db-service@1.3.0]_ Deep deletion uses correlated subqueries instead of materializing the to be deleted object before. #212
- _[cap-js/sqlite@1.3.1]_ Updated minimum required version of `@cap-js/db-service`.
- _[cds-mtxs@1.12.0]_ The allowlist for HDI deployment parameters (`HDI_DEPLOY_OPTIONS`) is removed. Any option can now be used.
- _[cds-mtxs@1.12.0]_ `PUT /-/cds/saas-provisioning/tenant` now also allows non-UUID strings for `subscribedSubaccountId`.

### Fixed {#oct-23-fixed}

- _[cds-dk@7.3.1]_ `cds` commands will now respect the `NO_COLOR` environment variable.
- _[cds-dk@7.3.1]_ `cds init` no longer adds comments to file `.vscode/launch.json`
- _[cds-dk@7.3.1]_ `cds bind` prints correct command line recommendation to start spring-boot application
- _[cds-dk@7.3.1]_ `cds compile` to `openapi` now generates correct query options with `$` prefix.
- _[cds-dk@7.3.1]_ `cds build` no longer causes `duplicate assignment` compilation errors in some specific feature toggle scenarios.
- _[cds-dk@7.3.1]_ `cds watch` now loads missing service bindings when called from a directory other than cwd.
- _[cds-dk@7.3.1]_ Multitenant `cds` commands now have any trailing slashes removed from app URLs, fixing certain request failures.
- _[cds-dk@7.3.1]_ Multitenant `cds` commands now handle request errors more robustly.
- _[cds-dk@7.3.1]_ `cds build` no longer fails for cds services supporting multiple protocols.
- _[cds-dk@7.3.0]_ `cds login` now prints shorter errors. (Set `DEBUG=req` in env to see all details again.)
- _[cds-dk@7.3.0]_ Fixed issue when creating a CAP project in SAP Business Application Studio's template wizard.
- _[cds-dk@7.3.0]_ `cds import` now handles name collision within a Schema for OData V4 EDMX.
- _[cds-dk@7.3.0]_ `cds build` for mtx extension projects no longer creates CSN containing unresolved model associations.
- _[cds-dk@7.3.0]_ `cds build` no longer creates new migration versions by mistake after schema evolution changes have been manually resolved.
- _[cds-dk@7.3.0]_ `cds add approuter` creates the `xs-app.json` in the `app` folder again, instead of in `app/router`.
- _[cds-dk@7.3.0]_ `cds watch` no longer restarts itself in an endless loop (happened in some Typescript scenarios on Windows)
- _[eslint-plugin-cds@2.6.4]_ In _no-join-on-draft_, do not run check if there is no valid query.
- _[eslint-plugin-cds@2.6.4]_ In _auth-valid-restrict-where_, do not consider when missing expression references.
- _[vscode-cds@7.3.0]_ highlighting of identifiers, annotations, actions, functions, comments, and more
- _[vscode-cds@7.3.0]_ highlighting of queries in entity definitions
- _[vscode-cds@7.3.0]_ highlighting of keywords and literals in `type` statements
- _[vscode-cds@7.3.0]_ formatting of escaped names and `order by` clauses
- _[cds-compiler@4.3.2]_ compiler: Fix auto-exposure of composition target entities inside anonymous composition target aspects.
- _[cds-compiler@4.3.2]_ to.hana: Fix a bug in association to join translation, expect ON condition operand to be a function without arguments.
- _[cds.java@2.3.0]_ Fixed a bug in `UserInfo.isSystemUser()` in case of IAS-based authentication.
- _[cds.java@2.3.0]_ Fixed a bug, causing OData V4 PATCH requests setting to-one navigation properties to `null` to not have any effect.
- _[cds.java@2.3.0]_ Fixed a bug, causing incorrect key predicates in OData V4 when executing additional `Select` statements for `$select` or `$expand` on action or function results.
- _[cds.java@2.3.0]_ Fixed a bug, causing OData V4 requests to return wrong values when calling `$value` on entity attributes of type `Edm.LargeBinary` without `@Core.MediaType` annotation.
- _[cds.java@2.3.0]_ Fixed a bug, causing missing subscribed tenants when retrieving tenants from SaaS registry, due to missing pagination handling.
- _[cds.java@2.3.0]_ Fixed a bug, causing generated `schema-*.sql` files to not be git-ignored in generated projects.
- _[cds.java@2.3.0]_ Fixed a bug in the `resolve` goal, that caused the execution to fail, if non JAR dependencies were present in the project.
- _[cds.java@2.3.0]_ Fixed a bug, causing exceptions when using the `cds` actuator endpoint with user-provided services bound to the application.
- _[cds.java@2.3.0]_ Fixed a bug, causing Select statements with search predicates with conjunctions to generate invalid remote OData queries.
- _[cds.java@1.34.7]_ Fixed a bug, causing OData V4 requests to return wrong values when calling `$value` on entity attributes of type `Edm.LargeBinary` without `@Core.MediaType` annotation.
- _[cds.java@1.34.7]_ Fixed a bug, causing missing subscribed tenants when retrieving tenants from SaaS registry, due to missing pagination handling.
- _[cds4j@2.3.0]_ Fixed a bug causing compilation error after generating Java consumption interfaces, for associations annotated with `@cds.java.name`
- _[cds4j@1.38.7]_ HANA: SQL syntax error with `COLLATE` in `ORDER BY` function
- _[cds@7.3.1]_ `cds-ts` no longer fails if configured with an ESM loader. It tries loading files w/ `import()` in this case.
- _[cds@7.3.1]_ `cds deploy` for draft enabled entities
- _[cds@7.3.0]_ Draft: activate managed fields were miscalculated in some cases
- _[cds@7.3.0]_ Error with `exists` predicate in `@restrict.where` when calling compositions
- _[cds@7.3.0]_ `IsActiveEntity` in error target for lean draft
- _[cds@7.3.0]_ Remote Service: OData v2 compliant representation of Edm.Decimal, Edm.Double, and Edm.Int64 in URL
- _[cds@7.3.0]_ In draft activate managed fields were calculated wrongly in some cases
- _[cds@7.3.0]_ On draft save, missing entries in `req.headers`
- _[cap-js/graphql@0.8.0]_ Malformed responses for convoluted queries in which parts of results are supposed to be returned multiple times, caused by formatting results in-place
- _[cap-js/audit-logging@0.4.0]_ Avoid dangling `SELECT`s to resolve data subject IDs, which resulted in "Transaction already closed" errors
- _[cap-js/audit-logging@0.3.2]_ If the request has no tenant (e.g., Unauthorized), the audit log shall be sent to the provider account
- _[cap-js/db-service@1.3.2]_ preserve $count for result of SELECT queries
- _[cap-js/db-service@1.3.1]_ Error message for search with multiple arguments.
- _[cap-js/db-service@1.3.0]_ Various fixes for calculated elements on read. #220 #223 #233
- _[cap-js/db-service@1.3.0]_ Don't release to pool connections twice. #243
- _[cap-js/db-service@1.3.0]_ Syntax error in `matchesPattern` function. #237
- _[cap-js/db-service@1.3.0]_ SELECTs with more than 50 columns does not return `null` values. #238 #261
- _[cap-js/postgres@1.3.1]_ `cds build`-relevant files are now correctly packaged into the release. #266
- _[cap-js/sqlite@1.3.0]_ `CURRENT_TIMESTAMP` in view definition preserves the timezone. #254
- _[cds-mtxs@1.12.1]_ More stable upgrade with extensibility enabled.
- _[cds-mtxs@1.12.1]_ Downloaded migrated extension projects now contain correct base model references.
- _[cds-mtxs@1.12.0]_ Synchronous call of `PUT /-/cds/saas-provisioning/tenant` now returns correct `content-type`: `text/plain`.
- _[cds-mtxs@1.12.0]_ Update of extensions with different tags that depend on each other does no longer result in a compilation error.
- _[cds-mtxs@1.12.0]_ Extensions containing new entities with associations to base entities do no longer cause a compilation error.
- _[cds-mtxs@1.12.0]_ For SAP HANA deployment, no recompilation is done any more for applications not using extensibility.
- _[odata-v2-adapter@1.11.8]_ Automatically activate plugin, if mentioned explicitly in `cds.plugins`
- _[odata-v2-adapter@1.11.8]_ Move custom server section in README under advanced section, as plugin is the preferred way to bootstrap adapter

## September 2023

### Added {#sep-23-added}

- _[cds-dk@7.2.0]_ `cds add h2` adds H2 configuration for Java projects.
- _[cds-dk@7.2.0]_ `cds add sqlite` now has full support for Java projects.
- _[cds-dk@7.2.0]_ `cds gen` creates models or data using a descriptive prompt <Beta />
- _[cds-dk@7.2.0]_ `cds bind` auto detects 'ias-auth' service bindings
- _[cds-dk@7.2.0]_ `cds compile` to `openapi` now introduces new option `--odata-version` to add the OData version functionality to generate the OpenAPI document.
- _[cds-dk@7.2.0]_ `cds add` comes with more templates/facets in the wizard of SAP Business Application Studio: App Router, XSUAA, Kibana logging, enterprise messaging, multitenancy, helm charts, and extended sample files.
- _[vscode-cds@7.2.0]_ CAP with Typescript <Beta />: add setting to customize type generation command
- _[cds-compiler@4.3.0]_ compiler: it is possible to publish associations with filters in views.
  Managed associations become unmanaged ones.  For example:

  ```cds
  entity Proj as projection on Base {
    assoc[id = 1],
  };
  ```

- _[cds.java@2.2.0]_ Added a new goal `resolve` to the `cds-maven-plugin` which extracts CDS reuse models from JARs to `target/cds/`. The goal is configured in newly generated projects by default and is also run when running `mvn cds:build`.
- _[cds.java@2.2.0]_ `cds-starter-cloudfoundry` now bundles all dependencies required for IAS-based authentication, in particular `cds-feature-identity` and Spring security.
- _[cds4j@1.38.6]_ Allow to control collating on HANA per statement via hint "collating.hana"
- _[cds4j@1.38.6]_ Config option `cds.sql.collate: "localized-strings"`
- _[cds4j@1.38.6]_ Annotation `@cds.collate` to disable/enable collation for specific elements
- _[cds@7.2.0]_ Typescript definition for:
  - _[cds@7.2.0]_ The `cds.exit()` method.
  - _[cds@7.2.0]_ The `label` option parameter in the `cds.log()` API. For example: `cds.log('log message', { label: 'adapter' }`.
  - _[cds@7.2.0]_ A variant of the `roles` property of the `cds.User` class.
- _[cds@7.2.0]_ `@restrict` annotations can now prevent the creation of drafts ([see documentation](https://cap.cloud.sap/docs/guides/security/authorization#restrictions-and-draft-mode))
- _[cds@7.2.0]_ JSON Schema validation for `cds.requires.multitenancy.jobs` settings.
- _[cds@7.2.0]_ Managed associations to-one with exactly one foreign key can now have a default value.
- _[cds@7.2.0]_ Experimental feature flag `cds.env.features.okra_skip_query_options`. This feature allows you to bypass the parsing of query options by the legacy OData V4 Server (Okra). Please note that this feature can only be utilized in conjunction with the new OData parser, which is activated by setting the feature flag `cds.env.features.odata_new_parser = true`.
- _[cds@7.2.0]_ Support for `@requires: 'any'` to make service public, i.e., no authenticated user is required
- _[cds-mtx@2.6.5]_ Container creation now adds parameters needed for SAP HANA encryption
- _[cap-js/audit-logging@0.2.0]_ Export class `AuditLogService` for extending in custom implementations as follows:

  ```js
  const { AuditLogService } = require('@cap-js/audit-logging')
  class MyAuditLogService extends AuditLogService {
    async init() {
      [...]
      // call AuditLogService's init
      await super.init()
    }
  }
  module.exports = MyAuditLogService
  ```

- _[cap-js/db-service@1.2.0]_ support for calculated elements on read. #113 #123
- _[cap-js/db-service@1.2.0]_ support for managed associations with default values. #193
- _[cap-js/db-service@1.2.0]_ introduced new operator `==` which translates to `IS NOT DISTINCT FROM`. #164
- _[cap-js/postgres@1.2.0]_ Reduced the usage of `is not distinct [not] from`. #157
- _[cds-mtxs@1.11.0]_ `/-/cds/extensibility/push` now also accepts the `prefer: respond-async` header for asynchronous requests.
- _[cds-mtxs@1.11.0]_ `/-/cds/model-provider/getCsn` uses an LRU cache for base model CSNs, limited to 5 entries by default. This cache size can be configured using `cds.requires['cds.xt.ModelProviderService'].cacheSize`.
- _[cds-mtxs@1.11.0]_ The `treat_unmodified_as_modified` parameter is now allowed for HDI deployments.
- _[odata-v2-adapter@1.11.7]_ Set CDS OData V2 protocol

### Changed {#sep-23-changed}

- _[cds-dk@7.2.0]_ `cds add approuter` creates the `xs-app.json` in a dedicated `app/router` folder, instead of in `app`.
- _[cds-dk@7.2.0]_ `cds add multitenancy` now sets up the `cds-feature-mt` dependency in your `pom.xml` for Java projects.
- _[cds-dk@7.2.0]_ `cds watch` ignores all frontend resources in `app/**/webapp/**`. Previously, only `app/**/(*.js|ts)` was ignored.
- _[vscode-cds@7.2.0]_ New data structures and caching to improve performance of where-used requests (e.g. Find References) and code completion
- _[vscode-cds@7.2.0]_ Elements of `mixin`s now use `SymbolKind.Field` (was: Operator) in Outline
- _[cds-compiler@4.3.0]_ Update OData vocabularies: 'Aggregation', 'Capabilities', 'Common', 'PDF', 'PersonalData', 'UI'.
- _[cds.java@2.2.0]_ Removed support for the annotations `@AuditLog.Operation.Read`, `@AuditLog.Operation.Insert`, `@AuditLog.Operation.Update` and `@AuditLog.Operation.Delete`. By default, all operations are logged into auditlog.
- _[cds4j@2.2.1]_ optimized FK filter using `in` for to-many expands in queries using top/skip
- _[cds4j@2.2.0]_ Improved data access performance via getters of generated `CdsData` accessor interfaces
- _[cds4j@2.2.0]_ Optimized queries with to-many expands returning an empty result
- _[cds4j@2.2.0]_ SQLite: Add `COLLATE NOCASE` to columns of String elements only
- _[cds4j@1.38.6]_ HANA: Use `COLLATE` in `ORDER BY` clause
- _[cds@7.2.0]_ The built-in `java` profile sets `build.target` to `.` by default
- _[cds@7.2.0]_ Decimals from query options (e.g., `$filter`) are represented as strings in CQN
- _[cds@7.2.0]_ Improve error message for unsupported transformations with `$apply`
- _[cds@7.2.0]_ For database dialect H2, specialized, localized views for languages `de` and `fr` are no longer generated.
- _[cds@7.2.0]_ Authentication kinds `jwt`, `xsuaa`, and `ias` throw an error during bootstrapping if the necessary credentials are unavailable.
  Previously, a warning was logged, and authentication was skipped.
  See `cds bind`/ Hybrid Testing in CAPire for how to combine local development and cloud resources.
- _[cds@7.2.0]_ The Typescript definitions now make use of the default export.
- _[cds-mtx@2.6.5]_ All available HDI deployment parameters can now be passed for tenant deployment.
- _[cap-js/graphql@0.7.0]_ Omit `variables` from log if it is an empty object
- _[cap-js/audit-logging@0.3.0]_ Default value for `cds.requires['audit-log'].handle` changed to `['READ', 'WRITE']`, i.e., accessing sensitive data is now logged by default.
- _[cap-js/postgres@1.2.1]_ Bump minimum required version of `@cap-js/db-service`
- _[cap-js/sqlite@1.2.0]_ `cds.Decimal` and `cds.Float` return numbers instead of strings

### Fixed {#sep-23-fixed}

- _[cds-dk@7.2.0]_ `cds build` adds feature toggles to existing custom build task model options.
- _[cds-dk@7.2.0]_ `cds import` adds the `kind` based on the type of the input file while updating the `package.json`.
- _[vscode-cds@7.2.0]_ CAP notebooks: Do not restrict running of CDS Server cell
- _[vscode-cds@7.2.0]_ Highlighting of custom types starting with built-in name
- _[vscode-cds@7.2.0]_ Outline now only shows first non-empty line of docs when in semantic mode (see user setting `cds.outline.semantical`) as VS Code does not support multi-line docs
- _[cds-compiler@4.3.0]_ parser: Chained methods without arguments such as `b` in `a().b.c()` were lost.
- _[cds-compiler@4.3.0]_ compiler:
  - Type arguments in `cast()` functions, whose column also has an explicit type set, were not
    properly checked.  Now the `cast()`s type and type arguments are checked.
  - SQL function `STDDEV(*)` was not parsable.
  - In views, published association's ON-conditions containing `$projection` are now rewritten
    to `$self` in the CSN `elements` property.  This ensures recompilability of the CSN.
- _[cds-compiler@4.2.4]_ OData: For compatibility with the Java runtime, don't prepend table aliases to column aliases unless necessary.
- _[cds.java@2.2.0]_ Fixed a bug in the goal `add` of the `cds-maven-plugin`, causing the application start to fail due to incompatible schema.sql.
- _[cds.java@2.2.0]_ Fixed a bug in the goal `add` of the `cds-maven-plugin`, causing the creation of a wrong MTX profile in the `application.yaml`.
- _[cds.java@2.2.0]_ Fixed a bug in interfaces `SaasRegistryUnsubscriptionOptions` and `SaasRegistrySubscriptionOptions`, causing a `ClassCastException` when calling method `getSubscriptionAppAmount`.
- _[cds.java@2.2.0]_ Fixed a bug in the Kafka initialization for public cluster endpoints.
- _[cds.java@2.2.0]_ Fixed a bug, causing an OData V4 requests to fail when the URL contained unnecessary encodings in the URL path.
- _[cds.java@2.2.0]_ Fixed a bug, causing duplicated lambda param names in nested any/all OData v4 remote calls
- _[cds.java@1.34.5]_ Fixed a bug, causing duplicated lambda param names in nested any/all OData v4 remote calls
- _[cds.java@1.34.5]_ Fixed a bug in interfaces `SaasRegistryUnsubscriptionOptions` and `SaasRegistrySubscriptionOptions`, causing a `ClassCastException` when calling method `getSubscriptionAppAmount`.
- _[cds4j@2.2.1]_ OOM on to-many expands in queries with large skip size
- _[cds4j@2.2.0]_ Postgres: Select for update (locks) now also work on localized and draft-enabled entities
- _[cds4j@2.2.0]_ Fixed "Element does not exist" exception on write with structured data for composition of aspects in "odata" transformed csn mode
- _[cds4j@2.2.0]_ SQLite: Fixed 'row value misused' exception on to-many expands in paginated queries with locale
- _[cds4j@2.2.0]_ Reduce memory allocation on large bulk updates
- _[cds@7.2.1]_ HTTP headers argument was not forwarded to remote services when using the `srv.send(...)` API.
- _[cds@7.2.1]_ Not existing draft upon `SAVE` has own error code.
- _[cds@7.2.1]_ Links to documentation in Typescript definitions.
- _[cds@7.2.1]_ Remote service won't check for `credentials.url` in case of messaging.
- _[cds@7.2.1]_ Lean draft: Implicitly added `limit` in some lean draft read scenarios.
- _[cds@7.2.1]_ Lean draft: Association keys in lean draft.
- _[cds@7.2.1]_ Remote service: Preserve namespaces in URLs that do not match the service's namespace.
- _[cds@7.2.0]_ Trace middleware: Adapted usage of `performance.now()` for Node 20.
- _[cds@7.2.0]_ Draft: Associations to non-draft enabled entities must never point to drafts
- _[cds@7.2.0]_ Avoided type error in old db post-processing
- _[cds@7.2.0]_ `<remote-srv>.run('/arbitrary-url')` now defaults to a get request and doesn't add request body
- _[cds@7.2.0]_ `@cds.query.limit` is cached per projection
- _[cds@7.2.0]_ Application crash for incorrect usage of REST-style API to run queries
- _[cds@7.2.0]_ The `@requires` annotation on entity level didn't get applied to bound operations
- _[cds@7.2.0]_ `cds.test` run with a profile parameter such as `cds.test('run', '--profile', 'integration-tests')` will use the
correct profile.
- _[cds@7.2.0]_ `cds.env.requires.auth.restrict_all_services = false` in combination with `cds.env.requires.middlewares = true` (the default)
- _[cap-js/audit-logging@0.3.1]_ Defaulting of `@PersonalData.DataSubjectRole` to entity name
- _[cap-js/audit-logging@0.3.1]_ Overriding service configuration
- _[cap-js/db-service@1.2.1]_ Association expansion in infix filters. #213
- _[cap-js/db-service@1.2.0]_ resolved a type error which occurred in some cases for deeply nested `expand`s. #173
- _[cap-js/db-service@1.2.0]_ path expression traversing non-foreign-key fields within infix filters are now properly rejected for `exists` predicates. #181
- _[cap-js/db-service@1.2.0]_ CQL functions: In the `args` of the `concat` function an `xpr` is now wrapped in parentheses. #196
- _[cap-js/db-service@1.2.0]_ Make `UPDATE` and `ofarray` typed column compatible. #184
- _[cap-js/db-service@1.2.0]_ Ensure that `INSERT` with `rows` always inserts into the correct column. #193
- _[cap-js/db-service@1.2.0]_ Allow `DateTime` columns to compare against their returned value. #206
- _[cap-js/db-service@1.2.0]_ Deep Insert using backlink associations as key #199.
- _[cap-js/postgres@1.2.0]_ [Reserved words](https://www.postgresql.org/docs/current/sql-keywords-appendix.html) are now used to automatically escape reserved words which are used as identifier. #178
- _[cap-js/postgres@1.2.0]_ Remove column count limitation. #150
- _[cap-js/sqlite@1.2.1]_ Adapt implementation to comply with implication of SQLite version 3.43 which is included in `better-sqlite3@8.6.0`. #210
- _[cds-mtxs@1.11.0]_ The Service Manager client now returns all bindings for partial cache misses for `cds.requires.['cds.xt.SaasProvisioningService'].jobs.clusterSize > 1`.
- _[cds-mtxs@1.11.0]_ The Service Manager client will now wait with exponential back-off for unexpected error codes.
- _[cds-mtxs@1.11.0]_ The Service Manager client will now print the correct root cause for errors with a `description` field.
- _[cds-mtxs@1.11.0]_ Command `cds-mtx` now terminates immediately after execution is finished.
- _[odata-v2-adapter@1.11.7]_ Fix absolute service path starting with target path parts e.g. `/odata`
- _[odata-v2-adapter@1.11.7]_ Fix escaping of backslashes in search phrases

### Removed {#sep-23-removed}

- _[cds-dk@7.2.0]_ Undocumented facet `cds add auditlog`
- _[vscode-cds@7.2.0]_ Legacy `Vanilla` theme - we recommend to use the default theme e.g. `Light Modern` which is similar but covers more token classes

## August 2023

### Added {#aug-23-added}

- _[cds-compiler@4.2.0]_ Compiler:
  - Option `moduleLookupDirectories: [ 'strings' ]` can be used to specify additional module lookup
    directories, similar to `node_modules/`.
  - LIMIT and OFFSET clauses can now contain expressions, including parameter references.
- _[cds-compiler@4.2.0]_ to.edm(x):
  - Detect spec violation `scale` > `precision`.
- _[cds-compiler@4.2.0]_ to.sql/for.odata:
  - With the new option `fewerLocalizedViews: true|false`, an entity/view will not get a localized convenience
    view, if it only has associations to localized entities/views.  Only if there is actually a localized
    element (e.g. new localized element or reference to one), will it get a convenience view.
- _[cds-compiler@4.2.0]_ to.sql
  - In a localized scenario, create foreign key constraints for the generated `.texts` entities.
  - Casting `null` to a structure such as `null as field : StructT` is now supported.  For each leaf element,
    an additional `null as field_name` column is added.
- _[odata-v2-adapter@1.11.6]_ Suppress analytical conversion via entity annotation `@cov2ap.analytics.skipForKey`, if all dimension key elements are requested

### Changed {#aug-23-changed}

- _[cds-dk@7.1.1]_ `cds init` uses latest Maven Java archetype version 2.1.0 for creating Java projects.
- _[cds-dk@7.1.1]_ `cds build` correctly logs build messages based on their severity.
- _[cds-dk@7.1.1]_ `cds build` creates OData EDMX for configured fiori build tasks.
- _[cds-compiler@4.2.0]_ Compiler:
  - Selecting fields of structures or associations (without filters) are now candidates for ON-condition
    rewrites: It is no longer necessary to select the struct/association directly.
  - Consistently handle the case when type elements are defined to be a `key`:
    the `key` property is not only preserved with `includes`, but also in other cases.
    Use option `deprecated.noKeyPropagationWithExpansions` to switch to the v3 behavior.
  - When including aspects or entities into structured type definitions,
    do not add actions to the type.
  - An `annotate` statement in the `extensions` section of a CSN now consistently uses the
    `elements` property even if the `annotate` is intended to be used for an enum symbol.
    Before v4.2, the compiler has used the `enum` property in a CSN of flavor `xtended`
    (`gensrc`) if it was certain that it was to be applied to an enum symbol.
- _[cds-compiler@4.2.0]_ to.cdl: If a definition has an `actions` property, an `actions {…}` block is now always rendered,
  and is not ignored if empty.
- _[cds-compiler@4.2.0]_ to.sql:
  - For SQL dialect "sqlite", `cds.DateTime` is now rendered as `DATETIME_TEXT` instead of `TIMESTAMP_TEXT`.
  - Casting a literal (except `null`) to a structure now yields a proper error.
  - `.texts` entities annotated with `@cds.persistence.skip` (without their original entity having that annotation)
    lead to deployment issues later.  It is now an error.
- _[odata-v2-adapter@1.11.6]_ Switch to `better-sqlite3` via `@cap-js/sqlite`

### Fixed {#aug-23-fixed}

- _[cds-dk@7.1.1]_ When setting `CDS_CONFIG` from the command line, that value is no longer overridden by other env values. Setting `CDS_CONFIG` from the command line in combination with additional command line args, like `--odata`, is not supported at this point.
- _[cds-dk@7.1.1]_ Installing `@sap/cds-dk` now produces a shrinkwrapped layout again if used against npm registries like Artifactory that don't serve the `_hasShrinkwrap` option.
- _[cds-dk@7.1.1]_ `cds import` for OData V4 EDMX imports `Edm.Decimal` data type considering `Precision` and `Scale` facet correctly.
- _[cds-dk@7.1.1]_ `cds import` for OData V4 EDMX imports `DefaultValue="0"` in CSN.
- _[cds-compiler@4.2.2]_ to.sql|hdi.migration: Fix bug that caused a migration to be rendered for the HANA CDS types that were removed from the CSN
- _[cds-compiler@4.2.0]_ Compiler:
  - Reject invalid reference in the `on` of `join`s already while compiling,
    not just when calling the (SQL) backend.
  - Correct the calculation of annotation assignments on the return structure of actions
    when both `annotate … with {…}` and `annotate … with returns {…}` had been used
    on the same structure element.  Ensure that it works when non-applied, too.
  - Do not remove or invent `actions` properties with zero actions or functions in it.
  - Correct auto-redirection of direct cycle associations: if the source and target of a
    model association are the same entity, and the main artifact of the service association
    based on the model association is a suitable auto-redirection target, then use it
    as new target, independently from the value of `@cds.redirection.target`.
- _[cds-compiler@4.2.0]_ to.cdl: Indirectly structured types (`type T: Struct;`) with `includes` (`extend T with T2;`), are now properly rendered.
- _[cds-compiler@4.2.0]_ to.sql/hdi/hdbcds:
  - Views on views with parameters did not have localized convenience views based on
  other localized views (missing `localized.` prefix in FROM clause)
  - Run less checks on entities marked with `@cds.persistence.exists`
  - Correctly render SELECT items where the column name conflicts with a table alias
- _[cds-compiler@4.2.0]_ to.sql: Casting expressions to a structured type yields a proper error instead of strange compiler error.
- _[cds-compiler@4.2.0]_ to.edm(x):
  - Don't expand `@mandatory` if element has an annotation with prefix `@Common.FieldControl.`.
  - Fix a bug when referencing nested many structures, especially referring to a managed association via
  `$self` comparison.
  - Improve handling of non-collection annotation values for collection-like vocabulary types.
  - Don't render `Scale: variable` for `cds.Decimal(scale:0)`.
- _[cds-compiler@4.2.0]_ to.sql|hdi.migration:
  - Fixed a bug that caused rendering of `ALTER` statements to abort early and not render some statements.
  - CSN output now only contains real `cds` builtins, no early remapping to HANA CDS types or similar.
- _[cds-compiler@4.2.0]_ to.sql.migration: Don't drop-create views marked with `@cds.persistence.exists`
- _[cds-compiler@3.9.10]_ to.edm(x): Error reporting for incorrect handling of "Collection()" has been improved.
- _[cds-compiler@3.9.10]_ to.sql/hdi/hdbcds: Views on views with parameters did not have localized convenience views based on
  other localized views (missing `localized.` prefix in FROM clause)
- _[cds-compiler@3.9.10]_ to.sql: Casting expressions to a structured type yields a proper error instead of strange compiler error.
- _[cds-compiler@3.9.10]_ to.sql.migration: Don't drop-create views marked with `@cds.persistence.exists` or `@cds.persistence.skip`
- _[cds-compiler@3.9.8]_ to.edm(x):
  - Don't expand `@mandatory` if element has an annotation with prefix `@Common.FieldControl.`.
  - Fix a bug when referencing nested many structures, especially referring to a managed association via
  `$self` comparison.
- _[cds-compiler@3.9.8]_ to.sql/hdi/hdbcds: Detect navigation into arrayed structures and raise helpful errors instead of running into internal errors.
- _[cds.java@2.1.1]_ Fixed a bug, causing draft-related fields to be calculated after custom `@Before` handlers on `DRAFT_CREATE` and `DRAFT_PATCH` events.
- _[cds.java@2.1.1]_ Fixed a bug in MT lib, causing subscriptions to fail with error `class java.lang.Integer cannot be cast to class java.lang.String`.
- _[cds4j@2.1.1]_ Fixed 'Literal value must not be null' exception on nested to-many expands in queries using top (pagination)
- _[cds4j@2.1.1]_ Fixed SQL exception on paginated queries with expands of unmanaged to-many associations that only use constants in the on-condition
- _[cds@7.1.2]_ `req.tenant` is undefined when using new OData parser
- _[cds@7.1.2]_ Draft: replace some occurrences of the `arr.push(...largeArray)` pattern when copying large arrays to prevent maximum call stack size exceeded errors due to large deep update processing when saving the draft
- _[cds@7.1.2]_ Do not add keys to diff as they could be renamed (which leads to SQL error)
- _[cds@7.1.2]_ Custom bound actions for draft-enabled entities don't trigger a READ request on application service anymore
- _[cds@7.1.2]_ `cds.connect.to('db', options)`: add-hoc options for SAP HANA Database Service
- _[cds@7.1.2]_ Reading key-less singleton with `$select` clause while using the new OData parser `cds.env.features.odata_new_parser`
- _[cds@7.1.2]_ Don't use colored logs if `process.env.NO_COLOR` is set or not logging to a terminal (i.e., `!process.stdout.isTTY || !process.stderr.isTTY`)

## July 2023

### Added {#jul-23-added}

- _[vscode-cds@7.0.2]_ CAP notebooks: add support for backslash in shell and terminal cells for multiline scripts
- _[vscode-cds@7.0.2]_ CAP notebooks: Shell-type syntax highlighting for Terminal cells
- _[cds-compiler@4.1.0]_ Calculated elements "on-read" can now reference localized elements.
- _[cds-compiler@4.1.0]_ Aliases for columns inside sub-queries and expressions are now optional.
- _[cds-compiler@4.1.0]_ for.odata/to.hdi/to.sql: Specified default value on a managed association is forwarded to a foreign key if the association has exactly one foreign key.
- _[cds-compiler@4.1.0]_ CDL: Annotation-only aspects having no `elements` and `actions` can now be defined with
  the CDL syntax `@Anno… aspect Name;`.  They cannot be extended with elements or actions
  in order to ensure that they can always be used to extend non-structures.
  To allow the former but not the latter, use `@Anno… aspect Name {…};`.
- _[cds-compiler@4.1.0]_ to.sql: Support session variables for h2.
- _[cds.java@2.1.0]_ new module `cds-feature-postgresql`, which if present auto-configures DataSource objects for PostgreSQL service bindings.
- _[cds.java@2.1.0]_ new module `cds-feature-pdf` to support PDF export scenarios with OData V4.
- _[cds.java@2.1.0]_ Level of detail for the annotation `@Generated` for generated interfaces is now configurable via `cds-maven-plugin`.
- _[cds.java@2.1.0]_ The property `cds.sql.supportedLocales` now supports a YAML list value, in addition to a comma-separated String value.
- _[cds.java@2.1.0]_ Leverage session context variables on H2 for localized and temporal data.
- _[cds.java@2.1.0]_ The `watch` goal of the `cds-maven-plugion` can be executed from the root directory of the CAP Java application.
- _[cds.java@2.1.0]_ Added the goal `add` to the `cds-maven-plugin`, which supports adding different features to the CAP Java project. Supported features are `sqlite`, `h2` and `multitenancy`.
- _[cds.java@2.0.2]_ The Audit Log OAuth2 plan can now be used with the persistent outbox.
- _[cds.java@2.0.2]_ Reflection Metadata for GraalVM Native Image is now contributed automatically, incl. for event handlers and data and query builder interfaces built and generated in applications.
- _[cds.java@1.34.2]_ The Audit Log OAuth2 plan can now be used with the persistent outbox.
- _[cds4j@2.1.0]_ CQL queries are able to use the alias of the select list item in an `orderBy` clause instead of the element name.
- _[cds4j@2.1.0]_ Introduced an option to configure the level of details for the annotation `@Generated` for generated interfaces.
- _[cds4j@2.1.0]_ Don't enforce locale-specific comparison for equality checks
- _[cds4j@2.1.0]_ Don't enforce locale-specific comparison non-string compares
- _[cds4j@2.1.0]_ H2: support lock with timeout (`FOR UPDATE ... WAIT`)
- _[cds4j@2.1.0]_ H2: use session context variables for localized and temporal data
- _[cds@7.1.0]_ Support to resolve experimental `STREAM` CQN queries that point to views.
- _[cds@7.1.0]_ Enable PDF export via GET to collection with accept header `appplication/pdf`.
  Custom handler must return the following:

  ```js
  {
    value: <instance of Readable>,
    $mediaContentType: <String>, // > optional, defaults to: application/pdf
    $mediaContentDispositionFilename: <String>, // > optional
    $mediaContentDispositionType: <String> // > optional, defaults to 'attachment' if $mediaContentDispositionFilename is set
  }
  ```

- _[cds@7.1.0]_ Schema for `cds` entry in `package.json` now has a tooltip and default value.
- _[cds@7.1.0]_ `srv.endpoints`: Array containing the information for all endpoints at which the service is served.
  Example:

  ```js
  [
    { kind: 'odata-v4', path: '/odata/v4/browse' },
    { kind: 'rest', path: '/rest/browse' }
  ]
  ```

- _[cds@7.1.0]_ Service level support for @restrict. Limited to grant: '*' and all filter conditions in `where` are ignored.
  Example:

  ```cds
  @(restrict: [{
    grant: '*',
    to: ['authenticated-user']
  }])
  ```

### Changed {#jul-23-changed}

- _[cds-dk@7.1.0]_ `cds build` now fails if SAP HANA schema evolution changes exist that need to be manually resolved.
- _[cds-dk@7.1.0]_ `cds build` now throws an error for Java apps using the mtx build task in combination with `@sap/cds-dk` version >= 7.
- _[cds-dk@7.1.0]_ `cds import` now supports OData V4 EDMX files with empty or missing `EntityContainer`.
- _[cds-dk@7.0.3]_ `cds add` adheres to the existing indentation style when changing JSON files.
- _[cds-dk@7.0.3]_ `cds add typer` no longer adds `checkJs: true` to your configuration.
- _[cds-dk@7.0.3]_ `cds init` uses the latest Maven Java archetype version 2.0.2 for creating Java projects.
- _[cds-dk@7.0.3]_ `cds build` now throws an error if the mtx sidecar and application db configuration is inconsistent.
- _[cds-dk@7.0.3]_ `cds watch --open` now delays the opening of the URL by 1s to allow the server to start up. This is needed for plugins that register routes asynchronously.
- _[cds-dk@7.0.2]_ `cds add kibana-logging` is (compatibly) renamed to `cds add kibana`.
- _[cds-compiler@4.1.0]_ api: Function `isInReservedNamespace(name)` handles name `cds` as being in a reserved namespace as well.
- _[cds-compiler@4.1.0]_ `CompilationError.messages` sorting is now severity aware. Errors are listed first.
- _[cds-compiler@4.1.0]_ Compiler:
  - Improve the calculation of semantic code completion candidates.
  - Some checks, like those for valid `on` conditions of associations,
    are now already done with `compile` and not just the backends.
  - SQL `cast()`s must always have a `type` property
  - Type properties such as `precision` or `length` must be accompanied by a type (possibly inferred).
- _[cds-compiler@4.1.0]_ for.odata/to.hdi/to.sql: No longer reject unmanaged associations as foreign keys of a managed association.
  Instead, ignore such references during ON-condition rewriting and foreign key generation. Referring to
  unmanaged associations is incompatible with SAP HANA CDS naming mode 'hdbcds'.
- _[cds-compiler@4.1.0]_ to.sql: Rework session variables for PostgreSQL.
- _[cds-compiler@4.1.0]_ Update OData vocabularies: 'Common', 'HTML5', 'PersonalData', 'UI'.
- _[cds.java@2.1.0]_ The transaction and lock time of the outbox collectors has been significantly reduced, by moving the wait time between failed outbox messages out of the transaction and lock. As part of this change the outbox collectors now require the outbox model from @sap/cds-dk >=6.
- _[cds.java@2.1.0]_ Validating `TopicMessageEventContext` when data, data map or headers map contain `null` values in invalid combinations. An exception is thrown on producer side, if neither data, data map nor headers map is set.
- _[cds.java@2.1.0]_ Use row value comparison for reliable pagination on H2, SQLite and PostgreSQL.
- _[cds.java@2.1.0]_ Conditions for instance-based authorization will have all literal values in them sealed as constants
- _[cds.java@2.1.0]_ Property `cds.sql.supportedLocales` defaults to an empty list as all DBs support session context variables
- _[cds.java@2.1.0]_ The webhook handshake used in integration of Enterprise Messaging (MT) has been removed to avoid synchronization issues introduced by the Deploy main method.
- _[cds.java@2.0.2]_ The Audit Log V2 feature now sets the user name in audit log messages explicitly instead of using `$USER`. By default this is the value of `UserInfo.getName()`. Setting `cds.auditlog.v2.useLogonName` to `true` ensures to use the XSUAA principal name instead, which was used by Audit Log before.
- _[cds.java@1.34.4]_ The webhook handshake used in the integration of Enterprise Messaging (MT) has been removed to avoid synchronization issues introduced by the Deploy main method.
- _[cds.java@1.34.2]_ The Audit Log V2 feature now sets the user name in audit log messages explicitly instead of using `$USER`. By default this is the XSUAA principal, which was used by Audit Log before. Setting `cds.auditlog.v2.useLogonName` to `false` ensures to use the value of `UserInfo.getName()` instead.
- _[cap-js/graphql@0.6.2]_ Pin `graphiql` version to `^3`
- _[cap-js/graphql@0.6.2]_ Pin `@graphiql/plugin-explorer` version to `~0.3`
- _[cap-js/graphql@0.6.1]_ Improved query logging:
  - Don't log queries that are `undefined`
  - Log `operationName`
  - Log `variables` when not in production
  - Sanitize arguments and their values in queries when in production
- _[cds4j@2.1.0]_ Queries and expressions that are defined in the CDS model will have all literals in them sealed as the constants.
- _[cds4j@2.1.0]_ The calculated elements (annotated with the annotation `@Core.Computed`) are no longer searched by default.
- _[cds-mtxs@1.9.2]_ Remove peerDependency to `@sap/cds>=6`.  This caused troubles in installation scenarios where sap/cds 7 was fetched while 6 should be used.

### Fixed {#jul-23-fixed}

- _[cds-dk@7.1.0]_ Calls from SAP Business Application Studio `New Project from Template` wizard are now handled correctly.
- _[cds-dk@7.1.0]_ `cds add cf-manifest` correctly generates the XSUAA instance name.
- _[cds-dk@7.1.0]_ `cds build` always uses the configured SAP Hana build task when building the mtx sidecar.
- _[cds-dk@7.1.0]_ `cds import` OData V4 EDMX fix for Annotation Alias and Namespace value replacement.
- _[cds-dk@7.0.3]_ `cds deploy` writes settings under the profile `hybrid` as the default in `.cdsrc-private.json`
- _[cds-dk@7.0.3]_ `cds add sample` uses the default `/odata/v4/` service paths and data source paths in the UI5 `manifest.json` files.
- _[cds-dk@7.0.3]_ When a request fails, shorter errors are printed and secret data is hidden. (Set `DEBUG=req` in env to see all details again.)
- _[cds-dk@7.0.3]_ Now shows all commands when a misspelled command is used along with the similarly named command.
- _[cds-dk@7.0.3]_ `cds import --from edmx` fixes rendering of nested annotations in the CSN.
- _[cds-dk@7.0.2]_ `cds` commands do not swallow error stack traces in some cases any more.
- _[cds-dk@7.0.2]_ `cds watch` does not swallow compiler errors in some cases any more.
- _[cds-dk@7.0.2]_ `cds add sample` has modernized configuration for Fiori-related files in the `app` folder.
- _[cds-dk@7.0.2]_ `cds add sample` now also contains a read-only service for browsing books.
- _[cds-dk@7.0.2]_ `cds add kibana-logging` now also adds the logging service to the MTX sidecar and App Router, if available.
- _[cds-dk@7.0.2]_ `cds build` preferably creates i18n bundle at default location `_i18n` for custom i18n folder configurations.
- _[cds-dk@7.0.2]_ `cds watch` no longer fails if `@sap/cds-dk` is installed as dependency along with `cds-swagger-ui-express`.
- _[cds-dk@7.0.2]_ `cds build` ensures that `@sap/cds` version >= 6 is installed.
- _[vscode-cds@7.0.2]_ CDS Welcome Page does not show an error message if page is not reachable during start up
- _[vscode-cds@7.0.2]_ CDS Welcome Page now starts with correct theme
- _[vscode-cds@7.0.2]_ CAP notebooks: Only allow resolving, but not setting of env vars in Magic command cells
- _[cds.java@2.0.2]_ Fixed a bug, causing wrong data response for complex type requests with path expressions.
- _[cds-compiler@4.1.2]_ to.hdi.migration: Changes in constraints are not rendered as part of the .hdbmigrationtable file, as they belong in other HDI artifacts
- _[cds-compiler@4.1.0]_ Compiler:
  - ensure that annotations of elements in anonymous aspects of managed compositions
    are not lost.
  - issue error for definitions like `entity Self as projection on Base { $self.* };`
    instead of simply concluding that the projection has zero elements.
  - do not report an invalid cyclic dependency if associations between two entities
    are valid cycles.
  - Element type references can follow associations (removed v4.0 incompatibility) again.
- _[cds-compiler@4.1.0]_ to.sql:
  - `$self` references inside a nested projection using `$self` was incorrectly resolved.
  - associations to entities marked with `@cds.persistence.skip` were not properly
    checked inside nested projections.
  - Select items casting `null` to an arrayed type work again, e.g. `null as ManyType`.
- _[cds-compiler@4.1.0]_ to.sql/hdi/hdbcds: Raise a nice error message for `@sql.append` on managed associations/compositions,
  as we do for structured error messages.
- _[cds-compiler@4.1.0]_ to.cdl: Annotations with multiple qualifiers (`#`) are now rendered correctly.
- _[cds-compiler@4.1.0]_ to.edm(x): Revert change introduced with 3.9.0
    "Correct referential constraint calculation for `[0..1]` backlink associations".
- _[cds-compiler@4.1.0]_ for.odata: Process shortcut annotations independently of sequence.
- _[cds-compiler@4.1.0]_ to.sql.migration:
  - Respect unique and referential constraints for delta calculation.
  - Added a configurable error for primary key additions, as those will lead to errors if the table
    contains data. This could lead to inconsistent states if
    some deployments succeed and others fail, so by default it is an error.
- _[cds-compiler@3.9.8]_ to.edm(x):
  - Don't expand `@mandatory` if element has an annotation with prefix `@Common.FieldControl.`.
  - Fix a bug when referencing nested many structures, especially referring to a managed association via
  `$self` comparison.
- _[cds-compiler@3.9.8]_ to.sql/hdi/hdbcds: Detect navigation into arrayed structures and raise helpful errors instead of running into internal errors.
- _[cds-compiler@3.9.6]_ to.edm(x): Revert change introduced with 3.9.0.
    "Correct referential constraint calculation for `[0..1]` backlink associations".
- _[cds-compiler@3.9.6]_ for.odata: Process shortcut annotations independently of sequence.
- _[cds.java@2.1.0]_ Fixed a bug in the Kafka messaging service, that prohibited the retrieval of the partition key and the partition.
- _[cds.java@2.1.0]_ Fixed a bug, causing overly restrictive key value checks in OData V4 deep updates with delta payloads
- _[cds.java@2.1.0]_ Fixed a bug in the goal `watch` of the cds-maven-plugin, causing the `watch` goal not to use the Spring-Boot Developer Tools, even if they are installed.
- _[cds.java@2.1.0]_ Fixed a bug, causing `ArrayIndexOutOfBoundsException` when updating or deleting draft-enabled entities.
- _[cds.java@2.1.0]_ Fixed a bug in the Kafka messaging service that caused an exception when creating a topic with a replication factor lower than the default.
- _[cds.java@2.1.0]_ Fixed a bug, causing Kafka to not work with service bindings with basic authentication.
- _[cds.java@2.1.0]_ Fixed a bug, causing `XsuaaServiceConfiguration` bean to no longer be overridable by applications if `XsuaaServiceConfigurationDefault` class is not used.
- _[cds.java@2.0.2]_ Fixed a bug, returning an incorrect data response for complex type requests with path expressions.
- _[cds.java@2.0.2]_ Fixed a bug, that caused `NullPointerException` in the OData V2 protocol adapter during an error handling when a payload or the URL contains dates in a wrong format.
- _[cds.java@1.34.4]_ Fixed a bug in the Kafka messaging service that caused an exception when creating a topic with a replication factor lower than the default.
- _[cds.java@1.34.3]_ Fixed a bug, causing Kafka to not work with service bindings with basic authentication.
- _[cds.java@1.34.2]_ Fixed a bug, causing wrong data response for complex type requests with path expressions.
- _[cds.java@1.34.2]_ Fixed a bug, that caused issues with generating the OData V4 nextLink URL, when the original URL had encoded `$` characters in query parameter names.
- _[cds.java@1.34.2]_ Fixed a bug preventing the attributes typed as `Edm.DateTime` in OData V2 to accept the date values with a fractions of a seconds or without the seconds.
- _[cds.java@1.34.2]_ Fixed a bug, that caused `NullPointerException` in the OData V2 protocol adapter during an error handling when a payload or the URL contains dates in a wrong format.
- _[cds.java@1.34.2]_ Fixed a bug, that caused a `ClassCastException` when making use of `SaasRegistryUnsubscriptionOptions` in unsubscription handler of DeployService.
- _[cds.java@1.34.2]_ Fixed a bug, that caused a HTTP request to the MTX Sidecar during startup, if provider tenant normalization was enabled.
- _[cds4j@2.1.0]_ OOM when to-many expand was used with large, paginated result set.
- _[cds4j@2.1.0]_ PostgreSQL: represent timestamps in session context variables in UTC.
- _[cds4j@2.0.2]_ Allow to use enum constants as default values for elements with enum type
- _[cds4j@2.0.2]_ Throw `NullPointerException` when adding `null` to `Select:columns`, `excluding`, `groupBy`, `orderBy` and `Expand:items`, `orderBy`
- _[cds@7.1.1]_ Lean draft: read actives via service on draft edit.
- _[cds@7.1.1]_ Resolve column name for experimental `STREAM` CQN queries that point to views.
- _[cds@7.1.1]_ Only log the error in case of an unhandled rejection.
- _[cds@7.1.0]_ Multiple TypeScript improvements.
- _[cds@7.1.0]_ Proper handling for `expand=*` for OData URL to CQN parser (`cds.env.features.odata_new_parser`).
- _[cds@7.1.0]_ Fully qualified operation names are correctly resolved in the rest adapter.
- _[cds@7.1.0]_ Log level for odata metadata cache was not handled correctly.
- _[cds@7.1.0]_ Protocol paths are normalized to always have a leading slash.
- _[cds@7.1.0]_ `@odata` shortcut for `odata-v4` protocol with custom configuration.
- _[cds@7.1.0]_ Default protocol is `odata-v4`, independent of the order in `cds.env.protocols`.
- _[cds@7.1.0]_ Data is not logged for GET and DELETE remote requests.
- _[cds@7.1.0]_ draft: deep updates without changes should not update the `modifiedAt` field.
- _[cds@7.1.0]_ Lean draft: do not propagate `@Capabilities.NavigationRestrictions.RestrictedProperties`.
- _[cds@7.1.0]_ Commit db transaction only when the outbound streaming has ended.
- _[cds@7.1.0]_ Lean draft: deactivate the legacy `drafts` getter.
- _[cds@7.1.0]_ Updated typings for srv.send.
- _[cds@7.1.0]_ `$search`: exclude calculated fields/expressions from the default search in the projection of projections.
- _[cds@7.1.0]_ Immutable properties are always removed from the payload during UPDATE.
- _[cds@7.1.0]_ `serviceinfo.urlPath` contains the first endpoint of the service (cf. `srv.endpoints`), which is the legacy path if `cds.env.features.serve_on_root === true`.
- _[cds@7.0.3]_ Compile for lean draft no longer adds a draft entity for external entities
- _[cds@7.0.3]_ Rollback awaited in REST adapter
- _[cds@7.0.3]_ `service.on('error')` handler gets invoked only once
- _[cds@7.0.3]_ `SELECT.one.localized`
- _[cds@7.0.3]_ `COPYFILE_DISABLE=1` is now set for building `tar` archives by default
- _[cds@7.0.3]_ Actions of projection target are no longer accessible in the linked models
- _[cds@7.0.3]_ Batch execute model-less mass inputs when on `@sap/hana-client`
- _[cds@7.0.3]_ Requests to `/<path>/webapp` return 404 for absolute `@path` specifications
- _[cds@7.0.3]_ `cds compile --to serviceinfo` no longer returns paths w/ Windows `\` path characters
- _[cds@7.0.2]_ Glitch in `cds.deploy` if no change was applied
- _[cds@7.0.2]_ Detection of `.cdsrc-private.json` during startup
- _[cds@7.0.2]_ Respect capabilities annotation for draft events
- _[cds@7.0.2]_ `cds compile --to serviceinfo` returns correct service paths again
- _[cds@7.0.1]_ Feature toggle detection in single tenant mode
- _[cds@7.0.1]_ Log output for OData $batch requests
- _[cds@7.0.1]_ Avoid "catastrophic backtracking" issue in okra's tokenizer
- _[cds@7.0.1]_ Transaction marked as committed too early
- _[cap-js/graphql@0.6.2]_ GraphiQL Explorer Plugin initialization due to upstream implementation pattern change
- _[cap-js/graphql@0.6.1]_ Changed GraphiQL Explorer Plugin CDN URL due to upstream renaming
- _[odata-v2-adapter@1.11.4]_ Remove support for `serve_on_root`. Define path explicitly to `v2` to restore previous behavior
- _[odata-v2-adapter@1.11.3]_ Fix absolute OData V4 paths for `$batch` calls
- _[odata-v2-adapter@1.11.2]_ Fix `$metadata` request for absolute OData V4 paths
- _[cds-mtxs@1.9.2]_ The MTX migration script will not undeploy application database tables if HDI `auto_undeploy` is configured for the `cds.xt.DeploymentService`.
- _[cds-mtxs@1.9.2]_ The result verification of the MTX migration script no longer shows false errors when using `--force`.
- _[cds-mtxs@1.9.2]_ When a request fails, shorter errors are logged and secret data is hidden. (Set `DEBUG=req` in env to see all details again.)
- _[cds-mtxs@1.9.1]_ `GET /-/cds/saas-provisioning/tenant` now doesn't include a duplicate `tenant` field, but only provides the tenant via `subscribedTenantId`.
- _[cds-mtxs@1.9.1]_ After switching from `@sap/cds-mtx` to `@sap/cds-mtxs`, existing tenants will now be taken into account when running an upgrade for all tenants (`['*']`).

### Removed {#jul-23-removed}

- _[cds-compiler@4.1.0]_ Compiler:
  - forbid wildcards in projection extensions: `extend … with columns { * )`.
  - forbid column references such as `$user.*`, `$user.{id}` and `$user {id}`.

## June 2023

### Added {#jun-23-added}

- _[cds-dk@7.0.0]_ `cds add connectivity` now supports MTA-based deployment.
- _[cds-dk@7.0.0]_ `cds add destination` now supports MTA-based deployment.
- _[cds-dk@7.0.0]_ `cds add enterprise-messaging` creates scopes for `emcallback` and `emmanagement` in the `xs-security.json` if XSUAA is enabled.
- _[cds-dk@7.0.0]_ `cds add hana` adds the new package `@sap/cds-hana` instead of the direct `hdb` dependency.
- _[cds-dk@7.0.0]_ `cds add mta` writes an `event-mesh.json` if the Event Mesh is set up.
- _[cds-dk@7.0.0]_ `cds add typer` adds type generation support for projects using the Node runtime.
- _[cds-dk@7.0.0]_ `cds add sample` creates a bookshop application incl. Fiori UI.
- _[cds-dk@7.0.0]_ `cds add samples` is deprecated. Use `cds add tiny-sample` instead.
- _[cds-dk@7.0.0]_ `cds env` supports new options `--keys`, `--list`, `-json`, and `--raw`. See `cds env ?` for details.
- _[cds-dk@7.0.0]_ `cds import --from asyncapi` now adds `@topic` annotation for specifying the channel name for the event.
- _[cds-dk@7.0.0]_ `cds import --from asyncapi` now updates the `package.json` for multiple services.
- _[cds-dk@7.0.0]_ `cds init --add java` prints a more specific error message when not using Java 17 in SAP Business Application Studio.
- _[cds-dk@7.0.0]_ New property `cds.cli` allows reflecting on the CLI command and arguments.
- _[vscode-cds@7.0.1]_ CAP notebooks: CDS server cell reacts to regular expression `/started application/i`.
- _[vscode-cds@7.0.0]_ CAP with Typescript <Beta />: generate TS typings from CDS model files upon save - requires `@cap-js/cds-typer` to be installed in project
- _[vscode-cds@7.0.0]_ CDS language: Support highlighting, formatting and where-used for new language constructs: ternary operator, `stored` elements and annotated `returns` statements
- _[cds-compiler@4.0.0]_ Calculated elements "on-write" are now supported, e.g. `elem = field + 1 stored;` will be rendered in SQL
  as `GENERATED ALWAYS AS`.
- _[cds-compiler@4.0.0]_ compiler:
  - `returns` of actions and functions can now be annotated, e.g.

    ```cds
    action A() returns @direct { … };
    annotate A with returns {
      @anno val;
    }
    ```

  - It is now possible to use `*/` inside doc comments by escaping it `*\/`.  Only this exact string can be escaped.
  - Functions `parse.expr` and `parse.cql` now support `group by`, `having`, `order by`, `limit`, and `offset` in infix filters.
  - In expressions, you can now use function names after the `new` keyword which do
    not start with `st_`, if the name is followed by an open parenthesis.
- _[cds@7.0.0]_ Handling of expand with multiple `*` (e.g. $expand=_,_) in new parser. When using `*` in an expand the new OData parser now removes all unneeded `*`.
- _[cds@7.0.0]_ Tests run with `cds.test()` now also load `cds-plugins`
- _[cap-js/graphql@0.6.0]_ Support for `@sap/cds^7` middlewares and protocols. Note: services now need to be annotated with protocol annotations such as `@graphql` or `@protocol: 'graphql'`.
- _[cds-mtxs@1.9.0]_ MTXS Migration now checks extensibility configuration if old extensions exist.
- _[cds-mtxs@1.9.0]_ Upgrade now checks if MTXS Migration has been done if old extensions exist and if extensibility is properly configured.
- _[cds-mtxs@1.9.0]_ `GET /-/cds/saas-provisioning/tenant` now returns a `subscribedTenantId` field, even if the tenant was onboarded with no metadata.
- _[cds-mtxs@1.9.0]_ Token resource now accepts the POST method (can be used with @sap/cds-dk version 7).
- _[odata-v2-adapter@1.11.0]_ CDS 7 support
- _[odata-v2-adapter@1.11.0]_ Default route with CDS < 7 or option `middlewares` disabled or feature `serve_on_root` enabled stays `v2`
- _[odata-v2-adapter@1.11.0]_ Default route with CDS >= 7 is `/odata/v2`

### Changed {#jun-23-changed}

- _[cds-dk@7.0.1]_ `cds add` has a slightly revamped CLI UX.
- _[cds-dk@7.0.1]_ `cds init` and `cds add sqlite` add the new package `@cap-js/sqlite`, which uses `better-sqlite` instead of `sqlite3`.
- _[cds-dk@7.0.1]_ `cds add sample-tiny` is (compatibly) renamed to `cds add tiny-sample`.
- _[cds-dk@7.0.0]_ `--production` as a global flag now sets `CDS_ENV` to `production` instead of `NODE_ENV`.
- _[cds-dk@7.0.0]_ `cds add typer` is now allowed to be used, even if the runtime considers the project to be of Java nature.
- _[cds-dk@7.0.0]_ `cds add typer` now generates to `@cds-models`, which will also be `.gitignore`d by the facet.
- _[cds-dk@7.0.0]_ `cds add typer` now properly handles TypeScript projects, if possible.
- _[cds-dk@7.0.0]_ `cds add connectivity` now supports MTA-based deployment.
- _[cds-dk@7.0.0]_ `cds add data --for` is dropped in favor of `--data:for`.
- _[cds-dk@7.0.0]_ `cds add destinations` is renamed to `cds add destination`.
- _[cds-dk@7.0.0]_ `cds add enterprise-messaging` changes the default for the `topicRules.publish-filter` to `${namespace}/*`.
- _[cds-dk@7.0.0]_ `cds add enterprise-messaging` uses a more unique default (`default/<app-name>/1`) as its `namespace`.
- _[cds-dk@7.0.0]_ `cds add hana` uses a plain `cds.requires.db = 'hana'`, also for multitenancy scenarios.
- _[cds-dk@7.0.0]_ `cds bind` parameter `--for` replaces `--profile` to specify the profile to store connection information in `.cdsrc-private.json`; `cds bind --exec` still uses `--profile`.
- _[cds-dk@7.0.0]_ `cds build` moved to `@sap/cds-dk`.
- _[cds-dk@7.0.0]_ `cds build` no longer supports `@sap/cds-mtx`. Migrate to `@sap/cds-mtxs`, see <https://cap.cloud.sap/docs/guides/multitenancy/old-mtx-migration>.
- _[cds-dk@7.0.0]_ `cds build` no longer supports the classic CAP Java runtime. Migrate to the current CAP Java runtime SDK, see <https://cap.cloud.sap/docs/java/migration>.
- _[cds-dk@7.0.0]_ `cds deploy` moved to `@sap/cds-dk`.
- _[cds-dk@7.0.0]_ `cds deploy` now supports `--for` to specify the profile to store connection information in `.cdsrc-private.json`.
- _[cds-dk@7.0.0]_ `cds deploy` parameter `--no-save` is default.
- _[cds-dk@7.0.0]_ `cds import --from asyncapi` now takes event name from key `name` in the message.
- _[cds-dk@7.0.0]_ `cds init` uses latest Maven Java archetype version `2.0.1` for creating Java projects. This also requires Java 17 or higher.
- _[cds-dk@7.0.0]_ `cds watch` and `cds run` don't display stack traces any more if no models are found.
- _[cds-dk@7.0.0]_ `cds login` (and other commands implicitly logging in) now use the POST method to transmit credentials to @sap/cds-mtxs.
- _[vscode-cds@7.0.1]_ Changed default output for generated types to `@cds-models`
- _[vscode-cds@7.0.1]_ Minimum VS Code version is now 1.77.0
- _[vscode-cds@7.0.0]_ CAP notebooks: Default code cell type is 'shell'
- _[vscode-cds@7.0.0]_ Minimum VS Code version is now 1.78.0
- _[cds-compiler@4.0.0]_ API:
  - `messageContext()` is now deprecated; use `messageStringMultiline()` instead with `config.sourceMap`.
  - `messageString(err, config)` has a new signature; the old one is still supported for backward compatibility.
  - Option `docComment: false` now removes doc comments during compilation even for CSN.
    If this option is not defined, doc comments are checked, but not put into CSN.
- _[cds-compiler@4.0.0]_ compiler:
  - CSN: Specified elements of queries are now resolved and checked (previously ignored except for annotations).
    Type properties (`length`, …) and some element properties are now taken from the specified elements
    instead of relying only on the elements inferred by the compiler.
  - CSN: Compiler accepts CSN input with CSN version `0.1.0` (produced by cds-compiler version 1.10.0 and older)
    only if the version attribute is properly set, i.e. `"version": {"csn": "0.1.0"}`.
  - CSN: Type properties (`length`, `precision`, `scale`, and `srid`) next to `elements` or `items` in CSN input
    is now an error.  Previously ignored.
  - An extension of the form `extend Def with { name = 42 };` is now represented in parsed CSN as
    adding a calculated element.
  - `having` as the first word in an infix filter is now interpreted as keyword. Write `![having]`
    to have it parsed as identifier.
  - If a definition overrides elements of an included definition, it is sorted according
    to the included definition's element order.  This is similar to how `*` works in projections.
    It is no longer possible to overwrite a scalar element with a structure and vice versa.
  - Two included definitions cannot have the same element. The including entity must override the element.
  - If a type with properties precision and scale is extended, the `extend` statement must extend both properties.
  - `annotate E:elem with actions {};` is now a parser error and no longer a compiler error.
    Only relevant if you use `parseCdl`-style CSN.
  - Annotations (and other properties) are now propagated to `returns` as well, if the returned artifact
    is a non-entity, e.g. a type.
  - `annotate E with returns {…}` is now only applied to actions/functions. Previous compiler versions
    autocorrected the `annotate` statements to apply them to an entity's elements.
  - Calculated elements can't refer to localized elements.
  - Table aliases can't be used in `extend Query with columns {…}` any longer. Use direct element references instead.
  - Table alias and mixin names can no longer start with `$`. Choose a different name. With this change
    we avoid unexpected name resolution effects in combination with built-in `$`-variables.
  - A semicolon is now required after a type definition like `type T : many {} null`.
  - It is no longer possible to write `type of $self.‹elem›` to refer to the element `‹Def›.‹elem›`
    where `‹Def›` is the main artifact where the type expression is embedded in. Replace by `type of <Def>:‹elem›`.
  - Message ID `duplicate-autoexposed` was changed to `def-duplicate-autoexposed`.
- _[cds-compiler@4.0.0]_ Update OData vocabularies 'Common', 'UI'.
- _[cds-compiler@4.0.0]_ to.sql:
  - Change default `length` for `cds.String` for all SQL dialects except `hana` to 255.
  - for the sql dialect `postgres`, the `ON DELETE RESTRICT` / `ON UPDATE RESTRICT` rules
    are omitted from the referential constraint definitions.
- _[cds-compiler@4.0.0]_ to.cdl:
  - If associations are used inside `items`, an error is emitted instead of rendering invalid CDL.
  - `items` inside `items`, where the outer one does not have a `type`, is now always an error,
    because it can't be rendered in CDL
- _[cds@7.0.0]_ Result of `READ` events is now always an array. Previously, it could be `null/undefined` (now empty array), single object (now array with one entry) or array.
- _[cds@7.0.0]_ OData: `PUT`/`PATCH` requests resulting in a new entity (i.e., the `UPSERT` effectively was an `INSERT`) return status code 201
- _[cds@7.0.0]_ Draft: Draft activate requests resulting in an `UPDATE` return status code 200
- _[cds@7.0.0]_ ETags are validated via `WHERE EXISTS` clause attached to query on `GET`, `PUT`/`PATCH`, and `DELETE`
- _[cds@7.0.0]_ OData: `PUT`/`PATCH` with `if-match` header prevents `UPSERT`, i.e., only an existing entity can be updated by such a request
- _[cds@7.0.0]_ Runtime support for `@sap/instance-manager` is removed in favor of the `cds-mtxs` Service Manager client.
- _[cds@7.0.0]_ In multitenant mode, the HANA pool uses the `cds-mtxs` credentials cache
- _[cds@7.0.0]_ Draft handlers are registered for all entities.
- _[cds@7.0.0]_ Decimals in client input are validated in runtime's assert framework (previously OData adapter)
- _[cds@7.0.0]_ `cds build` and `cds deploy --to hana` have moved to `@sap/cds-dk`. Upgrade `@sap/cds-dk` to version 7 to continue using these commands.
- _[cds@7.0.0]_ Changed the behavior of `SELECT` queries for single entities to return `undefined` instead of `null` when no record is found.
- _[cds@7.0.0]_ Fiori preview has moved to new `@sap/cds-fiori` module.
- _[cds@7.0.0]_ Numbers are now always used as placeholders in SQL, except for `SELECT 1 From...`, `LIMIT` and the comparison of two numeric values (e.g. `1 eq 1`).
- _[cds@7.0.0]_ Only new major version 3 of SAP Cloud SDK is from now on supported. Please make sure to upgrade. Version 2 is not maintained anymore.
- _[cds@7.0.0]_ `@protocol` annotation can be used to serve multiple protocols per service.
- _[cds@7.0.0]_ Per default, services are served with a protocol-specific prefix (for example '/odata/v4' for a service using the OData V4 protocol). To also serve without this prefix, as it was the case in older @sap/cds versions, the flag `cds.env.features.serve_on_root` can be set to `true`. Alternatively, the `@path` annotation can be used to explicitly specify an absolute path (with a leading `/`).
- _[cds@7.0.0]_ `cds.requires.middlewares` is enabled by default.
- _[cds@7.0.0]_ The order of csv files that `cds deploy --to sqlite` uses now reflects the dependency order of cds models.  This is needed if `UPSERT` is used to create a logically correct deployment.
- _[cds@7.0.0]_ `cds.fiori.lean_draft` is activated by default. You can still set it to `false` as fallback.
- _[cap-js/graphql@0.6.0]_ Bump required `@sap/cds` version to `>=7`
- _[cap-js/graphql@0.6.0]_ `@cap-js/graphql/index.js` now collects individual services and mounts the adapter as a protocol middleware on the `cds.on('served', ...)` event
- _[cap-js/graphql@0.6.0]_ Moved the `GraphQLAdapter` module to `lib/GraphQLAdapter.js` and merged it with `CDSGraphQLAdapter` previously found in `index.js` in the root directory
- _[cap-js/graphql@0.6.0]_ Don't generate fields that represent compositions of aspects within mutation types that represent services
- _[cap-js/graphql@0.6.0]_ Disabled conjunction on the same field for the following operators:
  - `eq` (Equal)
  - `gt` (Greater Than)
  - `ge` (Greater Than or Equal)
  - `le` (Less Than or Equal)
  - `lt` (Less Than)
  - `startswith`
  - `endswith`

### Fixed {#jun-23-fixed}

- _[cds-dk@7.0.1]_ `cds import --from asyncapi` now maps `@topic` annotation to the event key.
- _[cds-dk@7.0.1]_ `cds build` now copies the contents of mtx sidecar subfolders to the deployment layout.
- _[cds-dk@7.0.1]_ `cds compile --to xsuaa` can be used again if `@sap/cds` 6 is installed.
- _[cds-dk@7.0.1]_ `cds env` output is again JSON in non-interactive terminals. This restores the behavior from `@sap/cds-dk` 6.
- _[cds-dk@7.0.0]_ `cds add mta` now correctly generates the `mta.yaml` following a `cds add enterprise-messaging-shared`.
- _[cds-dk@7.0.0]_ `cds add typer` now correctly defaults to `…/cds-models`, instead of `…/cds-modules` as output path for generated types.
- _[cds-dk@7.0.0]_ `cds build` ignores invalid entries in an `undeploy.json` file.
- _[cds-dk@7.0.0]_ `cds build` now correctly copies CAP Node.js service handler implementations contained in different service modules. The service handlers will now be loaded correctly in local as well as in cloud deployment scenarios.
- _[cds-dk@7.0.0]_ `cds build` now correctly copies JavaScript files located in nested folders of a Node.js app into the deployment folder.
- _[cds-dk@7.0.0]_ `cds build` now correctly resolves model files of complex mtx extension projects.
- _[cds-dk@7.0.0]_ `cds build` now correctly supports shortcut options
- _[cds-dk@7.0.0]_ `cds-ts watch` no longer fails with strange compilation errors if called in combination w/ `ts-node`.
- _[cds-dk@7.0.0]_ `cds login` no longer echoes output from an npm subprocess.
- _[cds-dk@7.0.0]_ `cds build` now creates the correct deployment layout for Node.js applications.
- _[cds-dk@6.8.3]_ `@sap/cds` 6.8.4
- _[cds-dk@6.8.3]_ `@sap/cds-compiler` 3.9.4
- _[vscode-cds@7.0.0]_ CAP Release Notes page: remove superfluous footer section
- _[vscode-cds@7.0.0]_ CAP notebooks: Magic command newline issues on windows powershell
- _[cds-compiler@4.0.2]_ to.sql.migration: When drop-creating views, also drop-create (transitively) dependent views.
- _[cds-compiler@4.0.2]_ to.edm(x):
  - Forward `@odata.singleton { nullable }` annotation to parameter entity.
  - Annotations assigned to a parameterized entity are propagated to the parameter entity if the annotation is
    applicable to either an `edm.EntitySet` or `edm.Singleton`. This especially covers all `@Capabilities` and their
    shortcut forms like `@readonly` and `@insertonly`. The original annotation is not removed from the original entity.
    Annotations that should be rendered at the parameter `edm.EntityType` can be qualified with `$parameters`.
    Explicitly qualified annotations are removed from the original entity allowing individual assignments.
- _[cds-compiler@4.0.0]_ compiler:
  - `parseCdl` CSN did not include correct `...` entries for annotations containing `... up to`
  - Type references inside calculated elements were not always correctly resolved.
  - `USING` empty files were incorrectly marked as "not found".
  - If an association was inside `items`, e.g. via type chains, the compiler crashes instead of emitting proper errors.
- _[cds-compiler@4.0.0]_ Localized convenience views for projections (not views) did not have references rewritten.
  This only affects CSN, the SQL result was correct.
- _[cds-compiler@4.0.0]_ Calculated elements in composition-of-aspect lost their `value` when generating composition targets.
- _[cds-compiler@4.0.0]_ to.sql/to.hdi/for.odata: Foreign keys in ON-conditions were not always properly checked and flattened if explicit
  `keys` were provided that reference structures.
- _[cds-compiler@4.0.0]_ Extending bound actions with elements is not possible, but was not reported by the compiler and elements were silently lost.
- _[cds-compiler@4.0.0]_ for.odata:
  - Don't propagate `@odata { Type, MaxLength, Precision, Scale }` from structured to flattened leaf elements.
  - Remove `type: null` attribute from element definitions referencing an undefined type via `type of`.
- _[cds-compiler@4.0.0]_ to.edm(x):
  - Don't reject untyped properties that are API typed with a valid `@odata.Type` annotation.
  - Render correct `EntitySetPath` and annotation target path for actions/functions with explicit binding parameter.
- _[cds-compiler@4.0.0]_ to.cdl: ParseCdl-style CSN containing annotations with `...` were not properly rendered.
- _[cds-compiler@3.9.4]_ compiler: `USING` empty files were incorrectly marked as "not found".
- _[cds-compiler@3.9.4]_ Localized convenience views for projections (not views) did not have references rewritten.
  This only affects CSN, the SQL result was correct.
- _[cds-compiler@3.9.4]_ to.edm(x): Render correct EntitySetPath and annotation target path for actions/functions
  with explicit binding parameter.
- _[cds.java@2.0.1]_ Fixed a bug, that caused a `NullPointerException`, if the headers map was set to `null` in `TopicMessageEventContext`.
- _[cds.java@2.0.1]_ Fixed a bug preventing the attributes typed as `Edm.DateTime` in OData V2 to accept the date values with a fractions of a seconds or without the seconds.
- _[cds.java@2.0.1]_ Fixed a bug, that caused a `ClassCastException` when making use of `SaasRegistryUnsubscriptionOptions` in unsubscription handler of DeployService.
- _[cds@7.0.0]_ UUID typed key properties are no longer automatically filled during UPSERT
- _[cds@7.0.0]_ OData: When undefined in the payload, requests for actions with not nullable array-type parameters result in a client-side error
- _[cds@7.0.0]_ Missing `GROUP BY` in request with $apply in combination with aggregate on restricted entity
- _[cds@7.0.0]_ When `@sap/cds` was not installed underneath project root, cds-plugins where not found
- _[cds@7.0.0]_ Support for multiline texts in `properties` files
- _[cds@7.0.0]_ Error when reading auth protected entities with infix filter in expand
- _[cds@7.0.0]_ Glitch in transaction handling in case of concurrent async before handlers
- _[cds@6.8.3]_ `cds build` no longer reports CAP Java Classic runtime usage by mistake.
- _[cds@6.8.3]_ `cds version` prints the local `@sap/cds` version, even if called from a different `@sap/cds` installation.
- _[cds@6.8.3]_ User challenges handling in case of `cds.env.auth.restrict_all_services: false`
- _[cds-mtxs@1.8.4]_ Further improvement of timeout error handling when fetching uaa tokens.
- _[cds-mtxs@1.8.3]_ Enables passing deployment options to the `upgrade` endpoint of `cds.xt.SaasProvisioningService`.
- _[cds-mtxs@1.8.3]_ The Service Manager now requests the authorization token resiliently.
- _[cds-mtxs@1.8.3]_ MTXS migration script now ignores changes caused by sap.common entities when verifying the migration result.
- _[odata-v2-adapter@1.11.1]_ Fix compatibility for option `middlewares` disabled or feature `serve_on_root` enabled
- _[odata-v2-adapter@1.10.6]_ Fix metadata type for managed composition entities and sub-entities

### Removed {#jun-23-removed}

- _[cds-compiler@4.0.0]_ NodeJs 14 is no longer supported.
- _[cds-compiler@4.0.0]_ `CompileMessage` no longer has property `location`, which was deprecated in v2.1.0, but `$location`,
  which is supported since v2.1.0
- _[cds-compiler@4.0.0]_ "Smart type references" such as `Entity.myElement` instead of `Entity:myElement` are removed, because since
  compiler v2, `Entity.myElement` could also be a definition, creating ambiguities.
- _[cds-compiler@4.0.0]_ Element type references can no longer follow associations, i.e. `E:assoc.id` is not allowed.
- _[cds@7.0.0]_ Deprecated `req.run()` function, use `cds.run()` instead.
- _[cds@7.0.0]_ Support for unofficial feature flag `cds.env.features.bigjs`
- _[cds@7.0.0]_ Support for unofficial feature flag `cds.features.parameterized_numbers`
- _[cds@7.0.0]_ Deprecated referential integrity checks at runtime
- _[cds@7.0.0]_ Support for `cds-mtx`
- _[cds@7.0.0]_ Support for Node 14
- _[cds@7.0.0]_ Internal `req.getUriInfo()` and `req.getUrlObject()`
- _[cds@7.0.0]_ `cds deploy --to hana` is now part of `@sap/cds-dk`.
- _[cds@7.0.0]_ Deprecated compat mode `cds.env.features.cds_tx_protection = false`
- _[cds@7.0.0]_ Beta `AuditLogService` and out-of-the-box audit logging. Use plugin `@cap-js/audit-logging` instead.

## May 2023

### Added {#may-23-added}

- _[cds-dk@6.8.0]_ `cds add file-based-messaging` adds configuration for file-based messaging (Node.js).
- _[cds-dk@6.8.0]_ `cds add redis-messaging` adds configuration for Redis messaging (Node.js).
- _[cds-dk@6.8.0]_ `cds add enterprise-messaging-shared` adds configuration for Event Mesh support with `kind = 'enterprise-messaging-shared'` (Node.js).
- _[cds-dk@6.8.0]_ `cds import` now supports OData V4 EDMX file containing multiple `Schemas` with single `EntityContainer`.
- _[cds-dk@6.8.0]_ `cds import` now supports importing of AsyncAPI documents.
- _[cds-dk@6.8.0]_ `cds login -m <clientid>[:<key>]` now supports X.509 (mTLS) credential-type in XSUAA binding of @sap/cds-mtxs.
- _[vscode-cds@6.8.2]_ CAP notebooks: magic command can also be written inside of line- and block-comments
- _[vscode-cds@6.8.0]_ User setting `cds.typeGenerator.localInstallationOnly` has been added to allow more finely grained control for the user over the resolution of the type generation package
- _[vscode-cds@6.8.0]_ New command `Record Traces for Support Ticket` to assist creation of support tickets for CDS editor issues
- _[vscode-cds@6.8.0]_ CAP notebooks: new cell type `CDS Server`, which is also executable for CDS background processes.
- _[cds.java@2.0.0]_ Added OpenTelemetry instrumentation for Services, RequestContexts and ChangeSetContexts.
- _[cds.java@2.0.0]_ The OpenTelemetry Context is propagated to child threads, when propagating the RequestContext.
- _[cds.java@2.0.0]_ Added basic support for Spring AOT required for Spring Native Images.
- _[cds.java@2.0.0]_ The archetype now supports creating projects using Java 20.
- _[cds.java@2.0.0]_ The OData V4 adapter now supports using `$count` in `$expand` together with `$top` and `$skip`.
- _[cds.java@2.0.0]_ The property `DraftIsProcessedByMe` is now calculated when requesting `DraftAdministrativeData`.
- _[cds.java@2.0.0]_ Added support for using `Result` as POJO argument in `@After` event handlers of CRUD events.
- _[cds.java@2.0.0]_ Writing tenant-specific audit logs to the AuditLog V2 service no longer requires the tenant subdomain to be known.
- _[cds.java@2.0.0]_ Added a new configuration property `structured` to the messaging service configuration. If set to `true` it enforces a structured JSON Map-based representation of the message. Plain strings are transformed into a structured representation. Note that this might have an effect on the representation of the message in the broker. In addition setting this property enables handling of message headers (e.g. cloudevent headers) separately from the message itself on brokers that have a native representation for headers (e.g. Kafka). On incoming messages the flag determines the internal representation of the message either as a plain String or two Maps of message data and message headers.
- _[cds.java@2.0.0]_ The dead-letter queue set in the Event Mesh or Message Queueing queue configuration is now automatically created, if not yet existing.
- _[cds.java@1.34.1]_ Added support for replacing the `$namespace` placeholder in queue configuration values.
- _[cds.java@1.34.0]_ A new starter module `cds-starter-k8s` has been introduced which bundles useful CAP dependencies for the Kubernetes/Kyma environment.
- _[cds.java@1.34.0]_ The CDS Maven archetype now supports the `kubernetes` and `k8s` values as additional option in the `targetPlatform` parameter.
- _[cds.java@1.34.0]_ Introduced hybrid IAS / XSUAA support based on `cds-feature-identity`. In hybrid mode the server accepts both IAS and XSUAA tokens. No automatic conversion between token types occurs. This mode is enabled, when both an IAS and XSUAA binding are present.
- _[cds.java@1.34.0]_ Command main methods like `Deploy` or `Subscribe` no longer initialize adapters and background tasks like for example the draft GC, event subscriptions or persistent outbox processing.
- _[cds.java@1.34.0]_ The tenant upgrade triggered through `DeploymentService.upgrade` now includes the tenant upgrade for multitenant Event Mesh services.
- _[cds.java@1.34.0]_ The OData V4 adapter now supports open types.
- _[cds.java@1.34.0]_ Writing tenant-specific audit logs to the AuditLog V2 service no longer requires the tenant subdomain to be known.
- _[cds.java@1.34.0]_ Kafka service bindings using basic authentication are now supported.
- _[cds4j@2.0.0]_ Calculated elements with a value expression with “on-read” semantics are supported
- _[cds4j@2.0.0]_ Add constants `CQL.TRUE`, `CQL.FALSE` and `CQL.NULL`
- _[cds4j@2.0.0]_ Suppress the execution of DB statements whose filter condition statically evaluates to `false`
- _[cds4j@2.0.0]_ New `CqnExpand.inlineCount()` method to include the count of entries in the expand
- _[cds@6.8.0]_ Global cds-dk version is now included in tabular output of `cds v -i`.
- _[cds@6.8.0]_ Audit logging support for OAuth2 Plan
- _[cds@6.8.0]_ Feature flag to limit the max number of requests in a Odata batch request. The max number can be specified with a number in `cds.odata.batch_limit`.
- _[cds@6.8.0]_ Custom authentication in `enterprise-messaging`
- _[cds@6.8.0]_ Requests with lambda expressions are rejected by remote services of kind `odata-v2`
- _[cds@6.8.0]_ `cds build` ignores invalid entries in `undeploy.json`
- _[cds@6.8.0]_ New `minorUnit` element in `sap.common.Currencies` for how many fractions the minor unit takes (e.g. `0`, or `2`).  See <https://www.npmjs.com/package/@sap/cds-common-content> for matching content.
- _[cds@6.8.0]_ Support for `$user.<attr> is null` and `$user.<attr> is not null` in `@restrict.where`. `is null` matches `null` and `[]`, `is not null` matches arrays with at least one entry as well as `!= null` if no array.
- _[cds@6.8.0]_ Plugins are now also fetched from `devDependencies`, unless `NODE_ENV === 'production'`
- _[cds@6.8.0]_ Plugins can now provide `cds` configurations in their package.json.
- _[cds@6.8.0]_ Support in OData entities with special letters (like ó,â,ü) in names.
- _[cds-mtxs@1.8.0]_ Token endpoint can now handle UAA binding with X.509 (mTLS) authentication. On CLI side, this requires @sap/cds-dk@>=6.8.0.

### Changed {#may-23-changed}

- _[cds-dk@6.8.2]_ `cds compile` to `openapi` now uses `@Common.Label` annotation to generate `x-sap-shortText`.
- _[cds-dk@6.8.2]_ `cds import` now removes `x-` from elements in the `@AsyncAPI.Extensions` annotation while importing AsyncAPI documents.
- _[cds-dk@6.8.2]_ `cds compile` to `openapi` now sorts the `tags` and `paths` in alphabetical order.
- _[cds-dk@6.8.2]_ The livereload feature of `cds watch` can be disabled through `cds.livereload: false` in `package.json`.
- _[cds-dk@6.8.0]_ `cds init` uses latest Maven Java archetype version 1.34.0 for creating Java projects.
- _[vscode-cds@6.8.2]_ Changed default output directory for generated CDS types from `@types` to a `node_modules` subfolder
- _[vscode-cds@6.8.1]_ CAP notebooks: improved Java cell example notebook
- _[vscode-cds@6.8.0]_ Welcome page will be shown based on page's hash code
- _[vscode-cds@6.8.0]_ CDS type generation will now be enabled by default
- _[vscode-cds@6.8.0]_ Improved CAP Notebooks Welcome page (better layout, responsive icons, fixed buttons).
- _[vscode-cds@6.8.0]_ Changing some CDS user settings required a manual restart of the IDE. This is no longer necessary
- _[vscode-cds@6.8.0]_ Minimum VS Code version is now 1.76.0
- _[cds.java@2.0.0]_ Java 17, Spring Boot 3 and Jakarta EE 10 are now required as minimum versions.
- _[cds.java@2.0.0]_ The default value of property `cds.security.authentication.normalizeProviderTenant` is changed to `true`. With this change, the provider tenant is normalized and set to null in the UserInfo by default. If you have subscribed the provider tenant to your application you need to disable this feature.
- _[cds.java@2.0.0]_ The `cds-services-archetype` now generates projects, which use JUnit 5 and include the `spring-boot-starter-test` dependency.
- _[cds.java@2.0.0]_ Removed various deprecated classes and methods.
- _[cds.java@2.0.0]_ Removed various deprecated configuration properties.
- _[cds.java@1.34.0]_ Removed hybrid IAS / XSUAA support based on `cds-feature-xsuaa`, which **exchanged** incoming IAS tokens with XSUAA tokens. This mode is deprecated by XSUAA and will be removed.
- _[cds.java@1.34.0]_ By default, undefined or empty attributes **restrict** expressions in where-conditions of instance-based authorization now. For instance, `$user.code = code` evaluates to `false` if the user attribute `code` is not defined or has no value. Note that XSUAA attributes with `valueRequired:true` (i.e. explicitly allowing unset attribute) might need model adaption such as `$user.code = code or $user.code is null'` to support unrestricted access.
- _[cds.java@1.34.0]_ Activated the new faster serializer in OData V4 adapter by default (`cds.odatav4.serializer.enabled` set to `true`).
- _[cds4j@2.0.0]_ Make `Value` type final. Changing the type of a value now returns a new (immutable) value or throws an exception
- _[cds4j@2.0.0]_ Changed signature and default impl of `Modifier::param` to replace immutable params
- _[cds4j@2.0.0]_ Add `null` values to the query result
- _[cds4j@2.0.0]_ Result rows of Updates are not cleared anymore if no entity was updated, instead check the update count
- _[cds4j@2.0.0]_ Removed deprecated `CqnModifier`
- _[cds4j@2.0.0]_ Removed deprecated `CqnLimit` and `Limit` interfaces
- _[cds4j@2.0.0]_ Removed deprecated `Modifier` methods:
  - `expand(ref, items, orderBy, limit)`
  - `in(Value<?> value, Collection<Value<?>> list)`
  - `selectListItem(Value<?> value, String alias)`
  - `limit(Limit limit)`
- _[cds4j@2.0.0]_ Removed deprecated (positional) params from `CQL` and `CqnBuilder`
- _[cds4j@2.0.0]_ Removed deprecated `Segment:accept` and `CqnVisitor:visit(segment)`
- _[cds4j@2.0.0]_ Removed support for deprecated annotations `@Search.cascade`
- _[cds4j@2.0.0]_ Removed deprecated Upsert strategy "replace" (cascading delete + deep insert)
- _[cds4j@2.0.0]_ Removed deprecated `RefSegment`
- _[cds4j@2.0.0]_ Removed deprecated Modifier `CompatibilityDefaults` and mutable refs
- _[cds4j@2.0.0]_ Removed deprecated methods in `ResultBuilder`
- _[cds4j@2.0.0]_ Removed deprecated `CqnXsert.Kind`
- _[cds4j@2.0.0]_ Removed deprecated `ConstraintViolationException`
- _[cds4j@2.0.0]_ Removed deprecated `Select::groupBy(Collection<CqnSelectListItem> dimensions)`
- _[cds4j@2.0.0]_ Removed deprecated `CdsAssociationType::keys`
- _[cds4j@2.0.0]_ Removed deprecated `Source::getRoot`
- _[cds4j@2.0.0]_ Removed deprecated `CqnParameter::getName`
- _[cds4j@2.0.0]_ Removed deprecated `CqnSelectList::prefix`
- _[cds4j@2.0.0]_ Removed deprecated `CqnSortSpecification::item`
- _[cds4j@2.0.0]_ Removed deprecated `CqnSource::isQuery`, `CqnSource::asQuery`
- _[cds4j@2.0.0]_ Removed deprecated `JDBCDataStoreConnector` constructors
- _[cds4j@2.0.0]_ Removed deprecated `CqnSelectListItem::displayName` and `alias`
- _[cds4j@2.0.0]_ Removed deprecated `CQL::literal`
- _[cds4j@2.0.0]_ Removed deprecated `CdsStructuredType::isInlineDefined`
- _[cds@6.8.0]_ Texts for _Country_ are changed to _Country/Region_ in `@sap.common.Countries`
- _[cds@6.8.0]_ Resolved issue where selection strategies of destination options in multitenant applications were not working correctly, resulting in runtime errors.
The fix relies on the `@sap-cloud-sdk/connectivity` npm package to be installed.
- _[cds@6.8.0]_ Precision of timestamp used in outbox message increased to 100 nanoseconds (`YYYY-MM-DD hh:mm:ss.nnnnnnn`)
- _[cds@6.8.0]_ When a draft is locked by another user, the error message now includes the username of that user
- _[cap-js/graphql@0.5.0]_ Improved consistency of handling results of different types returned by custom handlers in CRUD resolvers:
  - Wrap only objects (i.e. not primitive types or arrays) returned by custom handlers in arrays in create, read, and update resolvers
  - Delete mutations return the length of an array that is returned by a `DELETE` custom handler or 1 if a single object is returned
- _[cap-js/graphql@0.5.0]_ Don't generate fields for key elements in update input objects
- _[cap-js/graphql@0.5.0]_ Update and delete mutations have mandatory `filter` argument
- _[cap-js/graphql@0.5.0]_ Allow services that are not instances of `cds.ApplicationService`. It is expected that the invoker provides the correct set of service providers when directly using the GraphQL protocol adapter API.
- _[cds-mtxs@1.8.0]_ `JobsService`: the job status will now remain `RUNNING` until all tenant tasks have succeeded or failed, instead moving to `FAILED` as soon as there's the first task failure.

### Fixed {#may-23-fixed}

- _[cds-dk@6.8.2]_ `@sap/cds-dk` 6.8.2
- _[cds-dk@6.8.2]_ `@sap/cds-mtxs` 1.8.2
- _[cds-dk@6.8.2]_ `cds add mta` adds configuration `enterprise-messaging-shared` if necessary
- _[cds-dk@6.8.1]_ `cds-ts watch` no longer fails with strange compilation errors if called in combination w/ `ts-node`
- _[cds-dk@6.8.0]_ `cds-ts watch` now honors a `tsconfig.json` in the project
- _[cds-dk@6.8.0]_ launch script for `CAP projects` in VS Code fixed
- _[vscode-cds@6.8.2]_ Links on CAP Release Notes page are now pointing to correct locations in Capire.
- _[vscode-cds@6.8.1]_ CAP notebooks: sample notebook `Shell` now uses a cross platform example
- _[vscode-cds@6.8.1]_ CAP notebooks: shellscript syntax highlighting for `Shell` cell
- _[vscode-cds@6.8.1]_ CAP notebooks: cells `CDS`, `Java` and `Javascript` now show error message if needed executable is not found
- _[vscode-cds@6.8.1]_ Fix CAP Release Notes page
- _[vscode-cds@6.8.1]_ `Report issues` url now points to correct SAP Answers location
- _[vscode-cds@6.8.0]_ Where-used index could be incomplete with latest OData annotation plugin
- _[vscode-cds@6.8.0]_ Formatting of quoted identifiers enclosed in square brackets
- _[vscode-cds@6.8.0]_ Extension will no longer crash when using unknown compiler versions, though, compatibility is not guaranteed
- _[cds.java@2.0.0]_ Fixed a bug, that caused a HTTP request to the MTX Sidecar during startup, if provider tenant normalization was enabled.
- _[cds.java@2.0.0]_ Fixed a bug, that caused issues with generating the OData V4 nextLink URL, when the original URL had encoded `$` characters in query parameter names.
- _[cds.java@1.34.1]_ Fixed a bug in instance-based authorization that caused misinterpretation of expressions with `is null` or `is not null`.
- _[cds.java@1.34.0]_ Fixed a bug, causing the new OData V4 serializer to omit expanded properties in the result, which were not requested by the client.
- _[cds.java@1.34.0]_ Fixed a bug, causing the persistent outbox to be used for the provider tenant, when the MT compatibility mode was disabled.
- _[cds.java@1.34.0]_ Fixed a bug, causing `ClassCastException` when setting `cds.errors.extended` to true.
- _[cds.java@1.34.0]_ Fixed a bug, causing warning logs, when activating the CDS actuator endpoint.
- _[cds.java@1.34.0]_ Fixed a bug, causing `NullPointerException` when triggering tenant upgrades.
- _[cds4j@2.0.0]_ The CQL clauses `search()` and `byId()` are supported in an EXISTS subquery
- _[cds4j@1.38.1]_ Fix Update and Delete with path expression to target entity with aliased key elements
- _[cds@6.8.2]_ EDMX texts for extended tenants based on `@sap/cds-mtx` now appear correctly again.
- _[cds@6.8.2]_ `@assert.range` for DateTime/Date/Time/Timestamp
- _[cds@6.8.2]_ Nested `$expand` OData query to the `texts` compiler-generated composition for entities with localized elements.
For example, similar OData requests `Entity?$expand=items($expand=item($expand=texts))` now should work as expected.
- _[cds@6.8.2]_ `req.subject` would occasionally be incorrect when a query had been executed prior to it.
- _[cds@6.8.2]_ cds plugins are also fetched from `devDependencies`
- _[cds@6.8.2]_ `cds build` now correctly resolves complex models of mtx extension projects
- _[cds@6.8.1]_ DROP statements for SQLite and PostgreSQL no longer miss a comma at the end
- _[cds@6.8.0]_ fix exported types of the `cds` core API
- _[cds@6.8.0]_ cds build uses the correct path if no project dir is given
- _[cds@6.8.0]_ Read after write for updates on to-one navigation
- _[cds@6.8.0]_ Error in $orderBy in combination with @Core.MediaType property
- _[cds@6.8.0]_ Fixes in lean-draft
- _[cds@6.8.0]_ Fixed an issue where the combined `$search` and `$expand` query and localized data was returning empty results on SAP HANA
- _[cds@6.8.0]_ Tests using `cds.test` no longer crash with a segmentation fault if `injectGlobals: false` is set in the Jest configuration.
- _[cds@6.8.0]_ Handlers registered with `cds.on('shutdown')` are now called with an `err` argument in case the shutdown happened in response to uncaught exceptions or unhandled rejected Promises.
- _[cds@6.8.0]_ Log output on uncaught exceptions or unhandled rejected Promises now is done via `cds.log` instead of `console`.
- _[cds@6.8.0]_ New config option `cds.env.server.force_exit_timeout` allows to configure the timeout in ms after which we force-exit the server (default: 1111) if it didn't do so as expected after a prior `server.close()`. Values `false` or `0` disable force-exit.
- _[cds@6.8.0]_ Require custom auth relative to project root when using pluggable middlewares
- _[cap-js/graphql@0.5.0]_ Aligned `cds.Request` instantiation with other protocols for more consistent usage in custom handlers
- _[cds-mtxs@1.8.2]_ Fix for asynchronous subscriptions with `lazyT0 = true`.
- _[cds-mtxs@1.8.2]_ SAP HANA deployment now correctly evaluates the sql mapping configuration (e. g. `cds.data.sql_mapping.quoted`) also for deployment of `t0`.
- _[cds-mtxs@1.8.1]_ MTXS Migration can now handle empty extension projects.
- _[cds-mtxs@1.8.1]_ MTXS Migration can now handle extension projects with complex folder structure correctly.
- _[cds-mtxs@1.8.1]_ The SaaS registry callback now supports X.509 authentication.
- _[cds-mtxs@1.8.1]_ Sidecar is now using mocked authentication in development mode.
- _[cds-mtxs@1.8.1]_ Fix for asynchronous subscriptions with `lazyT0 = true`.
- _[cds-mtxs@1.8.0]_ MTXS Migration only deploys `cds.xt.Extensions` instead of the full application model.
- _[odata-v2-adapter@1.10.5]_ Replace deprecated usage of `req.run` with `cds.run`
- _[odata-v2-adapter@1.10.5]_ Update of `node-fetch`
- _[odata-v2-adapter@1.10.5]_ Remove soon deprecated `req.getUriInfo`

## April 2023

### Added {#apr-23-added}

- _[cds-dk@6.7.2]_ Added option `--skip-verification` to command `cds migrate`. It skips the extension verification to save memory. Requires `@sap/cds-mtxs@1.7.3`.
- _[cds-compiler@3.9.0]_ Variables `$valid.from` and `$valid.to` have been added to the compiler.
  They behave the same as `$at.from` and `$at.to`.
- _[cds-compiler@3.9.0]_ to.edm(x):
  - Add `--odata-vocabularies` to pass a dictionary `{ <prefix>: { Alias, Namespace, Uri } }`
    into the EDM generation. `<prefix>` must match the value of `Alias`. Entries are ignored
    if they are incomplete, malformed, redefine an official OASIS/SAP vocabulary or match the name
    of the current service. Annotations of the form `@<prefix>.<annotation>` are added to the API
    without evaluation including an `edm:Reference`. It is in the users responsibility to provide
    a URI that a client can resolve against a valid vocabulary document.
  - Support annotation `@open` on entity and structured type level to declare the corresponding
    entity/complex type to be `OpenType=true`. If an open structured type is declared closed
    (with a falsy annotation value), the corresponding EDM type is closed as well and suffixed
    with `_closed` (or `_open` vice versa).
    No further checks are performed on possibly open foreign or primary key types nor on eventually
    bucket elements to store the additional data.
- _[cds4j@1.38.0]_ Support list values (tuples) in comparisons
- _[cds4j@1.38.0]_ Ignore dynamic properties of `@open` entities on insert/update
- _[cds4j@1.38.0]_ Add `CQL.copy` for `CqnElementRef` and `CqnStructuredTypeRef` returning a ref builder
- _[cds4j@1.38.0]_ Allow to compare list values in predicates, e.g. `(amount, currency) = (100, 'EURO')`
- _[cds4j@1.38.0]_ SQLite: use user-defined `session_context` function for localized/temporal data
- _[ux-cds-odata-language-server-extension@1.9.4]_ The **Show All References** option for service elements such as entities, properties, and actions displays now also the references to these elements in annotation values. You can use it before modifying a service element to understand if annotations will be affected by the change and avoid the related errors or easily fix them.
- _[odata-v2-adapter@1.10.1]_ Bootstrapping via CDS plugin (`cds.cov2ap.plugin: true`)
- _[odata-v2-adapter@1.10.0]_ Transition to open source code

### Changed {#apr-23-changed}

- _[cds-dk@6.7.1]_ `cds init` uses latest Maven Java archetype version 1.33.1 for creating Java projects.
- _[cds-dk@6.7.1]_ Bump `@sap/cds` to 6.7.1
- _[cds-dk@6.7.1]_ Bump `@sap/cds-mtxs` to 1.7.2
- _[cds-compiler@3.9.0]_ compiler: Parameter references in filters such as `assoc[field < :Param]` are now allowed.
- _[cds-compiler@3.9.0]_ In the compiled CSN, sort the non-enumerable `$sources` property
  according to the reversed layered extension order.
- _[cds-compiler@3.9.0]_ Update OData vocabulary 'Common', 'ODM', 'UI'.
- _[cds-compiler@3.9.0]_ to.cdl: If an identifier contains illegal characters (e.g. newline), we no longer produces
  invalid CDL, but emit an error instead.
- _[cds4j@1.38.0]_ Make implementation of `RefSegment`, `ElementRef` and `StructuredTypeRef` immutable
- _[cds4j@1.38.0]_ Deprecate `Modifier:ref` methods on mutable copies and introduce new ref methods for immutable refs
- _[cds4j@1.38.0]_ Deprecate `Modifier:match` method and introduce new `match` method that does not copy the ref
- _[cds4j@1.38.0]_ Deprecate `Modifier:inline` method and introduce new `inline` method that does not copy the ref
- _[cds4j@1.38.0]_ Deprecate `Modifier:expand` method and introduce new `expand` method that does not copy the ref
- _[cds4j@1.38.0]_ Remove deprecated `Value:cast` methods, instead use `Value:type`
- _[cds4j@1.38.0]_ Shortcut evaluate `lhs IS NOT NULL` to `TRUE` if `lhs` is not nullable
- _[cds@6.7.1]_ Calling a parameterized view without params error now results in the status code 400 with an improved error message.

### Fixed {#apr-23-fixed}

- _[cds-dk@6.7.2]_ Swagger UI no longer fails with an error `Value of 'namespaceAndName' parameter must be in the following format: <namespace>.<name>`
- _[cds-dk@6.7.1]_ Compatibility with @sap/cds versions >= 4.5 and < 6.2: avoid runtime errors with debugging disabled.
- _[cds-compiler@3.9.2]_ Fix crash in core compiler which occurred when CAP was used in a node environments
  where an enumerable property was added to `Array.prototype`.
- _[cds-compiler@3.9.2]_ to.edm(x):
  - Publicly release `@open`.
  - No `DefaultValue` for `Edm.NavigationProperty`.
- _[cds-compiler@3.9.0]_ to.edm(x):
  - Fix spec requirement: "Navigation properties of complex types MUST NOT specify a partner".
  - Set default target cardinality for unspecified `composition of {}` to `[0..1]`.
  - Correct referential constraint calculation for `[0..1]` backlink associations.
- _[cds-compiler@3.9.0]_ for.hana/for.odata: Reject final unmanaged assoc path step in ON Condition if preceded with `$self`.
- _[cds-compiler@3.9.0]_ to.cdl: Parentheses around expressions containing conditions were sometimes missing.
- _[cds-compiler@3.9.0]_ to.sql/hdi/hdbcds:
  - Detect and process calculated elements in functions like `upper`.
  - Better detection of calculated elements in `.expand`/`.inline`.
  - Entities with calculated elements sometimes had incorrect types. This happened, for example,
    if they were marked with `@odata.draft.enabled`
- _[cds.java@1.33.1]_ Fixed a bug, causing the upgrade procedures to fail, if MTX Sidecar reported tenant status as `NON-EXISTENT` for one or more tenants.
- _[cds.java@1.33.1]_ Fixed a bug, causing the upgrade procedures to succeed, even if MTX Sidecar reported the job status as `FAILED`, when using MTXS.
- _[cds.java@1.33.1]_ Fixed a bug, causing OData V2 `Edm.Time` typed values in URIs represented as durations (e.g. `PT10H10M20S`) to fail request parsing.
- _[cds4j@1.38.0]_ Change return type of `Modifier:selectAll` to `List`
- _[cds4j@1.37.1]_ Fix parsing of CQN containing "is not"
- _[cds@6.7.2]_ Try to destroy nonexistant socket in case of custom streaming implementation
- _[cds@6.7.2]_ Draft: Missing field `IsActiveEntity` in target path of error messages during `draftActivate`
- _[cds@6.7.2]_ Minor fixes for `cds.fiori.lean_draft`
- _[cds@6.7.2]_ Error in media type check when no `Content-Type` header is found
- _[cds@6.7.1]_ cds build error CreateListFromArrayLike
- _[cds@6.7.1]_ Disabling of arbitrary user config in mock auth config using `"users": { "*": false }`
- _[cds@6.7.1]_ Various fixes for `cds.fiori.lean_draft`
- _[cds@6.7.1]_ User attributes that look like numbers are quoted in SQL clause for `@restrict`
- _[cds-mtxs@1.7.2]_ MTXS Migration now handles multiple generated projects correctly.
- _[cds-mtxs@1.7.2]_ Extensibility Service now contains action `add` for extension modification.
- _[cds-mtxs@1.7.2]_ Model Provider Service now offer action `getExtResources` returning the archive of the uploaded extension.
- _[cds-mtxs@1.7.2]_ CSV files provided in extensions are now correctly re-deployed again with `upgrade`.
- _[cds-mtxs@1.7.1]_ MTXS Migration now behaves more robust with regards to cds build configurations.
- _[cds-mtxs@1.7.1]_ Re-subscribe now also re-deploys extensions again.
- _[cds-mtxs@1.7.1]_ Stability improvements for tenant upgrades.
- _[odata-v2-adapter@1.10.4]_ Fix start of `cds.plugin`
- _[odata-v2-adapter@1.10.3]_ Fix access to `undefined` element during data conversion
- _[odata-v2-adapter@1.10.2]_ Convert array structures
- _[odata-v2-adapter@1.10.1]_ Update `xml2js` dependency to fix security vulnerability
- _[odata-v2-adapter@1.10.0]_ Bound entity operation result is correctly nested with entity name prefix

## March 2023

### Added {#mar-23-added}

- _[cds-dk@6.6.1]_ `cds compile --to openapi` now adds extension validation keywords `x-sap-precision` and `x-sap-scale` for decimal values.
- _[vscode-cds@6.6.0]_ CAP notebooks: Uri handler to open notebooks coming from Capire in local VS Code workspaces.
- _[vscode-cds@6.6.0]_ CAP notebooks: All notebook features now have a brief description with examples, available on the CAP Notebooks Welcome page.
- _[vscode-cds@6.6.0]_ type generation now detects project root
- _[cds.java@1.32.1]_ New POJO interfaces `SaasRegistryUnsubscriptionOptions` and `SaasRegistrySubscriptionOptions` that help to access (un)subscription SaaS Registry payload in type-safe manner, e.g. `SaasRegistrySubscriptionOptions options = Struct.access(subscriptionEventContext.getOptions()).as(SaasRegistrySubscriptionOptions.class);`.
- _[cds@6.6.1]_ `cds.xt.TENANT_UPDATED` event is emitted once a tenant was extended
- _[cds-dk@6.7.0]_ `cds upgrade` enables upgrading a tenant subscribed to a multitenant SaaS app to the latest base model.
- _[cds-compiler@3.8.0]_ compiler:
  - Table aliases for sub-queries are no longer required.
  - A time zone designator can now be used in time literals, e.g. `time'16:41:01+01:30'`or `time'16:41:01Z'`.
- _[cds-compiler@3.8.0]_ Calculated elements ("on-read") are now enabled per default.
  When used in views, they are replaced by their value, for example:

  ```cds
  entity E { one: Integer; two = one + 1; };
  entity P as projection on E { two };
  // P is the same as:
  entity P as projection on E { one + 1 as two };
  ```

  This allows to define calculations centrally at the entity, which can be used by
  other views.
- _[cds-compiler@3.8.0]_ In CDL, a ternary operator was added as a shortcut for `CASE` expressions:
  `a ? b : c` is a shortcut for `CASE WHEN a THEN b ELSE c END`.  There is no CSN
  representation. The ternary operator is rendered as a `CASE` expression in CSN.
- _[cds-compiler@3.8.0]_ In CDL and CSN, `not null` can now also be used in type definitions.
- _[cds-compiler@3.8.0]_ In CDL (and CSN as before), elements can be defined without specifying a type.
- _[cds.java@1.33.0]_ The `TenantProviderService` now provides, as part of the `TenantInfo` class, the id of the database on which a specific tenant has been onboarded (e.g. `tenantInfo.get("database_id");`). If the information is not available, the call will return `null`.
- _[cds.java@1.33.0]_ Audit Log integration now supports writing entries on behalf of a named user when the CAP application is using IAS instead of XSUAA.
- _[cds.java@1.33.0]_ Two new main methods `com.sap.cds.framework.spring.utils.Subscribe` and `com.sap.cds.framework.spring.utils.Unsubscribe` allow triggering subscriptions or unsubscriptions as tasks.
- _[cds@6.7.0]_ Config `cds.ql.quirks_mode` as a compatibility flag to still support behaviours which are undocumented, or even against the specifications, for example CQN:

   ```js
   let q = INSERT.into('Books')
   //> According to CQN spec should return:
   {SELECT:{from:{ref:['Books']}}}
   //> But today returns:
   {SELECT:{from:'Books'}}
   ```

   The default in cds6 is `true` → to be changed to `false` with cds7.
- _[cds@6.7.0]_ `cds build` now checks extension point restrictions defined by the SaaS app provider. `cds build` fails if any restrictions are violated.
- _[cds@6.7.0]_ Typings for `cds.spawn()`
- _[cds@6.7.0]_ Typings for `entity.drafts`
- _[cds@6.7.0]_ Typings for winston logger
- _[cds@6.7.0]_ Typings for `service.on`, `service.before`, and `service.after` for actions and CRUD events
- _[cds@6.7.0]_ CLI command `cds env` now allows property paths with `/` instead of `.`, which allows usages like that:

```sh
cds env requires/cds.xt.ModelProviderService
```

- _[cds@6.7.0]_ `cds.env` now allows to statically set/add profiles via `cds.profile` and `cds.profiles` in package.json.
- _[cds@6.7.0]_ `cds.env` now also supports using profiles in definitions of presets, i.e., in `cds.requires.kinds`.
- _[cds@6.7.0]_ `cds deploy` now prints a warning when using Cloud Foundry client version less than 8.
- _[cds@6.7.0]_ `req.subject` to conveniently operate on the subjects targeted by the request. Example usage:
  SELECT.one.from(req.subject)   //> returns single
  SELECT.from(req.subject)      //> returns array
  UPDATE(req.subject)          //> updates one or many
  DELETE(req.subject)         //> deletes one or many
- _[cds@6.7.0]_ `cds-serve` as a future replacement for `cds serve` in npm scripts. Applications can adopt this now to ease the transition to the next major version.
- _[cap-js/graphql@0.4.0]_ Supporting new `cds-plugin` technique for zero configuration
- _[cap-js/graphql@0.4.0]_ Support for filtering by `null` values
- _[cap-js/graphql@0.4.0]_ Allow multiple filters on the same field, with the same operator, that are logically joined by `AND`. For example, filtering for all books with titles that contain both strings, "Wuthering" and "Heights":

  ```graphql
  {
    AdminService {
      Books(filter: { title: { contains: ["Wuthering", "Heights"] } }) {
        nodes {
          title
        }
      }
    }
  }
  ```

### Changed {#mar-23-changed}

- _[vscode-cds@6.6.0]_ extension now uses vscode-languageclient 8.x
  - API consumers may need to adapt access. See [changes](https://github.com/microsoft/vscode-languageserver-node#3170-protocol-800-json-rpc-800-client-and-800-server). Especially `onReady` is no longer needed and was removed.
- _[vscode-cds@6.6.0]_ minimum VS Code version is now 1.74.0
- _[vscode-cds@6.6.0]_ updated capire CDL docs - used in code completion details
- _[cds.java@1.32.1]_ Support for OData V4 PATCH requests with deltas on entity collections has to be enabled via `@Capabilities.UpdateRestrictions.DeltaUpdateSupported:true`.
- _[cds.java@1.32.1]_ Adapted `DeploymentService.dependencies()` and `DependenciesEventContext` to return and use `List<Map<String, Object>>` instead of `List<String>` for dependencies. Use helper class `SaasRegistryDependency` to report dependencies to SaaS Registry.
- _[cds-dk@6.7.0]_ `cds env --for` is now used to specify profiles; before it specified project paths, but never worked correctly.
- _[cds-dk@6.7.0]_ `cds add data` now uses comma as CSV separator by default instead of semicolon. This allows using GitHub tabular display.
- _[cds-dk@6.7.0]_ `cds add approuter` doesn't create entries for `authenticationMethod` and `authenticationType` any more, but uses the equivalent `@sap/approuter` defaults.
- _[cds-dk@6.7.0]_ `cds add multitenancy` will now create a sidecar MTX project for Node.js as well.
- _[cds-dk@6.7.0]_ `cds subscribe` and `cds unsubscribe` no longer require a username in case @sap/cds-mtxs is configured with dummy auth.
- _[cds-dk@6.7.0]_ `cds subscribe` and `cds unsubscribe` now rely on @sap/cds-mtxs (version 1.7.0 or higher).
- _[cds-compiler@3.8.0]_ API: We now report an error for most backends, if the input CSN has
  `meta.flavor == 'xtended'`, because only client/inferred CSN is supported.
- _[cds-compiler@3.8.0]_ Update OData vocabularies 'PersonalData', 'UI'
- _[cds-compiler@3.8.0]_ for.odata: Shortcut annotations `@label`, `@title`, `@description`, `@readonly` are no longer
  removed from the OData processed CSN.
- _[cds-compiler@3.8.0]_ to.cdl:
  - Annotation arrays are split into multiple lines, if a single line would be too long.
  - Nested `SELECT`s are put into separate lines to make them more readable.
  - (Annotation) paths are quoted less often.
- _[cds-compiler@3.8.0]_ to.sql: The list of reserved SAP HANA identifiers was updated (for smart quoting).
- _[cds.java@1.33.0]_ If execution of a  `RequestContext` is dispatched to a different thread, the correlation id of the parent thread is propagated to the new thread even if the receiving thread already has a correlation id set in its Mapped Diagnostic Context (MDC). The original correlation id will be restored once the execution of the `RequestContext` is completed. Previously, this led to an `ErrorStatusException`.
- _[cds.java@1.33.0]_ The implicit sorting feature does not add any sort specifications to the statement anymore, if only constant literals are on the select list.
- _[cds.java@1.33.0]_ The `DeploymentService` API no longer validates the subscription and deployment scope. The scopes are now only validated on incoming HTTP requests (e.g. SaaS Registry subscription), that trigger the `DeploymentService` API internally. This enables using the `DeploymentService` API without wrapping the call in a privileged user `RequestContext`. In case the `MtSubscriptionService` compatibility mode is used, the scopes are still enforced when using the API.
- _[cds.java@1.33.0]_ Moved properties `cds.dataSource.csv*` into a new `cds.dataSource.csv.*` section. The previous properties are still supported for backwards compatibility.
- _[cds.java@1.33.0]_ Replaced `cds.multiTenancy.healthcheck.intervalMillis` with a Duration-based property `cds.multiTenancy.healthcheck.interval`. The previous property is still supported for backwards compatibility.
- _[cds.java@1.33.0]_ Removed the Instance Manager support from the codebase, as the service is deprovisioned.
- _[cds4j@1.37.0]_ Replace IsActiveEntity on active entities with `TRUE` in `WHERE`, `ORDER BY` and source ref
- _[cds4j@1.37.0]_ Reflection API: Improve warning on unsupported view definitions
- _[cds@6.7.0]_ `cds.log().trace()` now logs stack traces in `DEBUG` level, before that was on `TRACE`/`SILLY` level only
- _[cds@6.7.0]_ Plain SQL queries now have `req.event === undefined`, formerly this had non-deterministic values.
- _[cds@6.7.0]_ Plain SQL queries don't allow to register custom handlers, other than for event `'*'`.
- _[cds@6.7.0]_ Plain SQL queries are only supported on database services, not on application services.
- _[cds@6.7.0]_ CQN representation of `columns=*` is not allowed anymore, instead `columns=['*']` should be used. This also applies to expand.
- _[cds@6.7.0]_ Only draft roots can be created via direct, non-navigation OData `POST` requests.
- _[cds@6.7.0]_ Flag `cds.features.fiori_preview` changed to `cds.fiori.preview`. The old flag still works as well.
- _[cds@6.7.0]_ Flag `cds.features.fiori_routes` changed to `cds.fiori.routes`. The old flag still works as well.
- _[cds-mtxs@1.7.0]_ Filter duplicate linter messages based on new LinterMessage API.
- _[cds-mtxs@1.7.0]_ cds-mtx script now logs reasons for missing MTXS environment.
- _[cds-mtxs@1.7.0]_ `DeploymentService` plugin handlers are now registered on `serving:cds.xt.DeploymentService`.
- _[cap-js/graphql@0.4.0]_ Improved handling of `null` and `undefined` values in query arguments
- _[cap-js/graphql@0.4.0]_ Empty filter lists resolve to `false` and empty filter objects resolve to `true`

### Fixed {#mar-23-fixed}

- _[cds-dk@6.6.1]_ `cds add helm` fixed html5 cloud service is now read properly.
- _[cds-dk@6.6.1]_ `cds import` now flattens the `@Capabilities` annotation in the CSN for OData V4 files.
- _[cds-dk@6.6.1]_ `cds import` for OData V4 files now captures the `EnumTypes` information in the CSN according to `UnderlyingType`.
- _[cds-dk@6.6.1]_ `cds import` now captures the `@Common.Text` annotation value properly in the CSN for OData V4 files.
- _[cds-dk@6.6.1]_ `cds init --add java` now uses local Java version when creating new Java project.
- _[cds-dk@6.6.1]_ `cds watch` terminates properly in case livereload websocket clients are connected
- _[cds-dk@6.6.1]_ `cds watch`'s livereload feature works again on Node.js >= 17, where local IPv6 addresses are the default (`::1` instead of `127.0.0.1`)
- _[vscode-cds@6.6.0]_ highlighting of the last of a number of element names in a projection
- _[vscode-cds@6.6.0]_ formatting of query `from A:B`: removed colon padding
- _[vscode-cds@6.6.0]_ type generation stopped working after failure until next LSP restart
- _[cds.java@1.32.1]_ Fixed a bug causing system query option `$skip` to be applied on all pages returned when server-driven pagination is used and the configuration option `cds.query.limit.reliable-paging.enabled` is set to `true`. Now the query option `$skip` is applied only on the first page of the results.
- _[cds.java@1.32.1]_ Fixed a bug causing a `NullPointerException` to be thrown when the `Deploy` method is executed when an application is deployed and there are no tenants available. The database upgrade will be skipped with an info message.
- _[cds@6.6.1]_ `TypeError` when using the query API with an unknown target in x4 flavor
- _[cds@6.6.1]_ The setting for `cds.requires['cds.xt.DeploymentService'].lazyT0` is now recognized in the VS Code schema validation.
- _[cds@6.6.1]_ The HDI deployment `stdout` logs are now only visible for `DEBUG` level if triggered via `cds-mtxs`. They are also streamed to `logs/<tenant>.log` in case you need the full deployment output, even without `DEBUG` enabled.
- _[cds@6.6.1]_ `.forUpdate` when used for etags
- _[cds@6.6.1]_ Prevent `TypeError` if an existing draft does not have admin data
- _[cds@6.6.1]_ Outbound-streaming error handling
- _[cds-mtxs@1.6.3]_ `t0` model DDL files do not end up in application build results any more.
- _[cds-mtxs@1.6.3]_ `cds.xt.SaasProvisioningService`: fixed an error for programmatic usage when sending the callback.
- _[cds-mtxs@1.6.3]_ `cds-mtx` commands now properly exit with code != 1 when receiving an error from the `DeploymentService`.
- _[cds-mtxs@1.6.2]_ Robustness of MTX Migration has been improved.
- _[cds-mtxs@1.6.1]_ The lazily onboarded `t0` will now implicitly be created with the same onboarding parameters (e.g. database ID) as the first onboarded tenant.
- _[odata-v2-adapter@1.9.20]_ Cache invalidation for Streamlined MTX (extensibility enabled) with CDS 6.6.1
- _[odata-v2-adapter@1.9.20]_ Use named parameters for mtxs actions to protect against incompatible changes
- _[odata-v2-adapter@1.9.20]_ Allow status code 304 (not modified) when reading OData V4 metadata (as success)
- _[cds-dk@6.7.0]_ `cds watch`'s livereload feature may now use a local IPv6 address (`::1`) instead of always `localhost`. This is usually the case on Node.js 17 or higher.
- _[cds-dk@6.7.0]_ In all but `cds compile` errors where not handled correctly, especially compiler errors not displayed in human readable format.
- _[cds-dk@6.7.0]_ `cds init` creates project sample files correctly.
- _[cds-dk@6.7.0]_ CLI commands w/ unknown arguments (`cds --foo`) clearly fail again with a proper error message
- _[cds-dk@6.7.0]_ Reduce console output in case of multitenancy-related command failures.
- _[cds-dk@6.6.2]_ Bump `sqlite3` to 5.1.6
- _[cds-dk@6.6.2]_ Bump `@sap/cds` to 6.2.2
- _[cds-dk@6.6.2]_ `cds init` creates project sample files correctly.
- _[cds-compiler@3.8.2]_ parser: Identifiers that are keywords were not allowed in annotation values inside arrays
- _[cds-compiler@3.8.2]_ compiler: Compatibility against cds-lsp was restored.
- _[cds-compiler@3.8.2]_ to.sql/hdbcds/hdi/edm(x): Fix a crash for sub-queries inside nested expressions of on-conditions of JOINs.
- _[cds-compiler@3.8.0]_ The CSN parser now accepts bare `list`s in `columns[]`, similar to the CDL parser.
- _[cds-compiler@3.8.0]_ to.cdl:
  - Delimited identifiers in filters are now surrounded by spaces if necessary, to avoid `]]`
    being interpreted as an escaped bracket.
- _[cds-compiler@3.8.0]_ to.edm(x):
  - Remove empty `Edm.EntityContainer` again. Removal of an empty entity container has been
    revoked with version 3.5.0 which was wrong. An empty container must not be rendered
    as it is not spec compliant.
  - Correctly resolve chained enum symbols.
  - Fix a program abort during structured rendering in combination with `--odata-foreign-keys`
    and foreign keys in structured types.
  - Correctly render paths to nested foreign keys as primary key in structured mode with
    `--odata-foreign-keys`.
- _[cds-compiler@3.8.0]_ to.hdi/to.sql/to.edm(x):
  - Reject unmanaged associations as ON-condition path end points.
  - Fix bug in message rendering for tuple expansion.
  - Correctly detect invalid @sql.append/prepend in projections.
- _[cds-compiler@3.8.0]_ to.hdi/to.sql: The list of SAP HANA keywords was updated to the latest version.
- _[cds.java@1.33.0]_ Fixed a bug, causing exceptions while performing Event Mesh initialization during initial onboarding of a new tenant.
- _[cds.java@1.33.0]_ Fixed a bug, causing `@assert.target` to fail with lock exceptions when used on an association to a draft-enabled entity.
- _[cds.java@1.33.0]_ Fixed a bug, causing failed subscriptions, because no application URL was provided to SaaS Registry.
- _[cds@6.7.0]_ Specifying a key in `SELECT.from(...)` is now typed to produce a single result, instead of an array of results
- _[cds@6.7.0]_ Proper handling of `IsActiveEntity` in error paths
- _[cds@6.7.0]_ For cloudevents using AMQP, the type is set to `application/cloudevents+json`
- _[cds@6.7.0]_ Use `message` property in typings.
- _[cds@6.7.0]_ Typings for `cds.on('bootstrap', app => {app.use(...)`
- _[cds@6.7.0]_ Return types for `User` and `delete` in typescript
- _[cds@6.7.0]_ Typings for connect options
- _[cds@6.7.0]_ Typings for `req.error`
- _[cds@6.7.0]_ Deployment in sidecar
- _[cds@6.7.0]_ Error with restricting an entity and request it with $apply in combination with aggregate
- _[cds@6.7.0]_ Combined usage of `$skiptoken` and `$skip`
- _[cds@6.7.0]_ Error `package.json file is missing` in mtx extension builds
- _[cds@6.7.0]_ CLI commands w/ unknown arguments (`cds --foo`) clearly fail again with a proper error message
- _[cds@6.6.2]_ Exception during `cds deploy` without mtx
- _[cds@6.6.2]_ Service name specified with `cds deploy --to hana:serviceName` takes precedence over environment variables.
- _[cds-mtxs@1.7.0]_ HANA deployment now correctly evaluates the sql mapping configuration (e. g. `cds.data.sql_mappging.quoted`)
- _[cap-js/graphql@0.4.1]_ `cds-plugin.js` was missing in `files` property of `package.json`
- _[cap-js/graphql@0.4.0]_ Handling of GraphQL queries that are sent via `GET` requests using the `query` URL parameter if GraphiQL is enabled
- _[odata-v2-adapter@1.9.21]_ Proxy is open source at <https://github.com/cap-js-community/odata-v2-adapter>
- _[odata-v2-adapter@1.9.21]_ The new proxy library is fully compatible and can be used as drop-in replacement
- _[odata-v2-adapter@1.9.21]_ This library is now deprecated and will no longer receive

### Removed {#mar-23-removed}

- _[cds-compiler@3.8.0]_ for.odata: Undocumented shortcut annotation `@important` has been removed.

## February 2023

### Added {#feb-23-added}

- _[cds-dk@6.6.0]_ `cds compile` added a new target format `asyncapi` to convert CDS models to AsyncAPI documents.
- _[cds-dk@6.6.0]_ `cds pull` now hints at base-model name for `using` statement.
- _[vscode-cds@6.5.1]_ The special `up_` element is now supported in navigation
- _[cds-compiler@3.7.0]_ Several `annotate` statement can append/prepend values
  to the same array-valued annotation without an `anno-duplicate` error,
  even if there is no `using from` dependency between the involved sources
- _[cds-compiler@3.7.0]_ SQL methods such as `point.ST_X()` can be used in views.
- _[cds-compiler@3.7.0]_ The SQL `new` keyword can be used for `ST_*` types such as `new ST_POINT('Point(0.5 0.5)') )`
- _[cds.java@1.32.0]_ Introduced a new API for managing subscriptions, unsubscriptions and tenant upgrades. It is leaner and it is easier to integrate custom handlers, as the API doesn't distinguish between synchronous and asynchronous operations any more.
- _[cds.java@1.32.0]_ The `cds` actuator endpoint now includes datasource pool statistics.
- _[cds.java@1.32.0]_ The CAP Java Maven archetype allows to choose the target JDK version with the new parameter `jdkVersion`. The default version is `17`, supported values are `11` and `17`.
- _[cds.java@1.32.0]_ The new OData V4 serializer now supports a new mode in which it buffers the response before streaming it to the client. This can be enabled in case serialization errors after streaming to the client has already started must be avoided. To enable it set `cds.odataV4.serializer.buffered` to `true`.
- _[cds.java@1.32.0]_ OData V4 adapter now supports PATCH requests with deltas on entity collections (Beta)
- _[cds4j@1.36.0]_ Deduplicate inline defined simple types in CDS models
- _[cds4j@1.36.0]_ `CQL.refSegment(id, filter)` to construct segments with filters
- _[cds@6.6.0]_ Improved error handling for `cds build` if the SaaS base model is missing in an extension project.
- _[cds@6.6.0]_ Support for reliable paging using `$skiptoken`. Can be activated via `cds.query.limit.reliablePaging = true`
- _[cds-mtxs@1.6.0]_ `t0` onboarding can now happen lazily before the first subscription by setting `cds.requires.['cds.xt.DeploymentService'].lazyT0`.
- _[cds-mtxs@1.6.0]_ E-Tag handling for the `getCsn` API in sidecar scenarios has been introduced.
- _[cds-mtxs@1.5.1]_ Jobs are now cleaned up in the database after configurable cutoff times. The following options are possible:
  - `jobCleanupInterval`: Frequency in milliseconds for cleaning up finished or failed jobs. Default is 1 day.
  - `jobCleanupAge`: Time in milliseconds for the minimum age of the failed or finished jobs to delete. Default is 1 day.
  - `jobCleanupIntervalStale`: Frequency in milliseconds for cleaning up queued or running jobs. Default is 7 days.
  - `jobCleanupAgeStale`: Time in milliseconds for the minimum age of the queued or running jobs to delete. Default is 7 days.
- _[cds-mtxs@1.5.1]_ MTXS migration script now allows to cleanup @sap/mtx metadata containers.

### Changed {#feb-23-changed}

- _[cds-dk@6.6.0]_ `cds env` now allows inspecting entries with optional `get` command. E.g. `cds env requires.db`.
- _[cds-dk@6.6.0]_ `cds add multitenancy` now uses async SaaS Provisioning Service onboarding by default.
- _[cds-dk@6.6.0]_ `cds add multitenancy` for Java will now add  `sqlite3` to `devDependencies` in the sidecar `package.json`.
- _[cds-dk@6.6.0]_ `cds add extensibility` now works for Java projects out of the box.
- _[cds-dk@6.6.0]_ `cds import` now captures the Edm Primitive types without [CDS mapping](https://github.tools.sap/cap/cds-dk/blob/main/edm2cdsTypeMapping.md) with annotation `@odata.Type` and marks the type as `cds.String`.
- _[cds-dk@6.6.0]_ `cds add helm` connectivity service instance is no longer created.
- _[cds-dk@6.6.0]_ `cds init` uses latest Maven Java archetype version 1.32.0 for creating Java projects.
- _[cds-dk@6.5.2]_ New versions of `@sap/cds-mtxs` and `@sap/cds-compiler`
- _[cds-dk@6.5.2]_ `cds init` uses latest Maven Java archetype version 1.31.1 for creating Java projects.
- _[cds-dk@6.5.1]_ `cds init` uses latest Maven Java archetype version 1.31.0 for creating Java projects.
- _[eslint-plugin-cds@2.6.3]_ Filter rule reports using _inferred_ models on $location.
- _[eslint-plugin-cds@2.6.2]_ Fixed rule reports using _inferred_ models to always receive valid _file_ $locations.
- _[vscode-cds@6.5.1]_ `mixin` is now mapped to `LSP.SymbolKind.Operator` (was default `String`)
- _[vscode-cds@6.5.1]_ a commit hash of the last commit is now included in release under _dist/state_
- _[vscode-cds@6.5.1]_ target platform back to `es2020`
- _[cds-compiler@3.7.0]_ Update OData vocabularies 'Common', 'Core', 'Measures', 'PDF', 'UI'.
- _[cds-compiler@3.7.0]_ to.edm(x): Empty complex types are no longer warned about as they are allowed.
- _[cds.java@1.32.0]_ The old `MtSubscriptionService` API has been deprecated in favour of the new `DeploymentService` API. Event handlers on the `MtSubscriptionService` API are continued to be triggered in a compatibility mode (enabled by default). Migration to the new API is encouraged.
- _[cds.java@1.32.0]_ The HTTP-based deploy endpoints are deprecated and not supported with the new `DeploymentService` API. In case of enabled compatibility mode the HTTP-based deploy endpoints are still available. Migration to the Java `main`-task based deployment is encouraged.
- _[cds.java@1.32.0]_ Programmatic setting of the App UI URL has been deprecated. In case of enabled compatibility mode it is still possible through the old `MtSubscriptionService`-based APIs. Consider migrating to the property-based setting of the application URL.
- _[cds4j@1.36.0]_ Annotations on elements with inline-defined simple type are not repeated on the type
- _[cds4j@1.36.0]_ Deprecate setters `RefSegment:id` and `RefSegment:filter`, instead use `CQL.refSegment(id, filter)`
- _[cds4j@1.36.0]_ Optimized to-many expands are now also executed by path (join/subquery) if only a single root entity is selected
- _[cds@6.6.0]_ `cds.serve(ServiceName)` (and `cds serve -s ServiceName`) now exactly serve services with the given names. Previously, all services that ended with the given name were served as well, e.g. `MyServiceName` and `ServiceName`, which might be problematic for applications that bootstrap services one by one.
- _[cds@6.6.0]_ Optimize `@cds.persistence.journal` filtering for `last-dev` CSN file.
- _[cap-js/graphql@0.3.0]_ Replaced deprecated GraphQL HTTP server `express-graphql` with `graphql-http`
- _[cap-js/graphql@0.3.0]_ Serve GraphiQL 2 via included HTML instead of relying on the server framework (`express-graphql` included GraphiQL 1)
- _[cap-js/graphql@0.3.0]_ Bump `graphql` version to 16
- _[cap-js/graphql@0.3.0]_ Execute query resolvers in parallel and mutation resolvers serially
- _[cds-mtxs@1.5.1]_ `/-/cds/saas-provisioning/tenant`: consumers using the `mtx_status_callback` don't need a SaaS registry binding to the application any more.

### Fixed {#feb-23-fixed}

- _[cds-dk@6.6.0]_ `cds unsubscribe --from` flag now recognized
- _[cds-dk@6.6.0]_ `cds import` now adds `cds.Boolean` as dummy return type if `ReturnType` for `FunctionImport` is missing in the OData V2 edmx.
- _[cds-dk@6.6.0]_ `cds import` resolves the `$Cast` construct in the CSN for OData V4 files.
- _[cds-dk@6.6.0]_ `cds lint` now reports like ESLint in case of missing plugin `@sap/eslint-plugin-cds`
- _[cds-dk@6.5.2]_ `cds migrate` no longer fails because of authorization error
- _[cds-dk@6.5.1]_ `cds deploy` no longer fails to write to a `package.json` file that has no `cds` section
- _[vscode-cds@6.5.1]_ Closing a CDS file led to 'forgetting' the content in the index. This resulted in:
  - `workspace/symbols` not showing all definitions
  - error messages of symbols not found
  - navigation broken for 'closed' definitions
- _[vscode-cds@6.5.1]_ formatting and highlighting of nested element and enum extensions
- _[vscode-cds@6.5.1]_ code completion for keywords and identifiers may have used wrong compiler messages, thus not working as expected
- _[cds-compiler@3.7.2]_ CSN parser: Structured annotations containing `=` were accidentally interpreted as expressions,
  even though the corresponding beta flag was not set.
- _[cds-compiler@3.7.0]_ `parse.cql` and `parse.expr` no longer ignore type arguments such as `cast(field as String(12))`.
  One argument is interpreted as `length` and two are interpreted as `precision` and `scale`, similar to
  how custom types and their arguments are interpreted.
- _[cds-compiler@3.7.0]_ Previously, the compiler could not always find a unique redirection target if there were
  one direct projection on the model target and two or more projections on that projection.
- _[cds-compiler@3.7.0]_ The performance of compiler-checks for deeply nested expressions/queries has been improved
- _[cds-compiler@3.7.0]_ Fix various bugs in Association to Join translation:
  - Recursive `$self` dereferencing
  - Correct resolution of table alias in non-bijective `$self` backlink associations in combination with
    explicit redirection.
- _[cds-compiler@3.7.0]_ to.edm(x): Process value help list convenience annotations on unbound action parameters.
- _[cds-compiler@3.6.2]_ to.hdi(.migration): Don't render `-- generated by cds-compiler version` comment at the top of the HDI-based
  artifacts, as this caused HDI to detect the file as `changed`
  and redeploy, causing way longer deployment times. Old behavior can be enabled with option `generatedByComment: true`.
- _[cds-compiler@3.6.2]_ to.sql/hdi/hdbcds: Correctly handle variables like `$user` in `exists` filters.
- _[cds.java@1.32.0]_ Fixed a bug causing uncommitted transactions in case different PersistenceServices were used in an `@Transactional`-annotated method, outside of any `ChangeSetContext`. This scenario is currently not supported and now causes an exception to be thrown.
- _[cds.java@1.32.0]_ Fixed a bug causing incorrectly handled URIs in case a combined service and entity path (e.g. `/v1/FooEntity`) was a substring of a service path (e.g. `/v1/Foo`).
- _[cds.java@1.32.0]_ Bumped version of the `jacaco-maven-plugin` in the integration-tests module of a newly created CAP Java project to a version that is compatible with JDK 17.
- _[cds.java@1.31.1]_ OData V4 responses with entities containing stream properties, now indicate if the stream property is set by providing the `property@odata.mediaContentType` annotation.
- _[cds4j@1.36.0]_ Virtual elements of the entity annotated with `@cds.search` or `@Search.defaultSearchElement` are no longer searched
- _[cds4j@1.35.1]_ Fix `equals` and `hashCode` of `CdsData` and `Row` to be equal to `Map:equals` / `Map:hashCode`
- _[cds4j@1.35.1]_ Fix `orderBy` in optimized to-one-to-many expands
- _[cds4j@1.35.1]_ Connect multiple `or` and `and` predicates with shallower tree/call stack
- _[cds4j@1.35.1]_ Prevent unique constraint violations on concurrent deep upserts with full-set payload
- _[cds4j@1.35.1]_ null values are treated as `CqnBoolLiteral.TRUE` in `Conjunction`, `Disjunction` and `Negation`.
- _[cds@6.6.0]_ `cds deploy --to hana` no longer calls `cds bind` when `VCAP_SERVICES` is provided, e.g via `default-env.json`.
- _[cds@6.6.0]_ `$search` on an entity without String elements
- _[cds@6.6.0]_ Only elements from type `cds.String` are searchable when combining `$apply` and `$search`
- _[cds@6.6.0]_ Error message for missing database connection in draft case
- _[cds@6.6.0]_ Extensibility with in-memory Sqlite
- _[cds@6.6.0]_ OData adapter error messages
- _[cds@6.6.0]_ Columns in navigation path are now added to the SELECT.columns in new parser
- _[cds@6.6.0]_ Application service calls on draft enabled entities using aliases
- _[cds@6.6.0]_ Custom mtxs build tasks now use the correct default `src` folder value.
- _[cds@6.6.0]_ `cds build` adds a `.hdiconfig` file when creating HANA migration tables if none is existing.
- _[cds@6.6.0]_ UPSERTs using reserved keywords
- _[cds@6.6.0]_ Fix outbound-streaming error handling
- _[cds@6.6.0]_ Rollback transaction if inbound streaming fails
- _[cds@6.6.0]_ Custom database initialization in `db/init.js` now skips the `t0` tenant for multitenant apps.
- _[cds@6.6.0]_ Concurrent etag calculation for UPDATE and DELETE
- _[cds@6.6.0]_ Typings for `cds.delete()`
- _[cds@6.6.0]_ CQN for `not` operator with OData functions
- _[cds@6.6.0]_ Expand on composition of aspect for draft enabled entities
- _[cds@6.6.0]_ Better error messages are provided for errors with HTTP status code `400`, `500` and `501`
- _[cap-js/graphql@0.3.1]_ Add `app` folder to `files` property of `package.json` to be included for publishing to `npm`
- _[cds-mtxs@1.6.0]_ Fixed input validation for feature toggles containing `_` or `-`.
- _[cds-mtxs@1.5.1]_ `cds migrate` does not crash any more when no options are supplied.
- _[cds-mtxs@1.5.1]_ `cds-mtx-migrate` command now terminates immediately when the migration is finished.
- _[cds-mtxs@1.5.1]_ Parameter `--dry` for `cds migration` now also skips the creation of the `t0`tenant.
- _[cds-mtxs@1.5.1]_ `ModelProviderService`: Non-repeated dots are now allowed in feature toggles, e.g. `foo.bar.baz` is a valid feature toggle name.
- _[odata-v2-adapter@1.9.19]_ Provide subdomain information to logs
- _[odata-v2-adapter@1.9.19]_ Use correct correlation-id for logging (setup CDS context correctly)
- _[odata-v2-adapter@1.9.19]_ React to incompatible change of mtxs getEdmx, to provide (internal) model parameter
- _[odata-v2-adapter@1.9.19]_ Enhance example app to show usage of bound/unbound OData V2 actions in SAP Fiori UI via annotation

## January 2023

### Added {#jan-23-added}

- _[cds-dk@6.5.0]_ `cds run/serve/migrate --resolve-bindings` now pulls required service credentials if bound via `cds bind`. <Beta />
- _[cds-dk@6.5.0]_ `cds add helm` now supports multitenancy.
- _[cds-dk@6.5.0]_ `cds bind` now supports binding of `user-provided service instances` from SAP BTP's Cloud Foundry.
- _[cds-compiler@3.6.0]_ API: There are new API functions for `to.cdl`: `smartId`, `smartFunctionId` and `delimitedId`.
- _[cds-compiler@3.6.0]_ CDL parser: when defining a parameter for entities, actions or functions,
  you can use a regular identifier for its name even if that is a reserved name like `in`.
- _[cds-compiler@3.6.0]_ The first parameter of a bound action or function can be typed with `$self` or `many $self`
  even if no type named `$self` exists.
- _[cds-compiler@3.6.0]_ If an aspect `sap.common.TextsAspect` exists in the `sap.common` context, it will be included
  in all `.texts` entities. This allows to extend `.texts` entities via extending the aspect.
  Example:

  ```cds
  entity E {
    key id : Integer;
    content: localized String;
  }
  extend sap.common.TextsAspect with {
    elem: String;
  };
  // from @sap/cds common.cds
  aspect sap.common.TextsAspect {
    key locale: String;
  }
  ```

- _[cds-compiler@3.6.0]_ to.edm(x): Support explicit binding parameter `<id>: [many] $self` for OData V4 only.
  The explicit binding parameter is rendered as any other parameter and `$self` is replaced with
  the binding type but only if no `$self` definition exists in the model. This gives full control
  over the binding parameter including name, nullability, default value and annotations.
  The explicit binding parameter is ignored for OData V2 and has precedence over `@cds.odata.bindingparameter`.
- _[cds@6.5.0]_ New aspect `sap.common.TextsAspect` in common.cds
- _[cds@6.5.0]_ New syntax for collection bound entities
- _[cds-mtxs@1.5.0]_ The built-in Service Manager client now caches binding information in-memory.
- _[cds-mtxs@1.5.0]_ The `optimise_file_upload` HDI deployment option is now supported.
- _[cds-mtxs@1.5.0]_ MTX migration script now allows to split extensions based on extension file names using regular expressions.
- _[cds-mtxs@1.5.0]_ Now, provisioning supports SaaS applications using extensibility in combination with migration tables. Before, provisioning failed with a HDI deployment error.
  **Note:** Extending migration table artifacts is not supported.
- _[vscode-cds@6.5.0]_ **Experimental** user setting `cds.typeGenerator.enabled` to trigger a globally installed cds type generator when saving a model file.
- _[cds4j@1.35.0]_ New `Update.entry(Map<String, ?> entry)` method to improve the API for single updates with key values in update data.
- _[cds4j@1.35.0]_ Added generation of builder interfaces for CDS defined events.
- _[cds4j@1.35.0]_ New syntax defining the binding parameter for bound functions and actions is supported.
- _[cds4j@1.35.0]_ Added `top` and `skip` methods to `Modifier` to modify pagination settings
- _[cds4j@1.35.0]_ New interfaces `CdsBoundAction` and `CdsBoundFunction` represent bound functions and actions of an entity.

### Changed {#jan-23-changed}

- _[cds-mtxs@1.4.4]_ `cds.xt.DeploymentService` configuration has been flattened. Instead of

  ```js
  "hdi": {
    "create": {
      "provisioning_parameters": {
        "database_id": "<ID>"
      },
      "binding_parameters": {
        "key": "value"
      }
    }
  }
  ```

  you can now also write

  ```js
  "hdi": {
    "create": {
      "database_id": "<ID>"
    },
    "bind": {
      "key": "value"
    }
  }
  ```

  The old configuration is still supported, but you're advised to migrate to the new configuration for improved readability.
- _[cds-mtxs@1.4.4]_ `/-/cds/jobs/pollJob` now also returns a `tenants` field, so tenant-specific tasks don't have to be polled individually. An example response format looks like this:

  ```js
  {
    "status": "FAILED",
    "op": "upgrade",
    "tenants": {
        "non-existing-tenant": {
           "status": "FAILED",
           "error": "Tenant 'non-existing-tenant' does not exist"
        },
        "existing-tenant": {
           "status": "FINISHED"
        }
     }
  }
  ```

- _[cds-dk@6.5.0]_ `cds push` now runs a build of the extension project to update the pushed extension archive (unless custom archive given).
- _[cds-dk@6.5.0]_ `cds init` and `cds bind` no longer use a spinner when performing long running operations.
- _[eslint-plugin-cds@2.6.1]_ Fixed rule name in ESLint config:all to `@sap/cds/start-elements-lowercase`.
- _[eslint-plugin-cds@2.6.1]_ Allow expensive rules to be reported when running from ESLint Cli.
- _[eslint-plugin-cds@2.6.1]_ In _auth-valid-restrict-grant_, only suggest closely related user roles.
- _[eslint-plugin-cds@2.6.1]_ In _auth-valid-restrict-to_, only suggest `*` if other entries apart from `*` exist.
- _[cds-compiler@3.6.0]_ Many messages concerning the CDL and CSN syntax are improved:
  affects message ids (`syntax-…`), message texts and the error locations.
- _[cds-compiler@3.6.0]_ Duplicate doc-comments are now errors, similar to duplicate annotations.
- _[cds-compiler@3.6.0]_ Update OData vocabularies 'Aggregation', 'Analytics', 'Capabilities','Common', 'ODM', 'Offline',
  'PDF', 'Session', 'UI'.
- _[cds.java@1.30.2]_ The personal data annotation `@PersonalData.EntitySemantics: 'Other'` now has the same effect on entities like `@PersonalData.EntitySemantics: 'DataSubjectDetails`.
- _[cds.java@1.30.2]_ Renamed the annotation `@kafka.channel` to `@kafka.topic`.
- _[cds@6.5.0]_ Successive calls to `SELECT.where()` wraps existing clause in brackets if it contains `or`. E.g.

   ```js
   SELECT.from `X` .where `x` .or `y` .where `z`
   //> SELECT from X where (x or y) and z`
   ```

- _[cds@6.5.0]_ `cds build` for SAP HANA now adds an `engines.node` version to the generated `db/package.json`. This will help in the future when runtime environments change their default to some version higher than the one supported by `@sap/hdi-deploy`.
- _[cds@6.5.0]_ `cds build` checks the consistency of built-in models for java projects. An error is logged if some model files could not successfully be resolved indicating that a required npm module might be missing.
- _[cds@6.5.0]_ Status code of draft actions are set in respective handler instead of protocol adapter
- _[cds@6.5.0]_ `cds deploy --dry` no longer loads the `sqlite3` module by mistake. This fixes a regression when building Java projects. As a side effect a file with the name `undefined` was created in the project root folder.
- _[cds@6.5.0]_ Internal representation of pseudo roles `internal-user` and `system-user`
- _[vscode-cds@6.5.0]_ CAP notebooks: code cells (`terminal` and `shell`) have now their own working directory
- _[vscode-cds@6.5.0]_ minimum VS Code version is now 1.73.0
- _[cds4j@1.35.0]_ In SQL statements generated by the runtime CDS identifiers are now always in db-specific casing and delimited.
- _[cds4j@1.35.0]_ Moved generation of `CDS_NAME` constant to builder interfaces of CDS events.
- _[cds4j@1.35.0]_ Annotate generated accessor and builder interfaces with `@Generated` from the package `javax.annotation.processing` only if compiled with Java > 8.
- _[cds4j@1.35.0]_ Deprecate interface `CqnModifier`, instead use `Modifier`
- _[cap-js/graphql@0.2.0]_ Register `aliasFieldResolver` during schema generation instead of passing it to the GraphQL server
- _[cap-js/graphql@0.2.0]_ The filters `contains`, `startswith`, and `endswith` now generate CQN function calls instead of generating `like` expressions directly

### Fixed {#jan-23-fixed}

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

### Removed {#jan-23-removed}

- _[vscode-cds@6.5.0]_ `@cds.doc` annotation, which was marked as deprecated for a long time, is no longer considered in requests like _document/hover_.
   Use doc comments (`/** ... */`) instead. The quick fix to migrate from _@cds.doc_ to _doc comments_ is still in place,
   but is likely to be removed in near future.
