
# Changelog 2020

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

## December 2020

### Changed

- _[cds-dk@3.3.3]_ Bump version of `@sap/cds`, `@sap/cds-runtime`, and `@sap/cds-sidecar-client`
- _[cds-dk@3.3.2]_ Bump version of `@sap/cds` to `4.4.5`

### Fixed

- _[cds@4.4.7]_ `cds build` for Java now also creates a default edmx file (the one w/o language suffix) if the `cds.i18n.languages` array is configured with a set of languages.  Runtime systems expect this file.
- _[cds@4.4.7]_ `cds build` now skips empty lines in CSV files when preparing SAP HANA deployment.  This does not happens if the build target folder is `.`, because there CSV files are sources that aren't touched.
- _[cds@4.4.7]_ `cds build` for SAP HANA now writes CSV files more reliably, avoiding sporadic `ENOENT` errors.

## November 2020

### Added

- _[cds-dk@3.3.1]_ `cds init` and `cds add` now support the feature `notebook` to create a Jupyter Notebook in a project.
- _[cds-dk@3.3.1]_ `cds compile --to openapi` adds support for OpenAPI 3 to `cds compile`.
- _[cds-dk@3.3.1]_ If the server port is in use, `cds watch` offers to restart the server with a new port.
- _[cds-dk@3.3.1]_ `cds init` uses latest `Maven Java archetype` version `1.11.0` for creating Java projects.
- _[cds-dk@3.3.1]_ `cds init --add pipeline` and `cds add pipeline` will now use the general purpose pipeline of project "Piper".
- _[cds-dk@3.3.1]_ `cds login`, `cds extend`, and `cds activate` now also support clientid/clientsecret as parameters. This is needed when extending multitenant
applications provided as reusable services
(see [SAP Cloud Platform documentation](https://controlcenter.ondemand.com/index.html#/knowledge_center/articles/2316430f7d804820934910db736cefbf)).
- _[cds@4.4.4]_ `cds.User.default` allows to override the default user, e.g. to be `cds.User.Privileged` in tests. By default this is `cds.User.Anonymous`.
- _[cds@4.4.4]_ `cds.context` always allows access to the current request context when running in Node v12.18 and higher. It uses Node.js' `async_hooks` API for so-called continuation-local storage, and supercedes the need for `srv.tx(req)` in custom handlers.
- _[cds@4.4.4]_ Custom functions/actions can now be implemented with plain JavaScript methods in subclasses of `cds.Service`
- _[cds.java@1.12.0]_ OData V4 `$apply` now supports the transformations `skip`, `top`, and `orderby`.
- _[cds.java@1.12.0]_ OData V4 `$apply` now supports the transformation `concat` (not to be combined with other system query options).
- _[cds.java@1.12.0]_ OData V4 `$apply` now supports custom aggregates with aggregation methods declared by `@Aggregation.default` <Beta />.
- _[cds.java@1.12.0]_ OData V4 `$apply` now supports unique value aggregates for currency codes and units of measure.
- _[cds.java@1.12.0]_ OData V2 error responses now contain additional error messages written to the Messages API in their inner error.
- _[cds.java@1.12.0]_ The HTTP method, the URI, and the response code of individual requests within a `$batch` are now logged by the OData adapters. This makes it easier to interpret `$batch` requests in application log files. You can control this through the dedicated loggers `com.sap.cds.adapter.odata.v2.BatchAccess` and `com.sap.cds.adapter.odata.v4.BatchAccess`.
- _[cds.java@1.12.0]_ Finished initial version of the technical messaging foundation.
- _[cds.java@1.12.0]_ You can now configure the connection pools of datasources, which are auto-configured by CAP Java SDK based on available service bindings using the properties prefix `cds.dataSource.<service-name>.hikari`.
- _[cds.java@1.12.0]_ The property `cds.environment.local.defaultEnvPath` now also accepts paths pointing to an arbitrarily named environment JSON file. Earlier, this property only accepted a directory, in which it looked for a _default-env.json_ file. This behaviour is still in place, when this property specifies a directory path.
- _[cds.java@1.12.0]_ The `install-node` goal of the `cds-maven-plugin` now exposes the locations of installed executables in project properties: `${cds.node.executable}`, `${cds.npm.executable}`, `${cds.npx.executable}`, and `${cds.node.directory}.`
- _[cds.java@1.12.0]_ The database connection cache of a tenant is now cleared directly during unsubscription of the tenant. This improves test scenarios, where unsubscription and subscriptions of the same tenant happen frequently after each other. Earlier these scenarios usually ran into connection pool timeouts, as old database connections could have been reused for the tenant.
- _[cds4j@1.16.0]_ The comparison operators `IS` and `IS NOT` now allow to compare any two values for [in]equality. `NULL` values are treated as any other value in the comparison. Corresponding builder methods `is(Value other)` and `isNot(Value other)` have been added to the `Value` interface.
- _[cds4j@1.16.0]_ Support arrayed elements with simple and structured type
- _[cds-runtime@2.7.5]_ Deprecation warning for private function `req.run`, which will be removed
- _[cds-runtime@2.7.5]_ Custom aggregates in `$apply` <Beta />
- _[cds-runtime@2.7.5]_ Support for string keys with dots in value (for example, `a.b.c`) when using keys as segments
- _[cds-runtime@2.7.5]_ `$filter`, `$groupby`, and `$orderby` works with path navigation to key for managed association to-one on SQLite
- _[cds-runtime@2.7.5]_ Support for tracing database statements with Dynatrace when using `@sap/hana-client` driver
- _[cds-runtime@2.7.5]_ Internal (for mtx) parameter `poolOnly` to `HanaDatabase.disconnect()` for clearing generic pool entry in case of credentials update
- _[cds-runtime@2.7.5]_ `@assert.range enum { ... }` for decimals
- _[cds-runtime@2.7.5]_ Draft: Lock active entity on edit action to prevent duplicate drafts
- _[cds-runtime@2.7.5]_ Set batch response header Content-Transfer-Encoding
- _[cds-runtime@2.6.8]_ Support for tracing database statements with Dynatrace when using `hdb` driver
- _[cds-mtx@1.0.25]_ Added enhanced authentication API needed for the `@sap/cds-sidecar-client` to support authentication with clientid/clientsecret from subscriber account. This is needed to extend multitenant applications that are provided as services.
- _[cds-sidecar-client@1.1.11]_ `login`, `extend`, and `activate` now also support clientid/clientsecret as parameters. This is
needed when extending multitenant applications provided as reusable services

### Changed

- _[cds-dk@3.3.1]_ Bump version of `@sap/cds` to `4.4.4` and `@sap/cds-runtime` to `2.7.5`
- _[cds-dk@3.3.1]_ `cds add cf-manifest` now adds a dependency to the `java_buildpack`.
- _[cds-dk@3.3.1]_ `sqlite3` is now an optional dependency to `cds-dk`. This means that an installation failure of `sqlite3`, for example, in environments w/o Internet connectivity, no longer leads to an overall installation error. This behavior suits Java applications, as these usually don't need an SQLite database. Node.js applications still require a proper installation of `sqlite3` if they use this database.
- _[vscode-cds@3.1.4]_ updated npm modules
  - `cds-lsp 4.1.2`
- _[vscode-cds@3.1.2]_ updated npm modules
  - `cds-lsp 4.1.1`
- _[cds-compiler@1.46.0]_ to.edm(x):
  - V4 structured key ref path aliases are now the basenames, colliding aliases are numbered.
  - Lower level to `info` for "‹Term› isn't applied" message if an annotation can't be applied.
- _[cds-compiler@1.46.0]_ OData:
  - Update vocabulary 'UI'
  - Correctly handle `not null` during flattening. Only if the parent and all subelements in the chain
  are `not null`, make the corresponding flat leaf element `not null`.
- _[cds@4.4.4]_ `cds compile` and `build` now do a faster localization of EDMX files. If there are no text keys inside these files, the content is no longer duplicated in memory.
- _[cds@4.4.4]_ `cds serve --at` / now can overwrite the default `/index.html` route
- _[cds@4.4.4]_ `cds.unfold` was long-term deprecated, and removed now &rarr; use `cds.compile`
- _[cds@4.4.4]_ `cds.config` was long-term deprecated, and removed now &rarr; use `cds.env`
- _[cds@4.4.4]_ `cds.session` was long-term deprecated, and removed now &rarr; use `cds.db`
- _[cds@4.4.4]_ Propagate correlation id header to subrequests
- _[cds.java@1.12.0]_ The CAP Java SDK won't configure a random data source as primary anymore. If multiple services are bound to the application, it's necessary to explicitly configure the service used for the primary data source through `cds.dataSource.serviceName`.
- _[cds.java@1.12.0]_ Artifact names of projects generated with the cds-services-archetype, are now allowed to contain underscores again.
- _[cds.java@1.12.0]_ The `ErrorStatus` interface now allows to return string-based error codes using the new method `String getCodeString()`. With this change, the integer-based error code method `int getCode()` is deprecated.
- _[cds.java@1.12.0]_ The OData V2 and V4 adapter now map comparison operators `eq` and `ne` to the operators `CqnComparisonPredicate.Operator.IS`, `IS_NOT`, respectively. This guarantees Boolean comparison semantics in the presence of `NULL` values.
- _[cds.java@1.12.0]_ The archetype won't generate a `requires -> db -> kind -> sql` configuration into the _.cdsrc.json_ anymore. The generated Java application still has all dependencies in place to run with HANA or SQLite locally. To initialize the project for a HANA-based cloud deployment, run `cds add hana` in addition.
- _[cds-runtime@2.7.5]_ Logging is now done using `cds.log`
- _[cds-runtime@2.7.5]_ CREATE and UPDATE requests that aren't allowed due to `@restrict.where` are rejected with `403` instead of `404`
- _[cds-runtime@2.7.5]_ No usage of private `req._model` in generic handlers
- _[cds-runtime@2.7.5]_ Service consumption: Print Cloud SDK logs only in debug mode
- _[cds-runtime@2.7.5]_ Transaction state handling moved to core
- _[cds-runtime@2.7.5]_ Correlation ID at `req.headers['x-correlation-id']` in subrequests
- _[cds-runtime@2.6.8]_ No separate logging of error message and stack in OData server
- _[cds-runtime@2.6.8]_ Not extended tenants reuse default OData service instance

### Fixed

- _[cds-dk@3.3.0]_ `cds add cf-manifest` now only adds db-deployer module if SAP HANA service binding exists.
- _[cds-dk@3.3.0]_ `cds init --add hana` now adds `requires.db.kind: "sql"` to cds configuration for Node.js and Java
- _[cds-dk@3.3.0]_ `cds watch` no longer fails in SAP Business Application Studio when trying to find `sqlite3`. `cds deploy --to sqlite` still has that issue, which is to be solved in a future version.
- _[cds-dk@3.2.1]_ `cds import` no longer creates _.csn_ files with invalid `kind:ComplexType` fields
- _[vscode-cds@3.1.4]_ file system watching no longer worked with latest VS Code
- _[vscode-cds@3.1.3]_ internal refactoring and bug fixes
- _[vscode-cds@3.1.2]_ support for mono repo file system layouts didn't work in certain cases
- _[vscode-cds@3.1.2]_ completion proposals for annotations weren't shown at top of the list if inside an annotation
- _[vscode-cds@3.1.2]_ only update workspace settings file if needed due to changed fileSystemWatch setting
- _[cds-compiler@1.46.6]_ OData identifiers can now include all unicode characters, which are described in the OData specification.
- _[cds-compiler@1.46.4]_ Association to Join translation: Fix using forward association target as table alias in ON condition.
- _[cds-compiler@1.46.2]_ to.edm(x) Fix a bug in the alias calculation for key references in structured OData.
- _[cds-compiler@1.46.0]_ Don't consider events to be potential targets for implicit redirections:
  strange warnings for multiple projections or other strange errors disappear.
- _[cds-compiler@1.46.0]_ to.hdbcds/hdi/sql:
  - Reject structured view parameters for HANA.
  - Correctly handle `not null` during flattening.
  Only if the parent and all subelements in the chain are `not null`, make the corresponding flat leaf element `not null`.
- _[cds-compiler@1.46.0]_ to.edm(x): Render @assert.range enum annotations correctly (enum symbol as value and don't omit zero value).
- _[cds-compiler@1.46.0]_ Fixed CDS module resolution with option `newResolve` on Windows where a superfluous `\` was prepended to absolute paths.
- _[cds@4.4.6]_ Compat `.emit()` for synchronous events with object as first parameter
- _[cds@4.4.5]_ Revert of _cds serve --at / now can overwrite the default /index.html route_, which caused problems in some applications
- _[cds@4.4.4]_ `srv.on` can now be used for async events w/o having to call `next` in each handler
- _[cds@4.4.4]_ `srv.emit` constructs instances of `cds.Event` from given arguments, as intended
- _[cds@4.4.4]_ `srv.send` constructs instances of `cds.Request` from given arguments
- _[cds@4.4.4]_ Revert of: `cds build` filters `i18n` files for Node.js staging builds
- _[cds@4.4.4]_ When two services `Foo` and `FooBar` were defined with one service's name being a substring of the other service's name, it may have happened that the same EDMX, that means, that of `FooBar`, was erroneously returned for both.
- _[cds@4.4.4]_ On Windows, the index page now shows normalized links to embedded HTML pages, that means, `foo/bar.html` instead of `foo\bar.html`.
- _[cds@4.4.4]_ `cds build` now consistently uses build target folder `'.'` as default for Java projects - also if custom build tasks have been defined.
- _[cds@4.4.4]_ Requests that contain `*` as `Accept-Language` header value do no longer fail.
- _[cds@4.4.4]_ `cds.debug` now reacts on the `DEBUG` environment variable set in a `.env` file
- _[cds@4.4.4]_ Language headers with values `en-US-x-[saptrc, sappsd]` are now mapped to user locale `en-US-[saptrc, sappsd]`.
- _[cds@4.4.4]_ `cds build` filters `i18n` files for nodejs staging builds
- _[cds@4.4.4]_ Messages are kept in their respective request (that means, not propagated to the request's context, if exists)
- _[cds@4.4.4]_ Log requests in atomicity groups
- _[cds@4.3.1]_ `cds build` now creates correct custom handler path for nodejs projects in WebIDE full stack.
- _[cds.java@1.12.0]_ Fixed a bug, that caused the CAP Java SDK to not be fully initialized yet, after Spring Boot started the Tomcat web-server. This issue only occurred as of Spring Boot `2.3.0.RELEASE` or later.
- _[cds.java@1.12.0]_ Fixed a bug, where an exception other than a `ServiceException`, that is thrown in a `beforeClose()` ChangeSetListener method, caused the transaction to be kept open and not correctly rolled back.
- _[cds.java@1.12.0]_ Fixed a bug, where the pseudo-locales `1Q` and `2Q` weren't correctly handled, when loading V2 or V4 EDMX metadata files.
- _[cds.java@1.12.0]_ Fixed the startup log output, to prevent unnecessary warning logs to be displayed during every startup.
- _[cds.java@1.12.0]_ Fixed an incorrect error message text, that occurred when the server required an etag condition.
- _[cds.java@1.12.0]_ Fixed a bug, that caused the possibility for application roles to interfere with CAP's pseudo roles.
- _[cds.java@1.12.0]_ Fixed the format of the `sap-message` header in OData V2.
- _[cds.java@1.12.0]_ Fixed a bug, that caused events originating from OData V2 bound function imports to be emitted incorrectly on services and their event handlers.
- _[cds.java@1.12.0]_ Fixed the handling of failing change sets in OData V2 `$batch` requests. A failing change set now aborts the batch processing.
- _[cds.java@1.12.0]_ Fixed the handling of actions without return types in OData V2.
- _[cds.java@1.12.0]_ Fixed a bug, that caused the authentication on function calls in OData V2 to fail.
- _[cds.java@1.12.0]_ Fixed a bug, that caused etag conditions using timestamp elements to fail in OData V2.
- _[cds.java@1.12.0]_ Fixed a bug, that caused functions with simple return values to fail in OData V2, when the `Content-Type` was set to `application/xml`.
- _[cds.java@1.12.0]_ Fixed a bug, that caused issues, when resolving Maven dependencies of `cds-adapter-odata-v2` from Maven Central.
- _[cds.java@1.12.0]_ Fixed a bug in `cds-maven-plugin`, where a project path containing a space caused an issue in goal `cds` on windows platform.
- _[cds.java@1.11.2]_ Updated repackaged Olingo V4 dependencies, fixing an issue that caused navigation paths without the optional key name to cause a 400 error. For example `/Orders(12)/Items(34)` failed, but `/Orders(12)/Items(ID=34)` worked.
- _[cds.java@1.11.2]_ Updated CDS4j to 1.15.2
- _[cds.java@1.11.1]_ Fixed a bug that caused issues when resolving Maven dependencies of cds-adapter-odata-v2 from Maven Central.
- _[cds.java@1.11.1]_ Updated CDS4j to 1.15.1
- _[cds4j@1.16.0]_ Projection Resolvement: resolve foreign key elements of aliased managed to-one associations
- _[cds4j@1.16.0]_ Fix isPredicate and asPredicate methods of CqnPredicate
- _[cds4j@1.15.2]_ Fix using `isNull` on elements of associated entity
- _[cds4j@1.15.2]_ Projection Resolvement: resolve aliased structured elements
- _[cds4j@1.15.1]_ Projection Resolvement: resolve aliased elements in infix filters
- _[cds4j@1.15.1]_ Projection Resolvement: resolve aliased elements in filtered updates
- _[cds-reflect@2.13.4]_ More improved typings
- _[cds-runtime@2.7.8]_ Null pointer exception when using `$expand`, `$filter`, and `contains` in the same HTTP request
- _[cds-runtime@2.7.7]_ In `hdb` driver, stored procedures without OUT parameters can now return values
- _[cds-runtime@2.7.7]_ Service consumption when using `.get('/')`
- _[cds-runtime@2.7.6]_ Validate pool clients before use
- _[cds-runtime@2.7.6]_ Improved default pool configuration
- _[cds-runtime@2.7.6]_ Remove `req.run` deprecation warning
- _[cds-runtime@2.7.5]_ Messaging incompatibility in combination with `@sap/cds@4.4.3`
- _[cds-runtime@2.7.5]_ `filter-node-package` has to be a dev dependency
- _[cds-runtime@2.7.5]_ No integrity check for events
- _[cds-runtime@2.7.5]_ Race condition in data listener of messaging
- _[cds-runtime@2.7.5]_ External entities are now always automatically resolved
- _[cds-runtime@2.7.5]_ Skip integrity checks for virtual entities
- _[cds-runtime@2.7.5]_ Auto-expand of to-one association of `CREATE` or `UPDATE` requests
- _[cds-runtime@2.7.5]_ `tx.model` in REST requests
- _[cds-runtime@2.7.5]_ Expand to association with projection `as select from where`
- _[cds-runtime@2.7.5]_ Null pointer exception when using `$expand`, `$filter`, and `contains` in the same HTTP request
- _[cds-runtime@2.7.5]_ Problem with navigations that have `null` as value in payload
- _[cds-runtime@2.7.5]_ Response in case of failed changesets in `$batch` requests
- _[cds-runtime@2.7.5]_ UPDATE/INSERT via navigation with foreign key in child
- _[cds-runtime@2.7.5]_ Resolving custom DELETE CQNs
- _[cds-runtime@2.7.5]_ Non-nullable values can't be set to `null` in UPDATE requests
- _[cds-runtime@2.7.5]_ Delete active entity with DELETE restriction
- _[cds-runtime@2.7.5]_ Calculation of HasDraftEntity doesn't involve secure annotations
- _[cds-runtime@2.7.5]_ POST/PATCH on composition of aspect didn't insert keys correctly
- _[cds-runtime@2.7.5]_ Check for different navigation properties with $expand
- _[cds-runtime@2.7.5]_ Streaming from nondraft entity in draft context
- _[cds-runtime@2.7.5]_ REST Adapter: `PUT` requests on collections are forbidden
- _[cds-runtime@2.7.5]_ affected rows in CREATE caused error with hdb
- _[cds-runtime@2.7.5]_ Navigating to composition of aspect with association as key caused error
- _[cds-runtime@2.7.5]_ Wrongly returned value for key calculation in expand caused for loop to break
- _[cds-runtime@2.7.5]_ TypeError by not connected database
- _[cds-runtime@2.7.5]_ Multiple messages in batch change set
- _[cds-runtime@2.6.8]_ Fix for metadata document exceeding cache limit
- _[cds-runtime@2.6.7]_ Previous fix broke service consumption of other systems
- _[cds-runtime@2.6.6]_ Check `req.path` during DoS prevention
- _[cds-runtime@2.6.6]_ Headers handling in service consumption for SAP S/4 On-Premise systems
- _[cds-runtime@2.6.6]_ i18n tests executed in cds-test
- _[cds-runtime@2.6.6]_ Default sorting in combination with $apply
- _[cds-runtime@2.6.3]_ URL and headers handling in service consumption
- _[cds-runtime@2.6.2]_ Augment read after write data with returned values of virtual properties on draft activate
- _[cds-runtime@2.6.2]_ Skip forbidden view check if association to view with foreign key in target
- _[cds-mtx@1.0.25]_ Activation via cds-sidecar-client shows linter errors again
- _[cds-mtx@1.0.25]_ Offboarding of tenants does no longer cause a reconnect of cds
(also requires update of @sap/cds dependency to minimum @sap/cds@4.3)
- _[cds-mtx@1.0.25]_ Broken compatibility with hdb driver is now fixed
- _[cds-mtx@1.0.25]_ MTX is now compatible with latest versions of @sap/hana-client
- _[cds-mtx@1.0.25]_ Linters can now handle extension projects with subfolders again
- _[cds-mtx@1.0.25]_ The connection pool used by MTX is now correctly updated on offboarding
even with scaled applications
- _[cds-odata-v2-adapter-proxy@1.4.58]_ Support boolean header value in media entity
- _[cds-odata-v2-adapter-proxy@1.4.58]_ Prevent escaping of quotes in url for batch requests
- _[cds-odata-v2-adapter-proxy@1.4.58]_ Add 'media_src' and 'content-type' in \_\_metadata for media entities
- _[cds-odata-v2-adapter-proxy@1.4.57]_ Match headers case insensitive for custom body in media entity
- _[cds-odata-v2-adapter-proxy@1.4.57]_ Parse header string values for non-string types in media entity
- _[cds-odata-v2-adapter-proxy@1.4.56]_ Enable OData V4 'continue-on-error' per default
- _[cds-odata-v2-adapter-proxy@1.4.56]_ Add proxy option to deactivate 'continue-on-error'
- _[cds-odata-v2-adapter-proxy@1.4.55]_ Fix host port in response links
- _[cds-odata-v2-adapter-proxy@1.4.55]_ Handle duplication of link tokens
- _[cds-odata-v2-adapter-proxy@1.4.54]_ Support mapping of \_\_next annotation
- _[cds-odata-v2-adapter-proxy@1.4.54]_ Forward file upload headers to media entity POST call
- _[cds-odata-v2-adapter-proxy@1.4.54]_ Explain annotation '@Core.ContentDisposition.Filename' in README
- _[cds-odata-v2-adapter-proxy@1.4.54]_ Update README on OData API flavors
- _[cds-odata-v2-adapter-proxy@1.4.54]_ Fix links for navigation collections and query options

### Removed

- _[cds4j@1.16.0]_ Removed deprecated CqnXpr interface
- _[cds-runtime@2.7.5]_ `req.statements` isn't available anymore
- _[cds-runtime@2.7.5]_ Private function `_ensureOpen` of `cds.DatabaseService`
- _[cds-runtime@2.7.5]_ Support for `defaultLocale` on service level

## October 2020

### Added

- _[cds-dk@3.2.0]_ `cds watch` now allows to set the `--in-memory` flag that is passed to `serve`.
- _[vscode-cds@3.1.0]_ release notes page shows loading text while loading content
- _[vscode-cds@3.1.0]_ user setting `cds.releaseNotes.showAutomatically` to enable or disable automatic display of `CAP Release Notes` when a new version is available
- _[vscode-cds@3.1.0]_ support mono repo file system layouts
- _[vscode-cds@3.1.0]_ user setting to disable OData plugin
- _[vscode-cds@3.1.0]_ detection of slow running OData plugin (when validating) incl. user settings to disable and fine-tune
- _[vscode-cds@3.1.0]_ user setting for omitRedundantTypesInSnippets for annotations
- _[vscode-cds@3.1.0]_ user setting to enable file system watching to track installation of @sap/cds in project
- _[cds-compiler@1.45.0]_ OData: Warn about nonapplicable annotations.
- _[cds@4.3.0]_ Support `SELECT[...].limit(0, ...)`
- _[cds@4.3.0]_ `hdbtabledata` generation can be disabled using `cds build` task option `skipHdbtabledataGeneration`.
- _[cds.java@1.11.0]_ The OData V2 and V4 adapter now prefers loading EDMX files from `edmx/v2` or `edmx/v4`. The `edmx` folder is still checked by both adapters. The paths are also configurable through the property `cds.odata-v[2/4].edmx-path`. The configuration options are relative to the resources folder of the Java application.
- _[cds.java@1.11.0]_ OData V4 `$apply` now supports aggregating using the virtual property `$count`.
- _[cds.java@1.11.0]_ Added support for nested expands in OData V2 (e.g. `Orders?$expand=items/book`).
- _[cds.java@1.11.0]_ The annotation `@assert.notNull: false` can now be used to skip server-side checks of elements marked with `not null`.
- _[cds.java@1.11.0]_ The length of a string element is now validated when running insert, update or upsert statements on the persistence service. In case the length is exceeded, an HTTP `Bad request` error with code `400019` is thrown.
- _[cds.java@1.11.0]_ The multitenancy subscription API endpoints now return error responses with localizable error texts in case something goes wrong.
- _[cds.java@1.11.0]_ Made `cds.application.services` configuration more flexible, allowing to create multiple `ApplicationService` instances from the same CDS model service definition, by using the `model` property within the service configuration. By default a single `ApplicationService` is created for each CDS model service.
- _[cds.java@1.11.0]_ Improved programmatic handler registration API to allow directly specifying events and entities, on which the handler should be registered, similarly to what is available in the annotations.
- _[cds.java@1.11.0]_ `CqnInsert`, `CqnUpdate`, and `CqnDelete` statements are now supported on remote OData services. The statements are translated into `POST`, `PATCH`, and `DELETE` OData requests respectively.
- _[cds.java@1.11.0]_ Lambda operators are now supported on CQNs to remote OData services.
- _[cds.java@1.11.0]_ Improved error messages, in case entity instances weren't found (404). The error message now contains the keys of the entity that couldn't be found.
- _[cds.java@1.11.0]_ Improved error messages in the OData V2 adapter, when an invalid JSON payload was provided on create or update requests.
- _[cds4j@1.15.0]_ CqnAnalyzer: Support extracting non-key values
- _[cds4j@1.15.0]_ Support binary literals
- _[cds4j@1.15.0]_ Support lossless de/serialization of temporal and binary literals from/to CQN
- _[cds4j@1.15.0]_ Support deep updates on writable views
- _[cds4j@1.15.0]_ Support inserts & updates on writable views with to-one paths in the projection
- _[cds4j@1.15.0]_ Support default values for parameters in parameterized views
- _[cds4j@1.15.0]_ Support aggregate functions (`max`, `min`, `sum`, `average`, and `countDistinct`) in CQL builder
- _[cds4j@1.15.0]_ Support modifying select from subquery
- _[cds4j@1.15.0]_ Support SAP HANA-specific data types
- _[cds-runtime@2.6.0]_ Support for `$expand` on managed Composition and Association to-one in structured types
- _[cds-runtime@2.6.0]_ Support for CQN partials in `SELECT.orderBy()`
- _[cds-runtime@2.6.0]_ `messages_<locale>.properties` files looked for in all i18n folders (not just the first)
- _[cds-runtime@2.6.0]_ Structured types as key
- _[cds-runtime@2.6.0]_ Support for localization in custom handlers
- _[cds-runtime@2.6.0]_ `InsertResult` <Beta />:
  - iterator that returns the keys of the created entries, for example:
    - Example: `[...result]` -> `[{ ID: 1 }, { ID: 2 }, ...]`
    - in case of `INSERT...as(SELECT...)`, the iterator returns `{}` for each row
  - `affectedRows`: the number inserted (root) entries or the number of affectedRows in case of INSERT into SELECT
  - `valueOf()`: returns `affectedRows` such that comparisons like `result > 0` can be used
    - Note: `===` can't be used as it also compares the type
- _[cds-runtime@2.6.0]_ Authentication strategy `xsuaa` (only with `@sap/xssec^3`) that additionally provides access to saml attributes through `req.user.attr` (for example, `req.user.attr.familyName`)
- _[cds-odata-annotations@1.0.3]_ Enabled navigating to other instances of the annotation term and its properties.
- _[cds-odata-annotations@1.0.4]_ Added a user/workspace setting to omit redundant types in annotation snippets.

### Changed

- _[cds-dk@3.2.0]_ `@sap/cds-dk` is again shrinkwrapped, so that builds get reproducible again
- _[cds-dk@3.2.0]_ All `cds` commands now prefer a local installation of `@sap/cds`.  This enables applications better control over the version of `@sap/cds`.
- _[cds-dk@3.2.0]_ `cds add cf-manifest` generates the service application with the `random-route: true` flag, which avoids route clashes on CF during development.
- _[cds-dk@3.1.2]_ `cds init` uses latest `Maven Java archetype` version `1.10.0` for creating Java projects.
- _[vscode-cds@3.1.0]_ install/update contributions completely async
- _[vscode-cds@3.1.0]_ completion no longer suggests types when values are meant
- _[vscode-cds@3.1.0]_ project cds-lsp settings overrule all
- _[vscode-cds@3.1.0]_ consumes cds-compiler 1.45.0
- _[vscode-cds@3.0.1]_ release notes page uses longer timeout (30 sec) when waiting for content
- _[cds-compiler@1.45.0]_ A warning is emitted for annotation definitions inside services/contexts as this won't be allowed in the next major cds-compiler release.
- _[cds-compiler@1.45.0]_ OData: Update vocabularies 'Analytics' and 'Common'.
- _[cds@4.3.0]_ Optimized `cds build` performance when creating OData EDMX output.
- _[cds.java@1.11.0]_ The `install-cdsdk` goal of the `cds-maven-plugin` now _by default_ detects when `@sap/cds-dk` is already installed locally and omits reinstallation of the package in that case, to speed up the overall build process. This is achieved by changing the default value of the goal's `force` force parameter to `false`
- _[cds.java@1.11.0]_ Renamed `cds.services` configuration section to `cds.application.services` configuration section. For backwards compatibility `cds.services` is still interpreted.
- _[cds.java@1.11.0]_ Deprecated the `EventPredicate` based programmatic handler registration API, as it doesn't provide access to the registered events and entities.
- _[cds.java@1.11.0]_ Authorization handler now throws internal error if inconsistent restriction with instance-based `where`-condition (`_where` property). If MTX application with sidecar, it's required to update @sap/cds to at least version 4.2.4.
- _[cds4j@1.15.0]_ Map CDS elements without type to Java Object in generated consumption interfaces
- _[cds4j@1.15.0]_ An IS NOT NULL check is now represented by a dedicated `IS_NOT` operator of `CqnComparisonPredicate`.
- _[cds4j@1.15.0]_ The postfix `not` Operator of a Predicate now directly negates the operators of comparison predicates.
- _[cds4j@1.15.0]_ The postfix `not` Operator of a Predicate now directly negates boolean logic.
- _[cds4j@1.15.0]_ The order of CDS elements returned by the `getElements()` method in the Model Reflection API is now stable between consecutive calls.
- _[cds-runtime@2.6.0]_ SQL queries don't use placeholders for rows of LIMIT clause
- _[cds-runtime@2.6.0]_ Replaced `@sap/odata-server` dependency by own copy
- _[cds-runtime@2.6.0]_ On `PATCH` and `PUT`, an `UPDATE` event is followed by a `CREATE` event if there was no matching entity
- _[cds-runtime@2.6.0]_ On `PUT`, not provided properties are defaulted/ nulled
- _[cds-runtime@2.6.0]_ On HTTP requests, `req.data` is a copy to preserve the original payload
- _[cds-runtime@2.6.0]_ Additional properties in payload are preserved for entities with `@cds.persistence.skip` when served to `rest`
- _[cds-runtime@2.6.0]_ RemoteService: Ignore where clause of view definition during INSERT, UPDATE, DELETE instead of throwing error
- _[cds-runtime@2.6.0]_ Don't use SQL placeholders for numbers
- _[cds-runtime@2.6.0]_ Service-level `@requires` are checked in protocol adapter instead of ApplicationService (excluding metadata requests)
- _[cds-runtime@2.6.0]_ Additional translatable messages

### Fixed

- _[cds-dk@3.2.0]_ `cds run` finds its `express` module again in the case where no `express` is installed in the application.
- _[cds-dk@3.2.0]_ `cds env` now also displays properties that have a value `false` or `''`.
- _[cds-dk@3.2.0]_ Leading flags in `cds` CLI work again, like `cds --to sql my.cds`
- _[cds-dk@3.2.0]_ `cds compile --to` w/o an argument now fails with a better message
- _[cds-dk@3.1.4]_ `cds run` finds the `sqlite3` module again if `cds` is used from a globally installed `@sap/cds-dk`.
- _[cds-dk@3.1.3]_ `cds run` finds the `express` package again in the case where no `express` is installed in the application's `node_modules`.
- _[cds-dk@3.1.2]_ `cds deploy --to sqlite` finds the `sqlite3` module again if `cds` is used from a globally installed `@sap/cds-dk`.
- _[vscode-cds@3.1.0]_ validation of annotation plugins led to 100% cpu load
- _[vscode-cds@3.1.0]_ globally installed cds wasn't reliably found
- _[vscode-cds@3.1.0]_ code completion for annotation plugins didn't work inside annotations at @ characters
- _[vscode-cds@3.1.0]_ bug fixes
- _[vscode-cds@3.0.1]_ `preview as...` commands now overwrite preview file content instead of appending
- _[vscode-cds@3.0.1]_ `preview as...` commands only fail when `cds compile` returned with exit code != 0 (severe error)
- _[cds-compiler@1.45.0]_ Association to Join translation: Fill empty select blocks with aliased columns.
- _[cds-compiler@1.45.0]_ to.edm(x):
  - Some EDM(x) warnings weren't properly passed to the user.
  - Don't render references and annotations for unexposed associations.
- _[cds-compiler@1.45.0]_ to.hdbcds: Warnings during rendering of the hdbcds weren't raised to the user.
- _[cds-compiler@1.45.0]_ Issue, which led to wrong on-conditions for `hdbcds` naming mode.
- _[cds-compiler@1.44.4]_ to.hdbcds/hdi/sql: The processing of managed associations as foreign keys now works regardless of the order in which the possible chains are resolved.
- _[cds-compiler@1.44.4]_ OData: Namespaces are brought back into the exposed types. Dots are replaced with underscores in the name.
- _[cds@4.3.0]_ `cds build` now classifies the severity of compile messages the same way as the low-level compiler. As a consequence, messages with severity _warning_ might now be classified as _error_.
- _[cds@4.3.0]_ Now, cds CLI logs errors based on _log-level_ setting.
- _[cds@4.3.0]_ `cds compile --to sql` no longer creates SQLite-specific views if in `hana` SQL dialect
- _[cds@4.3.0]_ The `node-cf` build task of `cds build` now also filters _./_ file dependencies from _package.json_ in the build output.
- _[cds@4.2.8]_ `cds compile --to edmx --dest` creates files with `.xml` ending again.
- _[cds@4.2.7]_ Fiori preview finds the `express` package again in the case where no `express` is installed in the application's `node_modules`.
- _[cds@4.2.6]_ `cds run` finds the `express` package again in the case where no `express` is installed in the application's `node_modules`.
- _[cds@4.2.5]_ `cds compile --to edmx-v2` and `edmx-v4` now again write to the folder given with `--dest`.
- _[cds@4.2.4]_ `cds compile --to edmx-v2/4` no longer crashes
- _[cds@4.2.4]_ `cds watch` no longer shows an error in absence of model files
- _[cds@4.2.4]_ `cds build` no longer fails with an error about module './old/compile'
- _[cds@4.2.4]_ Stack trace of some errors has been improved
- _[cds@4.2.4]_ The `.hdiconfig` file created by `cds build` now includes HANA artefact types from undeploy.json
- _[cds.java@1.11.0]_ Fixed a bug, where multiple prefixes of an XSUAA scope weren't handled correctly.
- _[cds.java@1.11.0]_ Fixed a bug in remote OData query results, where date types in OData V2 responses weren't parsed correctly
- _[cds.java@1.11.0]_ Fixed a bug, where locales didn't have a consistent value when provided in `sap-language` query parameter or `Accept` request header.
- _[cds.java@1.11.0]_ Fixed a bug, where empty lambda operators (e.g. `$filter=books/any()`) weren't handled correctly in OData V4.
- _[cds.java@1.11.0]_ Fixed a bug, where OData V2 `PATCH` or `MERGE` requests were handled in the same way as `PUT`, therefore setting unspecified values to their default value.
- _[cds.java@1.11.0]_ Fixed a bug, where UUID elements weren't handled as String objects in OData V2.
- _[cds.java@1.11.0]_ Fixed a bug, where milliseconds in time values weren't handled correctly in OData V2 responses.
- _[cds.java@1.11.0]_ Fixed a bug in `cds-maven-plugin`, where multiple usages of the `generate` goal in a pom.xml could cause compiler errors.
- _[cds.java@1.11.0]_ Fixed a bug, where the `install-cds-dk` goal of the `cds-maven-plugin` couldn't correctly detect an already installed `@sap/cds-dk` in case a _package-lock.json_ was present.
- _[cds4j@1.15.0]_ Enable draft for non-cuid entities
- _[cds4j@1.15.0]_ Enable draft for entities with compound keys
- _[cds-reflect@2.13.3]_ Improved typings no longer cause errors in typescript checks
- _[cds-reflect@2.13.2]_ Improved typescript typings
- _[cds-runtime@2.6.0]_ Streamlined debugging output for SQL statements
- _[cds-runtime@2.6.0]_ Integrity check for Associations in structured types
- _[cds-runtime@2.6.0]_ DateTime conversion for HANA
- _[cds-runtime@2.6.0]_ Ensure `req.method` and `req.headers`
- _[cds-runtime@2.6.0]_ DatabaseService: Ignore where clause of view definition during INSERT, UPDATE, DELETE
- _[cds-runtime@2.6.0]_ Activate draft with UPDATE restriction
- _[cds-runtime@2.6.0]_ Add the correct backlink to composition tree if additional association from child to parent
- _[cds-runtime@2.6.0]_ `falsy` default values weren't inserted to the database
- _[cds-runtime@2.6.0]_ Always prepare for temporal data
- _[cds-runtime@2.6.0]_ Internal server error on views with parameters and join
- _[cds-runtime@2.6.0]_ Secure annotation in draft union scenario
- _[cds-runtime@2.6.0]_ Augment read after write data with returned values of virtual properties
- _[cds-runtime@2.6.0]_ `@restrict` with association paths and `$user.<attr>` in where
- _[cds-runtime@2.6.0]_ Result of deep insert
- _[cds-runtime@2.6.0]_ `UPDATE` statements in custom handlers on Application Service setting only falsy values or using only expressions like `{stock: {'-=': 1}}`
- _[cds-runtime@2.5.6]_ Messaging: add data listener only once queue was put
- _[cds-runtime@2.5.5]_ `$user.id` in `restrict.where` always treated as string
- _[cds-runtime@2.5.4]_ Certificate issue when consuming remote services
- _[cds-runtime@2.5.3]_ Don't fail in `cds deploy --to sqlite` if `sqlite3` isn't installed
- _[cds-mtx@1.0.22]_ The application url returned to the SaaS registry when using asynchronous onboarding
can now also be set in the header field 'application_url'
- _[cds-mtx@1.0.22]_ The build task used when onboarding do now use the right defaults. When being used
as sidecar application, build task do no longer have to have the model option.
- _[cds-mtx@1.0.22]_ New entities with namespaces in extensions are now correctly
checked by the extensibility linter on extension activation
- _[cds-mtx@1.0.22]_ Call of onboarding and offboarding via javascript API is now fixed ('Cannot read property 'headers' of undefined')
- _[cds-odata-v2-adapter-proxy@1.4.53]_ Support custom body for binary media upload via POST
- _[cds-odata-v2-adapter-proxy@1.4.53]_ Set 'Accept' header for \$batch proxy request to "multipart/mixed"
- _[cds-odata-v2-adapter-proxy@1.4.53]_ Set missing response header 'Content-Transfer-Encoding: binary'
- _[cds-odata-v2-adapter-proxy@1.4.52]_ Log warning for change set order violation, instead returning an error response
- _[cds-odata-v2-adapter-proxy@1.4.51]_ Support OData V2 binary media upload via POST
- _[cds-odata-v2-adapter-proxy@1.4.51]_ Support OData V2 multipart/form-data media upload via POST
- _[cds-odata-v2-adapter-proxy@1.4.51]_ Update README on logging layers
- _[cds-odata-v2-adapter-proxy@1.4.50]_ Rewrite batch success status code from 200 to 202
- _[cds-odata-v2-adapter-proxy@1.4.50]_ Remove OData V4 header 'odata-entityid'
- _[cds-odata-v2-adapter-proxy@1.4.50]_ Propagate 'Content-ID' in response to HTTP request headers
- _[cds-odata-v2-adapter-proxy@1.4.50]_ Remove artificially added 'Content-ID' header from batch response
- _[cds-odata-v2-adapter-proxy@1.4.50]_ Fix 'Content-ID' order check for deviations between request and response
- _[cds-odata-v2-adapter-proxy@1.4.49]_ Fix entity uris with "x-forwarded-path" headers for OData batch calls
- _[cds-odata-v2-adapter-proxy@1.4.49]_ Support of 'odata-entityid' header rewrite
- _[cds-odata-v2-adapter-proxy@1.4.48]_ Fix entity uris with "x-forwarded-path" headers
- _[cds-odata-v2-adapter-proxy@1.4.48]_ Forward x-request-id, x-correlationid for metadata request

## September 2020

### Added

- _[cds-dk@3.1.1]_ `cds compile --locations` preserves `$location` properties in CSN outputs.
- _[cds-dk@3.1.0]_ `cds compile` now supports option `flavor` with values: `files` `sources` `parsed` `xtended` `inferred`.
  - `cds compile --files` maps to `--flavor files`.
  - `cds compile --sources` maps to `--flavor sources`.
  - `cds compile --parse` maps to `--flavor parsed`.
  - `cds compile` maps to `--flavor inferred`.
- _[cds-dk@3.1.0]_ `cds add cf-manifest` creates `manifest.yml` and `services-manifest.yml` allowing for Cloud Foundry native deployment.
- _[cds-dk@3.1.0]_ `cds init` now supports type `nodejs` to create a Node.js based project. This is the default and can be omitted.
- _[cds-dk@3.1.0]_ `cds watch`: enter `debug` or `debug-brk` to restart process in debug mode. Other commands are `ps` and `rs`.
- _[cds-odata-annotations@1.0]_ SAP Fiori tools CDS OData Language Server enhances the functionality of [SAP Cloud Platform core data services plug-in for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=SAPSE.vscode-cds) with the features assisting you in defining OData annotations in files serving Fiori UIs.
- _[vscode-cds@3.0.0]_ Plugin support for domain-specific annotation handlers, featuring:
  - diagnostics
  - code completion
  - hover information
  - goto definition
  - quickfix to maintain translation
  - auto-installation/update with user setting for npm registry
- _[vscode-cds@3.0.0]_ code completion inside string literals and `![...]` identifiers is automatically triggered by `/` character (additionally to `.` and `@`)
- _[vscode-cds@3.0.0]_ snippets applied through code completion are now formatted
- _[vscode-cds@3.0.0]_ `action`s and their parameters are now indexed and support code navigation, hover etc.
- _[vscode-cds@2.6.1]_ command `install cds-dk` now available to install `CDS Development Kit (@sap/cds-dk)` globally
- _[cds-compiler@1.43.0]_ The magic variable `$session` is now supported. All element accesses are unchecked.
- _[cds-compiler@1.43.0]_ Reference paths as annotation values can now contain identifiers starting with `@`.
- _[cds-compiler@1.42.0]_ The compiler now supports the `cast(element as Type)` function in queries.
  Using this function will also result in a `CAST` SQL function call.
- _[cds-compiler@1.42.0]_ A top-level property `i18n` is now supported. The property can contain translated texts.
  The compiler expects its entries to be objects where each text value is a string.
- _[cds-compiler@1.42.0]_ CDL: Empty selection lists in views/projections are now allowed and make it possible to extend
  empty projections. Note that views/projections without any elements aren't deployable.
- _[cds-compiler@1.42.0]_ For CSNs as input, the compiler returns properties as they are (without checks)
  if their name doesn't match the regexp `/[_$]?[a-zA-Z]+[0-9]*/` and doesn't start with `@`.
  With more than one CSN input, the compiler only returns the top-level CSN properties of the first source.
- _[cds-compiler@1.41.0]_ OData: Allow the relational comparison of structures or managed associations in an ON condition as described in
  version 1.32.0 - 2020-07-10 (forHana).
- _[cds-compiler@1.41.0]_ Allow `Struct:elem` with and without preceding `type of` as type reference.
- _[cds-compiler@1.40.0]_ to.hdi/sql: Support default values for view parameters.
- _[cds-compiler@1.40.0]_ OData: lower message severity from Error to Warning for `<entity type> has no primary key` and `<type> has no properties`.
- _[cds@4.2.2]_ `cds.env.odata.containment` to use OData V4 Containment NavigationProperties feature
- _[cds@4.2.2]_ `cds.env.odata.structs` to preserve struct elements as ComplexTypes in OData EDMX instead of flattening
- _[cds@4.2.2]_ `cds.env.odata.refs`, which uses NavigationProperties in OData EDMX instead of adding foreign keys
- _[cds@4.2.2]_ `cds.env.odata.proxies` to add proxy EntityTypes for external Association targets
- _[cds@4.2.2]_ `cds.env.odata.flavors`, which contain presets for the afore-mentioned flags
- _[cds@4.2.2]_ `cds.env.odata.flavor` to choose from the afore-mentioned presets
- _[cds@4.2.2]_ `cds.load` option `plain` replacing former option `clean` (which still is silently supported for compatibility).
- _[cds@4.2.2]_ `cds.get` now supports option `flavor` with values: `files` `sources` `parsed` `resolved` `compiled`.
- _[cds@4.2.2]_ `sap.common.Currencies`, `Countries`, and `Languages` now have their `code` element annotated with `@Common.Text` pointing to the `name`.  In Fiori's value list with fixed values, this will show the `name` rather than the code itself. As before, this only has an effect if `@Common.TextArrangement` is set to `#TextOnly` on the entity the code list is used as `ValueList` for.
- _[cds@4.1.10]_ Much like SQLite deployment, `cds deploy --to hana`, and `cds build` can now cope with leading `#` comments in csv files, that means, the comments get removed before deployment.
- _[cds@4.1.10]_ `cds deploy` now can handle empty strings in CSV values (use `""`)
- _[cds.java@1.10.0]_ OData V4 `$apply` now supports arithmetic expressions in aggregate functions
- _[cds.java@1.10.0]_ OData V4 `$apply` now allows to append further transformations to `group by`, `aggregate`, or `compute`
- _[cds.java@1.10.0]_ Basic support for the OData V4 lambda operators `all` and `any` has been added
- _[cds.java@1.10.0]_ Property `cds.security.openMetadataEndpoints = true` will make OData $metadata endpoints public accessible
- _[cds.java@1.10.0]_ Improved thread-safety and concurrent usage of the RequestContext API
- _[cds.java@1.10.0]_ Introduced a new JAR `cds-feature-jdbc`, which bundles all JDBC-related dependencies. It ensures that the default JDBC `PersistenceService` is created from the primary `DataSource` available to the application. In Spring Boot applications, this dependency is optional.
- _[cds.java@1.10.0]_ Introduced a new starter JAR `cds-starter-spring-boot`, which bundles useful dependencies around CAP Java and Spring Boot. It doesn't include the OData V4 adapter. It should be used instead of `cds-starter-spring-boot-odata`, when applications only want to expose an OData V2 or custom REST API.
- _[cds.java@1.10.0]_ Extended support for translating  `where` conditions to `$filter` for queries to remote OData APIs
- _[cds.java@1.10.0]_ Session variables from the `RequestContext` (locale, `sap-valid-at`, `sap-valid-from`, `sap-valid-to`) are now set on remote OData requests.
- _[cds.java@1.10.0]_ The artifact `cds-services-utils` now contains the resource bundle `cds-messages-template.properties`, which can be used as a template for a custom resource bundle to customize stack error messages in the application. Use `jar -f cds-services-utils-<VERSION>.jar -x cds-messages-template.properties` to extract the file.
- _[cds4j@1.14.0]_ Allow to filter by values of elements in an associated collection through builder API methods `.anyMatch(<predicate>)` and `.allMatch(<predicate>)`
- _[cds4j@1.14.0]_ Support referencing origin entity from query result: `Row.ref()`
- _[cds4j@1.14.0]_ Support deep in-/upserts through writable views. Note: Paths and key elements with aliases aren't supported.
- _[cds4j@1.14.0]_ Support search by UUID
- _[cds4j@1.14.0]_ `isLocalized` method to check if a `CdsElement` is localized
- _[cds4j@1.14.0]_ Support parsing arithmetic expressions and add consumption interface
- _[cds4j@1.14.0]_ Support parsing arithmetic negations and add consumption interface
- _[cds-runtime@2.5.0]_ Messaging: Transaction-coupled events will only be sent for successful requests (can be disabled by setting outbox=false)
- _[cds-runtime@2.5.0]_ Support for `@assert.notNull: false`
- _[cds-runtime@2.5.0]_ Messaging: Support for non-normalized input in handler registration
- _[cds-runtime@2.5.0]_ Messaging: automatically generate `headers.id`
- _[cds-runtime@2.5.0]_ Support for navigating to association to-one in structured
- _[cds-runtime@2.5.0]_ Initial support for `cds.odata.flavors = { v2, v4, w4, x4 }`
- _[cds-runtime@2.5.0]_ Support custom timezone offset
- _[cds-runtime@2.5.0]_ Support for assertions in structured data
- _[cds-runtime@2.5.0]_ Support for annotation `@Capabilities.ReadRestrictions.Readable`
- _[cds-runtime@2.5.0]_ Input validation for actions and functions
- _[cds-runtime@2.5.0]_ Support language-dependent sorting order for SAP HANA
- _[cds-runtime@2.4.0]_ Structured types in `$orderby`, `$filter`, `$select`
- _[cds-runtime@2.4.0]_ Limited support for Association to-one in structured types

### Changed

- _[cds-dk@3.1.2]_ `cds init` uses latest `Maven Java archetype` version `1.10.0` for creating Java projects.
- _[cds-dk@3.1.1]_ `cds compile` prints a better legible JSON output to terminals.
- _[cds-dk@3.1.1]_ `cds compile -p` is no longer a shortcut for `--parse`, to allow `--parse ...more-args` to work.
- _[cds-dk@3.1.1]_ `cds compile -f` is no longer a shortcut for `--from` (which isn't implemented), but for `--flavor`.
- _[cds-dk@3.1.0]_ `@sap/cds-dk` is no longer shrinkwrapped, so that new versions from underlying `@sap` packages (like `@sap/cds`) are available w/o a new `cds-dk` version
- _[cds-dk@3.1.0]_ `cds init` uses latest `Maven Java archetype` version `1.9.0` for creating Java projects.
- _[vscode-cds@3.0.0]_ updated npm modules
  - `cds-lsp 4.0.0`
  - `cds-compiler 1.42.2`
- _[vscode-cds@2.6.1]_ using `axios` for HTTPs access to CAP release notes
- _[vscode-cds@2.6.1]_ `CAP release notes` are now displayed when new version is available on `Capire`
- _[cds-compiler@1.43.0]_ OData:
  - Raise message level for illegal OData identifiers from warning to error.
  - Update vocabularies 'Aggregation' and 'Common'.
- _[cds-compiler@1.42.0]_ to.cdl: Smart type references are now explicitly rendered through ":"-syntax
- _[cds-compiler@1.40.0]_ OData: The foreign key references in associations aren't flattened anymore with format `structured`.
- _[cds@4.2.2]_ Replaced `cds.PrivilegedUser` with `cds.User.Privileged`
- _[cds@4.2.2]_ `cuid` in `@sap/cds/common` is now defined as an `aspect` to align it with the other definitions.  The previous definition as `abstract entity` is equivalent and was only needed for historic reasons.
- _[cds@4.2.2]_ `cds deploy --to sqlite` now skips columns from CSV files if the header value is empty.  This allows for ad-hoc 'disabling' of columns. For SAP HANA, the generated `hdbtabledata` files now also skip empty columns, restoring the behavior from CDS 3.
- _[cds@4.2.2]_ `cds deploy --to sqlite` has aligned its escaping rules for parsing CSV data with SAP HANA's `hdbtabledata`. A `"` character can be escaped by another `"` as before, but only if contained in a quoted string, that means, `"A""B"` leads to `A"B`, while `A""B` stays `A""B`, and `""` results in an empty string.
- _[cds4j@1.14.0]_ CqnVisitor: visit arguments of `CqnFunc`
- _[cds4j@1.14.0]_ Deprecate `CqnXpr` in favor of `CqnExpression`
- _[cds-runtime@2.5.0]_ Input processing: Performance improvements through templating mechanism used in single handler per layer
- _[cds-runtime@2.5.0]_ Input processing: Key propagation only on DB layer
- _[cds-runtime@2.5.0]_ Format of file-based messaging
- _[cds-runtime@2.4.0]_ Messaging: The `queue` and `queueConfig` options are now a single object: `{ name, ...queueConfig }`
- _[cds-runtime@2.4.0]_ Messaging: The `file` option is now moved to top level
- _[cds-runtime@2.4.0]_ Messaging: The `prefix` option is removed

### Fixed

- _[cds-dk@3.1.2]_ `cds deploy --to sqlite` finds the `sqlite3` module again if `cds` is used from a globally installed `@sap/cds-dk`.
- _[cds-dk@3.1.1]_ `cds deploy --to sqlite` now writes `requires.db.model` in _package.json_ such that `cds.connect.to.('db')` works w/o further `model` options.
- _[cds-dk@3.1.1]_ `cds deploy --to sqlite` with `@sap/cds` 4.2 no longer crashes due to a wrong import
- _[cds-dk@3.1.0]_ `cds watch` now passes all environment variables to the spawned sub processes, enabling, for example, `cds watch --production`
- _[cds-dk@3.1.0]_ `cds init` modifies artifact ID and Java package name for Java projects to be standard conform.
- _[cds-dk@3.1.0]_ `cds` fails with a better error message for misspelled commands
- _[vscode-cds@3.0.0]_ bug fixes
- _[vscode-cds@2.6.1]_ the `preview as...` commands are more robust and generate preview files without cds extension
- _[cds-compiler@1.43.0]_ OData: put default value validation under `beta:odataDefaultValues`
- _[cds-compiler@1.42.2]_ CDL: Action blocks can now be empty, for example, `entity E {…} actions { }`.
- _[cds-compiler@1.42.2]_ An info message is emitted if builtin types are annotated.  Use a custom type instead.
  Annotating builtins in CDL is possible but when transformed into CSN the annotation was silently lost.
  It's now put into the "extensions" property of the CSN.
- _[cds-compiler@1.42.2]_ Fixed `cast()` for simple values like numbers and strings.
- _[cds-compiler@1.42.2]_ to.sql:
  - Remove simple default value checks and allow the database to reject default values upon activation.
  - Render empty actual parameter list when selecting from a view with parameters, which are fully covered with
  default values and no actual parameters are provided in the query itself.
- _[cds-compiler@1.42.2]_ OData:
  - Correctly render unary operator of default values in EDM.
- _[cds-compiler@1.42.0]_ Annotating an _unknown_ element _twice_ now results in a duplicate annotation error instead
  of silently loosing the annotation.
- _[cds-compiler@1.42.0]_ Service/context extensions that reference a non-service/non-context now result in a compiler error
  instead of silently loosing the context/service extension.
- _[cds-compiler@1.42.0]_ to.hdbcds/sql/hdi:
  - fix a bug, which resulted in a malformed on-condition, if an association key
  was another association pointing to an entity with a structured key.
  - in conjunction with assoc-to-joins, the internal CSN reference broke
  causing missing locations and even internal errors when logging messages
  - managed associations in UNION are now correctly processed
- _[cds-compiler@1.42.0]_ The parseCdl mode now correctly resolves type arguments of "many" types.
- _[cds-compiler@1.42.0]_ OData: The annotation `@Capabilities.Readable` is now correctly
  translated to `@Capabilities.ReadRestrictions.Readable`.
- _[cds-compiler@1.41.4]_ The check for ignored "localized" keywords in subelements has been extended to also
  include references to structured types.
- _[cds-compiler@1.41.4]_ A warning was added if views/projections are used as element types.
- _[cds-compiler@1.41.4]_ An info message is emitted if a namespace is annotated.
  Annotating namespaces isn't possible. Previously the annotation was silently lost.
  It's now put into the "extensions" property of the CSN.
- _[cds-compiler@1.41.2]_ OData: correctly render primary key associations targeting a composition parent but aren't
  the composition enabling association.
- _[cds-compiler@1.41.2]_ to.hdbcds/sql/hdi: Don't dump if artifact doesn't exist anymore after association to join translation
- _[cds-compiler@1.41.2]_ Only check for unmanaged associations inside of "many"/"array of" in the elements of views and entities,
  not inside of actions and other members.
- _[cds-compiler@1.41.0]_ to.cdl: Only render enums if they were directly defined there
- _[cds-compiler@1.41.0]_ The parseCdl mode now checks for redefinitions to avoid generating invalid CSN.
- _[cds-compiler@1.41.0]_ OData: An error is thrown if a redirected target has fewer keys than the original one.
- _[cds-compiler@1.41.0]_ OData: Empty structured elements are now handled correctly in `flat` format.
- _[cds-compiler@1.40.0]_ parse.cdl: Properly handle type arguments, most likely relevant for HANA types.
- _[cds-compiler@1.40.0]_ OData: Multilevel anonymously defined `composition of <aspect>` is now processed successfully with the OData backend.
- _[cds-compiler@1.40.0]_ OData: Fix a bug in EDM generation that caused a dump.
- _[cds-compiler@1.40.0]_ Update ANTLR dependency to version 4.8.
- _[cds@4.2.4]_ `cds compile --to edmx-v2/4` no longer crashes
- _[cds@4.2.4]_ `cds watch` no longer shows an error in absence of model files
- _[cds@4.2.4]_ `cds build` no longer fails with an error about module './old/compile'
- _[cds@4.2.4]_ Stack trace of some errors have been improved
- _[cds@4.2.3]_ Leading `#` comments in CSV files sporadically caused `cds build` to fail on Windows with error `EPERM: operation not permitted`.
- _[cds@4.2.3]_ Method `req.user.is()` returns boolean
- _[cds@4.2.2]_ A `manifest.yml` file is now also generated for nodejs applications if a sqlite database is used.
- _[cds@4.2.2]_ `cds build` didn't correctly validate custom service handler implementations, warnings have been logged by mistake.
- _[cds@4.2.2]_ The default memory size for nodejs applications has been increased in `manifest.yml` to avoid out-of-memory issues for cloud native deployments.
- _[cds@4.2.2]_ `cds build` is now correctly creating external CSN output for Java multi-tenant applications.
- _[cds@4.1.10]_ `cds v` and `cds --version` now work again when called from `npm run` or `npx`.
- _[cds.java@1.10.0]_ Authorization handler throws internal error if inconsistent restriction with instance-based `where`-condition (`_where` property).
- _[cds.java@1.10.0]_ Fixed a bug, where custom error codes were replaced with HTTP status codes within an OData V4 error response, when setting `cds.error.stackMessages.enabled: false`.
- _[cds.java@1.10.0]_ Fixed a bug, that caused the `cds-maven-plugin` to fail when called from `git-bash` and other cygwin-based shells or via the `mbt` tool on Windows.
- _[cds.java@1.10.0]_ Fixed a bug, where pseudo-variables (like `$user`) weren't correctly handled in `where` conditions inside `exists` subqueries of instance-based authorization conditions
- _[cds.java@1.10.0]_ Fixed a bug, where the `Location` and `OData-EntityID` header weren't correctly set for contained entities in OData V4 responses.
- _[cds.java@1.10.0]_ Fixed a bug, where keyless entities in OData V4 returned `404 Not found` errors on collection requests, if no entity data existed.
- _[cds.java@1.10.0]_ Fixed a bug, that caused an incorrect OData V4 response, when an error occurred within a change set of a `$batch` request.
- _[cds.java@1.10.0]_ Fixed a bug in `cds-maven-plugin`, where the `cds` command wasn't found in some cases if no working directory was configured.
- _[cds.java@1.10.0]_ Fixed a bug in `cds-maven-plugin`, that caused default values for working directories to not be consistently calculated across different goals.
- _[cds.java@1.10.0]_ Fixed handling of info or error messages written in methods of `ChangeSetListener`, when executing OData V4 `$batch` requests with change sets.
- _[cds4j@1.14.0]_ Fix representation of expanded elements of single-valued associations in the row type of a query
- _[cds4j@1.14.0]_ Fix using double negation on SAP HANA
- _[cds4j@1.14.0]_ Improve error message when inserting invalid data
- _[cds4j@1.14.0]_ Reflection API: Fix isView() for views with unsupported queries, such as unions
- _[cds4j@1.14.0]_ Fix deep update through to-one association with generated UUID key
- _[cds-reflect@2.13.1]_ Support for `hana.*` types
- _[cds-runtime@2.5.3]_ Don't fail in `cds deploy --to sqlite` if `sqlite3` isn't installed
- _[cds-runtime@2.5.2]_ Don't fail in `cds deploy --dry` if `sqlite3` isn't installed
- _[cds-runtime@2.5.1]_ Set temporal session contexts on SAP HANA
- _[cds-runtime@2.5.1]_ Multiple invocations of `req.on('failed', () => { ... })`
- _[cds-runtime@2.5.0]_ Outbound REST/OData errors in CQN translation
- _[cds-runtime@2.5.0]_ View resolution for views with static values
- _[cds-runtime@2.5.0]_ Skip transition by view annotated with `@cds.persistence.table:true`
- _[cds-runtime@2.5.0]_ Reading structured types via navigation
- _[cds-runtime@2.5.0]_ Filter on elements having the same name as in `DraftAdministrativeData`
- _[cds-runtime@2.5.0]_ Draft union scenario with filter on elements from `DraftAdministrativeData`
- _[cds-runtime@2.5.0]_ Resolving views for deep deletes
- _[cds-runtime@2.5.0]_ Key generation in some UPDATE queries
- _[cds-runtime@2.5.0]_ SAP HANA: `cds.DateTime` convert to UTC in draft case
- _[cds-runtime@2.5.0]_ Combining `$filter` query option and `$apply` using only filter transformation
- _[cds-runtime@2.5.0]_ Join with draft tables
- _[cds-runtime@2.5.0]_ Determine name of primary key of draft enabled entity in subselect
- _[cds-runtime@2.5.0]_ Improved error message for direct use of auto exposed entity
- _[cds-runtime@2.5.0]_ Empty structured types are now null
- _[cds-runtime@2.5.0]_ Structured properties with the same name as CQN properties failed to execute
- _[cds-runtime@2.5.0]_ Association as key caused wrongly generated SQL statement
- _[cds-runtime@2.5.0]_ Deep update with structured type caused wrongly generated SQL statement
- _[cds-runtime@2.4.0]_ Diff calculates the difference on database level
- _[cds-runtime@2.4.0]_ `sap-messages` header now uses unicode characters for special characters
- _[cds-runtime@2.4.0]_ `req.target` for bound operations
- _[cds-runtime@2.4.0]_ `INSERT.into(...).as(SELECT.from(...)` inside custom handlers
- _[cds-runtime@2.4.0]_ Integrity check for DELETE requests
- _[cds-runtime@2.4.0]_ `Serialization Error` for entities with composition of aspects in `containment` mode
- _[cds-runtime@2.4.0]_ Expand on entity with a backlink as a key
- _[cds-mtx@1.0.21]_ Connections to application after off- and onboarding now work properly
- _[cds-mtx@1.0.20]_ Custom content upload using `/mtx/v1/model/updateCustomTenantContent` now also works
with CDS 4
- _[cds-mtx@1.0.19]_ The sequence of extensions added through `cds.mtx.activate()` is now stable, even after
a base model update.
- _[cds-odata-v2-adapter-proxy@1.4.46]_ Update README on option `cds.env.odata.v2proxy.urlpath`
- _[cds-odata-v2-adapter-proxy@1.4.46]_ Delta response annotation `@cov2ap.deltaResponse: 'timestamp'`
- _[cds-odata-v2-adapter-proxy@1.4.45]_ Prepare 'Delta Responses' support in proxy (not yet supported by CDS)
- _[cds-odata-v2-adapter-proxy@1.4.45]_ Remove metadata information in request payload deeply
- _[cds-odata-v2-adapter-proxy@1.4.45]_ Update README on CDS modeling restrictions
- _[cds-odata-v2-adapter-proxy@1.4.44]_ Rename proxy option `standalone` to `mtxRemote`
- _[cds-odata-v2-adapter-proxy@1.4.44]_ Allow proxy option `mtxEndpoint` to be absolute HTTP URL
- _[cds-odata-v2-adapter-proxy@1.4.44]_ Support for `cds.env` for proxy options under section `cds.cov2ap`
- _[cds-odata-v2-adapter-proxy@1.4.44]_ Update README and JSDoc documentation

### Removed

- _[cds-compiler@1.41.4]_ The length of SAP HANA identifiers aren't checked anymore: no more warnings are issued for long identifiers.
- _[cds4j@1.14.0]_ Remove deprecated limit by expression API
- _[cds4j@1.14.0]_ localized views aren't represented any longer in the `CdsModel`

## August 2020

### Added

- _[vscode-cds@2.6.0]_ various commands for generating preview files from a CDS file
- _[vscode-cds@2.6.0]_ Code completion proposes identifiers not yet imported in current file and generates corresponding `using` statement:
  - user setting: minimum number of characters required to propose those identifiers (`cds.completion.workspaceSymbols.minPrefixLength`). Default is -1 (=off)
  - user setting: limit number of global identifiers (`cds.completion.workspaceSymbols.maxProposals`). Default is -1 (=unlimited)
- _[vscode-cds@2.6.0]_ Code formatting: options `whitespaceBeforeColon` and `whitespaceAfterColon` are now supported inside `Composition` structs
- _[vscode-cds@2.6.0]_ Code formatting: support configuration of alignment of `Composition` structs (option `alignCompositionStructToRight`)
- _[cds-compiler@1.39.0]_ If the first CDS source (CDL or CSN) provided to the compiler
  has a `namespace` declaration/property, then
  that namespace name is put into the property `namespace` of the returned CSN.
- _[cds-compiler@1.39.0]_ An event payload type can now be defined with a type/entity reference or projection (instead of providing the elements directly).
- _[cds-compiler@1.39.0]_ Aspects can now be included when specifying the elements of an event payload type,
  as it's known for type, entity and aspect definitions.
- _[cds-compiler@1.39.0]_ Projections columns can now use expressions like select items,
  both for `entity … as projection on` and `extend projection … with`.
- _[cds-compiler@1.39.0]_ OData: `array of <structure>` or `many <structure>` is now allowed in OData V4, flat format.
- _[cds-compiler@1.39.0]_ Query select items can now be declared to be virtual.
- _[cds-compiler@1.39.0]_ CQL now allows to specify a join cardinality. Allowed are any combinations of
  `{ [ EXACT ] ONE | MANY } TO { [ EXACT ] ONE | MANY }` for
  `{ INNER | { LEFT | RIGHT | FULL } [ OUTER ] }` joins.
  The cardinality is added in the for SAP HANA-generated `CREATE VIEW` statements.
- _[cds-compiler@1.39.0]_ Support the creation of unique constraints by assigning `@assert.unique.<constraintName>` to
  non-query entities or query entities annotated with `@cds.persistence.table`. The value of the
  annotation is an array of paths referring to elements in the entity. The path leaf may
  be an element of a scalar, structured or managed association type. Individual foreign keys or
  unmanaged associations can't be accessed. In case the path points to a structured element,
  the unique constraint will contain all columns stemming from the structured type. In case
  the path points to a managed association, the unique constraint will contain all foreign key
  columns stemming from this managed association.
  For HANA a `UNIQUE INVERTED INDEX` and for SQLite a `named unique table constraint` is generated.
- _[cds@4.1.9]_ `cds.PrivilegedUser`, for example, for transactions with super user
- _[cds@4.1.7]_ Shortcut to class `cds.ApplicationService` in cds facade
- _[cds@4.1.7]_ Shortcut to class `cds.DatabaseService` in cds facade
- _[cds@4.1.7]_ Shortcut to class `cds.RemoteService` in cds facade
- _[cds@4.1.7]_ Shortcut to class `cds.MessagingService` in cds facade
- _[cds@4.1.7]_ Shortcut to class `cds.Event` as new base class of `cds.Request`
- _[cds@4.1.6]_ `req.notify()` as a new variant besides `req.info()`, which should display as toaster notifications on Fiori elements or other UIs.
- _[cds.java@1.9.0]_ Drafts are now garbage-collected automatically after a default period of 30 days. The period can be customized through the property `cds.drafts.deletionTimeout`
- _[cds.java@1.9.0]_ An OData V4 `PATCH` or `PUT` request on a nonexisting draft-enabled entity with `IsActiveEntity = true` can now directly create a new active entity, bypassing the draft-flow.
- _[cds.java@1.9.0]_ OData V4 `$apply` now supports the transformation `compute` (without paths)
- _[cds.java@1.9.0]_ Added an API annotation `HandlerOrder` to specify the order of an event handler within its registered phase.
- _[cds.java@1.9.0]_ The `Messages` container stored in the `RequestContext` is now automatically propagated to nested request contexts. A new message container can be requested for the request context, by using `clearMessages()` on the `RequestContextRunner`.
- _[cds.java@1.9.0]_ Added an API to elevate a request context to a privileged user, which bypasses all authorization checks automatically. A new request context can be elevated by using `privilegedUser()` on the `RequestContextRunner`. This privileged user can be further modified, for example to set a tenant.
- _[cds.java@1.9.0]_ The messaging adapter now emits external events as the privileged user, to ensure that authorization checks on service-level are passed.
- _[cds.java@1.9.0]_ CQN to OData transformation for remote OData queries:
  - Expand definitions in the CQN query are now transformed to an OData V2/V4 `$expand` query option
  - Orderby definitions in the CQN query are now transformed to an OData V2/V4 `$orderby` query option
  - Limit definitions in the CQN query are now transformed to an OData V2/V4 `$top`/`$skip` query option
  - Search definitions in the CQN query are now transformed to the `$search` query option for V4 and the SAP proprietary `search` query option for V2.
  - CQN path expressions in `from` are now translated to corresponding OData V2/V4 URIs
  - The types of values from the CQN statement and the result are now correctly handled based on the CDS type defined in the model.
- _[cds.java@1.9.0]_ Improved the text of many error messages to make them easier to understand
- _[cds.java@1.9.0]_ Improved the modularization capabilities of the `cds-framework-spring-boot` auto configurations. By default they no longer include Spring Web or Spring JDBC anymore, allowing to build Spring Boot applications without these features.
- _[cds.java@1.9.0]_ The `cds-maven-plugin` lowered minimum required Maven version from `3.5.0` to `3.3.1`.
- _[cds4j@1.13.1]_ Support parsing the query definition of views with joins
- _[cds4j@1.13.1]_ Support writing via simple views
- _[cds4j@1.13.1]_ Add API method to build ref segments
- _[cds4j@1.13.1]_ Allow to build CQN statements from structured type refs
- _[cds4j@1.13.1]_ Result metadata API <Beta />: Result.rowType()
- _[cds4j@1.13.1]_ Support select from subquery; Note: `expand` isn't supported in subqueries
- _[cds4j@1.12.1]_ Support managed associations with custom field mapping
- _[cds4j@1.12.1]_ Support @cds.on.insert|update: $now|$user|literal
- _[cds4j@1.12.1]_ Support anonymous types in code generation
- _[cds4j@1.12.1]_ Generate `EventContext` interfaces for events
- _[cds4j@1.12.1]_ Generate static `create()` method for structured types
- _[cds4j@1.12.1]_ Support $now in On conditions
- _[cds4j@1.12.1]_ Support using SessionContext variables in the WHERE clause
- _[cds4j@1.12.1]_ Support using inline count together with group by, having, and distinct
- _[cds-reflect@2.13.0]_ `aspect` to core type system
- _[cds-reflect@2.13.0]_ `Association` class now knows `isAssociation`, `isComposition`, and `isManagedComposition`
- _[cds-reflect@2.13.0]_ `any` has now a `path` getter
- _[cds-runtime@2.3.0]_ Support for Continuation Local Storage (CLS)
- _[cds-runtime@2.3.0]_ Support for access of structured property values in OData
- _[cds-runtime@2.3.0]_ Support for expand for external OData service in REST
- _[cds-runtime@2.2.0]_ Path navigations with keys for managed to-one association in orderby work on sqlite, for example, `$orderby=author/id`
- _[cds-runtime@2.2.0]_ Support for `cds.PrivilegedUser`
- _[cds-runtime@2.2.0]_ Implicit sorting for OData singletons
- _[cds-runtime@2.1.7]_ Composite-Messaging
- _[cds-runtime@2.1.7]_ Support for Message Queuing
- _[cds-runtime@2.1.7]_ Support for `@sap/xssec^3`
- _[cds-runtime@2.1.7]_ `@Common.numericSeverity` in error response
- _[cds-runtime@2.1.7]_ Support expand with '*' in QL API
- _[cds-runtime@2.1.7]_ Headers can be set with tx.emit on remote HTTP services
- _[cds-runtime@2.1.7]_ Propagate @cds.localized:false during deep reads
- _[cds-runtime@2.1.7]_ HANA: support for service manager credentials
- _[cds-runtime@2.1.5]_ Support for `@Capabilities.NavigationRestrictions`
- _[cds-runtime@2.1.5]_ Support queries to a model with nested projections to an external service
- _[cds-mtx@1.0.19]_ The asynchronous model update API now accepts a callback URL (header field `MTX_STATUS_CALLBACK`) that
  is called when the update is finished
<!-- decision from Ecki & Christian P. to not mention this in the changelog for the August release- _[cds-mtx@1.0.19]_ A new REST API for activating extensions from csn sources was added. Use `POST /mtx/v1/model/activateCsn/`
with a csn JSON as payload. Example:
```
{
        "extensionCsn": "{\"extensions\":[{\"extend\":\"sap.capire.bookshop.Books\",\"elements\":{\"Z_ISBN_101\":{\"type\":\"cds.String\"}}}]}",
        "tenant": "213a722e-ed91-43e2-adb4-3885b5e9d63e"
}
```-->
- _[cds-sidecar-client@1.1.8]_ Login/logout: Enable entering the passcode interactively if not given
- _[cds-sidecar-client@1.1.6]_ Login/logout: Support saving authentication token to desktop keyring (needs additional user-installed Node.js module)
- _[cds-sidecar-client@1.1.6]_ Login/logout: Automatic token refresh without the need to provide passcode again
- _[cds-sidecar-client@1.1.6]_ Login/logout: Suggest app URLs from Cloud-Foundry org and space currently logged in to (if applicable) if no app URL is supplied
- _[cds-sidecar-client@1.1.6]_ Login/logout: Determine missing subdomain from Cloud Foundry if possible
- _[cds-sidecar-client@1.1.6]_ Login/logout: Option to clear all invalid settings (where project folder doesn't exist)

### Changed

- _[cds-dk@3.0.0]_ `cds watch` now uses version 5 of `sqlite3`
- _[cds-dk@3.0.0]_ `cds watch` doesn't use `nodemon` anymore.
  > You can continue using `cds watch` with `nodemon` by installing `nodemon` globally and setting env variable `CDS_USE_NODEMON` to true.
- _[cds-dk@3.0.0]_ `cds add mta` for Java applications now determines app details like name, version etc. based on `pom.xml` and no longer from _package.json_.
- _[vscode-cds@2.6.0]_ updated npm modules
  - `cds-lsp 3.5.0`
  - `cds-compiler 1.39.0`
- _[vscode-cds@2.5.0]_ now requires Visual Studio Code `>=1.46`
- _[vscode-cds@2.5.0]_ updated npm modules
  - `cds-lsp 3.4.3`
  - `cds-compiler 1.35.0`
- _[cds-compiler@1.39.0]_ CSN: The property `payload` of an `event` has been renamed to `elements`.
- _[cds-compiler@1.39.0]_ to.hdbcds/hdi/sql:
  - Messages of id "query-no-undefined" are now raised as errors.
  - Aspects/types/abstract entities containing anonymous aspect compositions
    must not be used as types and are removed during transformation.
- _[cds-compiler@1.39.0]_ OData: Update vocabularies 'Common', 'UI'
- _[cds-compiler@1.39.0]_ The association to join transformation treats foreign key accesses with priority. If a foreign key of a managed association can be accessed without joins, no joins are generated. The priority handling can be turned of with option `joinfk`.
- _[cds@4.1.8]_ `cds deploy --to sqlite` can now cope with leading `#` comments in CSV files
- _[cds@4.1.8]_ `cds version --all` now includes `@sap/cds-sidecar-client`
- _[cds.java@1.9.0]_ The OData V4 `PUT` now follows the same internal semantics as `PATCH`, by first triggering an `UPDATE` event, following a `CREATE` event if the entity didn't yet exist. The `PUT` handling takes care to fill-up unspecified elements with their default values, as long as they can't be determined through a foreign key relation. `PUT` therefore doesn't affect the full composition tree by default anymore, but only the entity that the `PUT` was sent to. The `UPSERT` event is therefore no longer used by the OData V4 adapter.
- _[cds.java@1.9.0]_ Changed HTTP status code of `@mandatory` and `not null` validations errors from `409` to `400`
- _[cds.java@1.9.0]_ The name of the XSUAA system user (JWT with client credential flow) is now set to `system`.
- _[cds4j@1.12.1]_ Disable "unrecognized CDS element" warning during interface generation
- _[cds-runtime@2.1.7]_ Messaging: The configuration is moved to top level (before it was in credentials)
- _[cds-runtime@2.1.7]_ Messaging: The payload type is now 'application/json'
- _[cds-sidecar-client@1.1.6]_ Login/logout: Improved logging
- _[cds-sidecar-client@1.1.6]_ Login/logout: Renamed command line options for clarity
- _[cds-sidecar-client@1.1.6]_ Login/logout: Changed location of settings files to adhere to platform standards

### Fixed

- _[cds-dk@3.0.0]_ `cds add mta` now configures the Service Manager for SaaS applications. The Instance Manager is no longer used.
- _[cds-dk@3.0.0]_ `cds import` no longer writes an empty file if the source and the target edmx files are the same
- _[cds-dk@3.0.0]_ `cds import` yields better error messages if the input file doesn't exists or is invalid
- _[cds-dk@3.0.0]_ `cds import` no longer writes a Windows-specific path to _package.json_
- _[cds-dk@3.0.0]_ `cds init --add java` shows better error message if Maven isn't installed.
- _[cds-compiler@1.39.0]_ Fix a bug in explicit JOIN cardinality CDL parsing
- _[cds-compiler@1.39.0]_ to.hdbcds/hdi/sql: Identifiers are checked and warnings are raised if the identifier exceeds a length limitation, which would result in a deployment error.
- _[cds-compiler@1.39.0]_ OData: Service, entity, and element identifiers are checked and warnings are raised if an identifier isn't compliant with the OData specification.
- _[cds-compiler@1.39.0]_ to.hdbcds/hdi/sql: Correctly handle local-scope refs in on-conditions when flattening structures.
- _[cds-compiler@1.39.0]_ Run checks for associations inside of `many` or `array of` only on entities and views.
- _[cds-compiler@1.39.0]_ to.cdl: Events are rendered.
- _[cds-compiler@1.39.0]_ to.cds: Anonymous aspect compositions are now rendered correctly.
- _[cds-compiler@1.39.0]_ to.hdbcds/hdi/sql:
  - Events are ignored.
  - local-scope references in on-conditions are now handled correctly during flattening.
  - Removed duplicate messages.
- _[cds-compiler@1.39.0]_ A model with multilevel `composition of <aspect>` (spread across several aspect declarations,
  composing one another) is now processed successfully with the OData backend.
- _[cds-compiler@1.39.0]_ The CSN parser supports explicit join cardinalities.
- _[cds-compiler@1.39.0]_ Prefix a `@assert.unique` table constraint with the table name to avoid name clashes.
- _[cds-compiler@1.39.0]_ Semantic location in messages is now more precise.
- _[cds@4.1.8]_ `cds.entities` w/o namespace parameter now works properly when running out of a compiled model (aka _csn.json_ aka 'on Cloud Foundry').
- _[cds@4.1.8]_ `cds deploy --to hana` now also handles SAP HANA Cloud services on trial, which are created by the `hana` broker (in contrast to the `hanatrial` broker, which still provisions older SAP HANA instances).
- _[cds@4.1.8]_ `cds deploy --to hana` no longer uses `cf marketplace`, which has changed its parameters in CF CLI v7.
- _[cds@4.1.8]_ Fiori preview's html no longer provokes Javascript errors in the SAP Fiori client.
- _[cds@4.1.8]_ For database services of kind `sql` the service implementation is now set correctly in the CDS configuration.  Previously, `sql` services got a `sqlite` implementation even if they were set to `hana` in production.
- _[cds@4.1.8]_ Custom event handlers that don't register with a path (only with event and function) no longer crash the runtime
- _[cds@4.1.8]_ In Typescript typings, the API declaration for `cds.load` and the `bootstrap` event is now fixed.
- _[cds@4.1.7]_ Race condition on two parallel `cds.connect` to same service
- _[cds@4.1.7]_ **`cds deploy --no-save`** extends the list of files it doesn't modify to _package.json_, _default-env.json_, and `connection.properties`
- _[cds@4.1.7]_ **Add meaningful error message if hdi-deploy can't be loaded** &mdash; during `cds deploy --to hana`.
- _[cds@4.1.6]_ `req.target` for unbound actions/functions is now `undefined` again, as documented
- _[cds@4.1.6]_ Handlers registered with `srv.on(<CRUD>, 'Some/path', ...)` were never invoked
- _[cds@4.1.6]_ Queries to remote services via `srv.on(..., ()=> other.read('Something'))` weren't sent to remote
- _[cds.java@1.9.0]_ The `cds-maven-plugin` doesn't use npm / npx from local installation cache anymore, if goal `install-node` is skipped or not configured. In this case, a globally installed npm / npx is required and used.
- _[cds.java@1.9.0]_ The archetype now uses `1.0.0-SNAPSHOT` instead of `1.0-SNAPSHOT` as default version, which works better with the `mbt` build tool
- _[cds.java@1.9.0]_ Fixed a bug that caused the archetype to omit generating an (empty) db folder into the project.
- _[cds.java@1.9.0]_ Fixed a bug that caused an exception stating `Only a single member is supported`, when using more than one `PlatformTransactionManager` in Spring Boot applications.
- _[cds.java@1.9.0]_ Fixed a bug that caused a `NullPointerException` when calling an action or function, which returned a contained entity. With this fix, the OData V4 context URL for actions or functions returning an entity is now built based on entity types instead of entity sets.
- _[cds.java@1.9.0]_ Fixed a bug that caused the entity data maps to be cleared during processing in the OData V4 adapter, preventing custom code from being able to store a reference to this data without copying the map.
- _[cds.java@1.9.0]_ Fixed a bug that caused the cds-maven-plugin to determine a `null` working directory, in case the Maven project used an "external" parent project, not part of it's own source tree.
- _[cds.java@1.9.0]_ Fixed a bug that caused an incorrect encoding of non-ASCII characters in `sap-messages` header.
- _[cds.java@1.9.0]_ Fixed a bug where key fields annotated with `@Core.Computed` were removed from the CQN entries when executing an insert or update statement.
- _[cds.java@1.9.0]_ Fixed a bug that occurred when queries with group by, got enriched with implicit sorting.
- _[cds.java@1.8.1]_ Fixed a bug that caused a `NullPointerException` when opening a new transaction in some scenarios.
- _[cds.java@1.8.1]_ Fixed a bug that caused a `IllegalStateException` during application startup, when the property `cds.security.xsuaa.serviceName` was specified.
- _[cds4j@1.13.1]_ Generate builder interfaces for services containing only actions/functions
- _[cds4j@1.13.1]_ Fix typed data access for arrayed types
- _[cds4j@1.13.1]_ Fix `@Core.MediaType` detection
- _[cds4j@1.13.1]_ Fix missing parentheses in join condition when using infix filters
- _[cds4j@1.12.1]_ Improve parameter handling
- _[cds4j@1.12.1]_ Improve Performance
  - Suppress additional query for inline count if possible
  - SQL generation
  - Finding annotations
  - Use joins to expand to-one associations
- _[cds-runtime@2.3.0]_ HTTP Status Code for `GET` requests on `navigation-to-many` in combination with `$filter`
- _[cds-runtime@2.2.0]_ Deep update could potentially insert wrong data
- _[cds-runtime@2.2.0]_ Deep insert was also done on empty composition-to-many
- _[cds-runtime@2.2.0]_ POST via multiple navigations with OData containment activated
- _[cds-runtime@2.2.0]_ localized view with parameters
- _[cds-runtime@2.2.0]_ implicit sorting order
- _[cds-runtime@2.2.0]_ Custom SELECT CQN with join/union in draft enabled service failed for nondraft entities
- _[cds-runtime@2.2.0]_ `req.user.attr` access during @restrict processing with @sap/xssec^3
- _[cds-runtime@2.1.9]_ hdb reconnect on idle timeout
- _[cds-runtime@2.1.7]_ Messaging: Messages are only acknowledged if successful
- _[cds-runtime@2.1.7]_ Race conditions with messaging management
- _[cds-runtime@2.1.7]_ `orderBy` as an empty array
- _[cds-runtime@2.1.7]_ Join transaction during local API call
- _[cds-runtime@2.1.7]_ Support duplicate names of bound and unbound actions and functions in local API
- _[cds-runtime@2.1.7]_ Test read for UPSERT wasn't tenant aware
- _[cds-runtime@2.1.7]_ Prefer `cds.env.requires.uaa.credentials`
- _[cds-runtime@2.1.7]_ Error while activate with missing mandatory fields
- _[cds-runtime@2.1.7]_ Restore `req._.req.authInfo` for compatibility
- _[cds-runtime@2.1.7]_ OData V4 single property access in combination with mode `odata=structured`
- _[cds-runtime@2.1.7]_ empty string in functions like tolower, toupper
- _[cds-runtime@2.1.6]_ Removal of key properties of contained entity
- _[cds-runtime@2.1.6]_ Flattening of to-one association if key is also a to-one association
- _[cds-runtime@2.1.6]_ No localization with `SELECT.forUpdate()`
- _[cds-runtime@2.1.6]_ Multilevel expand with composition backlink as key
- _[cds-runtime@2.1.6]_ Ignore association keys in select for deletion integrity check
- _[cds-runtime@2.1.6]_ POST via multiple navigations
- _[cds-runtime@2.1.6]_ `req.user.id = <clientId>` with JWT strategy and `client_credentials` flow
- _[cds-runtime@2.1.6]_ Transaction handling with integrity check and changesets in json batch
- _[cds-runtime@2.1.5]_ `req._.req` in `SAVE` handler
- _[cds-runtime@2.1.5]_ Insert duplicate data during deep update
- _[cds-runtime@2.1.5]_ HANA: prefer `this.options.credentials`
- _[cds-runtime@2.1.5]_ `$orderBy` in case of `DRAFT` with `Union`
- _[cds-mtx@1.0.19]_ The sequence of extensions added through `cds.mtx.activate()` is now stable, even after
a base model update.
- _[cds-mtx@1.0.17]_ Asynchronous base model upgrade and job status requests that failed when using `@sap/cds@^4` are now fixed
- _[cds-mtx@1.0.17]_ Extensions that got lost when running onboarding multiple times are now preserved
- _[cds-mtx@1.0.17]_ The cds env configuration is now also available for `service-manager`
- _[cds-sidecar-client@1.1.8]_ Activate: Output additional information in case of error on `job-result` retrieval
- _[cds-sidecar-client@1.1.8]_ Login/logout: Determine running CF apps according to actual number of instances
- _[cds-sidecar-client@1.1.8]_ Login/logout: Clarify error messages
- _[cds-sidecar-client@1.1.7]_ The optional `keytar` package is now resolved if it's installed globally.
- _[cds-sidecar-client@1.1.6]_ Activate: Corrected exclusion of files from upload
- _[cds-odata-v2-adapter-proxy@1.4.43]_ Fix `\$filter` function conversion
- _[cds-odata-v2-adapter-proxy@1.4.43]_ Fix remote CSN fetch for standalone proxy
- _[cds-odata-v2-adapter-proxy@1.4.43]_ Fix `@sap.aggregation.role` annotation detection
- _[cds-odata-v2-adapter-proxy@1.4.43]_ Annotation `@cov2ap.analytics` to suppress analytical conversion
- _[cds-odata-v2-adapter-proxy@1.4.43]_ Update README documentation
- _[cds-odata-v2-adapter-proxy@1.4.42]_ Add missing `Content-ID` header for batch changeset
- _[cds-odata-v2-adapter-proxy@1.4.41]_ CDS 4 compatibility
- _[cds-odata-v2-adapter-proxy@1.4.41]_ Improve logging layers
- _[cds-odata-v2-adapter-proxy@1.4.41]_ Update README documentation
- _[cds-odata-v2-adapter-proxy@1.4.41]_ Improve JWT tenant processing

## July 2020

### Added

- _[cds-dk@2.0.7]_ `cds init` supports adding `samples` via `--add samples`. See `cds help init` for more details.
- _[cds-dk@2.0.7]_ **Most CLI commands have moved to `@sap/cds-dk`** from `@sap/cds`.  Make sure to install the latest version with `npm i -g @sap/cds-dk`.
- _[cds-dk@2.0.7]_ `cds` commands now log a hint to update to the latest `@sap/cds` if this one is still of version 3.
- _[cds-dk@2.0.7]_ New command `cds login` added to simplify usage of `cds extend` and `cds activate` by providing them with automatic authentication and saving project settings.
  Refreshes expired authentication tokens automatically. Optionally uses CF command line client to determine login URLs and subdomains.
  Saves authentication data in plain-text file or desktop keyring on Linux, macOS, or Windows.
  The latter requires an optional Node.js module `keytar` to be installed.
- _[cds-dk@2.0.7]_ New command `cds logout` removes authentication data and optionally project settings.
- _[vscode-cds@2.4.2]_ issue reporting url pointing to `https://answers.sap.com/`
- _[vscode-cds@2.4.2]_ new user setting `cds.completion.workspaceSymbols` (default `off`) to add workspace symbols to code completion proposals
- _[cds-compiler@1.35.0]_ Introduce option `localizedLanguageFallback`; if set to value `"none"`, the localized
  convenience views don't use function `coalesce` to select from a default text as fallback.
- _[cds-compiler@1.35.0]_ Allow to declare `many/array of` elements, parameters, and return types to be `(not) null`.
  The nullability applies to the array items of the element, not the element itself.
- _[cds-compiler@1.35.0]_ New boolean option `dependentAutoexposed` to avoid name clashes in dependent
  autoexposed entities (text entities, components of managed compositions).
- _[cds-compiler@1.35.0]_ cdsc: Add toOdata version 'v4x' to combine `{ version: 'v4', odataFormat: 'structured', odataContainment: true }`.
- _[cds-compiler@1.35.0]_ Provide semantic code completion for elements, enums, actions, and parameters
  in `annotate` and `extend`.
- _[cds-compiler@1.35.0]_ forHana: Allow the relational comparison of structures or managed associations in an ON condition.
  Both operands must be structurally compatible, that is both structures must be expandable
  to an identical set of leaf paths. Each leaf path must terminate on a builtin CDS scalar type.
  The original relational term of the form `s1 op s2` is replaced by the resulting expression
  `s1.leafpath_0 op s2.leafpath_0 (AND s1.leafpath_i op s2.leafpath_i)*` with `i < n leaf paths`.
- _[cds-compiler@1.35.0]_ forHana/toSql: A (proxy) entity representing an SAP HANA User-Defined Function or an SAP HANA Calculation View
  can now be annotated with `@cds.persistence { udf, calcview }` so that queries to these artifacts are
  rendered with the appropriate parameter lists. Parameters for SAP HANA Calculation Views are decorated with
  `PLACEHOLDER."$$<id>$$"`. SAP HANA User-Defined Functions without arguments require an empty argument
  list `()` as part of the query source. Entities that are assigned with `@cds.persistence { udf, calcview }` can't contain associations or act as
  association targets, even if they have no defined parameter list. Multiple assignments of `@cds.persistence { table, udf, calcview }` to the same entity are rejected.
- _[cds-compiler@1.35.0]_ OData V4: Elements with type `array of <scalar type>` are now supported in flat mode
- _[cds-compiler@1.35.0]_ Projections can now have `where` and `group by`/`having` clauses.
- _[cds-compiler@1.35.0]_ Projections can now have `limit` and `order by` clauses.
- _[cds-compiler@1.35.0]_ API: add `getArtifactCdsPersistenceName()` and, which return
  the value of annotation `@cds.persistence.name` for the corresponding artifact/element.
- _[cds-compiler@1.35.0]_ Add new OData vocabulary `com.sap.vocabularies.HTML5.v1`
- _[cds@4.1.5]_ **Common `cds.service.factory`** &mdash; `cds.serve` and `cds.connect` now use a common `cds.service.factory` to construct instances of `cds.Service`, as well as adding custom-provided handlers and implementations. This applies the same consistent ways to register new implementations via `cds.env.requires` options, model annotations `@impl` and `@kind`, or the well-known _.cds_/_.js_ sibling files mechanism.
- _[cds@4.1.5]_ **Common `cds.Service` base class** &mdash; `cds.Service` is the newly introduced common base class for all connected or provided services &mdash; that means, all service instances constructed through `cds.service.factory`. It provides uniform consumption APIs, as well as event handling APIs and capabilities for all services.
- _[cds@4.1.5]_ **Custom `cds.Service` subclasses** &mdash; besides providing `cds.service.impl` functions as of before, custom service implementations can now return subclasses of `cds.Service`, thereby plugging into the framework even more.
- _[cds@4.1.5]_ **New `srv.after('each', row => ...)`** &mdash; the former technique to register per-row handlers `srv.after('READ', each => ...)` broke when code was minified. The new method using pseudo event `'each'` is minifier-safe.
- _[cds@4.1.5]_ **New `srv.prepend(srv => ...)`** &mdash; use `srv.prepend(...)` to register event handlers to be executed _before_ the already registered handlers. For example, extensions of reused implementations sometimes need to use this.
- _[cds@4.1.5]_ **Reflect `srv.events`** &mdash; base class `cds.Service` provides a new getter `srv.events` to reflect on declared events in the service definition, similar to the already existing `srv.entities`, `srv.types`, and `srv.operations`.
- _[cds@4.1.5]_ **Experimental `cds.ql(req)`** &mdash; event handlers can now use the like of `const {SELECT} = cds.ql(req)` to ensure transaction-managed and tenant-isolated execution of queries, instead of `srv.tx(req)`. **Note** though, that this is an **experimental** feature, which might change or be removed in future versions.
- _[cds@4.1.5]_ **Using `await` in `cds repl`** &mdash; we now support using `await` directly on `cds repl` prompt inputs. This feature is provided through [Node's _--experimental-repl-await_ option](https://nodejs.org/api/repl.html#repl_await_keyword){:target="blank"}.
- _[cds@4.1.5]_ **CLI shortcut `--odata <v2|v4|x4>`** &mdash; the newly introduced general CLI option _**--odata** <v2/v4>_ acts as a shortcut to _--odata-version <v2/v4>_. In addition, _--odata **x4**_ acts as shortcut to _--odata-version v4 --odata-format structured --odata-containment true_.
- _[cds@4.1.5]_ **`cds build --production`** &mdash; builds the project using the `production` profile - same when `NODE_ENV` or `CDS_ENV` environment variable is set to `production`. This will create SAP HANA deployment artifacts if `kind: "sql"` has been defined.
- _[cds@4.1.5]_ **`cds build --for <hana|java-cf|node-cf|mtx> --opts <...>`** &mdash; now supports execution of auto-created or configured build tasks. Individual properties can be overwritten by passing corresponding CLI options, defaults are used otherwise. for example, `cds build --for hana --dest target --opts model=[data,srv,app]`. **Note:** The parameter `options-model` has been deprecated use `--opts model=[...]`instead.
- _[cds@4.1.5]_ The set of languages that is honored for the _i18n.json_ language pack can now be configured through `i18n.languages`.  Default is still `all`, which means the sum of language files found next to models.
- _[cds.java@1.8.0]_ New `RequestContext` API that allows to spawn contexts with modified user or request parameter information.
- _[cds.java@1.8.0]_ New provider API that allows to control how user or request parameter information is derived from the request.
- _[cds.java@1.8.0]_ New API to access the currently active `RequestContext` and `ChangeSetContext`
- _[cds.java@1.8.0]_ Parameterized views are now supported in OData V4.
- _[cds.java@1.8.0]_ Update requests on OData singletons and navigations from singletons to other entities are now supported. The local service API also supports creating and deleting singletons, which is however not supported by the OData V4 specification.
- _[cds.java@1.8.0]_ OData V4 `$metadata` endpoints now properly instruct the browser to allow to reuse the metadata from cache, if the ETag still matches, by setting `Cache-Control: max-age=0`.
- _[cds.java@1.8.0]_ OData V4 now supports using `not` in filter expressions
- _[cds.java@1.8.0]_ OData V4 now allows to order by aggregated values
- _[cds.java@1.8.0]_ OData V4 `$apply` now supports the transformation `search`
- _[cds.java@1.8.0]_ OData V4 `$apply` now supports the standard aggregation methods `avg` and `countdistinct`
- _[cds.java@1.8.0]_ Event handler methods can now use `CdsData`, `List<CdsData>`, or `Stream<CdsData>` as generic POJO argument.
- _[cds.java@1.8.0]_ Simplified the default database build configuration generated by the archetype
- _[cds.java@1.8.0]_ Added new parameter `csnFile` to goal `generate` of cds-maven-plugin. It allows to configure the location of a csn file.
- _[cds.java@1.8.0]_ The `cds-maven-plugin` now uses locations of _package.json_ or _.cdsrc.json_ as an indicator for the default working directory, instead of always defaulting to the root directory of the Maven project.
- _[cds.java@1.8.0]_ Support for draft fields in `orderBy` clause
- _[cds.java@1.8.0]_ Optimization of the number of executed statements when querying a draft enabled entity
- _[cds.java@1.8.0]_ New switch `cds.drafts.associationsToInactiveEntities` to control behavior for associations to draft enabled entities
- _[cds.java@1.8.0]_ The multitenancy feature now supports the Service Manager for SAP HANA DB instance provisioning
- _[cds.java@1.8.0]_ The multitenancy feature now supports combining the connection pools for different tenants pointing to the same SAP HANA database, by setting `cds.multitenancy.datasource.combinePools.enabled: true`.
- _[cds.java@1.8.0]_ Property `cds.security.xsuaa.serviceName` controls which XSUAA service binding is chosen for authorization. This helps in case multiple XSUAA service instances are bound to the CAP application.
- _[cds4j@1.12.0]_ Support managed associations with custom field mapping
- _[cds4j@1.12.0]_ Support @cds.on.insert\|update: $now\|$user\|literal
- _[cds4j@1.12.0]_ Support anonymous types in code generation
- _[cds4j@1.12.0]_ Generate `EventContext` interfaces for events
- _[cds4j@1.12.0]_ Generate static `create()` method for structured types
- _[cds4j@1.12.0]_ Support $now in On conditions
- _[cds4j@1.12.0]_ Support using SessionContext variables in the WHERE clause
- _[cds4j@1.12.0]_ Support using inline count together with group by, having, and distinct
- _[cds-reflect@2.12.2]_ getters `.associations` and `.compositions` on linked entities
- _[cds-runtime@2.1.5]_ Support for `@Capabilities.NavigationRestrictions`
- _[cds-runtime@2.1.5]_ Support queries to a model with nested projections to an external service
- _[cds-runtime@2.1.4]_ Support for structured OData
- _[cds-runtime@2.1.4]_ Support for arrayed elements
- _[cds-runtime@2.1.3]_ Synchronous API for streaming
- _[cds-runtime@2.1.3]_ Support calling SAP HANA stored procedures
- _[cds-runtime@2.1.0]_ `req.warn(code, msg, target, args)`
- _[cds-runtime@2.1.0]_ `req.data` returns array in case of bulk operations
- _[cds-runtime@2.1.0]_ All services as subclasses of new `cds.Service`
- _[cds-runtime@2.1.0]_ Differentiation between "Application Service" (for example, providing OData) and "Persistence Service" (for example, database, remote)
- _[cds-runtime@2.0.3]_ Custom translatable error messages
- _[cds-runtime@2.0.3]_ Support for containment in CRUD
- _[cds-runtime@2.0.3]_ Support for static values in custom on conditions for associations
- _[cds-runtime@2.0.2]_ Support for XSUAA's user attribute value `$UNRESTRICTED`
- _[cds-runtime@2.0.2]_ Default to combination `[...];IEEE754Compatible=true;ExponentialDecimals=true` if IEEE754Compatible or ExponentialDecimals is omitted
- _[cds-runtime@2.0.2]_ Use custom authenticate middleware via `cds.env.requires.auth.impl`
- _[cds-runtime@2.0.2]_ Authentication strategy `dummy` (`cds.env.requires.auth.strategy = 'dummy'`) that creates super users (that means, pass all authorization checks)
- _[cds-runtime@2.0.2]_ Support relative destination path in rest client
- _[cds-runtime@1.2.0]_ The timeout of the exclusive lock of drafts can now be configured using `cds.drafts.cancellationTimeout`
- _[cds-runtime@1.2.0]_ `req.params`: iterable with key value pairs for the key predicates of the addressed resource
- _[cds-sidecar-client@1.1.6]_ Login/logout: Support saving authentication token to desktop keyring (needs additional user-installed Node.js module)
- _[cds-sidecar-client@1.1.6]_ Login/logout: Automatic token refresh without the need to provide passcode again
- _[cds-sidecar-client@1.1.6]_ Login/logout: Suggest app URLs from Cloud-Foundry org and space currently logged in to (if applicable) if no app URL is supplied
- _[cds-sidecar-client@1.1.6]_ Login/logout: Determine missing subdomain from Cloud Foundry if possible
- _[cds-sidecar-client@1.1.6]_ Login/logout: Option to clear all invalid settings (where project folder doesn't exist)

### Changed

- _[cds-dk@2.0.8]_ `cds init` uses latest `Maven Java archetype` version `1.8.1` for creating Java projects.
- _[cds-dk@2.0.7]_ `@sap/cdk` no longer warns about `@sap/cds` being globally installed next to it.  This was a temporary hint for the transition period to `@sap/cds-dk`.
- _[cds-dk@2.0.7]_ `cds init` generates dependency to `@sap/cds` version `4` for Nodejs projects.
- _[cds-dk@2.0.7]_ Use square brackets to pass array values for options to `cds init --java:mvn`.
- _[cds-dk@2.0.7]_ `cds init --add pipeline` and `cds add pipeline` now create file `config.yml` in `.pipeline` folder.
- _[cds-dk@2.0.7]_ Improved _launch.json_ file, which is created during `cds init`.
- _[cds-dk@2.0.7]_ `cds add mta` now creates a _mta.yaml_ file that sets the production flag for cds build and npm install.
  This ensures that the SAP HANA artifacts are created if `"kind": "sql"` or some `production` profile has been configured in _package.json_ or _.cdsrc.json_.
  Requires `@sap/cds` version >=4.x.
- _[cds-dk@2.0.7]_ `cds init` uses latest `Maven Java archetype` version `1.7.0` for creating Java projects.
- _[cds-dk@2.0.7]_ `cds init` no longer adds _package-lock.json_ to _.gitignore_ file when creating a new project.
- _[cds-dk@2.0.7]_ `cds init --add hana` and `cds add hana` now use `Maven Java archetype` to create SAP HANA-related pom.xml entries.
- _[cds-dk@2.0.7]_ Consistent default naming scheme for applications and services deployed to CF across the following `cds` commands `build`, `deploy`, `init`, and `add`. For an application named `myapp` the SAP HANA deployer app name is `myapp-db-deployer`, the SAP HANA DB service name is `myapp-db`.
- _[cds-dk@1.8.6]_ Service binding names have been adapted in _mta.yaml_ created by `cds add mta` command.
- _[cds-dk@1.8.5]_ `cds init` uses latest `Maven Java archetype` version `1.6.0` for creating Java projects.
- _[cds-dk@1.8.4]_ `cds init` uses latest `Maven Java archetype` version `1.5.2` for creating Java projects.
- _[vscode-cds@2.4.2]_ updated npm modules
  - `cds-lsp 3.4.2`
- _[vscode-cds@2.5.0]_ now requires Visual Studio Code `>=1.46`
- _[vscode-cds@2.5.0]_ updated npm modules
  - `cds-lsp 3.4.3`
  - `cds-compiler 1.35.0`
- _[vscode-cds@2.4.2]_ internal refactorings
- _[vscode-cds@2.4.1]_ extension is now hosted on Visual Studio Marketplace and updates from there
  - update configuration and update command have been removed
- _[vscode-cds@2.4.0]_ updated npm modules
  - `cds-lsp 3.4.0`
- _[vscode-cds@2.4.0]_ improved `README.md`
  - updated feature list
- _[vscode-cds@2.3.2]_ using new npm modules
  - got 11.1.4
- _[cds-compiler@1.35.0]_ OData:
  - Update vocabularies 'Common', 'Core', 'ODM'.
  - The default nullability for collection value properties is `false`, indicating that the returned collection must
    not contain null value entries.
- _[cds-compiler@1.35.0]_ toCdl: Identifiers are now quoted with `![` and `]`. Inner `]` characters are escaped with `]]`.
- _[cds-compiler@1.35.0]_ toCdl/toSql: Function names containing nonstandard SAP HANA identifier characters are rendered case preserving and quoted
  if an appropriate naming mode has been set in the options.
- _[cds-compiler@1.35.0]_ toCdl: String enums without a value are no longer rendered with their name's string representation as their value.
- _[cds-compiler@1.35.0]_ Option `beta` now only works with selective feature flags. Instead of `beta: true`, a dictionary of `<feature>: true` is expected. Available feature flags are:
  1. subElemRedirections
  2. keyRefError
  3. aspectCompositions
  4. odataProxies
  5. uniqueconstraints
- _[cds-compiler@1.35.0]_ OData V4: Unmanaged associations/compositions with a target cardinality of exactly one (that is `[1..1]`)
  are rendered as `edmx:NavigationProperty` with attribute `Nullable="false"`
- _[cds-compiler@1.35.0]_ OData: On-condition checks are now performed when generating OData as well.
- _[cds-compiler@1.35.0]_ SQLite: The property length for string parameters isn't longer restricted to 5000 characters.
- _[cds-compiler@1.35.0]_ SAP HANA/SQLite: Improved the error message when an entity without elements is found to make it clearer what is expected.
- _[cds-compiler@1.35.0]_ OData: Update vocabularies 'CodeList', 'Common', 'Graph', 'UI'
- _[cds-compiler@1.35.0]_ Issue error if old backends are used with beta mode.
- _[cds-compiler@1.35.0]_ Raise severity of message `Unmanaged associations cannot be used as primary key` with id `unmanaged-as-key` to error.
- _[cds-compiler@1.35.0]_ Improve warning messages for integer enum missing a value and chained array of.
- _[cds-compiler@1.35.0]_ SAP HANA/SQL
  - Empty structures aren't allowed as foreign keys.
- _[cds-compiler@1.35.0]_ Report a warning for integer enum elements that don't have values.
- _[cds-compiler@1.35.0]_ Report a warning for enums that aren't integer- or string-like.
- _[cds-compiler@1.35.0]_ OData
  - Update vocabularies 'Common', 'Core', 'Validation'
  - Pass through structures without elements
  - `cds.Decimal` and `cds.DecimalFloat` (deprecated) without precision/scale are rendered
    as `Edm.Decimal` with `Scale=variable` (V4) and `sap:variable-scale="true"` (V2)
- _[cds-compiler@1.35.0]_ Report a warning when a deprecated non-snapi backend (OData, SAP HANA/SQL) is called.
- _[cds-compiler@1.35.0]_ OData:
  - Update vocabulary 'UI'
  - Add annotation `@Common.Label: '{i18n>Draft_DraftAdministrativeData}'` to entity `DraftAdministrativeData`
  - Improve info message for target mismatch on associations that are compared with $self
- _[cds@4.1.5]_ **Most CLI commands have moved** to `@sap/cds-dk`.  Make sure to install the latest version with `npm i -g @sap/cds-dk`.
- _[cds@4.1.5]_ **Default OData version** in `cds configuration` is now `v4`. For `Node.js` projects and `Java` projects using new stack the cds configuration of `odata.version = 'v4'` is no longer required. For `Java` projects using old Java stack, OData v2 will still be used.
- _[cds@4.1.5]_ **Always do `await cds.connect.to()`** &mdash; in former versions `cds.connect.to()` returned some magic thenables, meant to ease the [_Promise Hell_](https://medium.com/@pyrolistical/how-to-get-out-of-promise-hell-8c20e0ab0513){:target="blank"}; now it always returns plain-standard Promises. Likely you never used this undocumented former behavior, but in case: Just ensure to always call `cds.connect` with `await`.
- _[cds@4.1.5]_ **Deprecated `cds.connect()`** &mdash; prefer `cds.connect.to('db')` instead, which has the same effect but is more in line with the notion of potentially working with multiple database services.
- _[cds@4.1.5]_ **Deprecated `cds.hana.syntax` configuration**.  Use `cds.hana.deploy-format`=`hdbtable` instead to switch deployment from `hdbcds` to `hdbtable` for SAP HANA Cloud.
- _[cds@4.1.5]_ **Faster generation of `hdbtabledata` files** from csv data.  It no longer tries to check the existence of element or column names.  Such checks are anyways done during SAP HANA deployment.  This behavior is now symmetrical to SQLite deployment.
- _[cds@4.1.5]_ **Removed legacy cds build system** &mdash; the fallback using `cds.features.build.legacy` is no longer supported.
- _[cds@4.1.5]_ **`cds deploy --to hana` changes kind** to `hana` only if it isn't already `sql`.
- _[cds@4.1.5]_ **`cds build`** &mdash; does no longer create service metadata for the UI service binding by default. For SAP Web IDE Full-Stack compatibility, a corresponding metadata.xml is still generated.  A `fiori` build task has to be defined otherwise.
- _[cds@4.1.5]_ **Consistent default naming scheme for applications and services deployed to CF** across the following `cds` commands `build`, `deploy`,  , and `add`. For an application named `myapp` the SAP HANA deployer app name is `myapp-db-deployer`, the SAP HANA DB service name is `myapp-db`. `cds build` now generates the application manifest file with a different name `manifest.yml`.
- _[cds@4.1.5]_ **`cds build` creates `hana` build results only** if either a corresponding build task has been configured or if kind `hana` or kind `sql` has been defined. A `production` build is required for the latter. A fallback is used for Web IDE full stack and legacy build configs.
- _[cds@3.35.0]_ The new compiler implementation, a.k.a SNAPI, is now the default.  Can be disabled with `cds.features.snapi=false`.
- _[cds@3.34.3]_ Faster generation of `hdbtabledata` files from csv data.  It no longer tries to check the existence of element or column names.  Such checks are anyways done during SAP HANA deployment.  This behavior is now symmetrical to SQLite deployment.
- _[cds@3.34.2]_ Use `cds.hana.deploy-format`=`hdbtable` instead of `cds.hana.syntax` to switch deployment from `hdbcds` to `hdbtable` for SAP HANA Cloud.
- _[cds@3.34.2]_ `cds run` now supports relative `dataSource` URLs in SAP UI5 manifests again, so that UI5 apps can be served w/o App Router.  This support is only active in development mode.
- _[cds@3.34.2]_ `cds deploy --to hana` changes kind to `hana` only if it isn't already `sql`
- _[cds.java@1.8.0]_ `CdsRuntime.runInRequestContext()` has been deprecated and replaced by `CdsRuntime.requestContext()`.
- _[cds.java@1.8.0]_ `CdsRuntime.runInChangeSetContext()` has been deprecated and replaced by `CdsRuntime.changeSetContext()`
- _[cds.java@1.8.0]_ For an OData query with `$count` option the inline count _must_ be specified in the result. In the previous version, if no inline count was contained in the result, the row count was used, which could have resulted in wrong data.
- _[cds.java@1.8.0]_ Removed npm registry configuration from the archetype, to prevent overriding custom values, specified by developers.
- _[cds.java@1.8.0]_ Fields annotated with `@cds.on.insert` are preserved in the draft when editing a draft enabled entity.
- _[cds.java@1.8.0]_ Some error codes were incorrect and have been corrected: The codes ranging from `40008` to `40017` have been changed to `400008` to `400017` respectively, to prevent conflicts in error codes in the future.
- _[cds.java@1.8.0]_ The `ServiceException.getLocalizedMessage()` is only capable of determining the correct locale from the request, if an active `RequestContext` exists. If no active `RequestContext` exists the new method `ServiceException.getLocalizedMessage(Locale)` can be used to explicitly set a locale. The requests locale can be obtained from the `CdsRuntime` using `runtime.getProvidedParameterInfo().getLocale()`
- _[cds.java@1.8.0]_ XSUAA user names aren't normalized to lower case by default anymore (property cds.security.xsuaa.normalizeUserNames). XSUAA delivers stable case-sensitive user names now.
- _[cds4j@1.12.0]_ Disable "unrecognized CDS element" warning during interface generation
- _[cds-foss@2.0.0]_ Bumped dependency versions
- _[cds-runtime@2.1.0]_ Streamlined `req.reject/error/info(code, msg, target, args)`: takes four individual params (number, string, string, array) or one object
- _[cds-runtime@2.1.0]_ Changed behavior by handler registration:
-- Handlers registered with entity = '*' aren't called by unbound events anymore.
-- Handlers registered without entity aren't called by bound events anymore.
-- Special case: Handlers registered in form .before/on/after(\'\*\', handler) are called by bound and unbound events.
- _[cds-runtime@2.1.0]_ Expanding association from draft-enabled entity to draft enabled entities always provides active version of the expanded entity.
- _[cds-runtime@2.1.0]_ If you export a function in an `init.js` file, it will be called with the primary database and its result is awaited.
- _[cds-runtime@2.1.0]_ REST: Since the service is now based on the `cds.Service` base class, all convenience functions (`create`, `post`, etc.) are streamlined.
- _[cds-runtime@2.1.0]_ Messaging: Only one queue per app is created, as opposed to one queue per app and external service.
- _[cds-runtime@2.1.0]_ Messaging: You can now directly connect to the (technical) messaging service through `await cds.connect.to('messaging')`, no topic names will be generated here.
- _[cds-runtime@2.1.0]_ Messaging: If you want to link your own or external services to messaging, you need to model your events in CDS.
- _[cds-runtime@2.1.0]_ Messaging: If you want to provide custom topics for modeled events, you need add the `@topic` annotation to the event.
- _[cds-runtime@2.1.0]_ Messaging: The `prefix` option in the service's credentials is prepended to events, which have a `@topic` annotation.
- _[cds-runtime@2.1.0]_ Messaging: The syntax to emit events with headers changed:

  ```js
  srv.emit({ event: 'yourEvent',
             data: { some: 'data' },
             headers: { some: 'headers' }})
  ```

- _[cds-runtime@2.1.0]_ Messaging: The default file for `file-based-messaging` is _~/.cds-msg-box_.
- _[cds-runtime@2.1.0]_ Streamlined handler registration: `srv.before/on/after(<event>, <entity>?, <handler>)`
  - Event and handler are mandatory, entity must be omitted if unbound action/function (CREATE, READ, UPDATE, DELETE are considered to be bound)
  - Event and entity may be arrayed
  - `srv.before/on/after(*, <handler>)` matches all as shorthand
- _[cds-runtime@2.1.0]_ `INSERT` statements return an object or array of objects (in case of bulk) with the number of affected rows as result of `valueOf()`, as well as the keys of the inserted entities:

  ```js
  const res = await srv.run(INSERT.into('Books').entries([{ ID: 1, title: 'one' }, { ID: 2, title: 'two' }]))
  res > 1 // > true
  res.keys // > [{ ID: 1 }, { ID: 2 }]
  ```

- _[cds-runtime@2.0.3]_ on() function for joins doesn't support the simple conditions like on(x, =, y) anymore. Only fluent expressions and object predicates are supported.
- _[cds-runtime@2.0.2]_ CQN returned for req.query changed — for requests with path expressions the returned CQN of req.query is changed to a simplified format. For `GET /Authors(150)/books` the CQN contains the path in `.from` instead of an `exists` clause in `.where`.

```js
{ SELECT:  {  from: { "ref": [
        {
          "id": "AdminService.Authors",
          "where": [ { "val": 150 } ]
        },
      "books"
      ] } } }
```

- _[cds-runtime@2.0.2]_ Authorizations as whitelist: if any restrictions exist for the target, all not explicitly allowed operations are forbidden (for example, `@restrict: [{ grant: 'READ', ... }]` -> everything but `READ` is forbidden for all, including bound actions and functions)
- _[cds-runtime@2.0.2]_ Applicable `@requires` and `@restrict` definitions concatenated by AND
- _[cds-runtime@2.0.2]_ Reference to undefined XSUAA user attribute in `@restrict.where` results in forbidden
- _[cds-runtime@2.0.2]_ `req.event` for unbound actions and functions is provided without service prefix
- _[cds-runtime@2.0.2]_ Increased logging in production (temporarily until revised logging concept is implemented)
- _[cds-runtime@2.0.2]_ `cds.serve(..., { passport: [...] }` -> `cds.serve(..., { auth: [...] }`
- _[cds-runtime@2.0.1]_ Passport strategy whitelist: `mock` and `JWT`
- _[cds-runtime@2.0.1]_ Authentication not needed for calls to a service's root or metadata endpoints
- _[cds-runtime@2.0.1]_ Support for "public" entities and actions (that means, no restrictions) in services without `@requires` but other entities and/or actions with `@restrict`
- _[cds-runtime@2.0.0]_ Update major version number
- _[cds-runtime@1.2.0]_ Slightly improved performance for `$expand`
- _[cds-runtime@1.2.0]_ Return key values (single key only) of created entries instead of number of affected rows
- _[cds-runtime@1.2.0]_ Annotations `@cds.onInsert` and `@cds.onUpdate` ignore values from the request
- _[cds-runtime@1.2.0]_ Processing of read-only values moved to initial before handler
- _[cds-runtime@1.2.0]_ Aligned handling of virtual, computed, read-only, immutable with java runtime
- _[cds-runtime@1.2.0]_ Allow deep insert on to one association with non-key property, the non-key property is silently ignored
- _[cds-sidecar-client@1.1.6]_ Login/logout: Improved logging
- _[cds-sidecar-client@1.1.6]_ Login/logout: Renamed command line options for clarity
- _[cds-sidecar-client@1.1.6]_ Login/logout: Changed location of settings files to adhere to platform standards

### Fixed

- _[cds-dk@2.0.8]_ Fixed `cds add mta` for java projects. The Spring Cloud Profile is set by default for Java apps in order to enable the SAP HANA service binding, otherwise the sqlite db would still be used at runtime.
  The environment variable `JBP_CONFIG_RESOURCE_CONFIGURATION` required by the classic Java runtime has been removed.
- _[cds-dk@2.0.7]_ Fixed `cds import` to support imports from symlinked sources
- _[cds-dk@2.0.7]_ Fixing bug in `cds init` and `cds add` when using multiple features separated by comma.
- _[cds-dk@2.0.7]_ Fixing missing log output bug in `cds init` and `cds add` when using feature `samples`.
- _[cds-dk@2.0.7]_ `cds add mta` does no longer crash if no _package.json_ file exists.
- _[cds-dk@1.8.6]_ Simplified `cds env` calculation during `cds init` and `cds add`.
- _[cds-dk@1.8.4]_ An issue in `@sap/edm-converters` with missing entity sets
- _[cds-dk@1.8.2]_ An issue in `@sap/edm-converters` with missing entity sets
- _[cds-dk@1.8.1]_ An issue in `@sap/edm-converters` with missing entity sets
- _[vscode-cds@2.4.0]_ enum keyword was wrongly syntax highlighted
- _[vscode-cds@2.4.0]_ when an ignored source file is closed, potential messages are wiped
- _[vscode-cds@2.4.0]_ annotations of extensions weren't indexed
- _[vscode-cds@2.4.0]_ bug fixes
- _[vscode-cds@2.3.3]_ syntax highlighting: colorize identifiers, including variants delimited with \![...]
- _[vscode-cds@2.3.3]_ minor clean-up in welcome page handling
- _[cds-compiler@1.35.0]_ Properly consider targets of compositions in `mixin`s to be autoexposed.
- _[cds-compiler@1.35.0]_ Uniformly limit propagation of `@cds.autoexposed`, that means, there isn't inheritance from a query source navigating along an association. Previously, compiling a compiled model could lead to new autoexposed entities.
- _[cds-compiler@1.35.0]_ OData:
  - V2: Distribute various `@sap` specific annotations to the entity container.
  - Always set attribute `Nullable` on properties of type `Collection()`.
- _[cds-compiler@1.35.0]_ Don't dump with illegal references in explicit `on` conditions of redirections;
  properly report them via error messages.
- _[cds-compiler@1.35.0]_ forHana: Correctly flatten managed associations as foreign keys used in the definition.
  of another managed association.
- _[cds-compiler@1.35.0]_ OData: Don't render aspects as `edm.ComplexType`.
- _[cds-compiler@1.35.0]_ parseCdl: Fix missing extensions in files that extend unknown services/contexts.
- _[cds-compiler@1.35.0]_ OData: Don't render an EDM document in case of raised errors
- _[cds-compiler@1.35.0]_ to.cdl: Aspects are now correctly rendered as aspects and not as types
- _[cds-compiler@1.35.0]_ SAP HANA/SQLite: Correctly handle already resolved types when a cds.linked CSN is passed in
- _[cds-compiler@1.35.0]_ SAP HANA/SQLite: Ensure that all elements in a Draft are nonvirtual
- _[cds-compiler@1.35.0]_ An error is emitted if parameters in functions/actions have a default value as it isn't yet supported.
  For example by using `type of E:element` where `element` has a default value.
- _[cds-compiler@1.35.0]_ OData V2: Derived scalar types aren't rendered as `<edmx:TypeDefinition>`, so no annotation assignments to
  such carriers must be rendered.
- _[cds-compiler@1.35.0]_ SAP HANA/SQLite: Fixed a bug when flattening structured elements - instead of a human-readable error, an exception was thrown.
- _[cds-compiler@1.35.0]_ `doc` comments in CDL now support Windows-style line breaks (CRLF). They're replaced with `\n` in CSN.
- _[cds-compiler@1.35.0]_ `toCdl` no longer renders a `*` column if no columns are used in the original source.
- _[cds-compiler@1.35.0]_ Types that have both `type` and `items`/`elements` properties in CSN are now checked to avoid
  mismatches if an unstructured / non-arrayed type is referenced but `items`/`elements` exists.
- _[cds-compiler@1.35.0]_ OData:
  - Correctly render CRLF and LF to **&#xa;** in EDMX
- _[cds-compiler@1.35.0]_ Memory usage improvement - compile messages with id `ref-undefined-excluding` uses much less memory.
- _[cds-compiler@1.35.0]_ SAP HANA/SQL: Validate ON conditions of mixin association definitions in all subqueries
- _[cds-compiler@1.35.0]_ OData V2: Assign various `@sap` annotations to the `<edmx:EntitySet>` and `<edmx:AssociationSet>`
  if such annotations are assigned to CDS entities or associations.
- _[cds-compiler@1.35.0]_ OData V4 Structured: Omit foreign keys of managed associations that establish the containment relationship to
  a container, if this association was declared to be primary key.
- _[cds-compiler@1.35.0]_ OData: Warn about non-integer enums as they aren't supported by OData, yet.
- _[cds-compiler@1.35.0]_ Warn about string values in integer enums and vice versa.
- _[cds-compiler@1.35.0]_ OData:
  - Render vocabulary `<edmx:Reference>` and `<edmx:Include>` if vocabulary namespace was used.
  - Reduce memory consumption in EDM Renderer.
  - Render annotations for navigation properties if association is annotated with `@cds.api.ignore: true`.
- _[cds-compiler@1.35.0]_ Memory usage improvement - compile messages don't inherit from Error anymore.
- _[cds-compiler@1.35.0]_ SAP HANA types in annotation assignments work again.
- _[cds-compiler@1.35.0]_ SAP HANA/SQL: Correctly handle temporal in conjunction with namespaces.
- _[cds-compiler@1.35.0]_ Fix a bug in Association to Join translation that prevents exposing managed associations via subqueries.
- _[cds-compiler@1.35.0]_ The CSN `val` property is now allowed in enum element extensions. Such CSN can be
  generated using the `parseCdl` mode and it's now compilable.
- _[cds-compiler@1.35.0]_ Again allow negative values as enum values, fixing a regression introduced with v1.24.6.
- _[cds-compiler@1.35.0]_ OData: Correctly handle associations in arrayed elements (keyword `many`).
- _[cds-compiler@1.35.0]_ Annotation assignment checks now recognize SAP HANA types.
- _[cds@4.1.5]_ Fiori preview is now working again with the latest version of SAP UI5.
- _[cds@4.1.5]_ **Use latest SAP CommonCryptoLib help** &mdash; when SAP CommonCryptoLib is missing during `cds deploy --to hana`.
- _[cds@4.1.5]_ `sql_mapping` is only written to _csn.json_ if the classic Java runtime and no default naming is used.
- _[cds@4.1.5]_ Fiori dev support in `cds run` now also honors `/v2` URLs.  These are installed by default by the `@sap/cds-odata-v2-adapter-proxy`.
- _[cds@4.1.5]_ npm scripts that wrap around cds-dk commands like `cds watch` now also work on Windows.  Previously they couldn't find the cds command.
- _[cds@4.1.5]_ When extracting the base model of a multi-tenant application `cds build` now ensures that only files having project scope are copied, a warning is logged otherwise.
- _[cds@4.1.5]_ `cds build` now no longer crashes if exactly one custom language is given in `options.lang` of the `java-cf` build task.
- _[cds@4.1.5]_ `cds compile` now fails with a non-zero exit code in case of compilation errors.
- _[cds@3.34.2]_ The `UI.Identification` annotation for `sap.common.CodeList` got a correct value, pointing to its `name` element.
- _[cds@3.34.2]_ Configuration `requires.<foo>.credentials.destination` is now preserved again when running with `VCAP_SERVICES`.  In version 3.34.1, it was cleared.
- _[cds@3.34.2]_ Entities annotated with `@cds.persistence.skip:if-unused` (like `sap.common.Languages`) now again are skipped when compiling to SAP HANA output.  This got broken in previous versions when using the new compiler APIs.
- _[cds@3.34.2]_ `sql_mapping` is again written to _csn.json_ as it's required by classic Java runtime.
- _[cds@3.34.2]_ _default-env.json_ is now read even in production, which is in line with the behavior of other modules that honor this file.  Real prod environments like CF will still overwrite these defaults.
- _[cds@3.34.2]_ `cds build` caused error `invalid option` &mdash; when passing command line options like `log-level`, `src`, or `for`.
- _[cds.java@1.8.1]_ Fixed a bug that caused a `NullPointerException` when opening a new transaction in some scenarios.
- _[cds.java@1.8.1]_ Fixed a bug that caused a `IllegalStateException` during application startup, when the property `cds.security.xsuaa.serviceName` was specified.
- _[cds.java@1.8.0]_ The error message that occurs, when an OData V4 request payload is invalid, now again contains a hint, which field is invalid.
- _[cds.java@1.8.0]_ Fixed a bug, that caused the `.gitignore` file to not be part of new projects generated by the archetype.
- _[cds.java@1.8.0]_ Fixed a bug in goal `generate` of cds-maven-plugin, that caused using a wrong _csn.json_ for Java source code generation.
- _[cds.java@1.8.0]_ Fixed performance problems that could occur when querying a draft enabled entity
- _[cds.java@1.8.0]_ Fixed a bug where fields in result were removed when ordering a draft enabled entity
- _[cds.java@1.8.0]_ Fixed expands from nondraft to draft entity
- _[cds.java@1.8.0]_ Fixed usage of subqueries for draft protection where user information wasn't provided through parameters but plain strings
- _[cds.java@1.8.0]_ Fixed a bug that caused queries using `COUNT(*)`, for example, OData's `/$count` to fail on SAP HANA databases
- _[cds.java@1.8.0]_ Fixed a bug that caused PUT requests and actions to fail on etag-enabled entities on SAP HANA.
- _[cds.java@1.8.0]_ Fixed a bug that caused a `ConcurrentModificationException`, when reading entity collection through OData V4.
- _[cds.java@1.8.0]_ Fixed a bug that caused initialization of a transaction, when accessing the `CdsDataStore` from the `PersistenceService`.
- _[cds.java@1.8.0]_ Ensured that `afterClose()` of a `ChangeSetListener` is called, even if the completion of the ChangeSet fails.
- _[cds.java@1.8.0]_ The `UPDATE` event no longer changes draft-enabled entities in draft-mode (`IsActiveEntity=false`).
- _[cds4j@1.12.0]_ Improve parameter handling
- _[cds4j@1.12.0]_ Improve Performance
  - Suppress additional query for inline count if possible
  - SQL generation
  - Finding annotations
  - Use joins to expand to-one associations
- _[cds-runtime@2.1.5]_ `req._.req` in `SAVE` handler
- _[cds-runtime@2.1.5]_ Insert duplicate data during deep update
- _[cds-runtime@2.1.5]_ SAP HANA: prefer `this.options.credentials`
- _[cds-runtime@2.1.5]_ `$orderBy` in case of `DRAFT` with `Union`
- _[cds-runtime@2.1.5]_ fixed POST via multiple navigations
- _[cds-runtime@2.1.4]_ Large numbers of expands (>26)
- _[cds-runtime@2.1.4]_ Reference integrity check for `DELETE`
- _[cds-runtime@2.1.4]_ Localized in combination with draft
- _[cds-runtime@2.1.4]_ Propagate @cds.localized:false during deep reads (currently limited to one expand)
- _[cds-runtime@2.1.4]_ Fetch specific credentials from multiple xsuaa bindings via `requires.uaa.vcap`
- _[cds-runtime@2.1.4]_ Static values in custom backlinks of compositions
- _[cds-runtime@2.1.3]_ Streaming of null values and not found entities
- _[cds-runtime@2.1.3]_ Temporal session contexts on SAP HANA
- _[cds-runtime@2.1.2]_ SAP HANA credentials handling
- _[cds-runtime@2.1.1]_ SAP HANA pooling with instance manager
- _[cds-runtime@2.1.0]_ Retrieve performance information via `sap-statistics` header in case of batch requests
- _[cds-runtime@2.1.0]_ Direct user authentication challenges in case of /$batch
- _[cds-runtime@2.1.0]_ HTTP error codes from custom handler aren't filtered anymore if in 300...500 range
- _[cds-runtime@2.1.0]_ following projection with undefined name in target entity
- _[cds-runtime@2.1.0]_ Lists and null values in where with fluent expressions
- _[cds-runtime@2.0.3]_ SAP Event Mesh: Received messages are correctly decoded
- _[cds-runtime@2.0.3]_ Reading single properties of draft enabled entities via navigations e. g. `/E0(ID=<uuid>,IsActiveEntity=false)/e1(ID=<uuid>,IsActiveEntity=false)/property`
- _[cds-runtime@2.0.3]_ not supported transformation in groupby throws cryptic error
- _[cds-runtime@2.0.3]_ etag check only if odata request
- _[cds-runtime@2.0.3]_ Reading single properties of draft enabled entities via navigations, for example, `/E0(ID=<uuid>,IsActiveEntity=false)/e1(ID=<uuid>,IsActiveEntity=false)/property`
- _[cds-runtime@2.0.3]_ Statements if path expression contains keys of type `cds.Timestamp`, `cds.DateTime`, or `cds.Time`
- _[cds-runtime@2.0.3]_ `$filter` lambda `any` operator if no argument is provided
- _[cds-runtime@2.0.3]_ User attributes in `req.user.attr` merge `info.userInfo` and `info.userAttributes` (authentication strategy `JWT`)
- _[cds-runtime@2.0.3]_ User authentication challenges
- _[cds-runtime@2.0.2]_ `INSERT.into.as(SELECT.from...)` with `SELECT` containing placeholders
- _[cds-runtime@2.0.2]_ Requests on a navigation to many with key provided returns 404 if the resource doesn't exist
- _[cds-runtime@2.0.2]_ POST/PATCH requests on `Composition of many` with backlink association as key
- _[cds-runtime@2.0.2]_ Path expressions on SAP HANA are now flat and not structured anymore
- _[cds-runtime@2.0.2]_ `$expand` on `Composition of many` with backlink association as key
- _[cds-runtime@2.0.2]_ Roles from scopes including "."
- _[cds-runtime@2.0.2]_ Ignore unknown arrayed column during input validation
- _[cds-runtime@2.0.2]_ Too early client release
- _[cds-runtime@2.0.2]_ Pool configurations with default values can be set to `0`
- _[cds-runtime@2.0.1]_ `target` added to assert errors
- _[cds-runtime@1.2.0]_ Resolved some performance issues with `@sap/hana-client`
- _[cds-runtime@1.2.0]_ `$filter=false or ...` is now possible
- _[cds-runtime@1.2.0]_ Custom handler registration in multi tenant scenario
- _[cds-runtime@1.2.0]_ Alias in associations wasn't processed correctly in post processing
- _[cds-runtime@1.2.0]_ `$search` is now applied on the query result of `$apply` as specified in OData V4 spec
- _[cds-runtime@1.2.0]_ `evictionRunIntervalMillisForPools` is now treated properly
- _[cds-runtime@1.2.0]_ Searching for `_` or `%` in `$filter` queries with `contains`/`startswith`/`endswith`
- _[cds-runtime@1.2.0]_ Insert of to-one associations with structured elements
- _[cds-sidecar-client@1.1.6]_ Activate: Corrected exclusion of files from upload
- _[cds-odata-v2-adapter-proxy@1.4.40]_ Fix aggregation grouping on filtered elements
- _[cds-odata-v2-adapter-proxy@1.4.40]_ Support `sap:` analytical annotations
- _[cds-odata-v2-adapter-proxy@1.4.39]_ Move annotation ContentDisposition.Filename to data element
- _[cds-odata-v2-adapter-proxy@1.4.39]_ Improve stability of content disposition
- _[cds-odata-v2-adapter-proxy@1.4.38]_ Fix `base` proxy option (follow-up)

### Removed

- _[cds@4.1.5]_ `db.disconnect()` &rarr; no replacement; no need to disconnect before shutdown.
- _[cds@4.1.5]_ `db.run(()=>{})` &rarr; use `cds.run([...multiple queries])` instead.

> The previous changes affect undocumented internal implementations, and hence shouldn't affect CAP-based projects. Nevertheless, they're listed here for your reference.

- _[cds-runtime@2.1.1]_ `req.isDraftChange`,  , and `req.draftMetadata` in draft-related handlers
- _[cds-runtime@2.1.0]_ Support for run block (`tx.run(() => {})`)
- _[cds-runtime@2.0.3]_ Support for nested user attributes in `@restrict.where`, for example, `$user.name.familyName`
- _[cds-runtime@2.0.2]_ Support for annotation `@cds.persistence.name`
- _[cds-runtime@2.0.2]_ Deprecated SQL dialect `hdbcds`

## June 2020

### Added

- _[cap.java@1.7.0]_ Adding CDS Element annotation `@assert.range` on enum elements now validates the input against valid enum values.
- _[cap.java@1.7.0]_ CQN statements querying services defined in the CDS model are augmented with an order by automatically (implicit sorting). The default order by uses the key elements of the target entity and, if the target is a view, the order by definition of the view.
- _[cap.java@1.7.0]_ Read requests on OData singletons are now supported. Limitations are, that navigations from singletons to other entities (for example, `OldestAuthor/books` and CRUD operations don't work out of the box yet.
- _[cap.java@1.7.0]_ ETag conditions on `$metadata` endpoints are now evaluated. OData Responses also now contain the `@metadataEtag` field.
- _[cap.java@1.7.0]_ ETag conditions on OData bound action or function requests are now evaluated.
- _[cap.java@1.7.0]_ ETag conditions evaluated through selection, now lock the affected row for update.
- _[cap.java@1.7.0]_ The OData entity response field `@etag` (>= 4.01) or `@odata.etag` (4.0) is now set when returning collections of entities or expanded entities that have an ETag.
- _[cap.java@1.7.0]_ OData collection requests now automatically apply implicit server-driven paging, if the number of requested entities exceeds a maximum value of 1,000. The maximum value can be controlled through property `cds.query.limit.max` or annotation `@cds.query.limit.max`. In addition, a default page size can be set through `cds.query.limit.default` and `@cds.query.limit.default`.
- _[cap.java@1.7.0]_ The OData system query parameters (for example, `$select`, `$expand`) are now available through the method `ParameterInfo.getQueryParameters()` when processing OData requests.
- _[cap.java@1.7.0]_ UUIDs in OData requests are now normalized by converting them to lowercase.
- _[cap.java@1.7.0]_ The multitenancy feature now supports asynchronous subscriptions.
- _[cap.java@1.7.0]_ New API to register event handler methods on all services or on all services of a specific type.
- _[cap.java@1.7.0]_ New API to register services and event handlers as additional modules loaded through `ServiceLoader`.
- _[cap.java@1.7.0]_ New API to allow creation of custom services, and to enable them to be registered as Spring beans directly.
- _[cap.java@1.7.0]_ Enabled running CAP applications without a JDBC datasource configuration.
- _[cap.java@1.7.0]_ Added support for `$orderby`, `$top`, and `$skip` for draft enabled entities.
- _[cap.java@1.7.0]_ Added several new goals to CDS Maven Plugin:
  - Install Node.js in a specified version
  - Install CDS Development Kit in a specified version
  - Perform arbitrary CDS commands on a CAP Java project
  - Generate Java classes for type safe access
  - Clean your CAP Java project from artifacts of previous build
- _[cap.java@1.7.0]_ Adapted `cds-services-archetype` to `use cds-maven-plugin` in generated CAP Java projects
- _[cds4j@1.11.0]_ Support parameterized views on SAP HANA
- _[cds4j@1.11.0]_ Support limit and offset in expand
- _[cds4j@1.11.0]_ Support modifying limit and offset of select
- _[cds4j@1.11.0]_ Support default `$now` (Instant) value on insert
- _[cds4j@1.11.0]_ Result Builder API
- _[odata-server@1.8.1]_ license file: developer-license-3.1.txt
- _[vscode-cds@2.3.3]_ added properties `dest` and `mtx` to code completion list for `tasks` and `for` in CAP project _package.json_ files

### Changed

- _[cap.java@1.7.0]_ Replaced the `CdsRuntimeBuilder` with the `CdsRuntimeConfigurer`, allowing the `CdsRuntime` to be incrementally built and configured.
- _[cds4j@1.11.0]_ Lock statements on SQLite are silently ignored and executed as select queries instead of throwing an exception.

### Fixed

- _[cap.java@1.7.0]_ Fixed a bug where exception messages of non-framework exceptions were displayed to the end user, despite noncustom error messages being disabled.
- _[cap.java@1.7.0]_ Fixed a bug where a null OData function argument value caused a `NullPointerException`.
- _[cap.java@1.7.0]_ Fixed a misleading error message when patching an entity in draft state with a nested JSON structure.
- _[cap.java@1.7.0]_ Fixed a bug where multiple Spring contexts caused the CAP spring integration to prevent the app from being started.
- _[cds4j@1.11.0]_ Throw `UnsupportedOperationException` on deep updates with more than one entry.
- _[cds4j@1.11.0]_ SQL missing parameter exception when using literals in `orderBy`.
- _[cds4j@1.11.0]_ Allow to modify `CqnElementRefs` w/o alias through `CqnModifier.selectListItem`.
- _[cds4j@1.11.0]_ Remove unused `CqnModifier.expand` w/o `orderBy` and `limit`.
- _[odata-server@1.8.2]_ added license file to "files" in package.json
- _[cds-odata-v2-adapter-proxy@1.4.37]_ Replace 'pathRewrite' option by 'targetPath' option
- _[cds-odata-v2-adapter-proxy@1.4.37]_ Fix 'base' proxy option
- _[cds-odata-v2-adapter-proxy@1.4.37]_ Respect OData annotation '@odata.Type'
- _[cds-odata-v2-adapter-proxy@1.4.37]_ Alternative annotation @Common.ContentDisposition.Filename
- _[cds-odata-v2-adapter-proxy@1.4.36]_ Fix escaping of quote for function parameters
- _[cds-odata-v2-adapter-proxy@1.4.36]_ SAP Fiori Elements v2 sample app
- _[cds-odata-v2-adapter-proxy@1.4.35]_ Fix reserved uri characters (follow-up)
- _[cds-odata-v2-adapter-proxy@1.4.34]_ Fix entity key with (encoded) reserved uri characters

## May 2020

### Added

- _[cds.java@1.6.0]_ Enhanced temporal data support: allow date only values (for example, `2020-04-24`) for `sap-valid-from`, `sap-valid-to`, and `sap-valid-at` request parameters
- _[cds.java@1.6.0]_ Support OData V4 GET requests with `$value` URI suffix on primitive entity properties.
- _[cds.java@1.6.0]_ Adding CDS Element annotation `@assert.format` with a Regular Expression now validates string elements.
- _[cds.java@1.6.0]_ Adding CDS Element annotation `@assert.range` now validates ranges on simple data types, numbers, and temporal types.
- _[cds.java@1.6.0]_ Grants for draft events such as `draftEdit`, `DRAFT_CANCEL`, or `DRAFT_NEW` etc. are derived from grants of standard CQN events. For instance, granted event `CREATE` implies also `DRAFT_NEW`. Before that, draft events had to be listed in all relevant `@restrict` annotations in order to allow access.
- _[cds.java@1.6.0]_ Enhanced CSV file import with configurable file locations, more flexible header line delimiters (';' or ',') and more detailed error messages.
- _[cds.java@1.6.0]_ Added a main class to start a DB deployment in MT scenario, which could be executed as task in Cloud Foundry.
- _[cds4j@1.10.0]_ Copy & modify CQL statements through `CQL.copy`
- _[cds4j@1.10.0]_ Support count in CQL builder through `CQL.count()`
- _[cds4j@1.10.0]_ Support case insensitive contains
- _[cds4j@1.10.0]_ Support collation on SAP HANA providing lexicographical comparison and sorting of strings
- _[cds4j@1.10.0]_ Support case-insensitive comparison and sorting of strings on SQLite
- _[cds4j@1.10.0]_ Streaming for `LargeString` and `LargeBinary` types annotated with `@Core.MediaType`
- _[cds4j@1.10.0]_ Support `saptrc` and `sappsd` locales and remove default `en` locale
- _[cds4j@1.10.0]_ Generate UUID values on input if no value is provided
- _[cds4j@1.10.0]_ Extend `CqnStatement` with is/as methods
- _[cds4j@1.10.0]_ Support `CqnUpdate` in `CqnAnalyzer`
- _[cds4j@1.10.0]_ Support new `@cds.search` annotation
- _[cds4j@1.10.0]_ Reflection API
  - Support reading CDS Models from CSN
  - Read parameters of views
  - Read Enum types
  - Read meta properties from CSN
- _[cds4j@1.10.0]_ Code Generator
  - Support Arrayed Types
  - Support Streaming of Media Types
- _[odata-server@1.8.0]_ support for server-driven paging and next links in expanded navigation properties
- _[odata-server@1.8.0]_ support for $count option in $expand
- _[odata-server@1.8.0]_ allows double quotes around * in If-Match and If-None-Match headers

### Changed

- _[cds.java@1.6.0]_ Instance-based authorization is active by default now, that means, `where` conditions of `@restrict`-annotated entities are evaluated for events `READ`, `UPDATE`, and `DELETE`. There are still some limitations with paths in the `where` condition.
- _[cds4j@1.10.0]_ Lowercase UUID values on input
- _[cds4j@1.10.0]_ Deprecate usage of expressions in limit and offset
- _[cds4j@1.10.0]_ Remove null values from data json
- _[cds4j@1.10.0]_ Refactor `SelectListItems`
- _[cds@3.34.2]_ Use `cds.hana.deploy-format`=`hdbtable` instead of `cds.hana.syntax` to switch deployment from `hdbcds` to `hdbtable` for SAP HANA Cloud.
- _[cds@3.34.2]_ `cds run` now supports relative `dataSource` URLs in SAP UI5 manifests again, so that UI5 apps can be served w/o App Router.  This support is only active in development mode.
- _[cds@3.34.2]_ `cds deploy --to hana` changes kind to `hana` only if it isn't already `sql`
- _[cds-dk@1.8.5]_ `cds init` uses latest `Maven Java archetype` version `1.6.0` for creating Java projects.
- _[cds-dk@1.8.4]_ `cds init` uses latest `Maven Java archetype` version `1.5.2` for creating Java projects.
- _[odata-server@1.8.0]_ log stacktrace for server errors with level error (#107)

### Fixed

- _[cds.java@1.6.0]_ Fixed server error on malformed OData requests with unknown actions or functions.
- _[cds.java@1.6.0]_ The `where` condition of `@restrict` won't apply anymore for draft entities on events `READ`, `DELETE`, and `UPDATE`. This allows to create and edit drafts not matching the condition.
- _[cds.java@1.6.0]_ The default ON-handlers for AuthorizationService now have a proper default order number, which allows to override them.
- _[cds.java@1.6.0]_ Improved the error message for unsupported star expand on draft enabled entities
- _[cds.java@1.5.2]_ Fixed a bug where inlineCount wasn't set correctly when the $count OData function was used
- _[cds.java@1.5.2]_ Fixed a bug where the handling of the CDS Maven Plugin version in the archetype wasn't correct
- _[cds.java@1.5.1]_ Generate missing Javadoc and Source JARs for `cds-maven-plugin` to enable upload to central Maven repository.
- _[cds4j@1.10.0]_ Fix date conversion in multithreading scenarios
- _[cds@3.34.2]_ The `UI.Identification` annotation for `sap.common.CodeList` got a correct value, pointing to its `name` element.
- _[cds@3.34.2]_ Configuration `requires.<foo>.credentials.destination` is now preserved again when running with `VCAP_SERVICES`.  In version 3.34.1, it was cleared.
- _[cds@3.34.2]_ Entities annotated with `@cds.persistence.skip:if-unused` (like `sap.common.Languages`) now again are skipped when compiling to SAP HANA output.  This got broken in previous versions when using the new compiler APIs.
- _[cds@3.34.2]_ `sql_mapping` is again written to _csn.json_ as it's required by classic Java runtime.
- _[cds@3.34.2]_ _default-env.json_ is now read even in production, which is in line with the behavior of other modules that honor this file.  Real prod environments like CF will still overwrite these defaults.
- _[cds@3.34.2]_ `cds build` caused error `invalid option` &mdash; when passing command line options like `log-level`, `src`, or `for`.
- _[cds-dk@1.8.2]_ An issue in `@sap/edm-converters` with missing entity sets
- _[odata-server@1.8.0]_ status code 200 OK instead of 304 Not Modified for GET requests without If-None-Match header (#106)
- _[odata-server@1.8.0]_ $expand with complex-property path
- _[cds-odata-v2-adapter-proxy@1.4.33]_ Service Document in XML format (default)
- _[cds-odata-v2-adapter-proxy@1.4.33]_ Update dependencies
- _[cds-odata-v2-adapter-proxy@1.4.33]_ Disable network log per default
- _[cds-odata-v2-adapter-proxy@1.4.32]_ Update dependencies
- _[cds-odata-v2-adapter-proxy@1.4.32]_ Update README on localization
- _[cds-odata-v2-adapter-proxy@1.4.32]_ Toggle switch for network logging
- _[cds-odata-v2-adapter-proxy@1.4.32]_ Allow SAP HANA SYSUUID as UUID
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Align model resolving
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Fix data types conversion for numbers
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Fix data types recognition in functions
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Support response compression
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Prevent unnecessary data serialization for tracing
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Performance optimization for entity key/uri calculation
- _[cds-odata-v2-adapter-proxy@1.4.31]_ General performance optimizations
- _[cds-odata-v2-adapter-proxy@1.4.31]_ Update dependencies
- _[cds-odata-v2-adapter-proxy@1.4.30]_ Make function call with request body more robust
- _[cds-odata-v2-adapter-proxy@1.4.30]_ Fallback severity for detail messages to error
- _[cds-odata-v2-adapter-proxy@1.4.30]_ Keep request body for action call
- _[cds-odata-v2-adapter-proxy@1.4.30]_ Update README on Cloud Foundry deployment

## April 2020

### Added

- _[cds.java@1.5.0]_ Draft locks now expire after a default timeout of 15 minutes. The locked entity can be reclaimed by other users after that timeout. The timeout duration is configurable via `cds.drafts.cancellationTimeout`
- _[cds.java@1.5.0]_ ETags are now supported via OData V4
- _[cds.java@1.5.0]_ Support for `$select` and `$expand` on actions and functions in OData V4, ensuring compatibility with SAP UI5 >= 1.76.0
- _[cds.java@1.5.0]_ OData V4 error messages listed in the details section of an error response now have the fields `@Common.numericSeverity` and optionally `@Common.longtextUrl`, improving SAP Fiori compatibility
- _[cds.java@1.5.0]_ A Spring property metadata files is now part of our `cds-framework-spring-boot` JAR. This enables code completion and suggestions of `cds` properties in Spring configuration files, if corresponding IDE plugins are installed (see <https://spring.io/tools>)
- _[cds.java@1.5.0]_ Added localization capabilities for error messages written by the CAP Java SDK
- _[cds.java@1.5.0]_ Added possibility to disable non-localized error messages and only return HTTP-based status codes to clients by setting `cds.errors.stackMessages.enabled: false`
- _[cds.java@1.5.0]_ Added possibility to log enhanced error messages, indicating more information about the event that caused the error and its parameters, by setting `cds.errors.extended: true`
- _[cds.java@1.5.0]_ Enabled type-safe access to additional attributes specific to an authentication strategy (for example, email attribute in JWT). These attributes can also be mocked in the mock-user scenario, using the property `additional` in the mock-user definition.
- _[cds.java@1.5.0]_ Introduced a new `DRAFT_CREATE` event, which is triggered both by a `DRAFT_NEW` and `DRAFT_EDIT` event. Its ON handler by default persists the draft data in the draft table.
- _[cds.java@1.5.0]_ Added a new technical startup Service, which allows to register on events, triggered when the application is prepared (shortly before HTTP port is opened) or started
- _[cds.java@1.5.0]_ New maven plugin `cds-maven-plugin`, providing goals to add additional content to applications generated by the `cds-services-archetype`.
- _[cds.java@1.5.0]_ During archetype project generation, the option -DincludeIntegrationTest can be used to generate an additional integration-tests module.
- _[cds4j@1.9.0]_ Support inline count
- _[cds4j@1.9.0]_ Support where exists
- _[cds4j@1.9.0]_ Support default values for virtual elements
- _[cds4j@1.9.0]_ Support setting writes locks (not supported on SQLite)
- _[cds4j@1.9.0]_ Support `@cds.localized` annotation
- _[cds4j@1.9.0]_ Copy & modify CqnPredicates via `CQL.copy`
- _[cds4j@1.9.0]_ Enhance expression parser
- _[cds4j@1.9.0]_ Enhance copying of CqnStatements: copy refs
- _[cds4j@1.9.0]_ Enhance CqnAnalyzer to return root info and support extracting keys from `in` predicates
- _[cds4j@1.9.0]_ Add StructuredTypeRef with modifiable segments
- _[cds4j@1.9.0]_ Make ElementRef.segments() return modifiable RefSegment
- _[cds4j@1.9.0]_ Reflection API: Support Enum Types
- _[cds4j@1.9.0]_ Code Generator: `@cds.java.extends` annotation to define super-interfaces for generated accessor interfaces
- _[cds@3.34.0]_ `cds version` option `-ls` prints an `npm ls` subtree.
- _[cds@3.34.0]_ `cds serve` / `run` now also accept package names as arguments, for example, `cds serve --project @capire/bookshop`.
- _[cds@3.34.0]_ `cds compile` option `--parse` provides minimal, parsed-only CSN output.
- _[cds@3.34.0]_ New Node.js method `cds.compile.cdl()` allows compiling CDS sources in-process.
- _[cds@3.34.0]_ `cds build` now supports cds configuration `requires.db.kind:"sql"`, which allows seamless production deployments using SAP HANA db and development deployments using sqlite db.
- _[cds@3.34.0]_ Default maximum query size limit of 1000 (overridable via `@cds.query.limit.max`).
- _[cds@3.34.0]_ Improved error message during `cds deploy` on Windows when `SAP CommonCryptoLib` is missing.
- _[cds@3.34.0]_ `cds build` now checks that `entity-whitelist` and `service-whitelist` have been defined for SaaS applications - a warning is reported otherwise. `cds build` will fail if invalid entries exist.
- _[cds@3.34.0]_ Parameter `--vcap-file` lets `cds deploy --to hana` use an existing _default-env.json_ file for the deployment credentials, instead of always creating new credentials from Cloud Foundry. Note that this is a beta feature.
- _[cds@3.34.0]_ `cds build --log-level` allows to choose which messages to see, default log level is `warn`.
- _[cds@3.34.0]_ Labels of `@sap/cds/common` texts are now available in many languages
- _[cds-dk@1.8.0]_ `cds watch` now also accepts package names as arguments, for example, `cds w @capire/bookshop`.
- _[cds-dk@1.8.0]_ `cds add mta` now supports cds configuration `requires.db.kind:"sql"`, which allows seamless production deployments using SAP HANA db while keeping SQLite for local development scenario.
- _[cds-compiler@1.26.2]_ The client tool `cdsc` has a new option `--beta <list>`, which can be used to specify a comma-separated list of experimental features to be enabled.
- _[cds-compiler@1.26.2]_ CSN in parse-cdl mode now has a `requires` property that represents `using`s from CDL.
- _[cds-compiler@1.26.2]_ The client tool `cdsc` has a new command `parseCdl`, which returns a CSN that is close to the original CDL file. It doesn't resolve imports and doesn't apply extensions.
- _[cds-compiler@1.26.2]_ Unmanaged associations as primary keys are now warned about.
- _[cds-compiler@1.26.2]_ `localized` in combination with `key` is now warned about.
- _[cds-compiler@1.26.2]_ Enum values are now checked to only be either numbers or strings - a warning is raised.
- _[cds-compiler@1.26.2]_ Elements in mixin clauses that aren't_ unmanaged associations now produce an error.
- _[cds-compiler@1.26.2]_ Support function calls like `count( distinct ... )` and `count( all ... )`.
- _[cds-compiler@1.24.2 With option comments of the form  is preserved, if these comments
  appear at positions where annotation assignments are allowed. `doc` comments are propagated
  like annotations until an empty comment `/***/` disrupts the propagation.
- _[cds-compiler@1.26.2]_ OData:
  - Add new OData vocabularies `com.sap.vocabularies.Graph.v1` and `com.sap.vocabularies.ODM.v1`
  - With option `--odata-containment`, `parent` association and inferred key elements for
  `composition of <aspect>` as well as inferred keys of `_texts` entities aren't rendered.
  - OData V4: Produce primary key paths with length limited alias names.
- _[cds-compiler@1.26.2]_ Add new OData vocabulary `com.sap.vocabularies.odm.v1`
- _[cds-compiler@1.26.2]_ If an entity `E` with localized elements has the annotation `@fiori.draft.enabled`,
  a new element `ID_texts` of type `cds.UUID` is added to `E_texts` as the _only key_ and
  the annotation `@odata.draft.enabled` won't be set to false for `E.texts`.
- _[cds-compiler@1.26.2]_ A comment of the form `/**…*/` at "annotation positions" is now considered a doc comment;
  its "cleaned-up" text is put into the CSN as value of the property `doc`.
  In the OData/EDMX, it appears as value for the annotation `@Core.Description`.
- _[cds-lsp@3.3.0]_ uses global `@sap/cds/common` if locally not available
- _[odata-server@1.7.0]_ support for navigation properties in complex properties

### Changed

- _[cds.java@1.5.1]_ Reverted behavioral changes of PATCH, introduced with 1.5.0. Responses to PATCH request default to `return=representation` again, if no `Prefer` header is explicitly set.
- _[cds.java@1.5.0]_ The `DRAFT_EDIT` event now triggers `UPDATE` instead of an `UPSERT` event on the service to activate the edited draft. Event handlers currently registered on `UPSERT` therefore need to be registered on the `UPDATE` event as well.
- _[cds.java@1.5.0]_ Elements annotated with `@cds.on.insert` or `@cds.on.update` (`managed` aspect) are fully read-only on CDS-Service level. In addition, the PersistenceService only sets new values for these elements, if the key isn't yet present in the data map.
- _[cds.java@1.5.0]_ The OData V4 query option `$count=true` is now handled using `Select.inlineCount()`. This ensures that `READ` event handlers aren't triggered twice (once for reading the entities and once for calculating the count), in case `$count=true` is combined with `$skip` or `$top`.
- _[cds.java@1.5.0]_ Keys listed in the OData V4 URL aren't propagated to the query map (`context.getParameterInfo().getQueryParameter("key")`) anymore, but should be accessed via the CQN Analyzer now: `CqnAnalyzer.create(context.getModel()).analyze(context.getCqn().ref()).targetKeys().get("key")`
- _[cds.java@1.5.0]_ By default an OData V4 PATCH request doesn't return the updated entity in the response anymore. Set the request header `Prefer: return=representation` to ensure that the entity is returned.
- _[cds4j@1.9.0]_ Only return update data on row count > 0
- _[cds4j@1.9.0]_ Rename method to obtain lhs of CqnInPredicate to values()
- _[cds4j@1.9.0]_ Compare plain case-insensitively, allowing for 'AND' instead of 'and'
- _[cds@3.34.0]_ Node.js method `cds.parse()` has been changed to now truly return parsed-only models, with extensions not applied yet.
**Note:** If you need the former (erroneous) behavior, use `cds.compile.cdl` for that from now on.
- _[cds@3.34.0]_ Node.js method `cds.get()` now returns parsed-only models; same as `cds.parse()`.
- _[cds@3.34.0]_ `cds serve` / `run` / `watch` now reduce logging of details for the bound DB on connect, leading to less clutter.
- _[cds@3.34.0]_ Precision for `validTo` and `validFrom` defined in the `temporal` aspect in `@sap/cds/common` changed from `DateTime` to `Timestamp`.
- _[cds@3.34.0]_ Some administrative fields of SAP Fiori draft documents are now hidden on the UI.  The rest got labels.
- _[cds@3.34.0]_ Renamed cds configuration setting `features.messageLevel` to `log-level` to be consistent with command line option, for example, `cds build --log-level`.
- _[cds@3.34.0]_ `cds extend` and `cds activate` commands have been moved to `@sap/cds-dk`. `cds disconnect` has been moved there under a different name.
- _[cds-dk@1.8.0]_ Parameter `verbose` in `cds init` and `cds add` is now deprecated. Use environment variable `DEBUG=true` to obtain detailed output.
- _[cds-dk@1.8.0]_ `cds init` uses latest `Java archetype` version `1.4.0` for creating Java projects.
- _[cds-compiler@1.26.2]_ HANA/SQL:
  - Raise warnings `rewrite-not-supported` and `rewrite-undefined-key` to errors.
- _[cds-compiler@1.26.2]_ Compiler: Empty elements are now kept along for the propagation.
- _[cds-compiler@1.26.2]_ OData: Annotate all elements of `DraftAdministrativeData` with `@Common.Label: '{i18n>"Draft_<elementName>"}'`
  and elements 'DraftUUID', 'DraftIsCreatedByMe' and 'DraftIsProcessedByMe' with `@UI.Hidden`.
- _[cds-compiler@1.26.2]_ Downgrade `chained array of`-error to a warning
- _[cds-compiler@1.26.2]_ SQLite: Don't render implicit casts
- _[cds-compiler@1.26.2]_ OData:
  - Improve messages for misaligned forward/backlink associations in EDM generator
  - For V2 add annotations `@sap.creatable: false`, `@sap.updatable: false`, `@sap.deletable: false`,
  `@sap.pageable: false` to the Parameter EntityType and `@sap.creatable: false`, `@sap.updatable: false`,
  `@sap.deletable: false`, `@sap.addressable: false` to the Result EntityType.
  - Update vocabularies 'Common' and 'Graph' and 'ODM'.
- _[cds-lsp@3.3.2]_ removes optional odata annotation handler due to build issues
- _[cds-compiler@1.26.2]_ OData:
  - Change foreign key creation order for associations to respect their dependencies.
  - Use correct path during on-condition flattening.
  - Report error when using elements without types for **array of type of (element)** and similar definitions.
- _[cds-compiler@1.26.2]_ HANA/SQL:
  - Fix references to `null` enum values in default clauses.
- _[cds-compiler@1.26.2]_ Type arguments are now properly set in CSN when using parse-cdl mode.
- _[cds-compiler@1.26.2]_ Avoid unjust warning if the `extensions` property of an input CSN contains `extend` statements.
- _[cds-compiler@1.26.2]_ Compiler: `type of <unmanaged association>` is now handled correctly by raising an error.
- _[cds-compiler@1.26.2]_ Various messages mention more appropriate source locations.
- _[cds-compiler@1.26.2]_ Improve messages for `array of`
- _[cds-compiler@1.26.2]_ OData:
  - Render `array of` for ReturnType correctly
  - Report error for view fields with no type information early
  - Handle associations in structures with an association as explicit key
- _[cds-lsp@3.3.1]_ consumes cds-compiler 1.26.2
- _[cds-lsp@3.3.0]_ (alpha): diagnostics and hover support for external annotation providers

### Fixed

- _[cds.java@1.5.0]_ Fixed handling of authentication for actions and functions
- _[cds.java@1.5.0]_ Fixed processing of predefined filters sent by SAP Fiori draft UIs (for example "editing status" filter).
- _[cds.java@1.5.0]_ Fixed handling of mandatory associations to draft-enabled entities.
- _[cds.java@1.5.0]_ Fixed handling of draft-enabled child entities without a backlink association.
- _[cds.java@1.5.0]_ Fixed issues with transaction handling for OData V4 request not using a changeset.
- _[cds.java@1.5.0]_ Fixed handling of OData V4 actions with no return parameter and no input parameters.
- _[cds.java@1.5.0]_ Fixed handling of OData V4 `$count=true`, when specified with `$skip`, `$top` and `$search`
- _[cds.java@1.5.0]_ Fixed incorrect calculations of the OData V4 context URL
- _[cds.java@1.5.0]_ Fixed handling of CqnUpdate statements with more than one data entry.
- _[cds.java@1.5.0]_ Fixed handling of batch parameters in run methods for delete and update operations
- _[cds.java@1.5.0]_ Fixed a startup issue that could occur, when Spring Integration was used
- _[cds.java@1.5.0]_ Fixed internal server errors, when `@Capabilities` annotations reference an entity element, instead of a simple boolean. On server-side such capabilities not checked anymore, allowing at least SAP Fiori to interpret these parameter-bound capabilities.
- _[cds.java@1.5.0]_ Projects generated with the archetype now by default have the property `spring.test.context.cache.maxSize=1` set, which prevents issues with multiple CdsRuntime objects in different Spring application contexts.
- _[cds.java@1.5.0]_ Patterns in .gitignore generated by the archetype, now use `**/` as glob statement prefix, to ensure compatibility with other tools interpreting the .gitignore file (for example, npm publish)
- _[cds4j@1.9.0]_ Fix NPE on default $now
- _[cds4j@1.9.0]_ Fix serialization of CqnNull
- _[cds4j@1.9.0]_ Fix contains on ref not in select list
- _[cds4j@1.9.0]_ Improve exception on parsing instants
- _[cds4j@1.9.0]_ Avoid duplicates in deep search by using subqueries
- _[cds4j@1.9.0]_ Don't throw SQL exception on update with empty payload
- _[cds4j@1.9.0]_ Improve exception on parsing instants
- _[cds4j@1.9.0]_ Draft: Add security constraints to SiblingEntity association
- _[cds4j@1.9.0]_ Fix FK field computation for $self with unmanaged backlinks
- _[cds4j@1.9.0]_ Fix NPE in cds4j-multitenant MetaDataAccessorSingleMode
- _[cds4j@1.9.0]_ Throw CdsDataException on deep updates w/o key values
- _[cds@3.34.0]_ `cds build` - improvements in the area of error handling and error reporting.
- _[cds@3.34.0]_ `cds env` and Node.js runtime now properly complete configuration like `requires.db.kind.sql` with VCAP_SERVICES, so that in `production` an SAP HANA service is bound.
- _[cds@3.34.0]_ `cds build` now localizes edmx files properly if `cds.env.features.snapi` is turned on.
- _[cds@3.34.0]_ `cds deploy --to hana` no longer crashes if called with `NODE_ENV=production`.
- _[cds-dk@1.8.0]_ Fixing terminology in `cds init` and `cds add` console output.
- _[cds-dk@1.8.0]_ `cds init` is logging `cds env` output only in debug mode.
- _[cds-dk@1.8.0]_ Using `cds build` command in generated _mta.yaml_ file.
- _[cds-dk@1.8.0]_ Fixing Hana dependency during `cds init --add hana` for project type `java`.
- _[cds-dk@1.8.0]_ Fixing bug in `cds init` when `cds-dk` isn't installed globally.
- _[cds-dk@1.8.0]_ Fixing bug in `cds init` when calling log methods.
- _[cds-dk@1.8.0]_ Fixing `cds.env`object by attaching prototype chain.
- _[cds-compiler@1.26.2]_ OData:
  - Process correctly "type of".
  - Process correctly elements with underscore as prefix.
- _[cds-compiler@1.26.2]_ Preserve parameter list in localized convenience views.
- _[cds-compiler@1.26.2]_ Force usage of resolve@1.8.1 instead of semver to avoid issues with file cache
- _[cds-compiler@1.26.2]_ When not disabled by `@cds.autoexpose:false`, an entity used as composition target
  is auto-exposed in the current service;
  this didn't work always if the target was a _query_ entity.
- _[cds-compiler@1.26.2]_ Foreign key creation in odata flat-mode when following associations.
- _[cds-compiler@1.26.2]_ Rename `@description` to `@Core.Description` in all cases as part of the OData transformation of a CSN.
- _[cds-compiler@1.26.2]_ When generating extensions from EDMX annotations, handle correctly targets from an EntityContainer.
- _[cds-compiler@1.26.2]_ Apply service annotations in EDMX generation.
- _[cds-compiler@1.26.2]_ Resolve backlink mixin association usages uniformly in association to join translation.
- _[cds-compiler@1.26.2]_ HANA CDS: When casting a column to an enum type, don't render it as an enum
- _[cds-compiler@1.26.2]_ Ignore top-level CSN "annotations" like `@sql_mapping` in the CSN frontend.
- _[cds-compiler@1.26.2]_ OData: Key constraint checks for Draft enabled entities consider EDM exposed keys only.
- _[cds-compiler@1.26.2]_ Message level for draft key checks is raised to 'warning' again.
- _[cds-compiler@1.26.2]_ Action and function calls are checked for missing arguments.
- _[cds-compiler@1.26.2]_ All references are correctly transformed in flatten mode.
- _[cds-lsp@3.3.0]_ Minor fixes and improvements
- _[odata-server@1.7.1]_ ETags are never required for transient entities from $apply queries
- _[odata-server@1.7.0]_ context URL in some edge cases with keys
- _[odata-server@1.6.1]_ support for JSON content in type-definition properties with underlying type Edm.Stream (#97)

### Removed

- _[cds-compiler@1.26.2]_ The client tool `cdsc` doesn't offer the option `--std-json-parser` anymore,
  as it had no effect.

## March 2020

### Added

- _[cds.java@1.4.0]_ Operations on draft entities are now restricted to the user who created the draft
- _[cds.java@1.4.0]_ Support for returning entities with expanded navigation properties in actions and functions
- _[cds.java@1.4.0]_ `@readonly` can now be used at element level as well
- _[cds.java@1.4.0]_ Elements with default values that are also `not null` or `@mandatory` are now supported
- _[cds.java@1.4.0]_ CSV files are now automatically loaded from `db/data` or `db/csv` during startup of the application
- _[cds.java@1.4.0]_ When using Spring's health check actuators and enabling multitenancy the health of each connected database is checked.
- _[cds.java@1.4.0]_ An actuator providing CDS-related debugging information is now provided on Spring. It's active by default for JMX and can be enabled for web-exposure by adding `cds` to `management.endpoints.web.exposure.include`
- _[cds.java@1.4.0]_ The archetype now generates example event handler classes and an example JUnit test, if the property `includeModel` is set to `true`
- _[cds.java@1.4.0]_ The archetype now enables generation of `EventContext` interfaces for actions and functions in the CDS4J maven plugin settings
- _[cds.java@1.4.0]_ The archetype now automatically adds the cds-starter-cloudfoundry dependency to newly generated projects
- _[cds.java@1.4.0]_ SAP proprietary locales `1Q` (`en-US-x-saptrc`) and `2Q` (`en-US-x-sappsd`) are now handled correctly
- _[cds.java@1.4.0]_ Added a new configuration option `cds.locales.normalization` to specify the whitelist for locales
- _[cds.java@1.4.0]_ Added a new configuration option `cds.odatav4.contextAbsoluteUrl` to control if the URL in the `@context` field of OData V4 responses contains an absolute or a relative URL
- _[cds.java@1.4.0]_ Added the possibility to specify service-related configuration in a new configuration section `cds.services`
- _[cds.java@1.4.0]_ The version and commit information of the CDS Services dependency used are now printed to the logs during startup
- _[cds4j@1.8.0]_ Support deep updates
- _[cds4j@1.8.0]_ Support default values
- _[cds4j@1.8.0]_ Return update data on updates
- _[cds4j@1.8.0]_ Code Generator: Add `CDS_NAME` to action/function interfaces
- _[cds4j@1.8.0]_ Add Value.in(List) method
- _[cds4j@1.8.0]_ Truncate instants in insert/update data
- _[cds@3.33.0]_ `cds version` now also lists all dependencies of your local _package.json_ and has an updated CLI commend help, documenting option `--all`.
- _[cds@3.33.0]_ `cds compile` option `--docs` preserve contents of `/** ... */` doc comments in CSN output as well as in EDMX outputs (as _Core.Description_ annotations).
- _[cds@3.33.0]_ `cds compile` option `--clean` tells the compiler to not add any derived information, but return a CSN, which reflects only what was found in a _.cds_ source.
- _[cds@3.33.0]_ `cds serve` option `--watch` starts the specific serve command in nodemon watch mode
- _[cds@3.33.0]_ Node.js: `cds.env` now supports camel case env variables as well as dot-notated keys in `.env`
- _[cds-services@1.27.0]_ Transaction uses one timestamp for all queries
- _[cds-services@1.27.0]_ Pool acquire timeout is set by default and can be configured in pool options
- _[cds-services@1.27.0]_ Ordered OData singletons (`... as select from <entity> order by <property>`)
- _[cds-dk@1.7.0]_ `cds init --add java` supports `--java:mvn` to add additional parameter.
- _[cds-dk@1.7.0]_ Improvements when logging console output during `cds init`.
- _[cds-dk@1.7.0]_ Link to Maven archetype documentation shown in `cds help init`.
- _[cds-lsp@3.1.4]_ _extend_ definitions are now shown in outline and workspace symbols
- _[cds-lsp@3.1.4]_ api (alpha) for external annotation providers
- _[cds-messaging@1.8.2]_ It's now possible to set the queue configuration with the `queueConfig` property in the [credentials section](https://hub.sap.com/api/SAPEventMeshDefaultManagementAPIs/path/putQueue){:target="blank"}
- _[cds-sql@1.24.0]_ Support for different columns combinations in INSERT.entries
- _[cds-sql@1.24.0]_ Support for $count in SELECT CQN
- _[cds-sql@1.24.0]_ Support String objects in the annotation expressions
- _[cds-sql@1.24.0]_ .setTransactionTimestamp in BaseClient
- _[cds-sql@1.24.0]_ check for @cds.persistence.skip for deep operations
- _[cds-hana@1.25.0]_ Single timestamp per transaction
- _[cds-hana@1.25.0]_ default timeout 20s for acquiring client from pool
- _[cds-hana@1.24.0]_ Streaming from draft
- _[cds-hana@1.24.0]_ Timeout for update and delete statements to handle locked records (@sap/hana-client only, default: 1 s)
- _[odata-server@1.6.0]_ limited support for JSON content in stream properties as described in OASIS issue 1177
- _[odata-server@1.5.5]_ If-Match and If-None-Match headers are allowed with value * on POST requests
- _[odata-server@1.5.3]_ If-Match and If-None-Match headers are allowed with value * on non-conditional DELETE requests

### Changed

- _[cds.java@1.4.0]_ XSUAA user names are now normalized by converting them to lower case. This behavior can be turned off by specifying `cds.security.xsuaa.normalizeUserNames` to `false`.
- _[cds.java@1.4.0]_ `@mandatory` annotated elements of type String now also reject any trimmed empty strings.
- _[cds.java@1.4.0]_ Entities that are `@cds.autoexposed` are now read-only (in case of additional `@cds.autoexpose`) or can not be accessed at all, if referenced as root entity in a CQN statement. This behavior doesn't apply, if the entity is draft-enabled or explicitly mentioned in the service definition.
- _[cds4j@1.8.0]_ Move non-SQL/JDBC functionality into new core module
- _[cds4j@1.8.0]_ Remove deprecated methods in CqnReference and deprecate segment setters
- _[cds4j@1.8.0]_ Traverse CqnStatements depth-first
- _[cds@3.33.0]_ Labels for the `createdAt` and `changedAt` in the `@sap/cds/common#managed` entity have been adjusted to reflect the SAP Fiori design guidelines.
- _[cds@3.33.0]_ `cds build` now delegates to the modular build system by default (known as `cds build/all`). The modular build system is compatible, but supports additional features, for example, staging build, SAP HANA Cloud Edition support, populating initial data from .csv by generating .hdbtabledata files, etc. The legacy build is still available as a fallback in case of issues - use setting `cds.features.build.legacy: true` or ENV variable `CDS_FEATURES_BUILD_LEGACY=true`.
- _[cds-services@1.27.0]_ $count=true triggers handlers only once now
- _[cds-services@1.27.0]_ `draftPrepare` action can be called on the entity set of child nodes of the draft enabled entity
- _[cds-services@1.27.0]_ Normalize user.id if an email address
- _[cds-services@1.27.0]_ Allow functions and properties as second param in contains, startswith, endswith
- _[cds-dk@1.7.0]_ `cds add mta` now activates the `production` profile when creating the _mta.yaml_, which is consistent with what the MTA build does.  This way, configuration like `"[production]: {"kind": "hana"}` gets activated automatically.
- _[cds-compiler@1.24.4]_ `doc` comment propagation can now also be stopped by comments that only contain whitespace
  (including newlines) like `/**  */`.
- _[cds-compiler@1.24.4]_ OData:
  - Remove redundant service name and `__` prefix out of dynamically exposed substructures.
  - Update vocabularies 'Capabilities' and 'Graph'.
- _[cds-compiler@1.24.4]_ Expressions in mixin-definitions are now validated.
- _[cds-compiler@1.24.4]_ OData:
  - Redirect inbound associations to entities with parameters to corresponding Parameter EntityType.
  - Update vocabulary `UI`
- _[cds-compiler@1.24.4]_ Use semver for dependencies
- _[cds-lsp@3.2.0]_ remove option for compiler location - LSP will always search Project->Global(via DK&CDS)->BuiltIn now
- _[cds-lsp@3.2.0]_ removes irrelevant formatting option (trimTrailingWhitespace)
- _[cds-rest@1.6.2]_ In case there's no credentials.destination provided the `destinations` environment variable isn't created anymore.
  The connection to the remote service is handled internally.
- _[cds-sql@1.24.0]_ Use \| \| for concat (works for HANA and sqlite)

### Fixed

- _[cds.java@1.4.0]_ Timestamps are now correctly truncated based on the type of the element in the CDS model
- _[cds.java@1.4.0]_ The `draftActivate` action now returns an expanded result, to workaround issues with Fiori versions >= 1.75.0
- _[cds.java@1.4.0]_ Fixed `$search` returning duplicate search results
- _[cds.java@1.4.0]_ Fixed a malformed OData response, containing an incorrect `@context` property instead of `@odata.context`
- _[cds.java@1.4.0]_ Fixed the finalName property generated by the archetype, which was incorrectly set to `cds-services-archetype`
- _[cds.java@1.4.0]_ Fixed handling of errors during transaction initialization: NoSuchElementException errors could occur, overriding the original exception
- _[cds.java@1.4.0]_ Fixed nondeterministic order in which the `ChangeSetListeners` were called
- _[cds4j@1.8.0]_ Fix package and interface names in FLUENT mode
- _[cds4j@1.8.0]_ Fix traversal order of StructTypeRef, Comparison & Search pred
- _[cds4j@1.8.0]_ cds4j-multitenant: Fix synchronize in MetaDataAccessor
- _[cds@3.33.1]_ `cds build` now correctly supports options.model definitions of type string
- _[cds@3.33.1]_ Details navigation in Fiori preview works again since it's pinned to SAP UI5 1.73.  Actual cause still needs to be investigated.
- _[cds@3.33.1]_ `cds deploy` now adds `@sap/hana-client` to _package.json_ instead of `hdb`.
- _[cds@3.33.1]_ `cds deploy` adds kind `sql` to requires section.
- _[cds@3.33.0]_ `cds build` now correctly logs warnings returned by cds compiler. The message log level can be customized using cds configuration setting `cds.features.messageLevel` - default is `warn`.
- _[cds@3.33.0]_ `cds.env.roots` now properly picks up a changed value of `cds.env.folders`
- _[cds@3.33.0]_ `hdbtabledata` is no longer generated for entities that are marked with `@cds.persistence.skip`
- _[cds@3.32.0]_ An issue where all Node.js runtime sessions where disconnected when one tenant offboard.
- _[cds@3.31.2]_ `cds deploy` doesn't crash if _texts.csv is provided for skipped entities
- _[cds@3.31.2]_ `cds serve foo.cds` does no longer load same model twice
- _[cds@3.31.2]_ `cds compile --to edmx` no longer creates files with csn instead of edmx content in case no language bundles are found
- _[cds@3.31.2]_ Both `cds env` and `cds compile` no longer write terminal escape sequences if only stdout is redirected, but not stderr.
- _[cds@3.31.2]_ No longer enforce Node.js version 8 in _db/package.json_.  Cloud Foundry environment doesn't support it anymore, as this version is out of maintenance.
- _[cds@3.31.1]_ Removed _npm-shrinkwrap.json_
- _[cds-services@1.27.0]_ Entity is now correctly resolved if there are conflicting names
- _[cds-services@1.27.0]_ Where conditions from security annotations were appended twice when using $count=true
- _[cds-services@1.27.0]_ `req._.req` always contains the incoming request - also in `$batch` requests
- _[cds-services@1.27.0]_ Error in delete when fields are renamed in views
- _[cds-services@1.27.0]_ Using view by draft & localized
- _[cds-services@1.27.0]_ context.diff() returns changes also for `PATCH` of drafts
- _[cds-services@1.27.0]_ OData requests using `/$count` on navigation-to-many
- _[cds-services@1.27.0]_ Authentication-requirement detected if in multi tenant mode (that means, `multiTenant: true`)
- _[cds-services@1.27.0]_ Integrity check of atomicity group
- _[cds-services@1.27.0]_ Where annotation in case of draft and navigations
- _[cds-services@1.27.0]_ `/$count` on parameterized views
- _[cds-services@1.27.0]_ Streaming from draft in case localized and where annotations
- _[cds-services@1.27.0]_ @mandatory: empty strings (whitespaces only = empty) aren't allowed
- _[cds-services@1.25.1]_ update of localized text entries replies with 403 if no changes are detected
- _[cds-dk@1.6.3]_ Proper _npm-shrinkwrap.json_
- _[cds-dk@1.6.3]_ `cds init` is a bit more relaxed when checking for existing project content
- _[cds-lsp@3.2.0]_ formatting failed (seen in Eclipse, VS Code works) due to off-by-one error
- _[cds-lsp@3.2.0]_ global npm root for Business App Studio wasn't found with compiler.location option ProjectThenGlobalThenBuiltIn
- _[cds-sql@1.24.0]_ Using view by draft & localized
- _[cds-sql@1.24.0]_ Quote alias in orderBy to work on HANA
- _[cds-sql@1.24.0]_ Expand from not draft enabled entity to draft enabled entity
- _[cds-sql@1.24.0]_ `where` and `orderBy`clauses containing navigations in combination with expand are correctly translated to SQL
- _[odata-server@1.5.4]_ stricter determination of related entity set

### Removed

- _[cds-services@1.25.1]_ _npm-shrinkwrap.json_
- _[cds-compiler@1.24.4]_ Warning 'Service shouldn't have more than one draft root artifact'
- _[cds-compiler@1.24.4]_ Experimental annotation `@cds.odata.{v2|v4}.ignore`
- _[cds-compiler@1.24.4]_ OData vocabulary `com.sap.vocabularies.odm.v1` (lowercase 'odm')
- _[cds-compiler@1.24.4]_ `--beta-mode` from option `--odata-containment`.
- _[cds-messaging@1.8.2]_ Bound events aren't supported anymore
- _[cds-rest@1.6.2]_ _npm-shrinkwrap.json_
- _[cds-hana@1.25.1]_ Timeout for update and delete statements (if needed: increase libuv's thread pool size via environment variable `UV_THREADPOOL_SIZE`)

## January & February 2020

### Added

- _[cds-compiler@1.23.2]_ If an entity with localized elements is draft enabled, a new key element `ID_texts` is added to the `texts` entity in `--beta-mode`. The key property is removed from all other elements in the `texts` entity and the annotation assignment `@cds.odata.v4.ignore` as described in Version 1.20.0 is reverted. If the element `ID_texts` already exists, an appropriate warning is raised and no texts entity is created.
- _[cds-compiler@1.23.2]_ Introduce `![identifier body]` in the CDL source for delimited identifiers.
  (The `!` is inspired by ABAP's identifier tag,
  `[]` by the delimited identifier syntax in Microsoft SQL Server and Sybase;
  we can't use `[]` alone, because brackets are used for filter conditions.)
- _[cds-compiler@1.23.2]_ When generating SQL or HDBVIEW, explicit CASTs are now rendered
- _[cds-compiler@1.23.2]_ With `redirected to`, model designers can now explicitly provide the `on`
  condition / foreign `keys` for "consumers" of the current query (entity).
  This is useful for situations (mentioned as message) where the
  compiler doesn't calculate `on`/`keys` (automatically yet).
- _[cds-compiler@1.23.2]_ Add OData vocabularies: `com.sap.vocabularies.CodeList.v1`, `Org.OData.Repeatability.V1`, and `com.sap.vocabularies.Session.v1`
- _[cds-lsp@3.1.3]_ picks up compiler and env via global cds-dk if cds not (yet) in project
- _[cds-lsp@3.1.2]_ code formatting
  - options can now be overridden in source comments, for example, // @formatter tabSize:3
  - new option to add/remove final line break
  - new option to trim trailing whitespace
- _[cds-lsp@3.1.1]_ code formatting
  - option to keep original empty lines
- _[cds-lsp@3.1.1]_ language server protocol 3.15: implement serverInfo in onInitialize
- _[cds-lsp@3.1.0]_ translation support
  - now with all formats supported by runtime (.properties, _.json_, _.csv_) incl. quick fixes to create missing entries
  - now with customizations supported by runtime (filename, folder name, fallback_bundle, default_language)
    - if entries of fallback language are missing but are defined for default language the latter ones are used
    - if property files or json nodes or csv header only has default language defined (and not raw), quick fix will use default language
    - quick fix for json and csv formats now try to keep entries sorted
    - navigation from translation reference in cds source files to value supported for all formats
- _[cds-lsp@3.1.0]_ allows _.cdsprettier.json_ to be located in user home dir
- _[cds-lsp@3.0.0]_ Official support for code formatting
- _[cds.java@1.3.0]_ Support setting the "target" property in OData V4 error messages to influence the way a Fiori UI displays them.
- _[cds.java@1.3.0]_ Support temporal data
- _[cds.java@1.3.0]_ Support expand for associations pointing to other draft-enabled entities
- _[cds.java@1.3.0]_ Support case-insensitive ordering via OData V4 query option $orderby by using tolower() or toupper() functions, for example, `$orderby=tolower(element)`
- _[cds.java@1.3.0]_ The Maven Archetype now allows to omit local cds-dk installation by means of maven profile "cdsdk-global"
- _[cds.java@1.2.0]_ Support returning messages by means of the "sap-messages" header that are shown in Fiori UIs
- _[cds.java@1.2.0]_ Support returning multiple messages in a single response
- _[cds.java@1.2.0]_ Support returning localized messages
- _[cds.java@1.2.0]_ Support searching entities by means of the OData V4 $search query option (including search expressions AND, OR and NOT)
- _[cds.java@1.2.0]_ Support tolower and toupper functions in $filter expressions
- _[cds.java@1.2.0]_ Support the $format parameter for JSON-based formats
- _[cds.java@1.2.0]_ Support associations between draft-enabled entities, enabling also path expressions to the inactive entity via the active entity and vice versa.
- _[cds4j@1.7.0]_ Introduce `com.sap.cds.ql.CQL` API and deprecate `CqnBuilder`
- _[cds4j@1.7.0]_ Support tree-style usage of logical connectives
- _[cds4j@1.7.0]_ Support postfix `not`
- _[cds4j@1.7.0]_ Support using plain expressions in select list
- _[cds4j@1.7.0]_ Support functions in orderBy
- _[cds4j@1.7.0]_ Support `@Search.defaultSearchElement` annotation and cascaded search via `@Search.cascade`
- _[cds4j@1.7.0]_ Support many-to-many associations via mapping entity
- _[cds4j@1.7.0]_ Support actions/functions in Reflection API
- _[cds4j@1.7.0]_ Generate accessor interfaces for actions/functions
- _[cds4j@1.7.0]_ CDS4j maven plugin: m2e lifecycle mapping to enable model generation within Eclipse
- _[cds@3.31.0]_ Generation of `hdbtabledata` files now reports if CSV file names don't match entity names, and if header names don't match element names in an entity.  Watch out for such logs in case CSV files aren't deployed to SAP HANA.
- _[cds@3.30.0]_ `cds compile --log-level` allows to choose which messages to see
- _[cds@3.30.0]_ `cds deploy --dry` prints DDL statements to stdout instead of executing them
- _[cds@3.30.0]_ `cds deploy --with-mocks` also adds tables for required services
- _[cds@3.30.0]_ `cds serve --mocked` allows mocking individual required services
- _[cds@3.30.0]_ `cds.env` now also loads from `.env` files in properties format
- _[cds@3.30.0]_ `cds.resolve/load('*')` resolves or loads all models in a project including those for required services. It's controlled and configurable through `cds.env.folders` and `.roots￼`. Try this in `cds repl` launched from your project root to see that in action:

    ```js
    cds.env.folders         // = folders db, srv, app by default
    cds.env.roots           // + schema and services in cwd
    cds.resolve('*',false)  // + models in cds.env.requires
    cds.resolve('*')        // > the resolved existing files
    ```

- _[cds@3.30.0]_ Added `cds.debug(<id>)` as a convenient helper for debug output controlled by `process.env.DEBUG`. For example, use it as follows:

    ```js
    const DEBUG = cds.debug('my-module')
    DEBUG && DEBUG ('my debug info:', foo, ...)
    ```

    ```sh
    > DEBUG=my-module cds run
    ```

- _[cds@3.30.0]_ Added `cds.error(<msg>)` as a convenient helper for throwing errors whose stack traces start from the actual point of invocation. For example, use it as follows:

    ```js
    const {error} = cds
    if (...) throw error `Something's wrong with ${whatever}`
    const foo = bar || error `Bar is missing!` // short circuit exits
    ```

- _[cds-dk@1.6.0]_ `cds init --add java` now also works with `--hana`
- _[cds-dk@1.5.0]_ `cds init` adds `private: true` and `license: "UNLICENSED"` to newly generated projects.
- _[cds-dk@1.5.0]_ `cds init` adds a default `.hdiconfig` file when using template `hana`.
- _[cds-dk@1.5.0]_ `cds init` supports Java package name via `--java:package` parameter.
- _[cds-dk@1.5.0]_ `cds init` generates dependency entry for `@sap/hana-client` when using template `hana`.
- _[cds-dk@1.5.0]_ `cds init` uses latest `Java archetype` version `1.3.0` for creating Java projects.
- _[cds-dk@1.5.0]_ `cds init` now creates a _.cdsrc.json_ file.
- _[cds-dk@1.4.0]_ Abort installation with a hint if `@sap/cds` is installed globally.
- _[cds-dk@1.4.0]_ New project generation using `cds init`. See `cds help init` for details.
- _[cds-dk@1.4.0]_ `cds init --add java` now creates Java projects with Spring Boot support.
- _[cds-dk@1.4.0]_ `cds watch` now also watches `.properties` files
- _[cds-services@1.25.0]_ Support for OData singletons
- _[cds-services@1.25.0]_ Streaming from draft
- _[cds-services@1.25.0]_ Navigations in aggregate expressions
- _[cds-services@1.24.1]_ Support draft for localized texts (to be enabled by `@sap/cds` and `@sap/cds-compiler`)
- _[cds-services@1.24.0]_ Support for OData singletons
- _[cds-services@1.24.0]_ Navigations in aggregate expressions
- _[cds-services@1.24.0]_ Support for OData `$apply` with `count distinct`
- _[cds-services@1.23.0]_ Support non-UUID field as ETags
- _[cds-services@1.23.0]_ Support draft and ETags
- _[cds-services@1.23.0]_ Support for complex where in annotations
- _[cds-services@1.23.0]_ Additional argument `target` for `req.info`
- _[cds-services@1.22.0]_ `@sap/cds-ql` merged into @sap/cds-services
- _[cds-services@1.22.0]_ Support for subselects and aliasing for remote service definitions
- _[cds-services@1.22.0]_ Support for `@cds.persistence.table`.
- _[cds-services@1.22.0]_ Actions/functions support $select and $expand query params in odata
- _[cds-services@1.22.0]_ Support cds annotation on insert and update with # (for example, @cds.on.update: #user)
- _[cds-messaging@1.6.0]_ Support for `prefix` credentials options to prefix topics
- _[cds-rest@1.4.0]_ Where x in (a,b,...) predicates are translated to series of (x eq a) or (x eq b) in OData `$filter` options
- _[cds-sql@1.23.1]_ Support for set and data in UPDATE CQN
- _[cds-sql@1.23.1]_ Support draft for localized texts
- _[cds-sql@1.23.1]_ Support for with and data in UPDATE CQN
- _[cds-hana@1.24.0]_ Streaming from draft
- _[cds-hana@1.22.0]_ Implement statement drop
- _[odata-server@1.5.0]_ support for node.js version 12
- _[odata-server@1.5.0]_ complete support of specified Unicode range in URI parsing of identifiers
- _[odata-server@1.5.0]_ URI parsing of search words according to OData 4.01 CS02
- _[odata-server@1.4.0]_ support for EDM singletons

### Changed

- _[cds-compiler@1.23.2]_ Association to Join Transformation:
  - Validate paths of an expression in the projection to be compliant with the
    ON condition path constraints if such an expression is used in a mixin.
  - Reject recursive or non-bijective `$self` expressions.
- _[cds-compiler@1.23.2]_ Reject casting of a structured select item to a different type.
- _[cds-compiler@1.23.2]_ OData: Update vocabularies `Capabilities`, `Common`, `UI`, `Validation`
- _[cds-compiler@1.23.2]_ OData:
  - Lower message for unknown vocabulary annotations from warning to info.
  - Lower message for `@Analytics.Measure expects @Aggregation.default` from warning to info.
  - Remove empty EntityContainer and raise warning if Schema is empty.
- _[cds-compiler@1.23.2]_ Signal a warning for all uses of `"identifier body"` in the CDL source, as
  most uses of double-quotes in actual CDS models were likely meant for strings.
  (Yes, we don't adhere strictly to the lexical rules of the SQL Standard with this change…)
- _[cds-compiler@1.23.2]_ Issue a warning for an `aspect` definition without `{…}`.
- _[cds-compiler@1.23.2]_ In the CSN, `aspect` definitions have a `$syntax` property with value `"aspect"`.
  A future incompatible change will set the `kind` of aspect definitions to value `"aspect"`.
- _[cds-compiler@1.23.2]_ Removed old CSN frontend and the corresponding options: `stdJsonParser` and `oldCsnFrontend`.
- _[cds-compiler@1.23.2]_ Fix check for arguments and filters in references (**might introduce new errors**).
- _[cds-compiler@1.23.2]_ Issue an error if explicit `keys` are provided when redirecting *un*managed associations.
- _[cds-compiler@1.23.2]_ File paths given to `cdsc`, which contain symbolic links are now resolved before being
  passed to the compiler.
- _[cds-compiler@1.23.2]_ Annotating elements with `@Core.Computed` now always overwrites computed value;
  also expressions in parentheses will now induce to set `@Core.Computed` to `true`.
- _[cds-compiler@1.23.2]_ Update OData vocabulary `UI`
- _[cds-compiler@1.23.2]_ Increase the length of the element `locale` in generated `_texts` entities from
  `String(5)` to `String(14)`.
- _[cds-compiler@1.23.2]_ Don't overwrite annotations with generated annotations (such as shortcuts and other
  convenience annotations).
- _[cds-compiler@1.23.2]_ In the `sql`, `hdi`, and `hdbcds` backends with SQL dialect HANA, `$user.id` is translated to
  `SESSION_CONTEXT('APPLICATIONUSER')`, not `SESSION_CONTEXT('XS_APPLICATIONUSER')` anymore.
  As with the SQL dialect SQLite, it can now be configured.
- _[cds-compiler@1.23.2]_ The client tool `cdsc` now prints a source excerpt for each message by default;
  use `cdsc --no-message-context` to get the previous behavior.
- _[cds-compiler@1.23.2]_ Increase severity to `Warning` of messages for a situation where the compiler
  can't calculate an `on` condition / foreign `keys` automatically.
- _[cds-compiler@1.23.2]_ Issues warnings for annotation definitions, as their CSN representation will be
  moved from `definitions` into a new property `vocabularies` in a future change.
- _[cds-compiler@1.23.2]_ OData:
  - Update vocabularies: `Analytics`, `Common`, `Communication`, `Core`, `PersonalData`, `UI`
  - Set reference base URI for SAP Vocabularies to `https://sap.github.io/odata-vocabularies/vocabularies`
- _[cds-lsp@3.1.0]_ code formatting
  - improve alignment of types, values, and preceding `:` or `=` operators
- _[cds-lsp@3.0.0]_ code completion
  - more snippet variants for extend
  - no longer differ entity suggestions between within service or outside
  - base types with parameters now suggested as simply keyword w/o params and additional suggestion as snippet (param names now enclosed in < >)
  - changed label indicator for snippets from <> to ellipsis
- _[cds-lsp@3.0.0]_ code formatting
  - rework formatting options: add/remove options according to relevance, rename/group options for clarity, change default behavior in some cases
  - various improvements, including in case statements and bracketed conditions
- _[cds.java@1.3.0]_ The XSUAA service configuration is now only enabled, when an XSUAA service binding is available. With this change, we don't prevent Spring from configuring its default security config and default user anymore.
- _[cds.java@1.3.0]_ The Spring Boot Plugin in applications generated by the archetype now generates the executable JAR with classifier "exec"
- _[cds.java@1.2.0]_ Timestamps are now written to the database in UTC instead of the timezone of the application.
- _[cds.java@1.2.0]_ Changed incorrect HTTP status 400 Bad Request to 404 Not Found for requests targeting a nonexisting entity
- _[cds4j@1.7.0]_ Store timestamps on SQLite as ISO 8601 Strings
- _[cds4j@1.7.0]_ Truncate Instants for DateTime and Timestamp
- _[cds@3.30.0]_ This version brings a major refactoring and streamlining of service runtime implementations,
  which stays fully compatible regarding all documented APIs but in case you used internal
  not documented (non-)APIs, you should know these:
  - Removed undocumented features
  Annotation `@source` from models loaded for runtime
  Property `cds.serve.app` &rarr; use `cds.app` instead
  Property `source` from CSN entity/view definition objects

> It's unlikely that you ever used these undocumented internal features at all.
> In case you did, this should never have been done and you should fix that asap.

- _[cds@3.30.0]_ Deprecated features (&rarr; might get removed in upcoming versions)
  - Property `cds.session` &rarr; use `cds.db` instead
  - Property `cds.options` &rarr; use `cds.db.options` instead
  - Property `cds.unfold` &rarr; use `cds.compile` instead
  - Property `cds.config` &rarr; use `cds.env` instead
  > These properties actually were duplicates to the mentioned alternatives.
- _[cds@3.30.0]_ `cds run` and `cds watch` have been reimplemented as convenience shortcuts to `cds serve`, which acts as the central orchestrator for bootstrapping now.   (&rarr; see `cds run ?` or `cds watch ?` to learn more)
- _[cds@3.30.0]_ `cds serve` now optionally bootstraps from project-local `./server.js` or  `./srv/server.js`, if exist, thus giving more control while still benefitting from `cds serve`'s intrinsic support for options like `--in-memory` or `--with-mocks`.
- _[cds@3.30.0]_ `cds serve` now uses `cds.load('*')` to load a single effective model once, assigned to `cds.model`, and reused for db as well as all provided and required services . As that avoids loading models redundantly, it drastically improves both, bootstrapping performance as well as memory consumption.
- _[cds@3.30.0]_ `cds deploy` doesn't (have to) register the default models to _package.json_ anymore. For example, unlike before, `cds deploy -2 sqlite` will merely add an entry: `db:{kind:'sqlite'}`, without an additional `model` property anymore.
- _[cds@3.30.0]_ `cds deploy --to hana` doesn't create `connection.properties` file any longer, but only modify existing one
- _[cds@3.30.0]_ `modifiedAt` and `modifiedBy` from `@sap/cds/common`
  - Are now mutable for OData, that means, no longer carry the `@Core.Immutable: true` annotation.
  - Are set by the Node.js runtime whenever the respective row was modified, that means, also during `CREATE` operations.
- _[cds@3.30.0]_ Support for `cds init` is now moved to `@sap/cds-dk`.
- _[cds@3.21.0]_ In development mode, the `mock` authorization strategy is automatically activated with two fake users `alice` and `bob`, which allows for out-of-the-box testing of `@requires` annotations. This means that, unlike before, the `JWT` authorization strategy needs to be activated explicitly (through `{auth: { passport: { strategy: 'mock' }}}`.  In production, no change is required.
- _[cds@3.21.0]_ You might see a `MODULE_NOT_FOUND` error for `@sap/xsenv` in case you use the `JWT` strategy but have not bound any xsuaa service.  In this case either bind such a service instance, add the `@sap/xsenv` dependency, or use a different strategy like `mock`.  The trigger of this error is `@sap/xssec` 2.2.4 no longer requiring `@sap/xsenv`.
- _[cds@3.21.0]_ Renovated and streamlined `cds init`. It prints a hint now if it's called with old-style parameters, as well as that it wants to be used from `@sap/cds-dk`. Check out `cds help init` for more.
- _[cds@3.21.0]_ Removed the experimental `--args` parameter of `cds compile`.  This turned out to be cumbersome to use in shells. Replacement is the standard configuration mechanism, for example, use an environment variable `CDS_FOO_BAR` to activate option `cds.foo.bar`.
- _[cds-dk@1.6.0]_ `cds add mta` now creates resources for SAP HANA with an explicit service type `hana`.  If deploying to trial landscapes, this needs to be changed manually to `hanatrial`.
- _[cds-dk@1.5.0]_ `cds init` only supports new syntax. See `cds init help` for more info.
- _[cds-dk@1.5.0]_ `cds init` now supports adding template `hana` to Java projects.
- _[cds-services@1.25.0]_ use odata-server 1.5.2
- _[cds-services@1.24.0]_ use odata-server 1.5.1
- _[cds-services@1.23.0]_ Direct access to auto-exposed entities in draft case
- _[cds-services@1.23.0]_ Errors normalized based on OData v4 standard
- _[cds-services@1.23.0]_ Messages (that means, header `sap-messages`) normalized based on Fiori standard
- _[cds-services@1.23.0]_ Referential integrity checks are now executed before the commit
- _[cds-services@1.23.0]_ Result of create and update queries is read from the data source to include computed values (update: root only, that means, w/o compositions, etc.)
- _[cds-services@1.22.0]_ Improve error messages for return type validation of custom operations
- _[cds-services@1.22.0]_ Draft removal is handled in `onDraftActivateEvent` instead of `onDraftActivate`
- _[cds-messaging@1.7.0]_ Updated version number for public release
- _[cds-messaging@1.6.0]_ You can no longer set the namespace outside of the `credentials` block
- _[cds-rest@1.5.0]_ Updated version number for public release
- _[cds-rest@1.4.0]_ Version of `@sap/cloud-sdk-core` pinned to `1.15.1`
- _[cds-rest@1.4.0]_ Version of `@sap/cloud-sdk-util` pinned to `1.15.1`
- _[cds-sql@1.23.0]_ Convert all search queries using `contains` to `like`
- _[cds-sql@1.22.0]_ Managed fields aren't removed anymore if they don't belong to operation (for example, modifiedAt in INSERT, createdAt in UPDATE)
- _[cds-sql@1.22.0]_ `null` is a valid value for a managed field (e. g. if `null` is provided for `@cds.on.insert`, `null` will be inserted to DB)
- _[cds-hana@1.23.0]_ Use `like` instead of `contains` fuzzy search for `$search` queries
- _[cds-hana@1.22.0]_ SESSION_CONTEXT('APPLICATIONUSER') instead of SESSION_CONTEXT('XS_APPLICATIONUSER')
- _[cds-hana@1.22.0]_ @sap/hana-client is preferred over hdb

### Fixed

- _[cds-compiler@1.23.2]_ Association to Join Transformation: Resolve compound ON conditions with multiple logical terms and/or references to different associations via `$self`.
- _[cds-compiler@1.23.2]_ Remove temporary property `viaTransformation` from published CSN.
- _[cds-compiler@1.23.2]_ Don't complain about unaligned `$syntax` attribute in CSN frontend.
- _[cds-compiler@1.23.2]_ Correctly calculate code completion candidates for projection items in all circumstances (regression introduced in v1.22.0).
- _[cds-compiler@1.23.2]_ In the Hana/Sql backend, correctly resolve forward `on` condition when using mixin association that backlinks to an unrelated 3rd party entity and association.
- _[cds-compiler@1.23.2]_ Raise a warning if the element of the forward association and the element of the query source don't originate from the same defining entity. Raise an  error if the element of the forward association can't be found in the query
source or is ambiguous.
- _[cds-compiler@1.23.2]_ Correctly create localization views with compiled model as input; it was wrong previously in a model with a high view hierarchy.
- _[cds-compiler@1.23.2]_ Automatically calculate `keys` also for published _secondary_ managed associations, that means, associations in a select column, which is reached by   following another association.  The compiler doesn't yet calculate the `on`
condition of published secondary unmanaged associations – provide it explicitly.
- _[cds-compiler@1.23.2]_ Entities/Views without elements are now detected correctly.
- _[cds-compiler@1.23.2]_ Fix check for action/function parameters in services.
- _[cds-compiler@1.23.2]_ OData: Correctly apply annotations to parameters.
- _[cds-compiler@1.23.2]_ In the `sql`, `hdi` and `hdbcds` backends, correctly ignore contexts containing just actions.
- _[cds-compiler@1.23.2]_ In all backends, correctly handle models where an `on` condition of a `join` contains a sub query.
- _[cds-compiler@1.23.2]_ Avoid infloop for cyclic dependencies on select items with explicit redirections.
- _[cds-lsp@3.1.2]_ in some cases csn files with _.json_ extension where not detected and thus workspace symbols were incomplete
- _[cds-lsp@3.1.1]_ formatting options were taken from homedir instead of preferring from project
- _[cds-lsp@3.1.0]_ code formatting
  - fix, improve, and allow to better adjust alignments and whitespace
  - fix alignment of annotations in `annotate` statement
  - fix casing of and indentation after `Association` and `Composition`
  - fix formatting of parts of `select` statement in case of nesting and after `in`
  - fix positioning of brace `{` after annotation if requested to be kept in previous line
  - fix bug where token starting with `$` was merged
- _[cds-lsp@3.1.0]_ in the past file changes via watcher were automatically sent for all files in VS Code.
  In recent versions of VS Code this has changed to only sent files supported by language server type (cds).
  A fix was made to dynamically register for relevant side-files like
  _package.json_, _.cdsrc.json_, all supported translation file formats, ignore files
  to keep track of changed environment
- _[cds-lsp@3.0.0]_ code formatting
  - fix alignment of annotations in views
  - safely identify unreserved keywords
- _[cds.java@1.3.0]_ Handle more timestamp formats on SQLite-based databases: This fixes interoperability issues with cds deploy and the Node.js stack. The suggested timestamp format to be used in CSVs is ISO 8601 (`2020-02-05T07:43:40Z`)
- _[cds.java@1.3.0]_ The sap-messages header is now also written on 204 No Content responses.
- _[cds.java@1.3.0]_ OData V4 navigation paths are now correctly handled also on HTTP requests using the PATCH or PUT verb
- _[cds.java@1.2.0]_ Support compositions of second grade or higher for draft-enabled entities
- _[cds.java@1.2.0]_ Fixed a bug where $count couldn't be combined with $orderby in an OData V4 query
- _[cds.java@1.2.0]_ OData V4 queries with PUT verb didn't work on draft-enabled entities
- _[cds.java@1.2.0]_ Fixed an issue where bound actions returning an entity type ran into an error when returning an entity type that was different from the one they were bound to.
- _[cds4j@1.7.0]_ Fix name clash with 'filter' in generated builder interfaces
- _[cds4j@1.7.0]_ Fix computation of join conditions for association keys
- _[cds@3.31.1]_ Removed _npm-shrinkwrap.json_
- _[cds@3.31.0]_ `cds compile --to hdbtabledata` no longer crashes with `_texts.csv` files referring to a non-`localized` entity
- _[cds@3.31.0]_ `cds build/all` adds `app` folder to the list of model folders for hana database builds. Draft tables are missing if the corresponding annotation model is missing.
- _[cds@3.30.0]_ There was a bug in that caused a service names `FooBarV2` to erroneously be mapped to mount point `/foo-barv2` instead of `/foo-bar-v2` as intended and was the case before. &rarr; in case you started a project in this interims phase and had a service name with that pattern you may encounter this fix as an incompatible change, but it's actually reverting to the former compatible way.
- _[cds@3.30.0]_ `cds.env` erroneously overrode profiled entries depending on properties order
- _[cds@3.30.0]_ Fiori preview now uses latest version of SAP UI5 again
- _[cds@3.30.0]_ `cds deploy` verifies returned service key to ensure that target service isn't of type `managed`.
- _[cds@3.21.3]_ Fiori preview no longer catches service URLs with an arbitrary prefix (for example, `/foo/browse` instead of just `/browse`).
- _[cds@3.21.1]_ Fiori preview no longer crashes since it's pinned to SAP UI5 1.72.3.  Actual cause still needs to be investigated.
- _[cds@3.21.0]_ `SELECT.one/distinct(Fool,[...])` failed when passing an array for columns as argument two
- _[cds-dk@1.6.0]_ `cds add mta` now creates valid configuration for `uaa` and `auditlog` resources.
- _[cds-dk@1.5.0]_ `cds add mta` fixes an issue in created _mta.yaml_ for nodejs projects if used in xmake environment.
- _[cds-dk@1.5.0]_ `cds add mta` fixes a build order issue in created _mta.yaml_ for java projects. Now, service module is built before db module.
- _[cds-dk@1.5.0]_ `cds init` doesn't create _package.json_ in db folder.
- _[cds-dk@1.4.0]_ Find locally installed modules like `passport`, so that `cds watch` and `cds run` behave symmetrically.
- _[cds-services@1.24.0]_ Column generation for `SELECT.from()` queries without specifying `.columns()`
  - `HasDraftEntity` wasn't properly calculated
  - Virtual properties weren't excluded
- _[cds-services@1.25.0]_ Support for OData singletons
- _[cds-services@1.25.0]_ Streaming from draft
- _[cds-services@1.25.0]_ Navigations in aggregate expressions
- _[cds-services@1.24.0]_ Where secure annotations with localized entities
- _[cds-services@1.24.0]_ Handling of `@cds.on.insert/update` annotated properties of draft-enabled entities
- _[cds-services@1.24.0]_ Keys in root element weren't correctly calculated for deep operations
- _[cds-services@1.24.0]_ `@Core.MediaType` couldn't be used in entity annotated with `@cds.persistence.skip`
- _[cds-services@1.23.0]_ Race condition when there are errors when saving draft
- _[cds-services@1.23.0]_ Handling of where from @restrict annotation of draft enabled entity
- _[cds-services@1.23.0]_ Saving a draft won't ignore read-only fields anymore
- _[cds-services@1.23.0]_ Not having a connection for unauthorized users won't crash the server anymore
- _[cds-services@1.23.0]_ In mocked authorization, users don't need the `ID` property
- _[cds-services@1.23.0]_ Filtering using the `NE` operator handles null values properly
- _[cds-services@1.23.0]_ For insertable-only entities default values are correctly handled now
- _[cds-services@1.23.0]_ Immutable values are now ignored during PATCH or UPDATE requests
- _[cds-services@1.23.0]_ Batch input via REST
- _[cds-services@1.23.0]_ SELECT * by customer handlers will work also on Hana in case the columns are lowercase
- _[cds-services@1.23.0]_ Support "userAttributes" by Mocked Authentication, "xs.user.attributes" is deprecated and will
be removed in the next releases
- _[cds-services@1.23.0]_ Arbitrary users are allowed if fake user '*'= true exist by Mocked Authentication
- _[cds-services@1.22.0]_ Check whether service requires authentication
- _[cds-services@1.22.0]_ Independent passport configs per service
- _[cds-messaging@1.6.0]_ Fixed bug where non-trimmed data causes problems in file-based messaging
- _[cds-sql@1.23.2]_ Missing alias for orderBy caused column ambiguously defined error
- _[cds-sql@1.23.0]_ Searching for `_` or `%` in `$search`
- _[cds-sql@1.22.0]_ Expand with composition to one for draft enabled entity
- _[odata-server@1.5.0]_ ensures non-null field code in error responses
- _[odata-server@1.4.1]_ If-Match and If-None-Match headers are allowed with value '*' on non-conditional PUT/PATCH requests (for upsert)
- _[odata-server@1.4.1]_ If-Match header with value '*' is allowed for all GET requests
- _[odata-server@1.4.1]_ allows annotations @odata.type in requests if they match the types specified in the metadata
- _[odata-server@1.4.0]_ documentation: actions and functions are supported

### Removed

- _[cds-services@1.24.0]_ Annotation `@Search.fuzzinessThreshold`
- _[odata-server@1.5.0]_ support for node.js version 8 due to its end of life
