---
title: January 2026
versions:
  cdsjs: 9.7.0+
  cdsdk: 9.7.0+
  cdsc: 6.7.0+
  cdsmtxs: 3.7.0+
  java: 4.7.0+
---

# January 2026

<ReleaseBadges />

[[toc]]


## Capire Renovations

We improved and streamlined structure across the documentation, making it easier to find relevant information quickly – especially in the existing [**_Get Started_**](/@external/get-started/), as well as the newly introduced [**_Develop_**](/@external/guides/), and [**_Deploy_**](/@external/guides/deploy/) sections. In addition, many guides have been thoroughly updated to reflect the latest best practices and features in CAP, as well as new guides added to cover new topics.

[![CAP Development Playbook diagram showing a workflow with sequences of steps starting with Capture Domain and Deploy DB at the top, followed by Provide Services with Constraints and Status Flows, then Serve UIs with I18n and Design UIs, Consume Services with Integration, Add Messaging, and continuing with Event Handlers leading to Export APIs.](/@external/guides/playbook.drawio.svg){style="max-width: 90%; margin: 3em auto;"}](/@external/guides/)

Also, the styling includes some minor improvements, for example, adopted [_GitHub Alerts_-style callouts](/@external/get-started/learn-more#callouts-and-alerts), the _Scroll to Top_ button that automatically appears when scrolling down a page, and the new/updated keyboard shortcuts <kbd>.</kbd> and <kbd>,</kbd> to quickly navigate through the guides. Press <kbd>h</kbd> to see all keyboard shortcuts.

![sss](assets/jan26/keyboard-shortcuts.png){.ignore-dark style="width: 360px; border-radius:11px; margin: 3em auto;"}

<div class="cols-2">
<div>

### Getting Started Guides


The [**_Get Started_**](/@external/get-started/) section got a streamlined structure. These guides also received major content updates:

   - [**_Get Started_ > _In a Nutshell_**](/@external/get-started/index) – all new initial setup guides, emphasizing the need to [_Stay Up to Date_](/@external/get-started/index#stay-up-to-date).

   - [**_Bookshop Sample_**](/@external/get-started/bookshop) – significantly improved and enhanced our primer to promote latest best practices. [![Entity-relationship diagram of the bookshop sample, showing Books, Authors, and Genres.](/@external/get-started/assets/bookshop/domain-model.drawio.svg){style="margin-top: .5em"}](/@external/get-started/bookshop)

   - [**_Learn More_**](/@external/get-started/learn-more) – received a major cleanup, and got complemented with links to highly recommended learning sources, such as [_The qmacro Series_](/@external/get-started/learn-more#the-qmacro-series).
</div>

<div style="max-width: 310px; padding-left: 30px; margin-top: 2em;">

[![Menu outline of the Getting Started section](assets/jan26/capire-get-started-in-a-nutshell.png){.ignore-dark style="border-radius:14px"}](/@external/get-started/)

</div>
</div>


### Databases Guides

The [**_Databases_**](/@external/guides/databases/) section received a major content overhaul and additions, especially in these new guides:

- [_CAP-Level Database Support_](/@external/guides/databases/cap-level-dbs.md)
- [_CDL Compiled to DDL_](/@external/guides/databases/cdl-to-ddl.md)
- [_Adding Initial Data_](/@external/guides/databases/initial-data.md).

[![Overview of CAP-level database integration](/@external/guides/databases/assets/overview.drawio.svg){style="width: 70%"}](/@external/guides/databases/)

### Integration Guides

The [**_Integration_**](/@external/guides/integration/) section is a newly introduced section where we collected and added guides dedicated to:

- [_CAP-level Service Integration_](/@external/guides/integration/calesi.md)
- [_CAP-level Data Federation_](/@external/guides/integration/data-federation.md)
- [_Inner-Loop Development_](/@external/guides/integration/inner-loops.md)

[![Overview of CAP-level service Integration
](/@external/guides/integration/assets/calesi-overview.drawio.svg){style="width: 75%;"}](/@external/guides/integration/calesi.md)

> [!note]
> This replaces the former, now archived [_Consuming (Remote) Services_](/@external/guides/services/consuming-services.md) guide.

### Security & Data Privacy

Section [**_Security & Data Privacy_**](/@external/guides/security/) was completely restructured, and now consolidates all security and compliance aspects of CAP applications. Notable additions include a dedicated chapter about [Authentication](/@external/guides/security/authentication) with a focus on [IAS](/@external/guides/security/authentication#ias-auth). Another new section clarifies how assigned user claims such as [AMS](/@external/guides/security/cap-users#adding-ams-support-1)-Policies are represented in [CAP Users](/@external/guides/security/cap-users) and influence authorization checks at runtime. Finally, [Outbound Authentication](/@external/guides/security/remote-authentication) shows how CAP applications can establish HTTP connections to remote services without having to worry about authentication.

### CDS Expression Language

New reference docs for [**_CDS Expression Language (CXL)_**](/@external/cds/cxl) was added to provide an overview over the expression language which is used in [_CDS Query Language (CQL)_](/@external/cds/cql), [calculated elements](/@external/cds/cdl#calculated-elements), and in [annotation expressions](/@external/cds/cdl#expressions-as-annotation-values) like [`@assert`](/@external/guides/services/constraints).

[![Syntax diagram illustrating the CDS Expression Language elements: a horizontal flow with labeled nodes for leaf element, structured element, and association. Arrows connect these nodes, showing relationships and data flow. Additional node labeled infix filter branches from association. The diagram uses rounded rectangles and ellipses, with connecting lines and arrowheads. Text in the image includes leaf element, structured element, association, infix filter, and a dot symbol. The visual tone is neutral and instructional, designed to clarify the structure and relationships of CDS elements in a technical context.](/@external/cds/assets/cxl/ref.drawio.svg){style="width:70%; margin-top: 2em;"}](/@external/cds/cxl)


## Node.js

### Support for `express^5`

CAP Node.js now supports version 5 of [`express`](https://expressjs.com/) besides version 4, and we've made `express` a standard dependency.

If you don't require a specific version (for example, due to custom middleware), you can remove your own `express` dependency and automatically receive the latest version that is compatible with all your (transitive) dependencies.

::: warning Previously undefined `express` version
In case you so far didn't have an own dependency to `express` in your _package.json_, `express^4` was used, now `express^5` is used.
This might break code of yours that worked with express APIs.
In that case, add an explicit dependency to `express^4` to force that to be used – i.e.: `npm add express@4`.
:::

[Learn more about `express` usage in CAP Node.js.](/@external/node.js/cds-facade#cds-app){.learn-more}

### Initial Data Folders Configuration

The new config option <Config keyOnly>cds.requires.db.data=[]</Config> lets you configure source folders for initial data and test data CSV files across different profiles, which allows you to more conveniently manage your initial data for production, development, as well as various test scenarios.

::: code-group
```json [package.json]
"cds": {
  "requires": {
    "db": {
      "[development]": { "data": [ "db/data", "test/data" ] },
      "[production]": { "data": [ "db/data" ] }
    }
  }
}
```
```yaml [.cdsrc.yaml]
cds:
  requires:
    db:
      '[development]': { data: [ db/data, test/data ] }
      '[production]': { data: [ db/data ] }
```
:::

[Learn more about adding initial data.](/@external/guides/databases/initial-data){.learn-more}

> [!warning] `cds deploy --to hana` now includes test data
> Ad-hoc deployments with [`cds deploy --to hana`](/@external/guides/databases/hana#cds-deploy-hana) previously omitted the _test/data/_ folder, but include it now by default.  To restore the original behavior, call it with `--production`.


### New `cds.ql.clone()` Method

The newly documented [`cds.ql.clone()`](/@external/node.js/cds-ql#cds-ql-clone) method allows you to create shallow clones of CQN query objects, to keep the original query intact. This is particularly useful when you need to modify queries programmatically before passing them along to execution.

Apply a _given -> clone -> modify -> forward_ pattern to avoid unintended side effects:

   ```js
   // given
   const q1 = SELECT.from`Books` .orderBy`genre.name`
   ```
   ```js
   // clone
   let q2 = cds.ql.clone (q1)
   ```
   ```js
   // modify
   q2.orderBy`title desc`
   ```
   ```js
   // forward
   await cds.run (q2)
   ```

[Learn more about _Modifying CQNs_ in the new _Calesi_ guide.](/@external/guides/integration/calesi#modifying-cqns){.learn-more}



## Java

### Important Changes ❗️ { .important #important-changes-in-java}

Note that SapMachine 17 will reach end of life (EOL) in [September 2026](https://sapmachine.io/docs/maintenance-and-support).
Starting April 2nd, 2026 [SAP Java Buildpack](https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?Component=SAP+Java+Buildpack) will default to Java 21.

Application deployments from this point onwards will be staged and started with JDK 21, unless the version is explicitly pinned to JDK 17:

```yaml
---
applications:
- name: <APP_NAME>
  buildpacks:
  - sap_java_buildpack_jakarta
  ...
  env:
    TARGET_RUNTIME: tomcat
    JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']"
    JBP_CONFIG_SAP_MACHINE_JRE: '{ version: 17.+ }'
```

Consider migrating to JDK 21 soon, or preferably directly to JDK 25.


### Relaxed Path-based Inserts

OData requests with intermediate to‑one segments which have no key filter like `header` in `POST /Order(123)/header/shipments` were not supported out of the box so far.
Now the runtime accepts such a request in case an appropriate foreign key value (`header_ID` here) is provided in the request payload:

```http
POST /Order(123)/header/shipments

{
   "ID": 1001,
   "trackingNo": "ABC123",
   "header_ID": 42
}
```

In general, foreign key values that can be derived from the path take precedence over conflicting payload values.

<div id="messaging-sap" />

### Miscellaneous

* Support [function](/@external/guides/databases/cap-level-dbs#portable-functions) `ceil` as synonym for `ceiling`.


## CDS Editor
###### tools

### Multi-cursor for Selection Ranges

Selection ranges now also work with VS Code's [multi-cursor mode](https://code.visualstudio.com/docs/editing/codebasics#_multiple-selections-multicursor).

<video src="./assets/jan26/MulticursorSelection_compressed.mp4" autoplay loop muted webkit-playsinline playsinline style="width:550px"/>

> Multi-cursor support is also available in IntelliJ through the CDS language server.

### Folding Ranges Improvements

The editor now treats consecutive `using` statements as one collapsible block.

<video src="./assets/jan26/UsingsFoldingRange_compressed.mp4" autoplay loop muted webkit-playsinline playsinline style="width:550px"/>

> Range folding is also available in IntelliJ through the CDS language server.

### Faster References Search and Workspace Symbols <Beta />

Tasks like `Find References` or `Workspace Symbols` now may run faster through a persisted index.
Especially larger projects with multiple independent CDS files will benefit here.

![Enable Persistency](./assets/jan26/EnablePersistency.png){.ignore-dark}

In VS Code, enable the feature through setting [cds.workspace.persistency.enabled](vscode://settings/cds.workspace.persistency.enabled).

> This feature is currently in beta. Please let us know about improvements or issues in your projects.

### User Settings with Category Groups

The editor now groups the user settings in categories, allowing easier navigation:

![Categories in User Settings](./assets/jan26/UserSettingCategories.png){.ignore-dark }

## Kyma

### Multitenancy Upgrades for Kyma

For multitenant Kyma applications, `cds add multitenancy` now adds the [mtx-upgrade](/@external/guides/multitenancy/index.md#update-database-schema) Kubernetes job, automatically executed on each deployment.

[Learn more about Kyma Deployment.](/@external/guides/deploy/to-kyma){.learn-more}

### `cds debug --k8s`

`cds debug` is now also available for Kubernetes. Simply run this command to open a Chrome Node.js debugging session on your remote application running in Kyma:

```sh
cds debug bookshop-srv --k8s
```

<video src="./assets/jan26/cds-debug-k8s_compressed.mp4" autoplay loop muted webkit-playsinline playsinline />

> Use `kubectl get deployments` to see available applications.

## Capire Updates

Besides the renovations, mentioned at the top of the release notes this month, we had some more notable changes and additions.

### Exclude Elements with `@cds.java.ignore`

We documented how to exclude specific elements, actions, or functions from generated accessor interfaces using the `@cds.java.ignore` annotation.

[Learn more about excluding elements from accessor interfaces.](/@external/java/cds-data#excluding-elements){.learn-more}

### Enhanced `cds deploy --to hana` Documentation

The documentation for [`cds deploy --to hana`](/@external/guides/databases/hana#cds-deploy-hana) has been significantly improved with clearer explanations of how it works and better guidance on configuring deployments.

[Learn more about deploying to SAP HANA.](/@external/guides/databases/hana#cds-deploy-hana){.learn-more}

### Runtime Flag for Sample Projects

When adding sample files or data, you now need to use the  `--nodejs` or `--java` flag. The flag clarifies the target runtime and ensures proper project setup.

```sh
cds init --add sample --nodejs
```

[Learn more about `cds init` commands.](/@external/tools/cds-cli#cds-init){.learn-more}

### Enhanced Java Plugin Development Guide

The update includes additional guidance on:

- Proper versioning requirements for plugin compatibility
- Using Spring Boot auto-configuration correctly
- Recommended `cds-services` versions for plugin development

[Learn more about building CAP Java plugins.](/@external/java/building-plugins){.learn-more}
