Skip to content

Commit 40012ed

Browse files
Release 2025-07-18 (#1976)
2 parents ed5b25a + 65aeae7 commit 40012ed

File tree

17 files changed

+500
-484
lines changed

17 files changed

+500
-484
lines changed

.github/CODEOWNERS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# This files defines code ownership.
22

33
# General content
4-
* @renejeglinsky
5-
node.js/ @smahati
6-
java/ @smahati
4+
* @smahati
5+
# node.js/ @smahati
6+
# java/ @smahati
77

88
# Infra
99
.github/ @chgeo @swaldmann

advanced/fiori.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -463,10 +463,10 @@ SELECT.from(Books.drafts) //returns all drafts of the Books entity
463463

464464
In addition to adding [restrictions on services, entities, and actions/functions](/guides/security/authorization#restrictions), there are use cases where you only want to hide certain parts of the UI for specific users. This is possible by using the respective UI annotations like `@UI.Hidden` or `@UI.CreateHidden` in conjunction with `$edmJson` pointing to a singleton.
465465

466-
First, you define the [singleton](../advanced/odata#singletons) in your service and annotate it with [`@cds.persistency.skip`](../guides/databases#cds-persistence-skip) so that no database artefact is created:
466+
First, you define the [singleton](../advanced/odata#singletons) in your service and annotate it with [`@cds.persistence.skip`](../guides/databases#cds-persistence-skip) so that no database artefact is created:
467467

468468
```cds
469-
@odata.singleton @cds.persistency.skip
469+
@odata.singleton @cds.persistence.skip
470470
entity Configuration {
471471
key ID: String;
472472
isAdmin : Boolean;

cds/cdl.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ cds.compile(..., { docs: true })
322322

323323
::: tip Doc comments are automatically enabled in CAP Java.
324324
In CAP Java, doc comments are automatically enabled by the [CDS Maven Plugin](../java/developing-applications/building#cds-maven-plugin).
325-
In generated interfaces they are [converted to corresponding Javadoc comments](../java/assets/cds-maven-plugin-site/generate-mojo.html#documentation).
325+
In generated interfaces they are [converted to corresponding Javadoc comments](../java/assets/cds-maven-plugin-site/generate-mojo.html#documentation){target="_blank"}.
326326
:::
327327

328328
When generating output for deployment to SAP HANA, the first paragraph of a doc comment is translated

guides/databases-postgres.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,8 @@ cds build --production
325325
```json
326326
{
327327
"dependencies": {
328-
"@sap/cds": "^8",
329-
"@cap-js/postgres": "^1"
328+
"@sap/cds": "^9",
329+
"@cap-js/postgres": "^2"
330330
},
331331
"scripts": {
332332
"start": "cds-deploy"

guides/deployment/custom-builds.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ In the application's _package.json_, add a dependency to your plugin package to
300300
301301
```jsonc [package.json]
302302
"dependencies": {
303-
"@cap-js/postgres": "^1"
303+
"@cap-js/postgres": "^2"
304304
}
305305
```
306306

guides/extensibility/customization.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ npm add @sap/cds-mtxs
8383
"version": "1.0.0",
8484
"dependencies": {
8585
"@capire/common": "*",
86-
"@sap/cds": ">=5",
87-
"@sap/cds-mtxs": "^1"
86+
"@sap/cds": ">=9",
87+
"@sap/cds-mtxs": "^3"
8888
},
8989
"cds": {
9090
"requires": {

guides/multitenancy/index.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ cds add multitenancy
6565
```jsonc
6666
{
6767
"dependencies": {
68-
"@sap/cds-mtxs": "^2"
68+
"@sap/cds-mtxs": "^3"
6969
},
7070
}
7171
```
@@ -92,13 +92,16 @@ cds add multitenancy
9292
"name": "bookshop-mtx",
9393
"dependencies": {
9494
"@cap-js/hana": "^2",
95-
"@sap/cds": "^8",
96-
"@sap/cds-mtxs": "^2",
95+
"@sap/cds": "^9",
96+
"@sap/cds-mtxs": "^3",
9797
"@sap/xssec": "^4",
9898
"express": "^4"
9999
},
100100
"devDependencies": {
101-
"@cap-js/sqlite": "^1"
101+
"@cap-js/sqlite": "^2"
102+
},
103+
"engines": {
104+
"node": ">=20"
102105
},
103106
"scripts": {
104107
"start": "cds-serve"
@@ -164,13 +167,13 @@ cds add multitenancy
164167
"name": "bookshop-mtx",
165168
"dependencies": {
166169
"@cap-js/hana": "^2",
167-
"@sap/cds": "^8",
168-
"@sap/cds-mtxs": "^2",
170+
"@sap/cds": "^9",
171+
"@sap/cds-mtxs": "^3",
169172
"@sap/xssec": "^4",
170173
"express": "^4"
171174
},
172175
"devDependencies": {
173-
"@cap-js/sqlite": "^1"
176+
"@cap-js/sqlite": "^2"
174177
},
175178
"scripts": {
176179
"start": "cds-serve",
@@ -376,7 +379,7 @@ In the following steps, we start two servers, the main app and MTX sidecar, and
376379
In addition, we can see a `t0` tenant being deployed, which is used by the MTX services for book-keeping tasks.
377380

378381
```log
379-
[cds|t0] - loaded model from 1 file(s):
382+
[cds] - loaded model from 1 file(s):
380383
381384
../../db/t0.cds
382385

java/cds-data.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ Following is an example of the fluent style:
497497
Books.create().author(author).title("Wuthering Heights");
498498
```
499499

500-
The generation mode is configured by the property [`<methodStyle>`](./assets/cds-maven-plugin-site/generate-mojo.html#methodstyle) of the goal `cds:generate` provided by the CDS Maven Plugin. The selected `<methodStyle>` affects all entities and event contexts in your services. The default value is `BEAN`, which represents JavaBeans-style interfaces.
500+
The generation mode is configured by the property [`<methodStyle>`](./assets/cds-maven-plugin-site/generate-mojo.html#methodstyle){target="_blank"} of the goal `cds:generate` provided by the CDS Maven Plugin. The selected `<methodStyle>` affects all entities and event contexts in your services. The default value is `BEAN`, which represents JavaBeans-style interfaces.
501501

502502
Once, when starting a project, decide on the style of the interfaces that is best for your team and project. We recommend the default JavaBeans style.
503503

node.js/best-practices.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Example:
2626

2727
```json
2828
"dependencies": {
29-
"@sap/cds": "^5.5.0",
29+
"@sap/cds": "^9.1.0",
3030
"@sap/some-reuse-package": "^1.1.0",
3131
"express": "^4.17.0"
3232
}

node.js/fiori.md

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,35 @@ You can set the property to one of the following:
7777
- number of minutes like `'10min'`
7878
- number of milliseconds like `1000`
7979

80-
### Bypassing the SAP Fiori Draft Flow
80+
:::tip Delete released draft locks
81+
If the `draft_lock_timeout` has been reached, every user can delete other users' drafts to create an own draft. There can't be two drafts at the same time on the same entity.
82+
:::
83+
84+
### Garbage Collection of Stale Drafts
85+
86+
Inactive drafts are deleted automatically after the default timeout of 30 days. You can configure or deactivate this timeout by the following configuration:
87+
88+
```json
89+
{
90+
"cds": {
91+
"fiori": {
92+
"draft_deletion_timeout": "28d"
93+
}
94+
}
95+
}
96+
```
97+
98+
You can set the property to one of the following:
99+
- `false` in order to deactivate the timeout
100+
- number of days like `'30d'`
101+
- number of hours like `'72h'`
102+
- number of milliseconds like `1000`
103+
104+
::: info Technical background
105+
It can occur that inactive drafts are still in the database after the configured timeout. The deletion is implemented as a side effect of creating new drafts and there's no periodic job that does the garbage collection.
106+
:::
81107

108+
### Bypassing the SAP Fiori Draft Flow
82109
Creating or modifying active instances directly is possible without creating drafts. This comes in handy when technical services without a UI interact with each other.
83110

84111
To enable this feature, set this feature flag in your configuration:
@@ -122,30 +149,6 @@ Note that this feature creates additional entry points to your application. Cust
122149
payloads rather than the complete business object.
123150
:::
124151

125-
### Garbage Collection of Stale Drafts
126-
127-
Inactive drafts are deleted automatically after the default timeout of 30 days. You can configure or deactivate this timeout by the following configuration:
128-
129-
```json
130-
{
131-
"cds": {
132-
"fiori": {
133-
"draft_deletion_timeout": "28d"
134-
}
135-
}
136-
}
137-
```
138-
139-
You can set the property to one of the following:
140-
- `false` in order to deactivate the timeout
141-
- number of days like `'30d'`
142-
- number of hours like `'72h'`
143-
- number of milliseconds like `1000`
144-
145-
::: info Technical background
146-
It can occur that inactive drafts are still in the database after the configured timeout. The deletion is implemented as a side effect of creating new drafts and there's no periodic job that does the garbage collection.
147-
:::
148-
149152
### Differences to Previous Version
150153

151154
- Draft-enabled entities have corresponding CSN entities for drafts:

0 commit comments

Comments
 (0)