From 43934b7ed5147c25072458668fb190f5fb5071fe Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Wed, 24 Sep 2025 11:27:59 +0200 Subject: [PATCH 01/10] shared-db w/ java --- guides/deployment/microservices.md | 270 ++++++++++++++++++++++++++++- 1 file changed, 266 insertions(+), 4 deletions(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 0f72155024..7560a2456f 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -35,6 +35,8 @@ This guide describes a way to manage development and deployment via *[monorepos] echo "{\"name\":\"@capire/samples\",\"workspaces\":[\"*\"]}" > package.json ``` +
+ 2. Add the previously mentioned projects as `git` submodules: ```sh @@ -48,6 +50,25 @@ This guide describes a way to manage development and deployment via *[monorepos] git submodule update --init ``` +
+ +
+ +2. Add the previously mentioned projects as `git` submodules: + + ```sh + git init + git submodule add https://github.com/capire/bookstore-java + git submodule add https://github.com/capire/reviews-java + git submodule add https://github.com/capire/orders-java + git submodule add https://github.com/capire/common-java + git submodule add https://github.com/capire/bookshop-java + git submodule add https://github.com/capire/data-viewer-java + git submodule update --init + ``` + +
+ Add a _.gitignore_ file with the following content: ```txt node_modules @@ -55,6 +76,9 @@ This guide describes a way to manage development and deployment via *[monorepos] ``` > The outcome of this looks and behaves exactly as the monorepo layout in *[cap/samples](https://github.com/capire/samples)*, so we can exercise the subsequent steps in there... + +
+ 3. Test-drive locally: ```sh npm install @@ -64,13 +88,24 @@ This guide describes a way to manage development and deployment via *[monorepos] cds w bookshop ``` + Each microservice can be started independently. If you start each microservice, one after the other in a different terminal, the connection is already established. + + [Learn more about Automatic Bindings by `cds watch`](../extensibility/composition#bindings-via-cds-watch){.learn-more} + +
+ +
+ +3. Test-drive locally: ```sh - cds w bookstore + npm install ``` - Each microservice can be started independently. If you start each microservice, one after the other in a different terminal, the connection is already established. + ```sh + cd bookstore && npm start + ``` - [Learn more about Automatic Bindings by `cds watch`](../extensibility/composition#bindings-via-cds-watch){.learn-more} +
::: details The project structure @@ -208,8 +243,18 @@ This section is about how to deploy all 3+1 projects at once with a common _mta. ![component diagram with synchronous and event communication for orders](./assets/microservices/bookstore.excalidraw.svg) +
+ [@capire/samples](https://github.com/capire/samples#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. +
+ +
+ +TODO [@capire/samples-java](https://github.com/capire/samples-java#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. + +
+ ### Deployment Descriptor Add initial multitarget application configuration for deployment to Cloud Foundry: @@ -258,6 +303,7 @@ build-parameters: ``` ::: +
::: info `cds build --ws` If the CDS models of every NPM workspace contained in the monorepo should be considered, then instead of creating this `shared-db` folder, you can also use: @@ -269,8 +315,12 @@ The `--ws` aggregates all models in the NPM workspaces. In this walkthrough, we only include a subset of the CDS models in the deployment. ::: +
+ +
::: details Configure each app for cloud readiness + The preceding steps only added configuration to the workspace root. Additionally add database configuration to each module that we want to deploy - bookstore, orders, and reviews: @@ -280,11 +330,25 @@ npm i @cap-js/hana --workspace bookstore npm i @cap-js/hana --workspace orders npm i @cap-js/hana --workspace reviews ``` + +::: + +
+ +
+ +::: details Configure each app for cloud readiness + +For each project add the **cds-starter-cloudfoundry** [starter bundle](https://cap.cloud.sap/docs/java/developing-applications/building#starter-bundles). + ::: +
### Applications +
+ Replace the MTA module for `samples-srv` with versions for each CAP service and adjust `name`, `path`, and `provides[0].name` to match the module name. Also change the `npm-ci` builder to the `npm` builder. ::: code-group @@ -347,7 +411,90 @@ modules: ``` ::: -Add build commands for each module to be deployed: +
+ +
+ +Replace the MTA module for `samples-srv` with versions for each CAP service and adjust `name`, `path`, and `provides[0].name` to match the module name. Also change the `npm-ci` builder to the `npm` builder. + +::: code-group +```yaml [mta.yaml] +modules: + + - name: bookstore-srv # [!code focus] + type: java + path: bookstore/srv # [!code focus] + parameters: + instances: 1 + buildpack: sap_java_buildpack_jakarta + properties: + SPRING_PROFILES_ACTIVE: cloud,sandbox + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']" + JBP_CONFIG_SAP_MACHINE_JRE: '{ version: 21.+ }' + build-parameters: + builder: custom + commands: + - mvn clean package -DskipTests=true --batch-mode + provides: # [!code focus] + - name: bookstore-api # [!code focus] + properties: + srv-url: ${default-url} + requires: + - name: samples-db + - name: samples-auth + - name: samples-messaging + - name: samples-destination + + - name: orders-srv # [!code focus] + type: java + path: orders/srv # [!code focus] + parameters: + instances: 1 + buildpack: sap_java_buildpack_jakarta + build-parameters: + builder: custom + commands: + - mvn clean package -DskipTests=true --batch-mode + build-result: target/*-exec.jar + provides: # [!code focus] + - name: orders-api # [!code focus] + properties: + srv-url: ${default-url} + requires: + - name: samples-db + - name: samples-auth + - name: samples-messaging + - name: samples-destination + + - name: reviews-srv # [!code focus] + type: java + path: reviews/srv # [!code focus] + parameters: + instances: 1 + buildpack: sap_java_buildpack_jakarta + build-parameters: + builder: custom + commands: + - mvn clean package -DskipTests=true --batch-mode + build-result: target/*-exec.jar + provides: # [!code focus] + - name: reviews-api # [!code focus] + properties: + srv-url: ${default-url} + requires: + - name: samples-db + - name: samples-auth + - name: samples-messaging + - name: samples-destination +... +``` +::: + +
+ +
+ +Add build commands for each module to be prepared for deployment: ::: code-group ```yaml [mta.yaml] @@ -367,6 +514,8 @@ build-parameters: Note that we use the *--ws-pack* option for some modules. It's important for node modules referencing other repository-local node modules. ::: +
+ ### Authentication @@ -400,6 +549,8 @@ Add the admin role ``` ::: +
+ ::: details Configure each app for cloud readiness Add NPM dependency `@sap/xssec`: @@ -410,10 +561,14 @@ npm i @sap/xssec --workspace reviews ``` ::: +
+ ### Messaging The messaging service is used to organize asynchronous communication between the CAP services. +
+ ```shell cds add enterprise-messaging ``` @@ -499,6 +654,69 @@ Enable messaging for the modules that use it: ::: +
+ +
+ +Create a new file named event-mesh.json to store the configuration for enterprise messaging. Skip the *emname* and *namespace* properties, as these will be parameterized dynamically in the mta.yaml file: + +::: code-group +```json [event-mesh.json] +{ + "version": "1.1.0", + "emname": "samples-emname", // [!code --] + "version": "1.1.0", + "namespace": "default/samples/1", // [!code --] + "options": { + "management": true, + "messagingrest": true, + "messaging": true + }, + "rules": { + "topicRules": { + "publishFilter": [ + "*" + ], + "subscribeFilter": [ + "*" + ] + }, + "queueRules": { + "publishFilter": [ + "*" + ], + "subscribeFilter": [ + "*" + ] + } + }, + "authorities": [ + "$ACCEPT_GRANTED_AUTHORITIES" + ] +} +``` +::: + +Add messaging resource in mta.yaml with parametrized *emname* and *namespace* properties: + +::: code-group +```yaml [mta.yaml] +resources: + - name: samples-messaging + type: org.cloudfoundry.managed-service + parameters: + service: enterprise-messaging + service-plan: default + path: ./event-mesh.json + config: # [!code ++] + emname: bookstore-${org}-${space} # [!code ++] + namespace: cap/samples/${space} # [!code ++] +``` +::: + + +
+ ### Destinations @@ -550,6 +768,8 @@ modules: Use the destinations in the bookstore application: +
+ ::: code-group ```yaml [mta.yaml] modules: @@ -561,6 +781,35 @@ modules: ``` ::: +
+ +
+ +::: code-group +```yaml [bookstore/srv/src/main/resources/application.yaml] +cds: + odataV4.endpoint.path: / + messaging.services: + samples-messaging: + kind: enterprise-messaging + remote.services: # [!code ++] + OrdersService: # [!code ++] + type: "odata-v4" # [!code ++] + http: # [!code ++] + suffix: "/odata/v4" # [!code ++] + destination: # [!code ++] + name: "orders-dest" # [!code ++] + ReviewsService: # [!code ++] + type: "odata-v4" # [!code ++] + destination: # [!code ++] + name: "reviews-dest" # [!code ++] +``` +::: + +
+ +
+ ::: details Configure each app for cloud readiness Add `@sap-cloud-sdk/http-client` and `@sap-cloud-sdk/resilience` for each module utilizing the destinations: @@ -571,6 +820,19 @@ npm i @sap-cloud-sdk/resilience --workspace bookstore ``` ::: +
+ + +
+ +::: details Configure each app for cloud readiness + +Add dependency to the **cds-feature-remote-odata** [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) + +::: + +
+ ### Approuter Add [approuter configuration](../deployment/to-cf#add-app-router) using the command: From c448fdac5822444e20c2c74b4f5df98188d86d0c Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Wed, 8 Oct 2025 15:49:03 +0200 Subject: [PATCH 02/10] update --- guides/deployment/microservices.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 7560a2456f..4707e6a969 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -658,7 +658,7 @@ Enable messaging for the modules that use it:
-Create a new file named event-mesh.json to store the configuration for enterprise messaging. Skip the *emname* and *namespace* properties, as these will be parameterized dynamically in the mta.yaml file: +Create a new file named event-mesh.json to store the configuration for enterprise messaging. Skip the `emname` and `namespace` properties, as these will be parameterized dynamically in the mta.yaml file: ::: code-group ```json [event-mesh.json] @@ -697,7 +697,7 @@ Create a new file named event-mesh.json to store the configuration for enterpris ``` ::: -Add messaging resource in mta.yaml with parametrized *emname* and *namespace* properties: +Add messaging resource in mta.yaml with parametrized `emname` and `namespace` properties: ::: code-group ```yaml [mta.yaml] From 13f868e96818970a94631c4155627f6b54e0808c Mon Sep 17 00:00:00 2001 From: Rene Jeglinsky Date: Fri, 10 Oct 2025 12:43:54 +0200 Subject: [PATCH 03/10] remove toggles, initial version --- guides/deployment/microservices.md | 155 +++++++---------------------- 1 file changed, 37 insertions(+), 118 deletions(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 4707e6a969..aee6f1b679 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -35,11 +35,10 @@ This guide describes a way to manage development and deployment via *[monorepos] echo "{\"name\":\"@capire/samples\",\"workspaces\":[\"*\"]}" > package.json ``` -
- 2. Add the previously mentioned projects as `git` submodules: - ```sh + ::: code-group + ```sh [Node.js] git init git submodule add https://github.com/capire/bookstore git submodule add https://github.com/capire/reviews @@ -49,14 +48,7 @@ This guide describes a way to manage development and deployment via *[monorepos] git submodule add https://github.com/capire/data-viewer git submodule update --init ``` - -
- -
- -2. Add the previously mentioned projects as `git` submodules: - - ```sh + ```sh [Java] git init git submodule add https://github.com/capire/bookstore-java git submodule add https://github.com/capire/reviews-java @@ -66,8 +58,7 @@ This guide describes a way to manage development and deployment via *[monorepos] git submodule add https://github.com/capire/data-viewer-java git submodule update --init ``` - -
+ ::: Add a _.gitignore_ file with the following content: ```txt @@ -77,42 +68,30 @@ This guide describes a way to manage development and deployment via *[monorepos] > The outcome of this looks and behaves exactly as the monorepo layout in *[cap/samples](https://github.com/capire/samples)*, so we can exercise the subsequent steps in there... -
- 3. Test-drive locally: - ```sh + + ::: code-group + ```sh [Node.js] npm install - ``` - - ```sh cds w bookshop ``` - - Each microservice can be started independently. If you start each microservice, one after the other in a different terminal, the connection is already established. - - [Learn more about Automatic Bindings by `cds watch`](../extensibility/composition#bindings-via-cds-watch){.learn-more} - -
- -
- -3. Test-drive locally: - ```sh + ```sh [Java] npm install - ``` - - ```sh cd bookstore && npm start ``` + ::: -
+ In Node.js, each microservice can be started independently. If you start each microservice, one after the other in a different terminal, the connection is already established. + + [Learn more about Automatic Bindings by `cds watch`](../extensibility/composition#bindings-via-cds-watch){.learn-more} ::: details The project structure The project structure used here is as follows: -```txt +::: code-group +```txt [Node.js] / ├─ bookstore/ ├─ orders/ @@ -120,6 +99,14 @@ The project structure used here is as follows: ├─ ... └─ package.json ``` +```txt [Java] +/ +├─ bookstore-java/ +├─ orders-java/ +├─ reviews-java/ +├─ ... +└─ package.json +``` The individual services (`bookstore`, `reviews`, `orders`) can be one of the following: * folders, committed directly to the root project @@ -243,17 +230,9 @@ This section is about how to deploy all 3+1 projects at once with a common _mta. ![component diagram with synchronous and event communication for orders](./assets/microservices/bookstore.excalidraw.svg) -
- -[@capire/samples](https://github.com/capire/samples#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. - -
+For Node.js, [@capire/samples](https://github.com/capire/samples#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. -
- -TODO [@capire/samples-java](https://github.com/capire/samples-java#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. - -
+TODO For CAP Java, [@capire/samples-java](https://github.com/capire/samples-java#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. ### Deployment Descriptor @@ -303,9 +282,7 @@ build-parameters: ``` ::: -
- -::: info `cds build --ws` +::: info `cds build --ws` with Node.js If the CDS models of every NPM workspace contained in the monorepo should be considered, then instead of creating this `shared-db` folder, you can also use: ```shell cds build --for hana --production --ws @@ -315,11 +292,7 @@ The `--ws` aggregates all models in the NPM workspaces. In this walkthrough, we only include a subset of the CDS models in the deployment. ::: -
- -
- -::: details Configure each app for cloud readiness +::: details Node.js: Configure each app for cloud readiness The preceding steps only added configuration to the workspace root. @@ -333,26 +306,18 @@ npm i @cap-js/hana --workspace reviews ::: -
- -
- -::: details Configure each app for cloud readiness +::: details CAP Java: Configure each app for cloud readiness For each project add the **cds-starter-cloudfoundry** [starter bundle](https://cap.cloud.sap/docs/java/developing-applications/building#starter-bundles). ::: -
- ### Applications -
- Replace the MTA module for `samples-srv` with versions for each CAP service and adjust `name`, `path`, and `provides[0].name` to match the module name. Also change the `npm-ci` builder to the `npm` builder. ::: code-group -```yaml [mta.yaml] +```yaml [Node.js (mta.yaml)] modules: - name: bookstore-srv # [!code focus] type: nodejs @@ -409,16 +374,7 @@ modules: - name: samples-destination ... ``` -::: - -
- -
- -Replace the MTA module for `samples-srv` with versions for each CAP service and adjust `name`, `path`, and `provides[0].name` to match the module name. Also change the `npm-ci` builder to the `npm` builder. - -::: code-group -```yaml [mta.yaml] +```yaml [Java (mta.yaml)] modules: - name: bookstore-srv # [!code focus] @@ -490,11 +446,7 @@ modules: ``` ::: -
- -
- -Add build commands for each module to be prepared for deployment: +In Node.js, add build commands for each module to be prepared for deployment: ::: code-group ```yaml [mta.yaml] @@ -514,9 +466,6 @@ build-parameters: Note that we use the *--ws-pack* option for some modules. It's important for node modules referencing other repository-local node modules. ::: -
- - ### Authentication Add [security configuration](../security/authorization#xsuaa-configuration) using the command: @@ -549,9 +498,7 @@ Add the admin role ``` ::: -
- -::: details Configure each app for cloud readiness +::: details Node.js: Configure each app for cloud readiness Add NPM dependency `@sap/xssec`: ```shell @@ -561,13 +508,11 @@ npm i @sap/xssec --workspace reviews ``` ::: -
- ### Messaging The messaging service is used to organize asynchronous communication between the CAP services. -
+#### In Node.js ```shell cds add enterprise-messaging @@ -654,9 +599,7 @@ Enable messaging for the modules that use it: ::: -
- -
+#### In CAP Java Create a new file named event-mesh.json to store the configuration for enterprise messaging. Skip the `emname` and `namespace` properties, as these will be parameterized dynamically in the mta.yaml file: @@ -714,10 +657,6 @@ resources: ``` ::: - -
- - ### Destinations Add [destination configuration](https://cap.cloud.sap/docs/guides/using-services#using-destinations) for connectivity between the apps: @@ -768,10 +707,8 @@ modules: Use the destinations in the bookstore application: -
- ::: code-group -```yaml [mta.yaml] +```yaml [Node.js (mta.yaml)] modules: - name: bookstore-srv ... @@ -779,14 +716,7 @@ modules: cds_requires_ReviewsService_credentials: {"destination": "reviews-dest","path": "/reviews"} # [!code ++] cds_requires_OrdersService_credentials: {"destination": "orders-dest","path": "/odata/v4/orders"} # [!code ++] ``` -::: - -
- -
- -::: code-group -```yaml [bookstore/srv/src/main/resources/application.yaml] +```yaml [Java (bookstore/srv/src/main/resources/application.yaml)] cds: odataV4.endpoint.path: / messaging.services: @@ -806,11 +736,7 @@ cds: ``` ::: -
- -
- -::: details Configure each app for cloud readiness +::: details Node.js: Configure each app for cloud readiness Add `@sap-cloud-sdk/http-client` and `@sap-cloud-sdk/resilience` for each module utilizing the destinations: @@ -820,19 +746,12 @@ npm i @sap-cloud-sdk/resilience --workspace bookstore ``` ::: -
- - -
- -::: details Configure each app for cloud readiness +::: details CAP Java: Configure each app for cloud readiness Add dependency to the **cds-feature-remote-odata** [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) ::: -
- ### Approuter Add [approuter configuration](../deployment/to-cf#add-app-router) using the command: From 6f7637eb2d89511b61c304d18b9b21f5764db891 Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Mon, 13 Oct 2025 11:20:35 +0200 Subject: [PATCH 04/10] improve remote odata with destinations --- guides/deployment/microservices.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index aee6f1b679..31dfd7d9ce 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -748,8 +748,26 @@ npm i @sap-cloud-sdk/resilience --workspace bookstore ::: details CAP Java: Configure each app for cloud readiness -Add dependency to the **cds-feature-remote-odata** [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) +To access remote OData services, you need to add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, you must include a *com.sap.cloud.sdk.cloudplatform* dependency with artifact ID *scp-cf*, as described in the following steps: [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). +::: code-group +```xml [bookstore/srv/pom.xml] +... + +... + + com.sap.cds + cds-feature-remote-odata + runtime + 4.0.2 + + + + com.sap.cloud.sdk.cloudplatform + scp-cf + +... +``` ::: ### Approuter From a5a9f8843f3b4f801d1df9f9b7a45146bf115779 Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Fri, 19 Dec 2025 14:45:16 +0100 Subject: [PATCH 05/10] reuse common, data-viewer --- guides/deployment/microservices.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 5c5d8a0d2a..11fce61b81 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -53,9 +53,9 @@ This guide describes a way to manage development and deployment via *[monorepos] git submodule add https://github.com/capire/bookstore-java git submodule add https://github.com/capire/reviews-java git submodule add https://github.com/capire/orders-java - git submodule add https://github.com/capire/common-java + git submodule add https://github.com/capire/common git submodule add https://github.com/capire/bookshop-java - git submodule add https://github.com/capire/data-viewer-java + git submodule add https://github.com/capire/data-viewer git submodule update --init ``` ::: @@ -67,7 +67,6 @@ This guide describes a way to manage development and deployment via *[monorepos] ``` > The outcome of this looks and behaves exactly as the monorepo layout in *[cap/samples](https://github.com/capire/samples)*, so we can exercise the subsequent steps in there... - 3. Test-drive locally: ::: code-group @@ -232,7 +231,7 @@ This section is about how to deploy all 3+1 projects at once with a common _mta. For Node.js, [@capire/samples](https://github.com/capire/samples#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. -TODO For CAP Java, [@capire/samples-java](https://github.com/capire/samples-java#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. +For CAP Java, [@capire/samples-java](https://github.com/capire/samples-java#readme) already has an all-in-one deployment implemented. Similar steps are necessary to convert projects with multiple CAP applications into a shared database deployment. ### Deployment Descriptor @@ -640,7 +639,7 @@ Create a new file named event-mesh.json to store the configuration for enterpris ``` ::: -Add messaging resource in mta.yaml with parametrized `emname` and `namespace` properties: +Add a messaging resource in mta.yaml with parameterized `emname` and `namespace` properties: ::: code-group ```yaml [mta.yaml] From 50b1880738dc435005d15a57f2fefe4243b222ae Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Fri, 19 Dec 2025 14:53:16 +0100 Subject: [PATCH 06/10] small improvements --- guides/deployment/microservices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 11fce61b81..0670e74b47 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -607,7 +607,6 @@ Create a new file named event-mesh.json to store the configuration for enterpris { "version": "1.1.0", "emname": "samples-emname", // [!code --] - "version": "1.1.0", "namespace": "default/samples/1", // [!code --] "options": { "management": true, @@ -767,6 +766,7 @@ To access remote OData services, you need to add a dependency to the *cds-featur ... ``` + ::: ### App Router From 8df033ab62a5ccd46bda6f47cc217bfc59bf021e Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Fri, 19 Dec 2025 14:56:30 +0100 Subject: [PATCH 07/10] improve --- guides/deployment/microservices.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 0670e74b47..14727128d3 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -66,7 +66,6 @@ This guide describes a way to manage development and deployment via *[monorepos] gen ``` > The outcome of this looks and behaves exactly as the monorepo layout in *[cap/samples](https://github.com/capire/samples)*, so we can exercise the subsequent steps in there... - 3. Test-drive locally: ::: code-group @@ -746,7 +745,7 @@ npm i @sap-cloud-sdk/resilience --workspace bookstore ::: details CAP Java: Configure each app for cloud readiness -To access remote OData services, you need to add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, you must include a *com.sap.cloud.sdk.cloudplatform* dependency with artifact ID *scp-cf*, as described in the following steps: [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). +To access remote OData services, add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, include a *com.sap.cloud.sdk.cloudplatform* dependency with artifact ID *scp-cf*, as described in the following steps: [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). ::: code-group ```xml [bookstore/srv/pom.xml] From a1efe3b62ff1002324dab56207ed0b3545807303 Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Fri, 19 Dec 2025 14:59:44 +0100 Subject: [PATCH 08/10] improve --- guides/deployment/microservices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 14727128d3..40bf88a46a 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -745,7 +745,7 @@ npm i @sap-cloud-sdk/resilience --workspace bookstore ::: details CAP Java: Configure each app for cloud readiness -To access remote OData services, add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, include a *com.sap.cloud.sdk.cloudplatform* dependency with artifact ID *scp-cf*, as described in the following steps: [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). +To access remote OData services, add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, include a *com.sap.cloud.sdk.cloudplatform* dependency with artifact ID *scp-cf*, as described in [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). ::: code-group ```xml [bookstore/srv/pom.xml] From 65023b188fbf28276e429fe792ae06e239eca7b2 Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Fri, 19 Dec 2025 15:01:30 +0100 Subject: [PATCH 09/10] improve --- guides/deployment/microservices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 40bf88a46a..019fc8cbc9 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -599,7 +599,7 @@ Enable messaging for the modules that use it: #### In CAP Java -Create a new file named event-mesh.json to store the configuration for enterprise messaging. Skip the `emname` and `namespace` properties, as these will be parameterized dynamically in the mta.yaml file: +Create a new file named event-mesh.json to store the configuration for enterprise messaging. Skip the `emname` and `namespace` properties, as the mta.yaml file parameterizes these dynamically: ::: code-group ```json [event-mesh.json] From 0b46dc2146fdd0e849f97f05ccebe74f31273246 Mon Sep 17 00:00:00 2001 From: Vladislav Leonkev Date: Fri, 19 Dec 2025 15:03:51 +0100 Subject: [PATCH 10/10] improve --- guides/deployment/microservices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guides/deployment/microservices.md b/guides/deployment/microservices.md index 019fc8cbc9..5525d13048 100644 --- a/guides/deployment/microservices.md +++ b/guides/deployment/microservices.md @@ -745,7 +745,7 @@ npm i @sap-cloud-sdk/resilience --workspace bookstore ::: details CAP Java: Configure each app for cloud readiness -To access remote OData services, add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, include a *com.sap.cloud.sdk.cloudplatform* dependency with artifact ID *scp-cf*, as described in [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). +To access remote OData services, add a dependency to the *cds-feature-remote-odata* [application plugin](https://cap.cloud.sap/docs/java/developing-applications/building#standard-modules) and provide the latest available version. Additionally, to retrieve destination configurations using the destination service, include a *com.sap.cloud.sdk.cloudplatform* dependency with the *scp-cf* artifact ID, as described in [Cloud SDK Integration](https://cap.cloud.sap/docs/java/cqn-services/remote-services#cloud-sdk-dependencies). ::: code-group ```xml [bookstore/srv/pom.xml]