From 3e8ce2f393301d1bd9a5f7644874db75eb601ebe Mon Sep 17 00:00:00 2001 From: ditaccms-bot Date: Wed, 3 Apr 2024 10:29:55 +0000 Subject: [PATCH] Update from SAP DITA CMS (squashed): commit b493e7ce0a6b42a8f8d5ddd5e4d21c624c1045ca Author: REDACTED Date: Wed Apr 3 05:12:54 2024 +0000 Update from SAP DITA CMS 2024-04-03 05:12:54 Project: dita-all/jjq1673438782153 Project map: c2f780f61c744155b0bd42b6f38fb70c.ditamap Output: loio2080d0faf9d84ce6aa14caa4caa32935 Language: en-US Builddable map: 0fcfe38e11674227bb0a8d014337319b.ditamap commit b80f320be57d8a010af130e16183cf0dd5986779 Author: REDACTED Date: Tue Apr 2 13:49:30 2024 +0000 Update from SAP DITA CMS 2024-04-02 13:49:30 Project: dita-all/jjq1673438782153 Project map: c2f780f61c744155b0bd42b6f38fb70c.ditamap Output: loio2080d0faf9d84ce6aa14caa4caa32935 Language: en-US Builddable map: 0fcfe38e11674227bb0a8d014337319b.ditamap commit 2282f0833708c2e250a38dd7b65468ecf036eadc Author: REDACTED Date: Tue Apr 2 07:39:41 2024 +0000 Update from SAP DITA CMS 2024-04-02 07:39:41 Project: dita-all/jjq1673438782153 Project map: c2f780f61c744155b0bd42b6f38fb70c.ditamap Output: loio2080d0faf9d84ce6aa14caa4caa32935 Language: en-US Builddable map: 0fcfe38e11674227bb0a8d014337319b.ditamap ################################################## [Remaining squash message was removed before commit...] --- .../basic-platform-concepts-73beb06.md | 2 +- ...or-platform-users-feature-set-a-783ff50.md | 2 +- docs/10-concepts/commercial-models-263d400.md | 2 +- ...hic_-_SAP_CP_Commercial_Models_6734474.png | Bin 58910 -> 53481 bytes docs/10-concepts/kyma-modules-0dda141.md | 6 +- .../kyma-s-modular-approach-95a4101.md | 2 +- ...egions-for-the-kyma-environment-557ec3a.md | 92 +++++++- ...s-and-subaccounts-feature-set-b-0039cf0.md | 2 +- .../using-free-service-plans-524e108.md | 2 +- ...sumption-based-commercial-model-7047eb4.md | 29 ++- ...ion-as-trusted-service-provider-bfc537a.md | 214 ------------------ ...g-trust-of-type-openid-connect-b9f4b0d.md} | 8 +- ...r-for-the-cloud-foundry-account-55e7d92.md | 48 ---- ...-from-the-cloud-foundry-account-326c830.md | 30 --- .../getting-started-144e173.md | 2 +- ...with-the-saml-identity-provider-36214a9.md | 16 -- ...up-of-a-custom-identity-service-550251a.md | 8 +- ...f-the-abap-environment-optional-cd7e7e6.md | 2 +- .../accessing-business-service-ui-0f1f92e.md | 12 +- ...pplication-router-configuration-c19f165.md | 6 +- ...descriptor-configuration-syntax-517895a.md | 12 +- ...n-of-destination-configurations-be0acbf.md | 92 ++++++++ docs/30-development/best-practices-0859096.md | 2 +- docs/30-development/buildpacks-5e7fc02.md | 2 +- .../changing-a-dimension-3beb828.md | 3 + .../changing-a-unit-of-measurement-2451351.md | 3 + .../community-java-buildpack-4e2f2b5.md | 23 ++ ...ap-event-mesh-for-kyma-eventing-407d126.md | 6 +- docs/30-development/create-pull-c4b8a97.md | 2 +- .../creating-a-dimension-b91768d.md | 5 +- .../creating-a-unit-of-measurement-f879258.md | 3 + .../creating-service-keys-4514a14.md | 2 +- .../deleting-a-dimension-473b3ce.md | 3 + .../deleting-a-unit-of-measurement-54ded5b.md | 3 + ...n-the-cloud-foundry-environment-3a7a0be.md | 14 +- ...n-the-cloud-foundry-environment-acf8f49.md | 16 +- docs/30-development/development-c2fec62.md | 2 +- .../environment-variables-ba52705.md | 12 +- .../factory-calendar-f7cbd3c.md | 12 - .../memory-calculator-505a71a.md | 6 +- .../memory-calculator-v2-8eef959.md | 50 +++- .../parameters-and-properties-490c8f7.md | 2 +- docs/30-development/resources-9e34487.md | 2 +- .../sap-java-buildpack-1-ad3e8df.md | 54 +++-- .../sap-java-buildpack-2-1cf206b.md | 57 ++--- docs/30-development/sapmachine-785d6b3.md | 70 +++++- .../setting-up-the-authorizations-bb559a5.md | 51 ++--- ...le-conversion-between-two-units-4083add.md | 2 +- .../soap-communication-via-url-7e22ed9.md | 9 +- ...cols-and-authentication-methods-437e9d4.md | 2 + ...tricks-for-node-js-applications-3a5fe88.md | 18 +- ...-tricks-for-python-applications-b5e1c82.md | 12 +- ...on-for-industry-cloud-solutions-0b23a32.md | 54 +++++ ...hange-between-sap-cloud-systems-1592246.md | 20 -- ...-system-landscape-for-sap-build-6424311.md | 120 ++++++++++ .../extensibility-concepts-3ce5e05.md | 24 +- ...ncluding-systems-in-a-formation-68b04fa.md | 165 +++----------- ...o-your-subaccount-feature-set-b-1e1b7b6.md | 6 +- ...r-the-cloud-foundry-environment-adaefa6.md | 2 +- ...-the-cloud-foundry-environment-30ece35.md} | 96 +++++--- ...n-the-cloud-foundry-environment-f92c86a.md | 2 +- ...e-plans-in-the-kyma-environment-befe01d.md | 2 +- .../create-orgs-a9b1f54.md | 16 +- .../create-spaces-2f6ed22.md | 2 +- ...-and-trust-management-service-a-161f8f0.md | 2 +- ...eir-role-collection-assignments-870533e.md | 2 +- ...Costs_and_Usage_-_Billing_View_8ab0cc8.png | Bin 48871 -> 39695 bytes ...osts_and_Usage_UI_-_Upper_Area_b057c4a.png | Bin 56736 -> 68041 bytes ...obal-accounts-using-the-cockpit-667f34b.md | 7 +- .../managing-resource-providers-e2c250d.md | 8 +- ...on-costs-in-your-global-account-de6f0db.md | 105 ++++++--- ...ameters-in-the-kyma-environment-e2e13bf.md | 30 ++- ...e-signing-keys-of-access-tokens-b279adf.md | 2 + ...anagement-service-service-plans-a508b72.md | 6 +- ...logging-and-read-access-logging-93fac8d.md | 2 +- ...stom-identity-provider-for-kyma-67bcc6e.md | 16 +- .../personal-data-record-817f6ac.md | 2 +- .../getting-support-5dd7398.md | 6 + .../support-components-08d1103.md | 56 +++++ docs/index.md | 15 +- ...ap-business-technology-platform-6a2c1ab.md | 2 +- 81 files changed, 1017 insertions(+), 790 deletions(-) delete mode 100644 docs/20-getting-started/creating-a-cloud-foundry-application-as-trusted-service-provider-bfc537a.md rename docs/20-getting-started/{establishing-trust-automatically-b9f4b0d.md => establishing-trust-of-type-openid-connect-b9f4b0d.md} (82%) delete mode 100644 docs/20-getting-started/establishing-trust-to-the-saml-identity-provider-for-the-cloud-foundry-account-55e7d92.md delete mode 100644 docs/20-getting-started/exporting-the-saml-service-provider-metadata-from-the-cloud-foundry-account-326c830.md delete mode 100644 docs/20-getting-started/manual-trust-setup-with-the-saml-identity-provider-36214a9.md create mode 100644 docs/30-development/automatic-creation-of-destination-configurations-be0acbf.md create mode 100644 docs/40-extensions/enabling-data-ingestion-for-industry-cloud-solutions-0b23a32.md create mode 100644 docs/40-extensions/enabling-system-landscape-for-sap-build-6424311.md rename docs/50-administration-and-ops/{audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md => audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md} (65%) diff --git a/docs/10-concepts/basic-platform-concepts-73beb06.md b/docs/10-concepts/basic-platform-concepts-73beb06.md index b3bba1f6..6f3a9751 100644 --- a/docs/10-concepts/basic-platform-concepts-73beb06.md +++ b/docs/10-concepts/basic-platform-concepts-73beb06.md @@ -109,7 +109,7 @@ SAP BTP offers two different commercial models: ![Commercial Models](images/Commercial_Models_6d1e8a8.png) -- **Consumption-based commercial model:** Your organization receives access to all current and future services that are eligible for this model. You have complete flexibility to turn services on and off and to switch between services as your business requires throughout the duration of your contract. This commercial model is available in the following flavors: Cloud Platform Enterprise Agreement \(CPEA\) and Pay-As-You-Go for SAP BTP. +- **Consumption-based commercial model:** Your organization receives access to all current and future services that are eligible for this model. You have complete flexibility to turn services on and off and to switch between services as your business requires throughout the duration of your contract. This commercial model is available in the following flavors: SAP BTP Enterprise Agreement \(SAP BTPEA\),Cloud Platform Enterprise Agreement \(CPEA\), and Pay-As-You-Go for SAP BTP. For more information, see [What Is the Consumption-Based Commercial Model?](what-is-the-consumption-based-commercial-model-7047eb4.md) diff --git a/docs/10-concepts/bringing-your-corporate-identity-provider-for-platform-users-feature-set-a-783ff50.md b/docs/10-concepts/bringing-your-corporate-identity-provider-for-platform-users-feature-set-a-783ff50.md index 16c51f19..fff1614c 100644 --- a/docs/10-concepts/bringing-your-corporate-identity-provider-for-platform-users-feature-set-a-783ff50.md +++ b/docs/10-concepts/bringing-your-corporate-identity-provider-for-platform-users-feature-set-a-783ff50.md @@ -22,7 +22,7 @@ The following figure illustrates the architecture required for platform users. T ![](images/architecture_platform_users_features_set_a_14e046f.png "Architecture Required for Custom User Base of Platform Users") -In the preceding figure, you enable trust between SAP BTP and your corporate identity provider over your tenant of SAP Cloud Identity Services - Identity Authentication. For each Neo subaccount, you choose the Identity Authentication tenant to use as the platform identity provider. The Identity Authentication tenant automatically configures an application within the tenant and generates an identifier to establish the connection between the two entities. When you log on to a platform resource, such as the cockpit, you indicate the Neo subaccount you want to log on with using this identifier in the subdomain, for example, `https://account-abcd123456.hana.ondemand.com/cockpit`. SAP BTP uses the connection between subaccount and Identity Authentication application to identify your corporate identity provider to perform the authentication. Once you’ve logged on with your platform user, the cockpit displays any global accounts and subaccounts your platform user is a member of. +In the preceding figure, you enable trust between SAP BTP and your corporate identity provider over your tenant of SAP Cloud Identity Services - Identity Authentication. For each Neo subaccount, you choose the Identity Authentication tenant to use as the platform identity provider. The Identity Authentication tenant automatically configures an application within the tenant and generates an identifier to establish the connection between the two entities. When you log on to a platform resource, such as the cockpit, you indicate the Neo subaccount you want to log on with using this identifier in the subdomain, for example, `https://cockpit.eu10.hana.ondemand.com/cockpit/?idp=bs8ibxkn.accounts.ondemand.com`. Once you’ve logged on with your platform user, the cockpit displays any global accounts and subaccounts your platform user is a member of. > ### Note: > An e-mail address alone isn’t enough to determine membership in an account. For Neo subaccounts the identifier is the user base \(identity provider\) and a configurable identifier with the user base; usually the user ID. For multi-environment subaccounts, the identifier is the origin \(your Cloud Foundry-specific alias for the identity provider\) and e-mail address. For example, you can have a platform user in the default identity provider, SAP ID service, and another user in your corporate identity provider with the same e-mail address. You can log on to the cockpit with both, but the cockpit displays different user information. This difference is because you’ve logged on with different identity providers. diff --git a/docs/10-concepts/commercial-models-263d400.md b/docs/10-concepts/commercial-models-263d400.md index 86abcbf9..0da34cae 100644 --- a/docs/10-concepts/commercial-models-263d400.md +++ b/docs/10-concepts/commercial-models-263d400.md @@ -6,7 +6,7 @@ SAP BTP offers two different commercial models for enterprise accounts. -- **Consumption-based commercial model:** Your organization receives access to all current and future services that are eligible for this model. You have complete flexibility to turn services on and off and to switch between services as your business requires throughout the duration of your contract. This commercial model is available in the following flavors: Cloud Platform Enterprise Agreement \(CPEA\) and Pay-As-You-Go for SAP BTP. +- **Consumption-based commercial model:** Your organization receives access to all current and future services that are eligible for this model. You have complete flexibility to turn services on and off and to switch between services as your business requires throughout the duration of your contract. This commercial model is available in the following flavors: SAP BTP Enterprise Agreement \(SAP BTPEA\),Cloud Platform Enterprise Agreement \(CPEA\), and Pay-As-You-Go for SAP BTP. For more information, see [What Is the Consumption-Based Commercial Model?](what-is-the-consumption-based-commercial-model-7047eb4.md) diff --git a/docs/10-concepts/images/Infographic_-_SAP_CP_Commercial_Models_6734474.png b/docs/10-concepts/images/Infographic_-_SAP_CP_Commercial_Models_6734474.png index aa76a63ea54b972aca735feb20f3af8ec348bc90..08f2181f2ecf31b572811d45df1f613f5e98c39b 100644 GIT binary patch literal 53481 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 z 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 o9`0BRYpzNHHh=Yfq@Ax*|CVBMA-;4*6ZBJK8un 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 ### Tip: > A release of a new module’s version is announced with a release note in [What’s New for SAP Business Technology Platform](https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?locale=en-US&version=Cloud) for both, the fast and regular channels: @@ -319,7 +319,7 @@ Documentation -Use the transparent proxy for Kubernetes to connect workloads on a Kubernetes cluster to Internet and on-premise applications. +Use the transparent proxy for Kubernetes to connect workloads in a Kubernetes cluster to Internet and on-premise applications. @@ -340,7 +340,7 @@ Use the transparent proxy for Kubernetes to connect workloads on a Kubernetes cl -Use the connectivity proxy for Kubernetes to connect workloads on a Kubernetes cluster to on-premise systems, exposed via the Cloud Connector. +Use the connectivity proxy for Kubernetes to connect workloads in a Kubernetes cluster to on-premise systems, exposed via the Cloud Connector. diff --git a/docs/10-concepts/kyma-s-modular-approach-95a4101.md b/docs/10-concepts/kyma-s-modular-approach-95a4101.md index 78b19618..60ec2339 100644 --- a/docs/10-concepts/kyma-s-modular-approach-95a4101.md +++ b/docs/10-concepts/kyma-s-modular-approach-95a4101.md @@ -38,7 +38,7 @@ You can use one or both release channels in your Kyma cluster, but you can defin > ### Note: > You can upgrade module versions, but you cannot downgrade them. To test the upstream versions, you can switch a module or an entire cluster from the regular channel to the fast one. To return to the regular channel, switch back to it, and wait until the upgrade is automatically applied in your cluster. Alternatively, you can delete and add your module from the regular channel. -To find out which module version is running on your cluster, go to [Kyma dashboard](https://dashboard.kyma.cloud.sap/clusters). +To find out which module version is running in your cluster, go to [Kyma dashboard](https://dashboard.kyma.cloud.sap/clusters). diff --git a/docs/10-concepts/regions-for-the-kyma-environment-557ec3a.md b/docs/10-concepts/regions-for-the-kyma-environment-557ec3a.md index a959e48b..23e4a193 100644 --- a/docs/10-concepts/regions-for-the-kyma-environment-557ec3a.md +++ b/docs/10-concepts/regions-for-the-kyma-environment-557ec3a.md @@ -625,6 +625,70 @@ India \(Mumbai\) gcp + + + + + +Enterprise account + + + + +jp30 + + + + +Google Cloud + + + + +cf-jp30 + + + + +Japan \(Osaka\) + + + + +gcp + + + + + + +Enterprise account + + + + +sa30 + + + + +Google Cloud + + + + +cf-sa30 + + + + +KSA \(Dammam\) + + + + +gcp + @@ -1026,12 +1090,12 @@ US East \(VA\) - + Google Cloud - + gcp @@ -1069,6 +1133,30 @@ US Central \(IA\) India \(Mumbai\) + + + + + +`asia-northeast2` + + + + +Japan \(Osaka\) + + + + + + +`me-central2` + + + + +KSA \(Dammam\) + diff --git a/docs/10-concepts/role-collections-and-roles-in-global-accounts-directories-and-subaccounts-feature-set-b-0039cf0.md b/docs/10-concepts/role-collections-and-roles-in-global-accounts-directories-and-subaccounts-feature-set-b-0039cf0.md index 32d4d74b..0903c55e 100644 --- a/docs/10-concepts/role-collections-and-roles-in-global-accounts-directories-and-subaccounts-feature-set-b-0039cf0.md +++ b/docs/10-concepts/role-collections-and-roles-in-global-accounts-directories-and-subaccounts-feature-set-b-0039cf0.md @@ -1109,7 +1109,7 @@ If you've enabled environments in your subaccount, manage the roles for those en [Mapping Role Collections in the Subaccount](../50-administration-and-ops/mapping-role-collections-in-the-subaccount-9e1bf57.md "You've arranged roles in role collections, and now want to assign or map these role collections to business users.") -[Maintain Role Collections](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/d5f1612d8230448bb6c02a7d9c8ac0d1.html "Role collections group together different roles that can be applied to the application users.") :arrow_upper_right: + [Managing Users and Their Authorizations Using the btp CLI](../50-administration-and-ops/managing-users-and-their-authorizations-using-the-btp-cli-94bb593.md "User authorizations are managed by assigning role collections to users (for example, Subaccount Administrator). Use the SAP BTP command-line interface (btp CLI) to manage roles and role collections, and to assign role collections to users.") diff --git a/docs/10-concepts/using-free-service-plans-524e108.md b/docs/10-concepts/using-free-service-plans-524e108.md index 14bac4d8..6b369bff 100644 --- a/docs/10-concepts/using-free-service-plans-524e108.md +++ b/docs/10-concepts/using-free-service-plans-524e108.md @@ -15,7 +15,7 @@ The free tier model for SAP BTP is added automatically to new and existing contr > ### Note: > The use of the consumption-based commercial model is subject to its availability in your country or region. -The consumption-based commercial model is available in the following flavors: the **CPEA** \(**Cloud Platform Enterprise Agreement**\) and **Pay-As-You-Go for SAP BTP**. For more information, see [What Is the Consumption-Based Commercial Model?](what-is-the-consumption-based-commercial-model-7047eb4.md). +The consumption-based commercial model is available in the following flavors: the **SAP BTPEA** **\(SAP BTP Enterprise Agreement\)**,, the **CPEA** \(**Cloud Platform Enterprise Agreement**\) and **Pay-As-You-Go for SAP BTP**. For more information, see [What Is the Consumption-Based Commercial Model?](what-is-the-consumption-based-commercial-model-7047eb4.md). To try out services that participate in the free tier model for SAP BTP, create a service instance using the **Free** service plan offered by the service. diff --git a/docs/10-concepts/what-is-the-consumption-based-commercial-model-7047eb4.md b/docs/10-concepts/what-is-the-consumption-based-commercial-model-7047eb4.md index be397b30..cde58f10 100644 --- a/docs/10-concepts/what-is-the-consumption-based-commercial-model-7047eb4.md +++ b/docs/10-concepts/what-is-the-consumption-based-commercial-model-7047eb4.md @@ -9,15 +9,40 @@ With the consumption-based model, your organization purchases an entitlement to -The consumption-based commercial model is available in the following flavors: the **CPEA** \(**Cloud Platform Enterprise Agreement**\) and **Pay-As-You-Go for SAP BTP**. Each option is suited to different business situations and levels of financial commitment, as described in the table below. For additional information and clarifications, please contact your account executive. +The consumption-based commercial model is available in the following flavors: the **SAP BTPEA** **\(SAP BTP Enterprise Agreement\)**, the **CPEA** \(**Cloud Platform Enterprise Agreement**\), and **Pay-As-You-Go for SAP BTP**. Each option is suited to different business situations and levels of financial commitment, as described in the table below. For additional information and clarifications, please contact your account executive. + + + + diff --git a/docs/30-development/tips-and-tricks-for-node-js-applications-3a5fe88.md b/docs/30-development/tips-and-tricks-for-node-js-applications-3a5fe88.md index ffe75a32..6bc631ba 100644 --- a/docs/30-development/tips-and-tricks-for-node-js-applications-3a5fe88.md +++ b/docs/30-development/tips-and-tricks-for-node-js-applications-3a5fe88.md @@ -2,11 +2,7 @@ # Tips and Tricks for Node.js Applications - - - - -## Get to Know the Node.js Buildpack for the Cloud Foundry Environment +Get to know the Node.js buildpack for the SAP BTP, Cloud Foundry environment. Check the following Cloud Foundry documentation: @@ -19,7 +15,7 @@ Check the following Cloud Foundry documentation: ## NPM Version -When deploying an application in Cloud Foundry environment without specifying the *npm* version in the **package.json** file, it will install the default *npm* version \(depending on the Node.js version\) during the build step. A version mismatch can cause the build step to fail. +When deploying an application in the SAP BTP, Cloud Foundry environment without specifying the *npm* version in the **package.json** file, it will install the default *npm* version \(depending on the Node.js version\) during the build step. A version mismatch can cause the build step to fail. To check your Node.js version, run: @@ -34,9 +30,9 @@ npm --version ``` > ### Tip: -> We recommend that you use the same *npm* version as the one on the Cloud Foundry environment. +> We recommend that you use the same *npm* version as the one on the SAP BTP, Cloud Foundry environment. -Alternatively, you can specify the *npm* version in the **package.json** file. For example, if you use Node.js 16, you can set: +Alternatively, you can specify the *npm* version in the **package.json** file. For example, if you use Node.js 20, you can set: ``` @@ -70,7 +66,7 @@ There are various reasons to use vendoring. For example, productive applications > ### Note: > Bear in mind when using dependencies containing native code that you need to reinstall in the same environment as the Cloud Foundry container, or make sure that the package has built-in support for it. -To ensure that prepackaged dependencies are pushed to the Cloud Foundry environment and on-premise runtime, make sure that the **`node_modules`** directory isn’t listed in the `.cfignore` file. It’s also preferable that development dependencies are not deployed for productive deployments. To ensure that, run: +To ensure that prepackaged dependencies are pushed to the SAP BTP, Cloud Foundry environment and on-premise runtime, make sure that the **`node_modules`** directory isn’t listed in the `.cfignore` file. It’s also preferable that development dependencies are not deployed for productive deployments. To ensure that, run: ``` npm prune --production @@ -105,7 +101,7 @@ node --v8-options ## Specify a buildpack version in `manifest.yml` -At some point, you might need \(or decide\) to deploy your application with a particular buildpack version from the community [nodejs-buildpack](https://github.com/cloudfoundry/nodejs-buildpack) repository. For example, if this buildpack contains a Node.js version that is no longer supported by SAP BTP, Cloud Foundry. +At some point, you might need \(or decide\) to deploy your application with a particular buildpack version from the community [nodejs-buildpack](https://github.com/cloudfoundry/nodejs-buildpack) repository. For example, if this buildpack contains a Node.js version that is no longer supported by the SAP BTP, Cloud Foundry environment. Let's say, you want to pin version [1.8.9](https://github.com/cloudfoundry/nodejs-buildpack/releases/tag/v1.8.9). To do that, proceed as follows: @@ -140,7 +136,7 @@ If you don't want to make changes in your **manifest.yml** file, you can include cf push myapp -b https://github.com/cloudfoundry/nodejs-buildpack.git#v1.8.9 ``` -- To pin this buildpack version for **all** applications running in your SAP BTP, Cloud Foundry subaccount, run: +- To pin this buildpack version for **all** applications running in your SAP BTP, Cloud Foundry environment subaccount, run: ``` cf push -b https://github.com/cloudfoundry/nodejs-buildpack.git#v1.8.9 diff --git a/docs/30-development/tips-and-tricks-for-python-applications-b5e1c82.md b/docs/30-development/tips-and-tricks-for-python-applications-b5e1c82.md index d05a3187..efa88942 100644 --- a/docs/30-development/tips-and-tricks-for-python-applications-b5e1c82.md +++ b/docs/30-development/tips-and-tricks-for-python-applications-b5e1c82.md @@ -2,11 +2,7 @@ # Tips and Tricks for Python Applications - - - - -## Get to Know the Python Buildpack for the Cloud Foundry Environment +Get to know the Python buildpack for the SAP BTP, Cloud Foundry environment. Check the following Cloud Foundry documentation: [Python Buildpack](https://docs.cloudfoundry.org/buildpacks/python/index.html) @@ -31,7 +27,7 @@ Depending on the region where the application is deployed: ## Specify a buildpack version in `manifest.yml` -At some point, you might need \(or decide\) to deploy your application with a particular buildpack version from the community [python-buildpack](https://github.com/cloudfoundry/python-buildpack) repository. For example, if this buildpack contains a Python version that is no longer supported by SAP BTP, Cloud Foundry. +At some point, you might need \(or decide\) to deploy your application with a particular buildpack version from the community [python-buildpack](https://github.com/cloudfoundry/python-buildpack) repository. For example, if this buildpack contains a Python version that is no longer supported by the SAP BTP, Cloud Foundry environment. Let's say, you want to pin version [1.8.4](https://github.com/cloudfoundry/python-buildpack/releases/tag/v1.8.4). To do that, proceed as follows: @@ -66,7 +62,7 @@ If you don't want to make changes in your **manifest.yml** file, you can include cf push myapp -b https://github.com/cloudfoundry/python-buildpack.git#v1.8.4 ``` -- To pin this buildpack version for all applications running in your SAP BTP, Cloud Foundry subaccount, run: +- To pin this buildpack version for all applications running in your SAP BTP, Cloud Foundry environment subaccount, run: ``` cf push -b https://github.com/cloudfoundry/python-buildpack.git#v1.8.4 @@ -79,7 +75,7 @@ If you don't want to make changes in your **manifest.yml** file, you can include ## Specify application memory in `manifest.yml` -When deploying an application in the Cloud Foundry environment without specifying the application memory requirements, the Cloud Foundry controller assigns the default \(1G of RAM currently\) for your application. Many Python applications require less memory and assigning the default is a waste of resources. +When deploying an application in the SAP BTP, Cloud Foundry environment without specifying the application memory requirements, the Cloud Foundry controller assigns the default \(1G of RAM currently\) for your application. Many Python applications require less memory and assigning the default is a waste of resources. To save memory from your quota, specify the memory size in the deployment descriptor of your Cloud Foundry application – `manifest.yml`. For example: diff --git a/docs/40-extensions/enabling-data-ingestion-for-industry-cloud-solutions-0b23a32.md b/docs/40-extensions/enabling-data-ingestion-for-industry-cloud-solutions-0b23a32.md new file mode 100644 index 00000000..37aa15ef --- /dev/null +++ b/docs/40-extensions/enabling-data-ingestion-for-industry-cloud-solutions-0b23a32.md @@ -0,0 +1,54 @@ + + +# Enabling Data Ingestion for Industry Cloud Solutions + +SAP’s industry cloud provides specialized industry-focused solutions to help you optimize, extend, and transform your core business processes. Developed by SAP and SAP partners and based on SAP Business Technology Platform \(SAP BTP\), industry cloud solutions integrate with SAP S/4HANA Cloud and SAP Business Network. They help you take advantage of the latest industry-relevant innovations and extend existing capabilities in an efficient way. For a list of all industry cloud solutions published by SAP, see [SAP Store](https://store.sap.com/dcp/en/search?sortCode=name-asc&query=:name-asc:useCases:Industry%20Cloud:publisher:SAP). + +Data ingestion for industry cloud solutions allows supported industry cloud solutions to consume data from a shared data foundation instead of integrating with the source systems individually. This helps to simplify solution implementation, increase operational visibility, and improve data quality. For a list of all industry cloud solutions published by SAP that support data ingestion, see [Data Integration Overview](https://help.sap.com/docs/DI_ICS/925366f331c54ee88e2b61ddae0be9fc/88da41cc955e49f1b7080e882bae36d4.html). + +To set up on SAP BTP systems that support data ingestion and are part of the industry cloud solutions published by SAP, you need to include them in a formation of type *Data Ingestion for Industry Cloud Solutions*. When you create a new formation of type *Data Ingestion for Industry Cloud Solutions*, a system of type *Data Ingestion for Industry Cloud Solutions* is automatically added to the *Systems* list and included in this formation. + +When creating *Data Ingestion for Industry Cloud Solutions* formations, keep in mind the following rules: + +- Only systems that are part of the industry cloud solutions, support data ingestion, and are provisioned from SAP for Me can be included in formations of type *Data Ingestion for Industry Cloud Solutions*. + +- System that is part of the industry cloud solutions published by SAP are included in at most one *Data Ingestion for Industry Cloud Solutions* formation when creating this formation. + +- System of type *Data Ingestion for Industry Cloud Solutions* is automatically registered and included in the *Data Ingestion for Industry Cloud Solutions* formation. + +- System of type *Data Ingestion for Industry Cloud Solutions* cannot be excluded from the *Data Ingestion for Industry Cloud Solutions* formation. Once you delete this formation, the *Data Ingestion for Industry Cloud Solutions* system is automatically deleted. + + + + + + +## Prerequisites + +You are a global account administrator, or you are a system landscape administrator. See [Working with Role Collections](../50-administration-and-ops/working-with-role-collections-393ea0b.md). + + + + + +## Procedure + +1. In the *System Landscape* page of the SAP BTP cockpit, in the *Systems* list, browse the already added systems that are part of the industry cloud solutions published by SAP in your customer system landscape. + +2. Create a formation of type *Data Ingestion for Industry Cloud Solutions* and include the relevant systems in it. + + 1. Add any name that helps you identify your formation. + + 2. In the *Formation Type* dropdown menu, select *Data Ingestion for Industry Cloud Solutions*. + + 3. Select the systems that you want to include in the formation. + + 4. Review your selections and create the formation. + + + +**Related Information** + + +[Data Integration Overview](https://help.sap.com/docs/DI_ICS/925366f331c54ee88e2b61ddae0be9fc/88da41cc955e49f1b7080e882bae36d4.html) + diff --git a/docs/40-extensions/enabling-events-exchange-between-sap-cloud-systems-1592246.md b/docs/40-extensions/enabling-events-exchange-between-sap-cloud-systems-1592246.md index b6734b2a..0a49cfe6 100644 --- a/docs/40-extensions/enabling-events-exchange-between-sap-cloud-systems-1592246.md +++ b/docs/40-extensions/enabling-events-exchange-between-sap-cloud-systems-1592246.md @@ -20,8 +20,6 @@ When creating *Eventing Between SAP Cloud Systems* formations, keep in mind the - Every system can be included in at most one *Eventing Between SAP Cloud Systems* formation. -- If you register your SAP S/4HANA Cloud system using the *All Communication Scenarios* or *Eventing Between SAP Cloud Systems* communication scenario group when you get the registration token for this SAP S/4HANA Cloud system, the communication scenario `SAP_COM_0892` will be enabled automatically after this SAP S/4HANA Cloud system is added to the formation of type *Eventing Between SAP Cloud Systems* in the *Formations* page. See [Register an SAP S/4HANA Cloud System in a Global Account in SAP BTP](register-an-sap-s-4hana-cloud-system-in-a-global-account-in-sap-btp-28171b6.md). - The following procedure outlines the steps you need to perform to enable the exchange of events across the systems within the system landscape. @@ -62,9 +60,6 @@ The following procedure outlines the steps you need to perform to enable the exc > ### Note: > If a given SAP system is missing on the *System Landscape* page, it may be associated with a different customer ID on the SAP BTP global account you are working in. In this case, you need to add the system manually, and then, register it. - > ### Tip: - > When you register an SAP S/4HANA Cloud system, you can automate some of the required configuration steps at a later point. To do this, you can use the *Eventing Between SAP Cloud Systems* communication scenario group when you get the registration token for the SAP S/4HANA Cloud system. This allows the automatic enablement of the communication scenario `SAP_COM_0892` after the corresponding system is added to the formation of type *Eventing Between SAP Cloud Systems*. - See [Registering an SAP System](registering-an-sap-system-2ffdaff.md). 2. Create a formation of type *Eventing Between SAP Cloud Systems* and include the relevant systems in it. @@ -85,21 +80,6 @@ The following procedure outlines the steps you need to perform to enable the exc 5. Review your selections and create the formation. -3. If your use case features an SAP S/4HANA Cloud system and you have not allowed the automatic enablement of communication scenario `SAP_COM_0892`, you need to configure it manually. - - To do this, proceed as follows: - - 1. Find the SAP S/4HANA Cloud system in the formation, and then, open its details. - - 2. Go to the *Configurations* section. - - 3. Display the configuration provided by the SAP Event Broker for the concrete SAP S/4HANA Cloud system. - - 4. Use the corresponding URL to enable the communication scenario `SAP_COM_0892`. - - - To allow the automatic enablement of communication scenario `SAP_COM_0892`, see [Register an SAP S/4HANA Cloud System in a Global Account in SAP BTP](register-an-sap-s-4hana-cloud-system-in-a-global-account-in-sap-btp-28171b6.md). - diff --git a/docs/40-extensions/enabling-system-landscape-for-sap-build-6424311.md b/docs/40-extensions/enabling-system-landscape-for-sap-build-6424311.md new file mode 100644 index 00000000..0f607dfa --- /dev/null +++ b/docs/40-extensions/enabling-system-landscape-for-sap-build-6424311.md @@ -0,0 +1,120 @@ + + +# Enabling System Landscape for SAP Build + +> ### Note: +> The content in this section is not relevant for China \(Shanghai\) and Government Cloud \(US\) regions. + +A registered SAP S/4HANA Cloud system in the SAP BTP cockpit can expose consumption bundles that contain APIs and events. You can easily discover and consume the APIs exposed by the SAP S/4HANA Cloud systems in your system landscape when you develop and extend applications on SAP BTP, Cloud Foundry environment, using SAP Build. To do this, first you need to enable connectivity between your system landscape in SAP BTP cockpit and SAP Build. The integration requires performing several configuration steps starting with configuration on a global account level, and then, configuration on a subaccount level. + +The following procedure outlines the steps you need to perform to consume the APIs of registered SAP S/4HANA Cloud systems within SAP Build. + +1. Add and then register an SAP system of type *SAP S/4HANA Cloud* in the *System Landscape* page of SAP BTP cockpit. + + To expose information about its APIs and events and show this information on the *System Landscape* page, an SAP system of type *SAP S/4HANA Cloud* must be registered in the SAP BTP cockpit. Only when registered, the system communicates information about its APIs and other technical details across the landscape. See [Extending SAP S/4HANA Cloud in the Cloud Foundry and Kyma Environment](extending-sap-s-4hana-cloud-in-the-cloud-foundry-and-kyma-environment-40b9e6c.md). + +2. Create a formation of type *Integration with SAP Build* and include the SAP S/4HANA Cloud systems you want to expose in SAP Build. + + > ### Note: + > In the formation type *Integration with SAP Build*, you can include only SAP systems of type *SAP S/4HANA Cloud*. + + To enable connectivity between given SAP systems of type *SAP S/4HANA Cloud* from the *System Landscape* page of SAP BTP cockpit and SAP Build, you must create a formation of the corresponding type and include the SAP S/4HANA Cloud systems in it. See [Including Systems in a Formation](including-systems-in-a-formation-68b04fa.md). + +3. Create a destination and make sure it has the corresponding system and consumption bundle properties. + + - Create a destination manually. + + You can create the destination manually via the SAP Destination service page in SAP BTP cockpit by specifying one of the following additional properties variants in it. + + +
+**SAP BTPEA** + + + +- Your organization makes a prepaid investment in cloud credits for the contract duration with an annual commitment to consume SAP BTP services. +- This model is suitable for customers that have well-established and planned use cases, and who want the flexibility of turning services on and off, and switching between services, without the commitment of being tied to a single service throughout the duration of the contract. +- You receive a monthly balance statement that provides information about the usage consumption of each service and the corresponding costs. The total monthly cost is deducted from your cloud credits balance. +- This model has a minimum investment entry, and volume-based discounts are available. +- You are billed annually in advance. Any overages are billed in arrears at list price. +- You can top up your cloud credits at any time to prevent overages. +- You get access to new SAP BTP services that are added to the consumption-based service catalog. + + + +
+ **CPEA** +> ### Note: +> The service scope of CPEA will no longer be extended. All new services will be available with SAP BTPEA instead. + + + @@ -62,7 +87,7 @@ If you want information about the **Pay-As-You-Go for SAP BTP for Partners** com For information about eligible services and pricing, see [https://www.sap.com/products/technology-platform/pricing.html](https://www.sap.com/products/technology-platform/pricing.html), or access the SAP BTP service catalog via the [SAP Discovery Center](https://discovery-center.cloud.sap). The SAP BTP service catalog allows you to identify service availability per data center and to determine licensing model compatibility per available service plan. -As part of the free tier model for SAP BTP, some services offer free service plans that allow you to try out these services without any additional charge within your CPEA or Pay-As-You-Go for SAP BTP global account. For more information, see [Using Free Service Plans](using-free-service-plans-524e108.md). +As part of the free tier model for SAP BTP, some services offer free service plans that allow you to try out these services without any additional charge within your SAP BTPEA,CPEA, or Pay-As-You-Go for SAP BTP global account. For more information, see [Using Free Service Plans](using-free-service-plans-524e108.md). To find frequently asked questions about this licensing model, see the [Consumption-based commercial model CPEA and Cloud Credits - FAQ Document](https://www.sap.com/products/extension-suite/pricing.html?pdf-asset=668ae6f5-cd7d-0010-87a3-c30de2ffd8ff). diff --git a/docs/20-getting-started/creating-a-cloud-foundry-application-as-trusted-service-provider-bfc537a.md b/docs/20-getting-started/creating-a-cloud-foundry-application-as-trusted-service-provider-bfc537a.md deleted file mode 100644 index c897a0dc..00000000 --- a/docs/20-getting-started/creating-a-cloud-foundry-application-as-trusted-service-provider-bfc537a.md +++ /dev/null @@ -1,214 +0,0 @@ - - -# Creating a Cloud Foundry Application as Trusted Service Provider - -Create and configure an application to represent the Cloud Foundry account in the Identity Authentication Service tenant as SAML 2.0 service provider. - - - - - -## Creating an SAML Application for the Cloud Foundry Account - -As a first step, you need to create the application for the Cloud Foundry account. - -1. Log on to the tenant's administration console for the Identity Authentication service at `https://.accounts.ondemand.com/admin` as administration user. - -2. In the navigation area, choose *Application & Resources* \> *Applications*. - -3. Choose *\+ Add*. - -4. Enter an application name for the Cloud Foundry account \(the service provider\) in the Identity Authentication service, for example, `CF SAML Application`. - -5. Choose *Save*. - - - - - - -## Configuring the Cloud Foundry Application as Trusted Service Provider - -Import the SAML service provider metadata from the Cloud Foundry environment to the Identity Authentication tenant \(that is, the SAML identity provider\). This configures SAML trust to the Cloud Foundry account as SAML service provider. - -1. Under *Applications*, choose the entry for the Cloud Foundry application that you have just created. - -2. If the entry for SAML 2.0 configuration is *Not Configured*, choose *SAML 2.0 Configuration*. - -3. Choose *Browse* and upload the metadata file of the SAML service provider from the Cloud Foundry subaccount that you have downloaded before \(see also [Exporting the SAML Service Provider Metadata from the Cloud Foundry Account](exporting-the-saml-service-provider-metadata-from-the-cloud-foundry-account-326c830.md)\). - - > ### Note: - > During the setup of the ABAP environment, you might need to upload multiple SAML metadata files. Make sure that you upload the correct file. If you have followed the naming conventions suggested in this documentation, the file needed here is `metadataCF.xml`. - -4. Choose *Save*. - - - - - - -## Configuring the Subject Name Identifier Sent to Cloud Foundry - -Configure the subject name identifier that the Identity Authentication service \(as identity provider\) sends to Cloud Foundry. - -1. Under *Applications*, choose the entry for the Cloud Foundry application. - -2. Choose *Subject Name Identifier*. - -3. Choose the subject name identifier that matches the login\_attribute chosen during ABAP system provisioning. - - - - - - - - - - - - - - - -
- - ABAP login\_attribute - - - - SAP Cloud Identity Services Subject Name Identifier - -
- - email \(default\) - - - - email - -
- - user\_name - - - - login name - -
- -4. Choose *Save*. - - - - -
- -## Configuring the Default Name ID Format for the Cloud Foundry Application \(Optional\) - -Optionally, you can configure the default name ID attribute of the identity provider for Cloud Foundry. - -1. Under *Applications*, choose the entry for the Cloud Foundry application in the Identity Authentication service. - -2. Choose *Default Name ID Format*. - -3. Choose the default name ID format that matches your subject name identifier configuration. If you use email as subject name identifier, choose email as default name ID format. In other cases, choose unspecified. -4. Choose *Save*. - - - - - - -## Configuring the SAML Assertion Attributes for Cloud Foundry - -Include the attributes `first_name`, `last_name`, `mail`, and `Groups` for the SAML assertion. - -1. Under *Applications*, choose the entry for the Cloud Foundry application. - -2. Choose *Attributes*. - -3. Choose *Add* to enter the following self-defined attributes and their corresponding assertion attributes \(if they don't already exist\): - - - - - - - - - - - - - - - - - - - - - - - -
- - User Attribute - - - - Assertion Attribute - -
- - *First Name* - - - - `first_name` - -
- - *Last Name* - - - - `last_name` - -
- - *E-Mail* - - - - `mail` - -
- - *Groups* - - - - `Groups` - -
- - > ### Note: - > Make sure that you enter `Groups` \(with upper case `G`\), not `groups`, as attribute. - -4. Choose *Save*. - - - - -
- -## More Information - -[Configuring Applications](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/61ad3b0796ca4f5bae706632a29b1418.html) - -[Configure Trust](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/f96e4c5930a94d1ba117e05a3f3c30fc.html) - -[Configure the Subject Name Identifier Sent to the Application](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/1d020e3a3ba34c43a71fde70bfa6419a.html) - diff --git a/docs/20-getting-started/establishing-trust-automatically-b9f4b0d.md b/docs/20-getting-started/establishing-trust-of-type-openid-connect-b9f4b0d.md similarity index 82% rename from docs/20-getting-started/establishing-trust-automatically-b9f4b0d.md rename to docs/20-getting-started/establishing-trust-of-type-openid-connect-b9f4b0d.md index 5da7255e..da840ba4 100644 --- a/docs/20-getting-started/establishing-trust-automatically-b9f4b0d.md +++ b/docs/20-getting-started/establishing-trust-of-type-openid-connect-b9f4b0d.md @@ -1,6 +1,6 @@ -# Establishing Trust Automatically +# Establishing Trust of Type OpenID Connect If you want to use a custom identity provider, you must set up trust between the subaccount and the SAP Cloud Identity Services - Identity Authentication service. @@ -8,10 +8,12 @@ If you want to use a custom identity provider, you must set up trust between the ## Context +> ### Note: +> If you have run the booster *Prepare an Account for ABAP Development*, you can skip this step. + If you have custom identity provider, you can use a function in SAP BTP cockpit to set up trust between your subaccount and the Identity Authentication service for SAP BTP automatically. The trust configuration is of type *OpenID Connect*. -> ### Note: -> If you want to use SAML instead, set up trust manually \(see [Manual Trust Setup with the SAML Identity Provider](manual-trust-setup-with-the-saml-identity-provider-36214a9.md)\). +For more information, see [Establish Trust and Federation Between SAP Authorization and Trust Management Service and Identity Authentication](https://help.sap.com/docs/btp/sap-business-technology-platform/establish-trust-and-federation-between-uaa-and-identity-authentication?version=Cloud). diff --git a/docs/20-getting-started/establishing-trust-to-the-saml-identity-provider-for-the-cloud-foundry-account-55e7d92.md b/docs/20-getting-started/establishing-trust-to-the-saml-identity-provider-for-the-cloud-foundry-account-55e7d92.md deleted file mode 100644 index 548b3a3d..00000000 --- a/docs/20-getting-started/establishing-trust-to-the-saml-identity-provider-for-the-cloud-foundry-account-55e7d92.md +++ /dev/null @@ -1,48 +0,0 @@ - - -# Establishing Trust to the SAML Identity Provider for the Cloud Foundry Account - -Import the SAML identity provider metadata to the Cloud Foundry account to configure SAML trust to the identity provider \(that is, the Identity Authentication service tenant\). - - - - - -## Prerequisites - -You have downloaded the SAML identity provider metadata file from the Identity Authentication service tenant \(see [Exporting SAML Identity Provider Metadata](exporting-saml-identity-provider-metadata-5c1479e.md)\). - - - - - -## Context - -You want to use the Identity Authentication service as an SAML 2.0 identity provider. This is where the business users for SAP BTP are stored. For more information, see [Establish Trust and Federation with UAA Using the Identity Authentication Service](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/7c6aa87459764b179aeccadccd4f91f3.html). - - - -## Procedure - -1. As administration user, call up the Cloud Foundry subaccount of the global account for Cloud Foundry. - -2. Choose *Security* \> *Trust Configuration*. - -3. Choose *New Trust Configuration*. - -4. In the *New Trust Configuration* dialog, choose *Upload* and choose the metadata file for the custom identity authentication service \(IAS\) tenant. - - > ### Note: - > During the setup of the custom identity service, you need to upload multiple SAML metadata files. Make sure that you upload the correct file. If you have followed the naming conventions suggested in this documentation, the file needed here is `metadataIDP.xml`. - -5. Choose *Parse*. - -6. Make sure that the *Origin Key* field is properly filled. - -7. Enter a name for the new trust configuration, for example, <Your custom Identity Authentication service tenant>.accounts.ondemand.com. - -8. Optionally, provide a link text. As a best practice, we recommend that you use the same name as for the new trust configuration, <Your custom Identity Authentication service tenant>.accounts.ondemand.com in our example. - -9. Choose *Save*. - - diff --git a/docs/20-getting-started/exporting-the-saml-service-provider-metadata-from-the-cloud-foundry-account-326c830.md b/docs/20-getting-started/exporting-the-saml-service-provider-metadata-from-the-cloud-foundry-account-326c830.md deleted file mode 100644 index 0c371f82..00000000 --- a/docs/20-getting-started/exporting-the-saml-service-provider-metadata-from-the-cloud-foundry-account-326c830.md +++ /dev/null @@ -1,30 +0,0 @@ - - -# Exporting the SAML Service Provider Metadata from the Cloud Foundry Account - -Get the local SAML service provider metadata from the Cloud Foundry account. - - - - - -## Prerequisites - -You are a Cloud Foundry administrator. - - - -## Procedure - -1. Open the Cloud Foundry subaccount of the ABAP environment. - -2. Choose *Security* \> *Trust Configuration*. - -3. Choose *SAML Metadata*. - -4. Specify a file name and save the metadata locally to your hard drive. - - > ### Note: - > Specify a file name that you can easily recognize later, for example, `metadataCF.xml`, because you need to download and upload multiple SAML metadata later. - - diff --git a/docs/20-getting-started/getting-started-144e173.md b/docs/20-getting-started/getting-started-144e173.md index 30c92bf8..3e5d3725 100644 --- a/docs/20-getting-started/getting-started-144e173.md +++ b/docs/20-getting-started/getting-started-144e173.md @@ -49,7 +49,7 @@ The SAP Developer Center provides further resources to get you started: **Related Information** -[Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It contains best practices and recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right: +[Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It's part of the SAP BTP Guidance Framework and contains recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right: [Access the Cockpit](../50-administration-and-ops/access-the-cockpit-4e75066.md "Learn how to access the SAP BTP cockpit.") diff --git a/docs/20-getting-started/manual-trust-setup-with-the-saml-identity-provider-36214a9.md b/docs/20-getting-started/manual-trust-setup-with-the-saml-identity-provider-36214a9.md deleted file mode 100644 index 9c0699c0..00000000 --- a/docs/20-getting-started/manual-trust-setup-with-the-saml-identity-provider-36214a9.md +++ /dev/null @@ -1,16 +0,0 @@ - - -# Manual Trust Setup with the SAML Identity Provider - -Learn how you can set up the Identity Authentication service as SAML identity provider for the ABAP environment. - - - - - -## Process Overview - -If you want to use Identity Authentication service as custom identity provider, you need to set up trust between the Cloud Foundry account and the Identity Authentication service. - -You configure how the Cloud Foundry account, which acts as local service provider, communicates with the identity provider. This configuration includes, for example, setting a signing key and certificate to verify the service provider’s identity and encrypt data. This configuration is later needed for developer authentication. - diff --git a/docs/20-getting-started/setup-of-a-custom-identity-service-550251a.md b/docs/20-getting-started/setup-of-a-custom-identity-service-550251a.md index 2b67b302..773161be 100644 --- a/docs/20-getting-started/setup-of-a-custom-identity-service-550251a.md +++ b/docs/20-getting-started/setup-of-a-custom-identity-service-550251a.md @@ -10,9 +10,9 @@ For your business users in the ABAP environment, you set up a custom identity se ## Custom Identity Service for the ABAP Environment -For platform users such as the administrator, the default identity provider is SAP ID Service, which is set up by default. For the business users in the ABAP environment, you must set up a custom identity service. For example, the users of your deployed application or users of subscribed apps or services, such as SAP Business Application Studio or SAP Web IDE, are business users. For more information about platform and business users in the ABAP environment, see [User Types](https://help.sap.com/products/BTP/65de2977205c403bbc107264b8eccf4b/1731f982edd24c669133255384bf45f9.html?locale=en-US&version=Cloud). +For platform users such as the administrator, the default identity provider is SAP ID Service, which is set up by default. For the business users in the ABAP environment, you must set up a custom identity service. For example, the users of your deployed application or users of subscribed apps or services, such as SAP Business Application Studio, are business users. For more information about platform and business users in the ABAP environment, see [User Types](https://help.sap.com/products/BTP/65de2977205c403bbc107264b8eccf4b/1731f982edd24c669133255384bf45f9.html?locale=en-US&version=Cloud). -In this documentation, a custom trust configuration is described using the example of SAP Cloud Identity Services - Identity Authentication. The Identity Authentication service is a cloud solution for identity lifecycle management for SAP BTP applications. You can set up SAP BTP as a service provider, and Identity Authentication service as an identity provider. For the integration, you must set the trust on both sides. +In this documentation, a custom trust configuration is described using SAP Cloud Identity Services - Identity Authentication. The Identity Authentication service is a cloud solution for identity lifecycle management for SAP BTP applications. You can set up SAP BTP as a service provider, and Identity Authentication service as an identity provider. @@ -20,7 +20,7 @@ In this documentation, a custom trust configuration is described using the examp ## Identity Authentication Service as Proxy -If you have your own custom identity providers at your company, you can also use SAP Cloud Identity Services - Identity Authentication as a proxy. For more information about setting up the Identity Authentication service as a proxy, see [Establish Trust and Federation Between UAA and Identity Authentication](https://help.sap.com/products/BTP/65de2977205c403bbc107264b8eccf4b/161f8f0cfac64c4fa2d973bc5f08a894.html?locale=en-US) and[Configure Trust with Corporate Identity Provider](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/33832e58695345eea2cd91a2cc8ab24c.html). +If you have your own custom identity providers at your company, you can use SAP Cloud Identity Services - Identity Authentication as a proxy. For more information about setting up the Identity Authentication service as a proxy, see [Establish Trust and Federation Between UAA and Identity Authentication](https://help.sap.com/products/BTP/65de2977205c403bbc107264b8eccf4b/161f8f0cfac64c4fa2d973bc5f08a894.html?locale=en-US) and[Configure Trust with Corporate Identity Provider](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/33832e58695345eea2cd91a2cc8ab24c.html). @@ -28,7 +28,7 @@ If you have your own custom identity providers at your company, you can also use ## More Information -This documentation describes the basic trust concepts and helps you to get started with a simple landscape. To learn more about trust setup with custom identity providers that goes beyond this example, check the following, more detailed documentation: +This documentation describes the basic trust concepts and helps you to get started with a simple landscape. To learn more about trust setup with custom identity providers, check the following, more detailed documentation: - For more information about trust in SAP BTP, see[Trust and Federation with Identity Providers](https://help.sap.com/products/BTP/65de2977205c403bbc107264b8eccf4b/cb1bc8f1bd5c482e891063960d7acd78.html). - For more information about the Identity Authentication service, see [Overview](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/27882717f44b445fa287936c6f43dc1f.html) and [Initial Setup](https://help.sap.com/viewer/6d6d63354d1242d185ab4830fc04feb1/Cloud/en-US/31af7da133874e199a7df1d42905241b.html). diff --git a/docs/20-getting-started/using-a-booster-to-automate-the-setup-of-the-abap-environment-optional-cd7e7e6.md b/docs/20-getting-started/using-a-booster-to-automate-the-setup-of-the-abap-environment-optional-cd7e7e6.md index 31cbf2a5..74dda0e7 100644 --- a/docs/20-getting-started/using-a-booster-to-automate-the-setup-of-the-abap-environment-optional-cd7e7e6.md +++ b/docs/20-getting-started/using-a-booster-to-automate-the-setup-of-the-abap-environment-optional-cd7e7e6.md @@ -33,7 +33,7 @@ A booster is a set of guided interactive steps that enable you to select, config - For the *ABAP environment* service, the service plan *standard* enables you to size ABAP server and persistence independently from each other in 16 GB units. These units are represented in the quota plans *abap\_compute\_unit* and *hana\_compute\_unit*. - As part of the default quota assignment, you get at least 1 compute unit in the *abap\_compute\_unit* service plan and at least 4 compute units in the *hana\_compute\_unit* service plan. This corresponds to the minimum configuration for an instance of the ABAP Environment service. You can also choose higher quotas in the dialog of the booster. + As part of the default quota assignment, you get at least 1 compute unit in the *abap\_compute\_unit* service plan and at least 2 compute units in the *hana\_compute\_unit* service plan. This corresponds to the minimum configuration for an instance of the ABAP Environment service. You can also choose higher quotas in the dialog of the booster. - For the *Web Access to ABAP* service, a default plan is chosen that you cannot change. You need the service and the quota for direct browser access to your instances in the ABAP environment, including access to the administration launchpad for ABAP. - Depending on what you have ordered for your account, additional entitlements for the services *Cloud Foundry Runtime*, *Launchpad*, and *SAP Business Application Studio* might be shown. They are optional; you can remove the entitlements if you don't need them right now and want to add them later: diff --git a/docs/30-development/accessing-business-service-ui-0f1f92e.md b/docs/30-development/accessing-business-service-ui-0f1f92e.md index 3f034b73..51c3ac1e 100644 --- a/docs/30-development/accessing-business-service-ui-0f1f92e.md +++ b/docs/30-development/accessing-business-service-ui-0f1f92e.md @@ -11,10 +11,10 @@ The following is an example `manifest.json` file of a Business Service: > ### Sample Code: > ``` > { -> “sap.app”: { -> “id”:“com.sap.appbasic.country.list”, -> “applicationVersion: { -> “version”: “1.0.0” +> "sap.app": { +> "id":"com.sap.appbasic.country.list", +> "applicationVersion: { +> "version": "1.0.0" > }, > "dataSources": { > "mainService":{ @@ -22,9 +22,9 @@ The following is an example `manifest.json` file of a Business Service: > "type": "OData" > } > }, -> “sap.cloud”: { +> "sap.cloud": { > "public": true, -> “service”: “com.sap.appbasic.country“ +> "service": "com.sap.appbasic.country" > } > } > ``` diff --git a/docs/30-development/application-router-configuration-c19f165.md b/docs/30-development/application-router-configuration-c19f165.md index d26c9de0..46a59f94 100644 --- a/docs/30-development/application-router-configuration-c19f165.md +++ b/docs/30-development/application-router-configuration-c19f165.md @@ -96,7 +96,7 @@ You can configure the application router to send additional HTTP headers, for ex > ### Sample Code: > `local-http.headers.json` > -> ``` +> ```json > [ > { > "X-Frame-Options": "ALLOW-FROM http://localhost" @@ -194,7 +194,7 @@ The application-router process should run with at least 256MB memory. The amount You can use the start-up parameter `max-old-space-size` to restrict the amount of memory used by the JavaScript heap. The default value for `max-old-space-size` is less than 2GB. To enable the application to use all available resources, the value of `max-old-space-size` should be set to a number equal to the memory limit for the whole application. For example, if the application memory is limited to 2GB, set the heap limit as follows, in the application's `package.json` file: > ### Sample Code: -> ``` +> ```json > "scripts": { > "start": "node --max-old-space-size=2048 node_modules/@sap/approuter/approuter.js" > } @@ -203,7 +203,7 @@ You can use the start-up parameter `max-old-space-size` to restrict the amount o If the application router is running in an environment with limited memory, set the heap limit to about 75% of available memory. For example, if the application router memory is limited to 256MB, add the following command to your `package.json`: > ### Sample Code: -> ``` +> ```json > "scripts": { > "start": "node --max-old-space-size=192 node_modules/@sap/approuter/approuter.js" > } diff --git a/docs/30-development/application-security-descriptor-configuration-syntax-517895a.md b/docs/30-development/application-security-descriptor-configuration-syntax-517895a.md index afedddee..de45ca9c 100644 --- a/docs/30-development/application-security-descriptor-configuration-syntax-517895a.md +++ b/docs/30-development/application-security-descriptor-configuration-syntax-517895a.md @@ -60,7 +60,7 @@ The syntax required to set the properties and values defined in the `xs-security "oauth2-configuration": { "token-validity": 900, "redirect-uris": ["https://myapp.cfapps.eu10.hana.ondemand.com","https://myapp.mydomain.com/my/logout"], - "credential-types": ["binding-secret","x509"] + "credential-type": ["binding-secret","x509"] }, "xsenableasyncservice":"true" } @@ -222,7 +222,7 @@ In the `xs-security.json` file, “local”scopes must be prefixed with the vari ### Foreign Scopes -Usually, “foreign” scopes include the service plan and the name of the application to which the scope belongs. For more information, see [Referencing the Application](application-security-descriptor-configuration-syntax-517895a.md#loio517895a9612241259d6941dbf9ad81cb__section_fm2_wsk_pdb)An OAuth client always gets the same client secret. It’s valid in all subaccounts. The. Use the following syntax: +Usually, “foreign” scopes include the service plan and the name of the application to which the scope belongs. For more information, see [Referencing the Application](application-security-descriptor-configuration-syntax-517895a.md#loio517895a9612241259d6941dbf9ad81cb__section_fm2_wsk_pdb) Use the following syntax: $XSAPPNAME(<service_plan>,<xsappname>).<local_scope_name> @@ -257,7 +257,7 @@ Here is the syntax in the security descriptor of the application that grants the Bear in mind the following restrictions regarding the length and content of a scope name: -- The following characters can be used in a scope name: `aA`–`zZ`, `0`–`9`, `-` \(hyphen\), `_` \(underscore\), `/` \(forward slash\), `\` \(backslash\), `:` \(colon\), and the element is only relevant for user scenarios where roles aren’t defined in their own service instance. Example: an admin application integrates different components, each having its own `.` \(period\) +- The following characters can be used in a scope name: `aA`–`zZ`, `0`–`9`, `-` \(hyphen\), `_` \(underscore\), `/` \(forward slash\), `\` \(backslash\), and `:` \(colon\). - Scope names can't start with a leading `.` \(period\). For example, `.myScopeName1`. @@ -303,7 +303,7 @@ The `attributes` element is only relevant for a user scenario. Each element of t In this case, you want to express that it's not necessary to set a specific value for this attribute. The behavior is the same as if the attribute would not exist for this role. -For more information, see the related link. +For more information, see the related link about attributes. The `attributes` definition can take the following properties: @@ -789,7 +789,7 @@ The `xsuaa` service broker registers and uses these values for the configuration > "https://myapp.cfapps.eu10-004.hana.ondemand.com", > "https://myapp.mydomain.com/my/content"], > "refresh-token-validity": 1800, -> "credential-types": ["binding-secret","x509"], +> "credential-type": ["binding-secret","x509"], > "system-attributes": ["groups","rolecollections"], > "allowedproviders ": ["orgin_key1","origin_key2"] > } @@ -893,7 +893,7 @@ For more information, see [Listing Allowed Redirect URIs](../60-security/securit
-`credential-types` +`credential-type` diff --git a/docs/30-development/automatic-creation-of-destination-configurations-be0acbf.md b/docs/30-development/automatic-creation-of-destination-configurations-be0acbf.md new file mode 100644 index 00000000..b450b15e --- /dev/null +++ b/docs/30-development/automatic-creation-of-destination-configurations-be0acbf.md @@ -0,0 +1,92 @@ + + +# Automatic Creation of Destination Configurations + +If you use the HTML5 application deployer together with an application router managed by SAP for the Kyma runtime, you can enable that the required destination configurations pointing to the service instances are created automatically. + +To enable the automatic creation of destination configurations, add the environment variable SAP\_CLOUD\_SERVICE in the deployment.yaml or Helm chart of the Kyma project and provide the value of the sap.cloud.service property from the manifest.json file of the HTML5 application that you want to deploy. The destination configurations can point to instances of the following services: + +- An HTML5 Application Repository service instance of the app-host service plan \(mandatory\) + +- An SAP Authorization and Trust Management \(XSUAA\) service instance \(optional\) + + To create a destination that points to an SAP Authorization and Trust Management \(XSUAA\) service instance, the SAP Authorization and Trust Management \(XSUAA\) service instance and a destination service instance must be bound to the HTML5 application deployer. + +- A business service instance \(optional\) + +- One or more backend destinations that point to cloud or on-premise backend applications. + + In addition to the SAP\_CLOUD\_SERVICE environment variable, also add the environment variable BACKEND\_DESTINATIONS to create backend destinations. + + +> ### Note: +> To enable app-to-app navigation, you also have to add the environment variable IAS\_DEPENDENCY\_NAME and provide the name of the dependency that has been configured for the Identity Authentication token exchange that is required for app-to-app navigation. For more information about how to configure the dependency for app-to-app navigation, see . + +You would typically use the automatic creation of destination configurations in Kubernetes if the HTML5 application deployer application has been previously uploaded as a docker image to Artifactory or Docker Hub. See, for example, this Kubernetes deployment: + +> ### Sample Code: +> ``` +> -- +> apiVersion: apps/v1 +> kind: Deployment +> metadata: +> name: html5appdeployer +> namespace: default +> labels: +> app: html5appdeployer +> spec: +> replicas: 1 +> selector: +> matchLabels: +> app: html5appdeployer +> template: +> metadata: +> labels: +> app: html5appdeployer +> spec: +> containers: +> - image: html5-apps-repo.docker.repositories.sap.ondemand.com/myapp-html5-app-deployer:1.0 +> name: html5appdeployer +> volumeMounts: +> - name: html5-repo-app-host-volume +> mountPath: "/etc/secrets/sapcp/html5-apps-repo/myapp-app-host-instance" +> readOnly: true +> - name: xsuaa-volume +> mountPath: "/etc/secrets/sapcp/xsuaa/myapp-xsuaa-instance" +> readOnly: true +> - name: destination-volume +> mountPath: "/etc/secrets/sapcp/destination/myapp-destination-instance" +> readOnly: true +> env: +> - name: PORT +> value: "5000" +> - name: SAP_CLOUD_SERVICE +> value: "com.sap.test.service" +> - name: BACKEND_DESTINATIONS +> value: "[{ +> \"Name\":\"myapp-backend\", +> \"Description\":\"My application backend\", +> \"Type\":\"HTTP\", +> \"ProxyType\":\"Internet\", +> \"URL\":\"https:///\", +> \"Authentication\":\"NoAuthentication\", +> \"HTML5.ForwardAuthToken\": true}]" +> imagePullSecrets: +> - name: backend-dockersecret +> volumes: +> - name: html5-repo-app-host-volume +> secret: +> secretName: myapp-app-host-binding +> - name: xsuaa-volume +> secret: +> secretName: myapp-xsuaa-binding +> - name: destination-volume +> secret: +> secretName: myapp-destination-binding +> ``` + +**Related Information** + + + + diff --git a/docs/30-development/best-practices-0859096.md b/docs/30-development/best-practices-0859096.md index 39c6a138..f2a5273a 100644 --- a/docs/30-development/best-practices-0859096.md +++ b/docs/30-development/best-practices-0859096.md @@ -4,7 +4,7 @@ Choose the development environment, tools, APIs, and programming model that best suit your needs with recommendations from SAP. -Navigating the large portfolio of solutions, services, tools, and frameworks can be difficult. That's why we want to provide you with recommendations based on our years of experience in helping customers achieve their goals. The best practices listed here are targeted at developers. If you're looking for recommendations on general development planning and setting up SAP BTP, see [Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It contains best practices and recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right:. If you're interested in extending existing applications, see [Extensions](../40-extensions/extensions-08b1eff.md). +Navigating the large portfolio of solutions, services, tools, and frameworks can be difficult. That's why we want to provide you with recommendations based on our years of experience in helping customers achieve their goals. The best practices listed here are targeted at developers. If you're looking for recommendations on general development planning and setting up SAP BTP, see [Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It's part of the SAP BTP Guidance Framework and contains recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right:. If you're interested in extending existing applications, see [Extensions](../40-extensions/extensions-08b1eff.md). The following graphic offers an overview of the most important considerations to take when starting development on SAP BTP for the Cloud Foundry environment. The steps are recommendations, you're free to complete them in a different order if you feel it suits your needs better. diff --git a/docs/30-development/buildpacks-5e7fc02.md b/docs/30-development/buildpacks-5e7fc02.md index 02874fad..7565fe8c 100644 --- a/docs/30-development/buildpacks-5e7fc02.md +++ b/docs/30-development/buildpacks-5e7fc02.md @@ -6,7 +6,7 @@ You can choose to deploy applications by using the following Java buildpacks: - [SAP Java Buildpack 1](sap-java-buildpack-1-ad3e8df.md) – an SAP-managed buildpack that supports Java 8, 11, 17, TomEE 7 and Tomcat 9 -- [SAP Java Buildpack 2](sap-java-buildpack-2-1cf206b.md) – an SAP-managed buildpack that supports Java 17 and Tomcat 10 +- [SAP Java Buildpack 2](sap-java-buildpack-2-1cf206b.md) – an SAP-managed buildpack that supports Java 17, 21 and Tomcat 10 - [Community Java Buildpack](community-java-buildpack-4e2f2b5.md) – an open-source product maintained by the [java-buildpack](https://github.com/cloudfoundry/java-buildpack) community diff --git a/docs/30-development/changing-a-dimension-3beb828.md b/docs/30-development/changing-a-dimension-3beb828.md index b7814c6b..9db7a7dd 100644 --- a/docs/30-development/changing-a-dimension-3beb828.md +++ b/docs/30-development/changing-a-dimension-3beb828.md @@ -304,6 +304,9 @@ ERROR > out->write( |Exception raised| ). > out->write( lo_error->get_text( ) ). > ENDTRY. +> IF lv_error = abap_true. +> out->write( |Error occurred while updating the data in the database| ). +> ENDIF. > ENDMETHOD. > ENDCLASS. > diff --git a/docs/30-development/changing-a-unit-of-measurement-2451351.md b/docs/30-development/changing-a-unit-of-measurement-2451351.md index 1c0a9d9d..87dd72d1 100644 --- a/docs/30-development/changing-a-unit-of-measurement-2451351.md +++ b/docs/30-development/changing-a-unit-of-measurement-2451351.md @@ -360,6 +360,9 @@ ERROR > out->write( |Exception raised| ). > out->write( lo_error->get_text( ) ). > ENDTRY. +> IF lv_error = abap_true. +> out->write( |Error occurred while updating the data in the database| ). +> ENDIF. > ENDMETHOD. > ENDCLASS. > diff --git a/docs/30-development/community-java-buildpack-4e2f2b5.md b/docs/30-development/community-java-buildpack-4e2f2b5.md index 2f25ef67..abd01979 100644 --- a/docs/30-development/community-java-buildpack-4e2f2b5.md +++ b/docs/30-development/community-java-buildpack-4e2f2b5.md @@ -6,6 +6,29 @@ Find SAP-managed Cloud Foundry Java components and updates that belong to the co + + +## Buildpack Versioning + +The SAP BTP, Cloud Foundry environment provides one recent version of **`java_buildpack`** as part of its system buildpacks. To check this version, proceed as follows: + +1. Log in to a particular SAP BTP region and subaccount. For example, if your region is **eu10**, run: + + ``` + cf api https://api.cf.eu10.hana.ondemand.com + ``` + +2. Then run: + + ``` + cf buildpacks + ``` + + +To learn about changes in Node.js versions and features, regularly check the latest [buildpack releases](https://github.com/cloudfoundry/nodejs-buildpack/releases) in the GitHub community page. + + + ## Updates diff --git a/docs/30-development/configure-sap-event-mesh-for-kyma-eventing-407d126.md b/docs/30-development/configure-sap-event-mesh-for-kyma-eventing-407d126.md index 7509047a..39b4b160 100644 --- a/docs/30-development/configure-sap-event-mesh-for-kyma-eventing-407d126.md +++ b/docs/30-development/configure-sap-event-mesh-for-kyma-eventing-407d126.md @@ -10,7 +10,11 @@ If you want to use SAP Event Mesh as backend for Kyma Eventing, you must first s ## Prerequisites -- You have added the Kyma Eventing module. See [Add and Delete a Kyma Module](../50-administration-and-ops/add-and-delete-a-kyma-module-1b548e9.md#loio1b548e9ad4744b978b8b595288b0cb5c). +- The Kyma Eventing module is added to your cluster. See [Add and Delete a Kyma Module](../50-administration-and-ops/add-and-delete-a-kyma-module-1b548e9.md#loio1b548e9ad4744b978b8b595288b0cb5c). + +- The Kyma SAP BTP Operator module is added to your cluster. + +- You are using an enterprise account. diff --git a/docs/30-development/create-pull-c4b8a97.md b/docs/30-development/create-pull-c4b8a97.md index f5c84ad0..884322a6 100644 --- a/docs/30-development/create-pull-c4b8a97.md +++ b/docs/30-development/create-pull-c4b8a97.md @@ -203,7 +203,7 @@ Request body > Accept: application/json > > { -> “sc_name” : “/DMO/GIT_REPOSITORY” +> "sc_name" : "/DMO/GIT_REPOSITORY" > } > > ``` diff --git a/docs/30-development/creating-a-dimension-b91768d.md b/docs/30-development/creating-a-dimension-b91768d.md index 655b77f9..f1912f05 100644 --- a/docs/30-development/creating-a-dimension-b91768d.md +++ b/docs/30-development/creating-a-dimension-b91768d.md @@ -274,9 +274,10 @@ ERROR > out->write( |Exception raised| ). > out->write( lo_error->get_text( ) ). > ENDTRY. -> +> IF lv_error = abap_true. +> out->write( |Error occurred while saving the data in the database| ). +> ENDIF. > ENDMETHOD. -> > ENDCLASS. > ``` diff --git a/docs/30-development/creating-a-unit-of-measurement-f879258.md b/docs/30-development/creating-a-unit-of-measurement-f879258.md index f242af4f..25339b89 100644 --- a/docs/30-development/creating-a-unit-of-measurement-f879258.md +++ b/docs/30-development/creating-a-unit-of-measurement-f879258.md @@ -369,6 +369,9 @@ ERROR > out->write( | Exception raised | ). > out->write( lo_error->get_text( ) ). > ENDTRY. +> IF lv_error = abap_true. +> out->write( |Error occurred while saving the data in the database| ). +> ENDIF. > ENDMETHOD. > ENDCLASS. > ``` diff --git a/docs/30-development/creating-service-keys-4514a14.md b/docs/30-development/creating-service-keys-4514a14.md index 8980a71a..0fa44cc0 100644 --- a/docs/30-development/creating-service-keys-4514a14.md +++ b/docs/30-development/creating-service-keys-4514a14.md @@ -6,7 +6,7 @@ You can use service keys to generate credentials to communicate directly with a You can usethe SAP BTP cockpit or the Cloud Foundry Command Line Interface to create service keys: -- [Create Service Keys Using the Cockpit](create-service-keys-using-the-cockpit-cdf4f20.md) +- [Creating Service Keys Using the Cockpit](https://help.sap.com/docs/service-manager/sap-service-manager/creating-service-keys-in-cloud-foundry) - [Create Service Keys Using the Cloud Foundry Command Line Interface](create-service-keys-using-the-cloud-foundry-command-line-interface-7de6b31.md) diff --git a/docs/30-development/deleting-a-dimension-473b3ce.md b/docs/30-development/deleting-a-dimension-473b3ce.md index 1794d270..dd8ee9a2 100644 --- a/docs/30-development/deleting-a-dimension-473b3ce.md +++ b/docs/30-development/deleting-a-dimension-473b3ce.md @@ -106,6 +106,9 @@ ERROR > out->write( |Exception raised| ). > out->write( lo_error->get_text( ) ). > ENDTRY. +> IF lv_error = abap_true. +> out->write( |Error occurred while deleting the data from the database| ). +> ENDIF. > ENDMETHOD. > ENDCLASS. > diff --git a/docs/30-development/deleting-a-unit-of-measurement-54ded5b.md b/docs/30-development/deleting-a-unit-of-measurement-54ded5b.md index f1c0fbff..fd82ea6d 100644 --- a/docs/30-development/deleting-a-unit-of-measurement-54ded5b.md +++ b/docs/30-development/deleting-a-unit-of-measurement-54ded5b.md @@ -108,6 +108,9 @@ ERROR > out->write( | Exception raised | ). > out->write( lo_error->get_text( ) ). > ENDTRY. +> IF lv_error = abap_true. +> out->write( |Error occurred while deleting the data from the database| ). +> ENDIF. > ENDMETHOD. > ENDCLASS. > ``` diff --git a/docs/30-development/developing-node-js-in-the-cloud-foundry-environment-3a7a0be.md b/docs/30-development/developing-node-js-in-the-cloud-foundry-environment-3a7a0be.md index e5f1c1f2..d5ee3b39 100644 --- a/docs/30-development/developing-node-js-in-the-cloud-foundry-environment-3a7a0be.md +++ b/docs/30-development/developing-node-js-in-the-cloud-foundry-environment-3a7a0be.md @@ -41,13 +41,19 @@ You can download and consume SAP developed Node.js packages via the SAP NPM Regi ## Buildpack Versioning -The SAP BTP, Cloud Foundry environment provides one recent version of the Node.js buildpack as part of its system buildpacks. To check this version: +The SAP BTP, Cloud Foundry environment provides one recent version of **`nodejs_buildpack`** as part of its system buildpacks. To check this version, proceed as follows: -1. Log in to a particular SAP BTP region and subaccount. Run: **`cf api `** +1. Log in to a particular SAP BTP region and subaccount. For example, if your region is **eu10**, run: - For example: **`cf api https://api.cf.eu10.hana.ondemand.com`** + ``` + cf api https://api.cf.eu10.hana.ondemand.com + ``` -2. Then run: **`cf buildpacks`** +2. Then run: + + ``` + cf buildpacks + ``` To learn about changes in Node.js versions and features, regularly check the latest [buildpack releases](https://github.com/cloudfoundry/nodejs-buildpack/releases) in the GitHub community page. diff --git a/docs/30-development/developing-python-in-the-cloud-foundry-environment-acf8f49.md b/docs/30-development/developing-python-in-the-cloud-foundry-environment-acf8f49.md index d2b3ed76..dd8c940b 100644 --- a/docs/30-development/developing-python-in-the-cloud-foundry-environment-acf8f49.md +++ b/docs/30-development/developing-python-in-the-cloud-foundry-environment-acf8f49.md @@ -26,8 +26,6 @@ SAP includes a selection of Python packages, which are available for download an The following table lists the SAP Python packages that are currently available. For more details about the contents of each Python package, as well as any configuration tips, see the README file in the corresponding package. -**Python packages** - @@ -115,13 +113,19 @@ The SAP HANA Database Client provides means for database connectivity. ## Buildpack Versioning -The SAP BTP, Cloud Foundry environment provides one recent version of the Python buildpack as part of its system buildpacks. To check this version: +The SAP BTP, Cloud Foundry environment provides one recent version of **`python_buildpack`** as part of its system buildpacks. To check this version, proceed as follows: + +1. Log in to a particular SAP BTP region and subaccount. For example, if your region is **eu10**, run: -1. Log in to a particular SAP BTP region and subaccount. Run: **`cf api `** + ``` + cf api https://api.cf.eu10.hana.ondemand.com + ``` - For example: **`cf api https://api.cf.eu10.hana.ondemand.com`** +2. Then run: -2. Then run: **`cf buildpacks`** + ``` + cf buildpacks + ``` To learn about changes in Python versions and features, regularly check the latest [buildpack releases](https://github.com/cloudfoundry/python-buildpack/releases) in the GitHub community page. diff --git a/docs/30-development/development-c2fec62.md b/docs/30-development/development-c2fec62.md index 1c6e472c..ba00402b 100644 --- a/docs/30-development/development-c2fec62.md +++ b/docs/30-development/development-c2fec62.md @@ -206,7 +206,7 @@ We provide detailed information about developing, configuring, and deploying you **Related Information** -[Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It contains best practices and recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right: +[Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It's part of the SAP BTP Guidance Framework and contains recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right: [Developing with the SAP Cloud Application Programming Model](developing-with-the-sap-cloud-application-programming-model-00823f9.md "The SAP Cloud Application Programming Model (CAP) is a framework of languages, libraries, and tools for building enterprise-grade services and applications. It guides developers along a ‘golden path’ of proven best practices and a great wealth of out-of-the-box solutions to recurring tasks.") diff --git a/docs/30-development/environment-variables-ba52705.md b/docs/30-development/environment-variables-ba52705.md index 2a8a4baf..4c09d1d0 100644 --- a/docs/30-development/environment-variables-ba52705.md +++ b/docs/30-development/environment-variables-ba52705.md @@ -1053,12 +1053,12 @@ Yes @@ -1080,10 +1080,10 @@ No diff --git a/docs/30-development/factory-calendar-f7cbd3c.md b/docs/30-development/factory-calendar-f7cbd3c.md index 8b304025..f010fee5 100644 --- a/docs/30-development/factory-calendar-f7cbd3c.md +++ b/docs/30-development/factory-calendar-f7cbd3c.md @@ -272,18 +272,6 @@ get\_id Provides the ID of the factory calendar - - - - -
-A comma-separated list of objects each of which contains a host name, port and protocol that are allowed by the server, for example: `[{“host”: "www.acme.com"}]` or `[{“host”: “.acme.com”}]`. +A comma-separated list of objects each of which contains a host name, port and protocol that are allowed by the server, for example: `[{"host": "www.acme.com"}]` or `[{"host": ".acme.com"}]`. > ### Note: -> Matching is case-sensitive. In addition, if no port or protocol is specified, the default is `“*”`. +> Matching is case-sensitive. In addition, if no port or protocol is specified, the default is `"*"`. -The default configuration is: `[{“host”: "*"}]`, which means that the server allows **any** origin to access the resource. +The default configuration is: `[{"host": "*"}]`, which means that the server allows **any** origin to access the resource.
-A comma-separated list of HTTP methods that are allowed by the server, for example, “GET”, “POST”. If `allowMethods` is defined but no method is specified, the default “GET”, “POST”, “HEAD”, “OPTIONS” \(all\) applies. +A comma-separated list of HTTP methods that are allowed by the server, for example, `"GET", "POST"`. If `allowMethods` is defined but no method is specified, the default `"GET", "POST", "HEAD", "OPTIONS"` \(all\) applies. > ### Tip: -> The specified methods must be upper-case, for example,`GET`. Matching of the method type is case-sensitive. +> The specified methods must be upper-case, for example, `GET`. Matching of the method type is case-sensitive. @@ -1107,7 +1107,7 @@ No -A comma-separated list of request headers that are allowed by the server. the default values are as follows: `[“Origin”, “Accept”, “X-Requested-With”, “Content-Type”, “Access-Control-Request-Method”, “Access-Control-Request-Headers”]`. +A comma-separated list of request headers that are allowed by the server. the default values are as follows: `["Origin", "Accept", "X-Requested-With", "Content-Type", "Access-Control-Request-Method", "Access-Control-Request-Headers"]`.
- -date\_compute\_day - - - -Provides the name and the number of the weeday for a specified date -
diff --git a/docs/30-development/memory-calculator-505a71a.md b/docs/30-development/memory-calculator-505a71a.md index 17ada00f..1d1c6b7b 100644 --- a/docs/30-development/memory-calculator-505a71a.md +++ b/docs/30-development/memory-calculator-505a71a.md @@ -2,7 +2,7 @@ # Memory Calculator -The memory calculator provides a mechanism to fine tune the Java Virtual Machine \(JVM\) memory for an application. Its goal is to ensure that applications perform well while not exceeding a container's memory limit. +The memory calculator provides a mechanism to fine-tune the Java Virtual Machine \(JVM\) memory for an application. Its goal is to ensure that applications perform well while not exceeding a container's memory limit. Below you can find which memory calculators are used in the relevant Java buildpacks. @@ -16,7 +16,7 @@ This buildpack supports two memory calculator versions: - [Memory Calculator V2](memory-calculator-v2-8eef959.md) – activated by default. -- [Memory Calculator V1 \(SAP JVM Memory Calculator\)](memory-calculator-v1-sap-jvm-memory-calculator-c1059e0.md) – this is an optional memory calculator and you can activate by adding the following environment variable: +- [Memory Calculator V1 \(SAP JVM Memory Calculator\)](memory-calculator-v1-sap-jvm-memory-calculator-c1059e0.md) – this is an optional memory calculator. You can activate it by adding the following environment variable: ``` --- @@ -38,7 +38,7 @@ This buildpack supports two memory calculator versions: This buildpack supports only [Memory Calculator V2](memory-calculator-v2-8eef959.md), which is the same as the one provided by the community Java Buildpack. See: [\(GitHub\) Java Buildpack Memory Calculator](https://github.com/cloudfoundry/java-buildpack-memory-calculator) > ### Note: -> Memory Calculator V1 is deprecated \(not available\) for SAP Java Buildpack 2. If you try to activate it by setting the aforementioned environment variable, an error will be thrown. +> Memory Calculator V1 is deprecated \(not available\) for SAP Java Buildpack 2. If you try to activate it by setting the MEMORY\_CALCULATOR\_V1 environment variable, an error message will be thrown. diff --git a/docs/30-development/memory-calculator-v2-8eef959.md b/docs/30-development/memory-calculator-v2-8eef959.md index f3e0cf1b..4353f50d 100644 --- a/docs/30-development/memory-calculator-v2-8eef959.md +++ b/docs/30-development/memory-calculator-v2-8eef959.md @@ -91,7 +91,7 @@ applications: ... env: JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" - JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 11.0.15, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" + JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 11.0.22, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" ``` You can also point to the major version of the SapMachine JDK, in order to always get the latest patch versions. In this case, specify it the following way: @@ -137,7 +137,7 @@ applications: ... env: JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" - JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 17.0.15, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" + JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 17.0.10, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" ``` You can also point to the major version of the SapMachine JDK, in order to always get the latest patch versions. In this case, specify it the following way: @@ -152,6 +152,52 @@ applications: JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 17.+, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" ``` + + +
+ +## Java 21 + +> ### Note: +> Only relevant for SAP Java Buildpack 2 + +If you need JRE with Java 21, you use SapMachine 21. Customize your memory options as follows: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']" + JBP_CONFIG_SAP_MACHINE_JRE: "[version: 21.+, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" + +``` + +If you want to point to the SapMachine JDK component, you need to provide a specific version as follows: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" + JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 21.0.2, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" +``` + +You can also point to the major version of the SapMachine JDK, in order to always get the latest patch versions. In this case, specify it the following way: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" + JBP_CONFIG_SAP_MACHINE_JDK: "[ version: 21.+, memory_calculator_v2: {stack_threads: 266, class_count: 1001, headroom: 5}]" +``` + **Related Information** diff --git a/docs/30-development/parameters-and-properties-490c8f7.md b/docs/30-development/parameters-and-properties-490c8f7.md index fa1eb9e8..b154c78f 100644 --- a/docs/30-development/parameters-and-properties-490c8f7.md +++ b/docs/30-development/parameters-and-properties-490c8f7.md @@ -784,7 +784,7 @@ To enable resource properties to resolve values from a property in another resou > It is not possible to reference **list** configuration entries either from resources or “subscription” functionalities \(deployment features that are available to subscriber applications\). > ### Code Syntax: -> Cross-References between Properties in the MTA Deployment Descriptor +> Cross-References between Properties in the MTA Deployment Descriptor in a YAML file > > ``` > diff --git a/docs/30-development/resources-9e34487.md b/docs/30-development/resources-9e34487.md index b34af288..48c0339d 100644 --- a/docs/30-development/resources-9e34487.md +++ b/docs/30-development/resources-9e34487.md @@ -17,7 +17,7 @@ Optional resource attributes include: - `type` - the resource **type** is one of a reserved list of resource types supported by the MTA-aware deployment tools, for example: `com.sap.xs.uaa`, `com.sap.xs.hdi-container`, `com.sap.xs.job-scheduler`; the **type** indicates to the deployer how to discover, allocate, or provision the resource, for example, a managed service such as a database, or a user-provided service. When `type` is not defined, `resource` is used for configurations only for other modules and resources. - `description` - non-translatable, free-text string; the string is not meant to be presented on application user interfaces \(UI\) -- `properties` - a structured set of name-value pairs; if a module, which requires the resource, represents a CF application, the resource properties are injected into the environment of the application +- `properties` - a structured set of name-value pairs - `parameters` - reserved variables that affect the behavior of the MTA-aware tools, such as the deployer - `active` - its value can be `true` or `false` and the default value is `true`. If set to `false`, the resource is not processed and it is ignored in the `requires` list of the application that requires it. - `processed-after` - the attribute is used to create an order, in which resources should be processed. If a resource has this attribute, it will be processed after the other resources in a higher position are processed. The attribute value is a structured set of a list comprised of other resource names of the same MTA. diff --git a/docs/30-development/sap-java-buildpack-1-ad3e8df.md b/docs/30-development/sap-java-buildpack-1-ad3e8df.md index e8c8dc1a..68524d9e 100644 --- a/docs/30-development/sap-java-buildpack-1-ad3e8df.md +++ b/docs/30-development/sap-java-buildpack-1-ad3e8df.md @@ -19,7 +19,7 @@ This buildpack supports the following runtimes: ## Usage -To use this buildpack, specify its name when deploying a Java application to SAP BTP, Cloud Foundry: +To use this buildpack, specify its name when deploying a Java application to the SAP BTP, Cloud Foundry environment: ``` cf push -f -b sap_java_buildpack @@ -59,38 +59,48 @@ modules: ## Buildpack Versioning -The SAP BTP, Cloud Foundry environment provides four versions of SAP Java Buildpack as part of its system buildpacks: +The SAP BTP, Cloud Foundry environment provides four versions of SAP Java Buildpack 1 as part of its system buildpacks: -- *sap\_java\_buildpack* - Holds the latest available version of SAP Java Buildpack. All new features and fixes are provided with this version. +- *sap\_java\_buildpack* – Holds the latest available version of SAP Java Buildpack 1. All new features and fixes are provided with this version. -- *sap\_java\_buildpack\_* - Holds the latest available version of SAP Java Buildpack; available for a limited timeframe \(4 to 6 weeks\). +- *sap\_java\_buildpack\_* – Holds the latest available version of SAP Java Buildpack 1. It's available for a limited timeframe \(4 to 6 weeks\). -- *sap\_java\_buildpack\_* - This version used to be latest in the previous update of the SAP BTP, Cloud Foundry environment; available for a limited timeframe \(4 to 6 weeks\). +- *sap\_java\_buildpack\_* – This version used to be latest in the previous update of the SAP BTP, Cloud Foundry environment. It's available for a limited timeframe \(4 to 6 weeks\). -- *sap\_java\_buildpack\_* - This version used to be latest before two updates of the SAP BTP, Cloud Foundry; available for a limited timeframe \(4 to 6 weeks\). +- *sap\_java\_buildpack\_* – This version used to be latest before two updates of the SAP BTP, Cloud Foundry environment. It's available for a limited timeframe \(4 to 6 weeks\). -To check these versions: +To check these versions, proceed as follows: -1. Log in to a particular SAP BTP region and subaccount. Run: **`cf api `** +1. Log in to a particular SAP BTP region and subaccount. For example, if your region is **eu10**, run: - For example: **`cf api https://api.cf.eu10.hana.ondemand.com`** + ``` + cf api https://api.cf.eu10.hana.ondemand.com + ``` -2. Then run: **`cf buildpacks`** +2. Then run: + ``` + cf buildpacks + ``` -### How to use the SAP Java Buildpack versions? -- Use the default **sap\_java\_buildpack** +### How to use versions of SAP Java Buildpack 1? -- Set a particular version of the buildpack - Bear in mind that this version will exist for a limited amount of time. This may lead to the situation where application restage is failing because the used version of the buildpack is no longer available. To avoid this, we recommend that you follow the updates of the buildpack and test your applications with the latest buildpack version. Developers should never allow their applications to run on an outdated buildpack version. – You take advantage of all latest features and fixes in SAP Java Buildpack. This way, it's guaranteed that the buildpack is always available. The drawback in this case is the limited time for any adoption which might be needed. In such a scenario, applications can fall back to an older version temporarily to avoid any downtime. +- **Option 1:** Use the default one – *sap\_java\_buildpack* + + You take advantage of all latest features and fixes in SAP Java Buildpack 1. This way, it's guaranteed that the buildpack is always available. The drawback in this case is the limited time for adoption, if it's needed. In such a scenario, applications can fall back to an older version temporarily to avoid any downtime. + +- **Option 2:** Set a particular version – *sap\_java\_buildpack\_* + + Bear in mind that this version will only exist for a limited amount of time. This may lead to the situation where application restage is failing because the used version of the buildpack is no longer available. To avoid this, we recommend that you follow the updates of the buildpack and test your applications with its latest version. Developers should never allow their applications to run on an outdated buildpack version. **Example:** -Let's say that the latest version of SAP Java Buildpack is **1.80.0**. Then, the output of the `cf buildpacks` command would be: +Let's say that the latest version of SAP Java Buildpack 1 is **1.80.0**. Then, the output of the `cf buildpacks` command would be: ``` buildpack position enabled locked filename @@ -101,7 +111,7 @@ sap_java_buildpack_1_79 3 true false sap_java_buildpack-1.7 sap_java_buildpack_1_78 4 true false sap_java_buildpack-1.78.0.zip ``` -When SAP Java Buildpack is updated on the SAP BTP, Cloud Foundry from version **1.80.0** to **1.81.0**, the list will change to: +When SAP Java Buildpack 1 is updated on the SAP BTP, Cloud Foundry environment from version **1.80.0** to **1.81.0**, the list will change to: ``` – You take advantage of all latest features and fixes in SAP Javabuildpack position enabled locked filename @@ -119,9 +129,9 @@ This means that *sap\_java\_buildpack\_1\_78* will no longer be available for ap -### Switching to a different version of the buildpack +### How to switch to a specific buildpack version? -To use *sap\_java\_buildpack\_*, specify its name when pushing an application to SAP BTP, Cloud Foundry: +To use *sap\_java\_buildpack\_*, specify its name when pushing an application to SAP BTP, Cloud Foundry environment: ``` cf push -f -b sap_java_buildpack_ @@ -163,7 +173,7 @@ modules: -## Supported Versions +## Supported Java Versions SAP Java Buildpack 1 \(`sap_java_buildpack`\) supports the following Java versions: @@ -179,9 +189,9 @@ To learn how to configure your application to use SapMachine JRE and JDK, see: [ ## Components -SAP Java Buildpack provides the following components in the application container \(`/app/META-INF/.sap_java_buildpack`\): +SAP Java Buildpack 1 provides the following components in the application container \(`/app/META-INF/.sap_java_buildpack`\): -- Runtime – [Tomcat 9](tomcat-9-ddfc101.md), [TomEE 7](tomee-7-79c039a.md), and [Java Main](java-main-8a1786a.md) +- Runtimes – [Tomcat 9](tomcat-9-ddfc101.md), [TomEE 7](tomee-7-79c039a.md), and [Java Main](java-main-8a1786a.md) - [SapMachine](sapmachine-785d6b3.md) @@ -200,9 +210,9 @@ To check all the components regularly updated in the SAP Java Buildpack 1.x rele ## Async Servlets -In the current version of the SAP Java Buildpack, the async servlets are *not supported*. +In the current version of the SAP Java Buildpack 1, the async servlets are *not supported*. -**Reason:** Some of the [valves](https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html) that SAP Java Buildpack brings to Tomcat and TomEE 7 are not "async enabled". +**Reason:** Some of the [valves](https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html) that SAP Java Buildpack 1 brings to Tomcat and TomEE 7 are not "async enabled". diff --git a/docs/30-development/sap-java-buildpack-2-1cf206b.md b/docs/30-development/sap-java-buildpack-2-1cf206b.md index b8166545..c8ed4864 100644 --- a/docs/30-development/sap-java-buildpack-2-1cf206b.md +++ b/docs/30-development/sap-java-buildpack-2-1cf206b.md @@ -17,7 +17,7 @@ This buildpack supports the following runtimes: ## Usage -To use this buildpack, specify its name when deploying a Java \(Jakarta\) application to SAP BTP, Cloud Foundry: +To use this buildpack, specify its name when deploying a Java \(Jakarta\) application to the SAP BTP, Cloud Foundry environment: ``` cf push -f -b sap_java_buildpack_jakarta @@ -59,31 +59,41 @@ modules: The SAP BTP, Cloud Foundry environment provides four versions of SAP Java Buildpack 2 as part of its system buildpacks: -- *sap\_java\_buildpack\_jakarta* - Holds the latest available version of SAP Java Buildpack 2. All new features and fixes are provided with this version. +- *sap\_java\_buildpack\_jakarta* – Holds the latest available version of SAP Java Buildpack 2. All new features and fixes are provided with this version. -- *sap\_java\_buildpack\_jakarta\_* - Holds the latest available version of SAP Java Buildpack 2; available for a limited timeframe \(4 to 6 weeks\). +- *sap\_java\_buildpack\_jakarta\_* – Holds the latest available version of SAP Java Buildpack 2. It's available for a limited timeframe \(4 to 6 weeks\). -- *sap\_java\_buildpack\_jakarta\_* - This version used to be latest in the previous update of the SAP BTP, Cloud Foundry environment; available for a limited timeframe \(4 to 6 weeks\). +- *sap\_java\_buildpack\_jakarta\_* – This version used to be latest in the previous update of the SAP BTP, Cloud Foundry environment. It's available for a limited timeframe \(4 to 6 weeks\). -- *sap\_java\_buildpack\_jakarta\_* - This version used to be latest before two updates of the SAP BTP, Cloud Foundry; available for a limited timeframe \(4 to 6 weeks\). +- *sap\_java\_buildpack\_jakarta\_* – This version used to be latest before two updates of the SAP BTP, Cloud Foundry environment. It's available for a limited timeframe \(4 to 6 weeks\). -To check these versions: +To check these versions, proceed as follows: -1. Log in to a particular SAP BTP region and subaccount. Run: **`cf api `** +1. Log in to a particular SAP BTP region and subaccount. For example, if your region is **eu10**, run: - For example: **`cf api https://api.cf.eu10.hana.ondemand.com`** + ``` + cf api https://api.cf.eu10.hana.ondemand.com + ``` -2. Then run: **`cf buildpacks`** +2. Then run: + ``` + cf buildpacks + ``` -### How to use the SAP Java Buildpack 2 versions? -- Use the default **sap\_java\_buildpack\_jakarta** – You take advantage of all latest features and fixes in SAP Java Buildpack 2. This way, it's guaranteed that the buildpack is always available. The drawback in this case is the limited time for any adoption which might be needed. In such a scenario, applications can fall back to an older version temporarily to avoid any downtime. +### How to use versions of SAP Java Buildpack 2? -- Set a particular version of the buildpack - Bear in mind that this version will exist for a limited amount of time. This may lead to the situation where application restage is failing because the used version of the buildpack is no longer available. To avoid this, we recommend that you follow the updates of the buildpack and test your applications with the latest buildpack version. Developers should never allow their applications to run on an outdated buildpack version. +- **Option 1:** Use the default one – *sap\_java\_buildpack\_jakarta* + + You take advantage of all latest features and fixes in SAP Java Buildpack 2. This way, it's guaranteed that the buildpack is always available. The drawback in this case is the limited time for adoption, if it's needed. In such a scenario, applications can fall back to an older version temporarily to avoid any downtime. + +- **Option 2:** Set a particular version – *sap\_java\_buildpack\_jakarta\_* + + Bear in mind that this version will only exist for a limited amount of time. This may lead to the situation where application restage is failing because the used version of the buildpack is no longer available. To avoid this, we recommend that you follow the updates of the buildpack and test your applications with its latest version. Developers should never allow their applications to run on an outdated buildpack version. **Example:** @@ -99,7 +109,7 @@ sap_java_buildpack_jakarta_2_9 3 true false sap_java_build sap_java_buildpack_jakarta_2_8 4 true false sap_java_buildpack_jakarta-2.8.0.zip ``` -When SAP Java Buildpack 2 is updated on the SAP BTP, Cloud Foundry from version **2.10.0** to **2.11.0**, the list will change to: +When SAP Java Buildpack 2 is updated on the SAP BTP, Cloud Foundry environment from version **2.10.0** to **2.11.0**, the list will change to: ``` buildpack position enabled locked filename @@ -117,9 +127,9 @@ This means that *sap\_java\_buildpack\_jakarta\_2\_8* will no longer be availabl -### Switching to a different version of the buildpack +### How to switch to a specific buildpack version? -To use *sap\_java\_buildpack\_jakarta\_*, specify its name when pushing an application to SAP BTP, Cloud Foundry: +To use *sap\_java\_buildpack\_jakarta\_*, specify its name when pushing an application to the SAP BTP, Cloud Foundry environment: ``` cf push -f -b sap_java_buildpack_jakarta_ @@ -161,11 +171,12 @@ modules: -## Supported Versions +## Supported Java Versions -SAP Java Buildpack 2 \(`sap_java_buildpack_jakarta`\) supports the following Java version: +SAP Java Buildpack 2 \(`sap_java_buildpack_jakarta`\) supports the following Java versions: -- Java **17** – you use it via SapMachine JRE 17 +- Java **17** – default version. You can obtain it by using SapMachine 17 \(*it provides a JRE with Java 17*\) +- Java **21** – you can obtain it by using SapMachine 21 \(*it provides a JRE with Java 21*\) To learn how to configure your application to use SapMachine JRE and JDK, see: [SapMachine](sapmachine-785d6b3.md) @@ -177,7 +188,7 @@ To learn how to configure your application to use SapMachine JRE and JDK, see: [ SAP Java Buildpack 2 provides the following components in the application container \(`/app/META-INF/.sap_java_buildpack_jakarta`\): -- Runtime – [Tomcat 10](tomcat-10-97d0e34.md) and [Java Main](java-main-8a1786a.md) +- Runtimes – [Tomcat 10](tomcat-10-97d0e34.md) and [Java Main](java-main-8a1786a.md) - [SapMachine](sapmachine-785d6b3.md) @@ -209,11 +220,3 @@ If you encounter an issue while using SAP Java Buildpack 2, you can: - Create an incident for your specific problem, using support component **BC-CP-CF-BLDP**. To provide the necessary details, use the following template: [Initial Problem-Related Data](https://ga.support.sap.com/dtp/viewer/#/tree/3254/actions/51226:51220/?version=current) - - - - -## Java Tutorial - -The following tutorial will guide you through creating a Java application in Cloud Foundry Command Line Interface \(cf CLI\), consuming Cloud Foundry services, and setting up authentication and authorization checks. See: [Create an Application with SAP Java Buildpack](https://developers.sap.com/tutorials/btp-cf-buildpacks-java-create.html) - diff --git a/docs/30-development/sapmachine-785d6b3.md b/docs/30-development/sapmachine-785d6b3.md index c12d3080..4018747a 100644 --- a/docs/30-development/sapmachine-785d6b3.md +++ b/docs/30-development/sapmachine-785d6b3.md @@ -20,9 +20,7 @@ SapMachine works with the following application containers: > ### Caution: > **Only relevant to SAP Java Buildpack 1:** > -> Bear in mind that TomEE 7 supports only Java 7 and 8. Thus, even if your TomEE 7 application runs successfully with SapMachine JRE 17, at some point it might crash. -> -> Also, TomEE 7 has already [reached end of life](https://tomee.apache.org/tomee-7.1-eol.html). See: [Discontinued TomEE versions](https://tomee.apache.org/download-discontinued.html) +> Bear in mind that TomEE 7 supports only Java 7 and 8. Thus, even if your TomEE 7 application runs successfully with SapMachine JRE 17, at some point it might crash. Also, TomEE 7 has already [reached end of life](https://tomee.apache.org/tomee-7.1-eol.html). See: [Discontinued TomEE versions](https://tomee.apache.org/download-discontinued.html) @@ -88,7 +86,7 @@ applications: ... env: JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']" - JBP_CONFIG_SAP_MACHINE_JRE: '{ version: 17.0.8 }' + JBP_CONFIG_SAP_MACHINE_JRE: '{ version: 17.0.10 }' ... ``` @@ -106,6 +104,35 @@ applications: +### SapMachine 21 + +Use environment variable JBP\_CONFIG\_SAP\_MACHINE\_JRE in analogical way. For example: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']" + JBP_CONFIG_SAP_MACHINE_JRE: '{ version: 21.0.2 }' + ... +``` + +To point to the major version of the SapMachine JRE 21, specify it the following way: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jre.SAPMachineJRE']" + JBP_CONFIG_SAP_MACHINE_JRE: "{ version: 21.+ }" +``` + + + ## Activation Using JDK @@ -135,7 +162,7 @@ applications: ... env: JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" - JBP_CONFIG_SAP_MACHINE_JDK: '{ version: 11.0.15 }' + JBP_CONFIG_SAP_MACHINE_JDK: '{ version: 11.0.22 }' ... ``` @@ -164,7 +191,7 @@ applications: ... env: JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" - JBP_CONFIG_SAP_MACHINE_JDK: '{ version: 17.0.8 }' + JBP_CONFIG_SAP_MACHINE_JDK: '{ version: 17.0.10 }' ... ``` @@ -180,8 +207,37 @@ applications: JBP_CONFIG_SAP_MACHINE_JDK: "{ version: 17.+ }" ``` + + +### SapMachine 21 + +Use environment variable JBP\_CONFIG\_SAP\_MACHINE\_JDK in analogical way. For example: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" + JBP_CONFIG_SAP_MACHINE_JDK: '{ version: 21.0.2 }' + ... +``` + +To point to the major version of the SapMachine JDK 21, specify it the following way: + +``` +--- +applications: +- name: + ... + env: + JBP_CONFIG_COMPONENTS: "jres: ['com.sap.xs.java.buildpack.jdk.SAPMachineJDK']" + JBP_CONFIG_SAP_MACHINE_JDK: "{ version: 21.+ }" +``` + > ### Restriction: -> As the SapMachine JDK is not bundled into the SAP Java Buildpack, if you want to use SapMachine JDK 11 or 17, you have to download them from the [GitHub project](https://sap.github.io/SapMachine/) as an online component. +> As the SapMachine JDK is not bundled into the SAP Java Buildpack, if you want to use SapMachine JDK 11, 17 or 21, you have to download them from the [GitHub project](https://sap.github.io/SapMachine/) as an online component. **Related Information** diff --git a/docs/30-development/setting-up-the-authorizations-bb559a5.md b/docs/30-development/setting-up-the-authorizations-bb559a5.md index b4db0fb6..f52e5524 100644 --- a/docs/30-development/setting-up-the-authorizations-bb559a5.md +++ b/docs/30-development/setting-up-the-authorizations-bb559a5.md @@ -8,13 +8,13 @@ Some further activities in ADT and in the administrator’s launchpad are necess 1. Create an Identity and Access Management \(IAM\) Business Catalog. - When you create a job catalog entry and a job template as explained in [Creating a Job Catalog Entry and a Job Template in ADT](creating-a-job-catalog-entry-and-a-job-template-in-adt-949ba00.md), an object of the type **IAM App** is created automatically. It has the name **\_SAJC**. This IAM app contains the start authorization for all job templates that refer to this job catalog entry. + When you create a job catalog entry and a job template as explained in [Creating a Job Catalog Entry and a Job Template in ADT](creating-a-job-catalog-entry-and-a-job-template-in-adt-949ba00.md), an object of the type **IAM App** is created automatically. It has the name **\_SAJC**. Create an IAM business catalog via ADT: 1. Right-click the package where the objects are located that have already been created. 2. Select *New \> Other ABAP Repository Object*. - 3. Expand *Cloud Identity and Access Management*. + 3. Collapse *Cloud Identity and Access Management*. 4. Double-click *Business Catalog*. 5. Enter a name \(e.g. `ZTEST_MY_SIMPLE_JOBS`\) and a description. 6. Select *Save* and choose the appropriate transport request. @@ -24,30 +24,7 @@ Some further activities in ADT and in the administrator’s launchpad are necess 10. Select *Save*. 11. Press *Publish Locally* on the top right corner of the screen. -2. If the business logic performs own authorization checks, remember to add the required authorizations to a separate IAM app of type `EXT`. The following steps explain how to do this: - - 1. Right-click the package that contains the objects that have already been created. - - 2. Select *New* and then choose *Other ABAP Repository Object*. - - 3. Expand *Cloud Identity and Access Management*. - - 4. Choose *IAM App*. - - 5. Enter a name and a description. Choose *EXT - External App* as application type. - - 6. Select an appropriate transport request and click *Save*. - - 7. Select the *Authorizations* tab. - - 8. Select *Insert*. Now, you can specify an authorization object and assign values to the authorization fields. - - 9. Repeat step `h` for each authorization that is necessary to run the business logic. - - 10. Add the IAM app to the business catalog that you've created as described in step 1. - - -3. Create a business role. +2. Create a business role. Open the Fiori App *Maintain Business Roles* in the Fiori Launchpad of the administrator and perform the following steps: @@ -55,16 +32,18 @@ Some further activities in ADT and in the administrator’s launchpad are necess 2. Choose a name \(e.g. `ZTEST_MY_SIMPLE_JOBS`\) and a description. 3. Click on *Assigned Business Catalogs*. 4. Select *Add*. - 5. Select the business catalog created in the previous step \(e.g. `ZTEST_MY_SIMPLE_JOBS`\). + 5. Select the business role created in the previous step \(e.g. `ZTEST_MY_SIMPLE_JOBS`\). > ### Note: - > A business user who shall be able to schedule application jobs needs to have access to the *Application Jobs* tile. This tile is provided by the business catalog `SAP_CORE_BC_APJ_JCE`, which is contained in the business role `SAP_BR_ADMINISTRATOR`. It doesn't only provide the *Application Jobs* app, but also contains restriction types to configure the authorization on other users’ jobs and to schedule jobs for other users \(for more information, see the section *Assigning Further Authorizations* below\). + > A business user who shall be able to schedule application jobs needs to have access to the *Application Jobs* tile. This tile was provided by the business catalog `SAP_CORE_BC_APJ`, which is contained in the business role `SAP_BR_ADMINISTRATOR`. + > + > With the 2105 cloud release, the business catalog `SAP_CORE_BC_APJ` has been set to **deprecated**. Use the new business catalog `SAP_CORE_BC_APJ_JCE` instead. It doesn't only provide the *Application Jobs* app, but also contains restriction types to configure the authorization on other users’ jobs \(for more information, see the section *Assigning Further Authorizations* below\). > > Add the business catalog `SAP_CORE_BC_APJ_JCE` to the business role created following the steps above, or assign it to a separate business role. 6. Select *Save*. -4. Assign the business role to a user. +3. Assign the business role to a user. For more information, see [How to Maintain Business Users](../50-administration-and-ops/how-to-maintain-business-users-db1d0b4.md). @@ -75,22 +54,22 @@ Some further activities in ADT and in the administrator’s launchpad are necess ## Assigning Further Authorizations -You can access only your own jobs in the *Application Jobs* app. In order to grant access to other users' objects used in the *Application Jobs* app, create a new business role assigning the business catalog `SAP_CORE_BC_APJ_JCE` to it. You can modify the provided restriction types according to your needs. +With the 2105 cloud release, you can access only your own jobs in the *Application Jobs* app. In order to grant access to other users' objects used in the *Application Jobs* app, create a new business role assigning the business catalog `SAP_CORE_BC_APJ_JCE` to it. You can modify the provided restriction types according to your needs. -1. Create a new business role assigning the business catalog `SAP_CORE_BC_APJ_JCE` to it. The restriction type `Job Catalog Entry/Application Job Part` contains the two fields `Application Job Catalog Entry` and `Application Job Part`. For more information, see [Maintain Business Roles](../50-administration-and-ops/maintain-business-roles-365b0d6.md). +1. Create a new business role assigning the business catalog `SAP_CORE_BC_APJ_JCE` to it. The restriction type `Job Catalog Entry/Application Job Part` contains the two fields `Application Job Catalog Entry` and `Application Job Part`. For more information, see [Maintain Business Roles \(Deprecated\)](../50-administration-and-ops/maintain-business-roles-deprecated-8980ad0.md). > ### Note: > With this restriction type you'll be able to provide the necessary authorizations for certain actions on other users' application jobs, which are based on a specified job catalog entry. With this, you can display the logs of other users' jobs, which are based on this specified job catalog entry. > > Alternatively, you can also create a display only-role using this restriction type. -2. The business catalog `SAP_CORE_BC_APJ_JCE` has another restriction type: `Create Application Jobs for Other Users`. It has the restriction field `Application Job Catalog Entry`. +2. Next, define your business role with the above-mentioned restriction fields `Application Job Catalog Entry` and `Application Job Part`. To do so, select *Maintain Restrictions*. In the `Application Job Catalog Entry` field, you can choose the job catalog entries, and in the `Application Job Part` field, you can choose for which part of a job access should be granted. You can choose the values `JOB` \(Job Details\), `SPOOL` \(Result List\), and `APPLOG` \(Log\) by clicking the *Edit* icon next to the fields. + +3. Go back and select *Save*. Now, you've maintained your business role, and you can assign the role to a business user. - > ### Note: - > With this restriction type you'll be able to grant a business user the authorization to schedule an application job for any other business user, based on the job catalog entry selected. This feature is supported by the parameter `iv_username` of the method `cl_apj_rt_api=>schedule_job`. For more information, see [Maintaining Application Jobs Using an API](maintaining-application-jobs-using-an-api-1491e6c.md). -3. Next, define your business role with the above-mentioned restriction fields `Application Job Catalog Entry` and `Application Job Part`. To do so, select *Maintain Restrictions*. In the `Application Job Catalog Entry` field, you can choose the job catalog entries, and in the `Application Job Part` field, you can choose for which part of a job access should be granted. You can choose the values `JOB` \(Job Details\), `SPOOL` \(Result List\), and `APPLOG` \(Log\) by clicking the *Edit* icon next to the fields. +**Related Information** -4. Go back and select *Save*. Now, you've maintained your business role, and you can assign the role to a business user. + diff --git a/docs/30-development/simple-conversion-between-two-units-4083add.md b/docs/30-development/simple-conversion-between-two-units-4083add.md index 23add98d..7ca609f3 100644 --- a/docs/30-development/simple-conversion-between-two-units-4083add.md +++ b/docs/30-development/simple-conversion-between-two-units-4083add.md @@ -5,7 +5,7 @@ Use method `UNIT_CONVERSION_SIMPLE` to convert values from one measurement unit to another and round the result to the number of decimal places maintained in the measurement unit table `T006`, if necessary. Depending on the parameter `ROUND_SIGN`, the rounding is up \(`'+'`\), down \(`'-'`\), commercial \(`'X'`'\), or no rounding \(SPACE\). > ### Note: -> Make sure that both units are maintained in the measurement unit table and have the same dimension. +> Make sure that both units are maintained in the measurement unit table and are not dimensionless, but have both the **same** dimension. diff --git a/docs/30-development/soap-communication-via-url-7e22ed9.md b/docs/30-development/soap-communication-via-url-7e22ed9.md index 098a907a..01680eca 100644 --- a/docs/30-development/soap-communication-via-url-7e22ed9.md +++ b/docs/30-development/soap-communication-via-url-7e22ed9.md @@ -13,19 +13,24 @@ Instead of setting the *Additional Properties* as in the destination service app - `use_client_certificate( )`: Sets the authentication method to client certificate authentication. The default client certificate is used. > ### Note: -> An existing consumption model is required. +> An existing service consumption model \(SRVC\) is required. > ### Note: > Use the URL approach mainly for testing purposes. +Call the SOAP service as described in the example. As described in [SOAP Communication via Communication Arrangements](soap-communication-via-communication-arrangements-2133e15.md), copy the code snippet from the *Overview* tab in your SRVC. Replace the `CREATE_BY_COMM_ARRANGEMENT` method with the `CREATE_BY_URL` method and pass the required URL to the method. + > ### Sample Code: > ```abap > TRY. +> +> "replace create_by_comm_arrangement with create_by_url > DATA(soap_destination) = cl_soap_destination_provider=>create_by_url( > 'https:///sap/bc/srt/xip/sap//000//'). > > soap_destination->use_client_certificate( ). -> +> +> "generated code snippet > DATA(proxy) = NEW zsc_co_service( destination = soap_destination ). > > DATA(request) = VALUE zsc_req_msg_type( req_msg_type-product = '' ). diff --git a/docs/30-development/supported-protocols-and-authentication-methods-437e9d4.md b/docs/30-development/supported-protocols-and-authentication-methods-437e9d4.md index 111a5220..12f65f35 100644 --- a/docs/30-development/supported-protocols-and-authentication-methods-437e9d4.md +++ b/docs/30-development/supported-protocols-and-authentication-methods-437e9d4.md @@ -234,6 +234,8 @@ SAML Assertion Authentication OpenID Connect Bearer Token +OAuth 2.0 Authorization Code with Proof Key for Code Exchange \(PKCE\) +
+ + + + + + + + + + + + + + + + + + + +
+ + Additional Properties \(variant 1\) + + + + Additional Properties \(variant 2\) + + + + Description + +
+ + `x-correlation-id` + + + + `x-correlation-id` + + + + The property identifies the consumption bundle and its APIs that are exposed by the SAP S/4HANA Cloud system. The destination also provides the required credentials to consume the bundle and use it for further development in SAP Build. + +
+ + `x-system-id` + + + + `x-system-name` + + + + Properties that uniquely identify the local tenant of the registered SAP S/4HANA Cloud system. + +
+ + `x-system-type` + + + + `x-system-base-url` + +
+ + All of the required properties of a given SAP S/4HANA Cloud system are accessible in the corresponding *System Details* section on the *System Landscape* page. See [Create a Destination](../30-development/create-a-destination-3fa7934.md) and [Configuring the Extension Application's Connectivity to SAP S/4HANA Cloud](configuring-the-extension-application-s-connectivity-to-sap-s-4hana-cloud-ef4b7ca.md). + + - Create a destination automatically. + + Alternatively, the destination can be created automatically. You can do this, by creating a service instance of the SAP S/4HANA Cloud Extensibility service after you register an SAP S/4HANA Cloud system. See [Extending SAP S/4HANA Cloud in the Cloud Foundry and Kyma Environment](extending-sap-s-4hana-cloud-in-the-cloud-foundry-and-kyma-environment-40b9e6c.md) and [Create a Service Instance to Consume the SAP S/4HANA Cloud APIs](create-a-service-instance-to-consume-the-sap-s-4hana-cloud-apis-a735641.md). + + +4. Create an SAP Build subscription. + + + + + + +## Next Steps + +Develop applications on SAP BTP, Cloud Foundry environment using SAP Build and the system landscape. + +When you enable the connectivity, the SAP S/4HANA Cloud systems and their APIs are accessible in SAP Build. Next you can use the APIs to develop new or extend the existing functionality with the help of SAP Build. + +**Related Information** + + +[SAP Build Process Automation: Using SAP Systems](https://help.sap.com/docs/build-process-automation/sap-build-process-automation/using-sap-systems) + diff --git a/docs/40-extensions/extensibility-concepts-3ce5e05.md b/docs/40-extensions/extensibility-concepts-3ce5e05.md index 0991142c..91074e7b 100644 --- a/docs/40-extensions/extensibility-concepts-3ce5e05.md +++ b/docs/40-extensions/extensibility-concepts-3ce5e05.md @@ -12,7 +12,7 @@ When implementing your extensibility scenario, there are a couple of concepts yo A system is a specific instance of an SAP or third-party solution that is manually added or auto discovered and is listed in the SAP BTP cockpit. -When you want to add functionality to your SAP or third-party solution, you start by developing an extension application and deploying it in SAP BTP. Then, to allow the application to access the SAP or third-party solution, you add the system of this solution to the *System Landscape* page of the SAP BTP cockpit and you register it. The following system types are supported: +When you want to add functionality to your SAP or third-party solution, you start by developing an extension application and deploying it in SAP BTP. Then, to allow the application to access the SAP or third-party solution, you add the system of this solution to the *System Landscape* page of the SAP BTP cockpit. If the system is one of the following types, you also have to register it using a registration token: - SAP S/4HANA Cloud @@ -20,14 +20,6 @@ When you want to add functionality to your SAP or third-party solution, you star - SAP SuccessFactors -- SAP Cloud for Customer - -- SAP Commerce Cloud - -- SAP Field Service Management - -- Other System Type - @@ -183,19 +175,7 @@ A consumption bundle can group logically a set of events for communication with ### Types -The formation type defines the use case. Therefore, depending on the use case, you can specify one of the following formation types: - -**Side-by-Side Extensibility with Kyma** - -Formations of type *Side-by-Side Extensibility with Kyma* enable business scenarios that involve extending the functionality of several systems at a time with SAP BTP Kyma environment instance. See [Enabling Side-by-Side Extensibility with Kyma](enabling-side-by-side-extensibility-with-kyma-9154051.md). - -**Eventing Between SAP Cloud Systems** - -Systems that are included in *Eventing Between SAP Cloud Systems* formations on the *System Landscape* page of the SAP BTP cockpit can publish and consume events. The process of publishing and consumption of events is in fact an exchange of event information across the customer system landscape and is driven by the system formations on the one hand side and the SAP Event Broker on the other. - -**Developing with SAP Business Application Studio** - -Formations of type *Developing with SAP Business Application Studio* enable connectivity between given SAP systems of type *SAP S/4HANA Cloud* from the *System Landscape* page of SAP BTP cockpit and the SAP Business Application Studio, you must create a formation of the corresponding type and include the SAP S/4HANA Cloud systems in it. See [Enabling System Landscape for SAP Business Application Studio](enabling-system-landscape-for-sap-business-application-studio-272ca23.md). +The formation type defines the use case. Therefore, depending on the use case, you have different formation types. To a get a list of the available formation types, see [Including Systems in a Formation](including-systems-in-a-formation-68b04fa.md). diff --git a/docs/40-extensions/including-systems-in-a-formation-68b04fa.md b/docs/40-extensions/including-systems-in-a-formation-68b04fa.md index e79812a5..db7e147c 100644 --- a/docs/40-extensions/including-systems-in-a-formation-68b04fa.md +++ b/docs/40-extensions/including-systems-in-a-formation-68b04fa.md @@ -65,131 +65,6 @@ When you include systems in a formation, these systems are synchronized in the b If you want to reconfigure the systems in a formation from scratch without excluding them, you have to choose *Reset and Resynchronize*. You will have this action available only for formations that have no status in SAP BTP cockpit and their formation type is Side-by-Side Extensibility with Kyma. -The table below outlines the system types that you can include in a formation, as well as, the supported SAP BTP environment: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -System Type - - - -Cloud Foundry Environment - - - -Kyma Environment - -
- -SAP S/4HANA Cloud - - - -Supported - - - -Supported - -
- -SAP Marketing Cloud - - - -Supported - - - -Supported - -
- -SAP SuccessFactors - - - -Supported - - - -Supported - -
- -SAP Commerce Cloud - - - -\- - - - -Supported - -
- -SAP Cloud for Customer - - - -\- - - - -Supported - -
- -SAP Field Service Management - - - -\- - - - -Supported - -
- > ### Note: > When registering a system or creating a formation, the data you provide in the given input fields is not encrypted with your customer managed key. The data you enter is only encrypted at rest. @@ -248,28 +123,42 @@ Supported - *Eventing Between SAP Cloud Systems* + *Developing with SAP Business Application Studio* - Formations of type *Eventing Between SAP Cloud Systems* enable end-to-end communication flow of events between the SAP systems that are included in the given formation. As the name of the formation suggests, the systems transmit information about events using SAP Event Broker. To be able to exchange such events information, the SAP systems must be also visible and configurable in the SAP Event Broker user interface. The formation makes the systems visible in SAP Event Broker, however, it requires a subscription to SAP Event Broker in the corresponding SAP BTP subaccount first. + Formations of type *Developing with SAP Business Application Studio* enable connectivity between given SAP systems of type *SAP S/4HANA Cloud* from the *System Landscape* page of SAP BTP cockpit and the SAP Business Application Studio, you must create a formation of the corresponding type and include the SAP S/4HANA Cloud systems in it. - See [Enabling Events Exchange Between SAP Cloud Systems](enabling-events-exchange-between-sap-cloud-systems-1592246.md). + See [Enabling System Landscape for SAP Business Application Studio](enabling-system-landscape-for-sap-business-application-studio-272ca23.md). - *Developing with SAP Business Application Studio* + *Integration with SAP Build* - Formations of type *Developing with SAP Business Application Studio* enable connectivity between given SAP systems of type *SAP S/4HANA Cloud* from the *System Landscape* page of SAP BTP cockpit and the SAP Business Application Studio, you must create a formation of the corresponding type and include the SAP S/4HANA Cloud systems in it. + Formations of type *Integration with SAP Build* enable connectivity between given SAP systems of type *SAP S/4HANA Cloud* from the *System Landscape* page of SAP BTP cockpit and SAP Build, you must create a formation of the corresponding type and include the SAP S/4HANA Cloud systems in it. - See [Enabling System Landscape for SAP Business Application Studio](enabling-system-landscape-for-sap-business-application-studio-272ca23.md). + See [Enabling System Landscape for SAP Build](enabling-system-landscape-for-sap-build-6424311.md). + + + + + + + *Eventing Between SAP Cloud Systems* + + + + + Formations of type *Eventing Between SAP Cloud Systems* enable end-to-end communication flow of events between the SAP systems that are included in the given formation. As the name of the formation suggests, the systems transmit information about events using SAP Event Broker. To be able to exchange such events information, the SAP systems must be also visible and configurable in the SAP Event Broker user interface. The formation makes the systems visible in SAP Event Broker, however, it requires a subscription to SAP Event Broker in the corresponding SAP BTP subaccount first. + + See [Enabling Events Exchange Between SAP Cloud Systems](enabling-events-exchange-between-sap-cloud-systems-1592246.md). @@ -299,6 +188,20 @@ Supported See [Enabling SAP Start](enabling-sap-start-f7d3f5e.md). + + + + + + *Data Ingestion for Industry Cloud Solutions* + + + + + Formations of type *Data Ingestion for Industry Cloud Solutions* set systems that support data ingestion and are part of the industry cloud solutions published by SAP and SAP BTP. + + See [Enabling Data Ingestion for Industry Cloud Solutions](enabling-data-ingestion-for-industry-cloud-solutions-0b23a32.md). + diff --git a/docs/50-administration-and-ops/add-members-to-your-subaccount-feature-set-b-1e1b7b6.md b/docs/50-administration-and-ops/add-members-to-your-subaccount-feature-set-b-1e1b7b6.md index ea06caf9..32be9ebb 100644 --- a/docs/50-administration-and-ops/add-members-to-your-subaccount-feature-set-b-1e1b7b6.md +++ b/docs/50-administration-and-ops/add-members-to-your-subaccount-feature-set-b-1e1b7b6.md @@ -14,7 +14,7 @@ Add members to your subaccount to enable users to access resources available the - You’re managing a multi-environment subaccount. - For more information about adding members to Neo subaccounts, see[Add Members to Your Neo Subaccount](https://help.sap.com/docs/btp/sap-btp-neo-environment/add-members-to-your-neo-subaccount?version=Cloud). + For more information about adding members to Neo subaccounts, see [Add Members to Your Neo Subaccount](https://help.sap.com/docs/btp/sap-btp-neo-environment/add-members-to-your-neo-subaccount?version=Cloud). - You must be a subaccount administrator to add other subaccount members. @@ -49,9 +49,9 @@ There are two types of users in subaccounts: For more information about the available role collections, see [Role Collections and Roles in Global Accounts, Directories, and Subaccounts \[Feature Set B\]](../10-concepts/role-collections-and-roles-in-global-accounts-directories-and-subaccounts-feature-set-b-0039cf0.md). - To work in the Cloud Foundry environment add users and authorizations at the org and space level. + To work in the Cloud Foundry, ABAP, Kyma, and Neo environments, your team members need additional authorizations. - For more information, see [About User Management in the Cloud Foundry Environment](about-user-management-in-the-cloud-foundry-environment-8e6ce96.md). + For more information, see [Giving Access Rights to Platform Users](https://help.sap.com/docs/btp/best-practices/giving-access-rights-to-platform-users) in the *SAP BTP Best Practices Guide*. - Business users diff --git a/docs/50-administration-and-ops/audit-log-retention-for-the-cloud-foundry-environment-adaefa6.md b/docs/50-administration-and-ops/audit-log-retention-for-the-cloud-foundry-environment-adaefa6.md index 21c1bb56..164f2d9c 100644 --- a/docs/50-administration-and-ops/audit-log-retention-for-the-cloud-foundry-environment-adaefa6.md +++ b/docs/50-administration-and-ops/audit-log-retention-for-the-cloud-foundry-environment-adaefa6.md @@ -4,7 +4,7 @@ The audit log data is stored on a subaccount level. The access to the stored audit log data is strictly restricted - only authorized stakeholders can preview, retrieve, and download their audit log data. -For more information, see [Audit Log Retrieval API Usage for the Cloud Foundry Environment](audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md). +For more information, see [Audit Log Retrieval API Usage for Subaccounts in the Cloud Foundry Environment](audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md). diff --git a/docs/50-administration-and-ops/audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md b/docs/50-administration-and-ops/audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md similarity index 65% rename from docs/50-administration-and-ops/audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md rename to docs/50-administration-and-ops/audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md index 68e06eac..cf416438 100644 --- a/docs/50-administration-and-ops/audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md +++ b/docs/50-administration-and-ops/audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md @@ -1,12 +1,21 @@ -# Audit Log Retrieval API Usage for the Cloud Foundry Environment +# Audit Log Retrieval API Usage for Subaccounts in the Cloud Foundry Environment -The audit log retrieval API allows you to retrieve the audit logs for your SAP BTP Cloud Foundry environment account. It provides the audit log results as a collection of JSON entities. +The audit log retrieval API allows you to retrieve the audit logs for your SAP BTP Cloud Foundry environment subaccount. -The audit log retrieval API is protected by OAuth, and to consume it a valid OAuth client needs to be generated and used by the client system. +> ### Note: +> After the audit logs are generated and sent to the Audit Log service, the logs are not immediately accessible for retrieval. + +Retrieving of audit logs via the Audit Log Retrieval API is limited to the size of the audit logs generated for the subaccount. The audit log results are provided as a collection of JSON entities. The possible request rate is now limited to: + +- 4 requests per second per auth-token/tenant on CF-EU11, CF-EU30, CF-US20, CF-US21, CF-JP10, CF-JP20, CF-BR10. There is also a burst queue that can temporarily allow up to 20 requests per second. -Retrieving of audit logs via the Audit Log Retrieval API is limited to the size of the audit logs generated for the account. +- 8 requests per second per auth-token/tenant on CF-EU10, CF-EU20, CF-US10, CF-US30. There is also a burst queue that can temporarily allow up to 40 requests per second. + +The API returns a HTTP 429 response code when the limits are exceeded. + +The audit log retrieval API is protected by OAuth. To consume the audit log retrieval API, you need your system to generate and use a valid OAuth. @@ -14,44 +23,52 @@ Retrieving of audit logs via the Audit Log Retrieval API is limited to the size ## Prerequisites -The user executing the procedure is expected to have the `Space Developer` role for the corresponding Space. +To execute the procedure, you need to have the `Space Developer` role for the corresponding Space. > ### Note: -> For security reasons, we strogly recommend you to recreate the `auditlog-management` Service-Instance bindings and service keys at least every 90 days. +> For security reasons, we recommend you to re-create the `auditlog-management` Service-Instance bindings and service keys at least every 90 days.
-## Create instance of the `auditlog-management` service +## Create Instance of the `auditlog-management` Service -1. Create a Cloud Foundry Org and Space, in case you do not have any. See [Create Spaces](create-spaces-2f6ed22.md). +1. Create a Cloud Foundry Org and Space, in case you don't have any. See [Create Spaces](create-spaces-2f6ed22.md). -2. Login to the Cloud Foundry landscape using the corresponding Cloud Foundry API \(Infrastructure/Landscape Overview\). +2. Log in the Cloud Foundry landscape using the corresponding Cloud Foundry API \(Infrastructure/Landscape Overview\). ``` cf login -a -o -s -u ``` -3. Create a service instance of the service `auditlog-management` +3. Create a service instance of the service `auditlog-management`. > ### Note: - > For security reasons, we strongly recommend you to adopt the provided mutual TLS authentication \(mTLS\). The mTLS authentication relies on X.509 certificates for the verification of the parties in the network connection, by creating the `auditlog-managenment` service instances with the additional parameters, as explained in the following mTLS points. + > For security reasons, we strongly recommend you to adopt the provided mutual TLS authentication \(mTLS\). The mTLS authentication relies on X.509 certificates for the verification of the parties in the network connection. Create the `auditlog-managenment` service instances with the additional parameters, as explained in the following mTLS points. - \(Recommended\) For mTLS authentication using X.509 certificates, use: ``` cf create-service auditlog-management default -c '{ - "xs-security": {"xsappname": "auditlog", - "oauth2-configuration": { - "credential-types": ["x509"], - "grant-types": ["client_x509","client_credentials"] - } - } - } + "xs-security": { + "xsappname": "auditlog", + "oauth2-configuration": { + "credential-types": [ + "x509" + ], + "grant-types": [ + "client_credentials" + ] + } + } + }' ``` - - For non-mTLS authetnication, use + > ### Note: + > The `xsappname` attribute from the service parameters JSON needs to have unique instance for each service. The `xsappname` attribute can hold an arbitrary string as value, which is not required to be `auditlog`. The code block serves only as example. + + - For non-mTLS authentication, use `cf create-service auditlog-management default ` @@ -65,15 +82,15 @@ The user executing the procedure is expected to have the `Space Developer` role ``` cf create-service-key -c '{ - "xsuaa": { - "credential-type": "x509", - "x509": { - "key-length": 2048, - "validity": 1, - "validity-type": "DAYS" - } - } - } + "xsuaa": { + "credential-type": "x509", + "x509": { + "key-length": 2048, + "validity": 1, + "validity-type": "DAYS" + } + } + }' ``` > ### Note: @@ -93,11 +110,11 @@ The user executing the procedure is expected to have the `Space Developer` role - Extract the values for `uaa.clientid` and `uaa.certurl` of the key of the service instance for access token creation. - Extract the value for `url` and use it for later request to retrieve audit logs. - - Extract the value for `uaa.certificate`, remove all `\n` entries from the X.509 certificate and save it as a file in the `.pem` format. - - Extract the value for `uaa.key`, remove all `\n` entries from the RSA private key and save it as a file in the `.pem` format. + - Extract the value for `uaa.certificate`, remove all `\n` entries from the X.509 certificate, and save it as a file in the `.pem` format. + - Extract the value for `uaa.key`, remove all `\n` entries from the RSA private key, and save it as a file in the `.pem` format. > ### Note: - > To extract of the values and avoid errors while copying or removing characters, you can use the sed and jq tools: + > To extract of the values and avoid errors while copying or removing characters, you can use the `sed` and `jq` tools: > > ``` > cf service-key | sed '/Getting key/d' | jq --raw-output .uaa.certurl @@ -159,10 +176,10 @@ The user executing the procedure is expected to have the `Space Developer` role This token grants access to the audit logs of the subaccount on the landscape where the service instance is created. > ### Note: - > The token is valid for 12 hours. + > The token is valid for 1 hour. > ### Note: - > The content of the access token can be displayed using a standard JWT decoder + > This token grants access to the audit logs of the subaccount on the landscapeThe content of the access token can be displayed using a standard JWT decoder @@ -171,13 +188,18 @@ The user executing the procedure is expected to have the `Space Developer` role ## Audit Log Retrieval -The Audit Log Retrieval API supports server-side paging. If a given query produces a result with significant size, the result will be chunked. Then the response will contain an HTTP header with a handle, with which to retrieve the next chunks of the result. The handle can be passed via URL parameter in the subsequent retrieval request. +The Audit Log Retrieval API incorporates server-side paging to address the efficient handling of queries producing substantial result sets. + +> ### Note: +> The logs are not immediately accessible for retrieval + +In instances where the query produces a result with significant size, the API systematically partitions the output into manageable chunks. The response includes an HTTP header featuring a handle, designed to facilitate the retrieval of subsequent result segments. To obtain additional portions of the result, pass the handle as a URL parameter in the subsequent retrieval request. The size of each chunk is predetermined, with a page size fixed at 500. Supported request parameters: -- `time_from and time_to`– if no time filter is specified the default timeframe of 30 days back is returned. The time should be provided in the following format: 2018-05-11T10:42:00. Times are UTC. +- `time_from and time_to`– if no time filter is specified the default timeframe of 30 days back is returned. Use the following format: YYYY-MM-DDTHH:MM:SS, for example 2018-05-11T10:42:00. The time is in UTC. -- `handle` – in case the result set is too big, it will be chunked, and a handle will be returned for reading the next chunk. It is returned as a Response Header in the form: Paging: `handle=`. Then `handle=` can be provided as a request parameter in the subsequent retrieval request. +- `handle` – in case the result set is too large, it's chunked, and a handle is returned for reading the next chunk. The handle is returned as a Response Header in the form: Paging: `handle=`. Then you can provide `handle=` as a request parameter in the subsequent retrieval request. @@ -224,6 +246,8 @@ Response codes: `HTTP 403 FORBIDDEN` +`HTTP 429 Too Many Requests` + Predefined audit log message categories: `'audit.security-events'` diff --git a/docs/50-administration-and-ops/audit-logging-in-the-cloud-foundry-environment-f92c86a.md b/docs/50-administration-and-ops/audit-logging-in-the-cloud-foundry-environment-f92c86a.md index 62819a90..e3a73af8 100644 --- a/docs/50-administration-and-ops/audit-logging-in-the-cloud-foundry-environment-f92c86a.md +++ b/docs/50-administration-and-ops/audit-logging-in-the-cloud-foundry-environment-f92c86a.md @@ -52,7 +52,7 @@ If your subaccount audit logs contain other log types or information, create a s **Related Information** -[Audit Log Retrieval API Usage for the Cloud Foundry Environment](audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md "The audit log retrieval API allows you to retrieve the audit logs for your SAP BTP Cloud Foundry environment account. It provides the audit log results as a collection of JSON entities.") +[Audit Log Retrieval API Usage for Subaccounts in the Cloud Foundry Environment](audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md "The audit log retrieval API allows you to retrieve the audit logs for your SAP BTP Cloud Foundry environment subaccount.") [Audit Log Retention for the Cloud Foundry Environment](audit-log-retention-for-the-cloud-foundry-environment-adaefa6.md "The audit log data is stored on a subaccount level. The access to the stored audit log data is strictly restricted - only authorized stakeholders can preview, retrieve, and download their audit log data.") diff --git a/docs/50-administration-and-ops/available-plans-in-the-kyma-environment-befe01d.md b/docs/50-administration-and-ops/available-plans-in-the-kyma-environment-befe01d.md index 05fdc4e8..2344728a 100644 --- a/docs/50-administration-and-ops/available-plans-in-the-kyma-environment-befe01d.md +++ b/docs/50-administration-and-ops/available-plans-in-the-kyma-environment-befe01d.md @@ -620,7 +620,7 @@ Updating ## Azure Lite -The technical name of the plan is `azure_lite`. The Asure Lite plan is offered to Partners, who can use it for testing, development and demo purposes. +The technical name of the plan is `azure_lite`. The Azure Lite plan is offered to Partners, who can use it for testing, development, and demo purposes. > ### Remember: > The parameters marked with an asterisk "\*" are mandatory. diff --git a/docs/50-administration-and-ops/create-orgs-a9b1f54.md b/docs/50-administration-and-ops/create-orgs-a9b1f54.md index f4163e3f..90e7acb3 100644 --- a/docs/50-administration-and-ops/create-orgs-a9b1f54.md +++ b/docs/50-administration-and-ops/create-orgs-a9b1f54.md @@ -2,20 +2,26 @@ # Create Orgs -Once a subaccount is created in the Cloud Foundry environment, you must create an org in order to use it. +To enable Cloud Foundry in your subaccount, you must create an org in order to use it. ## Procedure -1. Navigate to your Cloud Foundry subaccount. +1. Navigate to your subaccount *Overview* page in the SAP BTP cockpit. -2. In the subaccount *Overview* page, choose *Enable Cloud Foundry*. +2. Choose *Enable Cloud Foundry*. -3. Enter a name for your org. + After you choose *Enable Cloud Foundry*, follow the steps provided by the wizard to complete the creation of your org. + +3. Choose a plan from the drop-down list and enter a name for your org. > ### Note: - > Once you've created the org, you can’t change its name afterwards in the SAP BTP cockpit. However, you can rename the org using the Cloud Foundry CLI \(cf CLI\), and the new org name will be reflected in the cockpit. + > Once you've created the org, you can’t change its name afterwards in the SAP BTP cockpit. + + As an optional step, you can customize the instance name of your environment. Otherwise, the wizard uses the automatically generated instance name. + + If you decide to enter an environment instance name of your choice, make sure that it's CLI-friendly. A CLI-friendly name is a string of up to 32 characters: alphanumeric \(A-Z, a-z, 0-9\), periods, underscores, and hyphens. Having a CLI-friendly name allows you to use it in btp CLI commands. 4. If the region you’re working in has multiple landscapes, the *Landscape* option is displayed. Choose the landscape in which to create the org. diff --git a/docs/50-administration-and-ops/create-spaces-2f6ed22.md b/docs/50-administration-and-ops/create-spaces-2f6ed22.md index 57cb6ff3..f64caac6 100644 --- a/docs/50-administration-and-ops/create-spaces-2f6ed22.md +++ b/docs/50-administration-and-ops/create-spaces-2f6ed22.md @@ -40,7 +40,7 @@ You can change the name of a space by going to the *Cloud Foundry* \> *Spaces* p **Related Information** -[Create Orgs](create-orgs-a9b1f54.md "Once a subaccount is created in the Cloud Foundry environment, you must create an org in order to use it.") +[Create Orgs](create-orgs-a9b1f54.md "To enable Cloud Foundry in your subaccount, you must create an org in order to use it.") [Create Spaces Using the Cloud Foundry Command Line Interface](create-spaces-using-the-cloud-foundry-command-line-interface-a2e5e29.md "Use the cf create-space command to create spaces in your Cloud Foundry organization using the Cloud Foundry Command Line Interface (cf CLI).") diff --git a/docs/50-administration-and-ops/establish-trust-and-federation-between-sap-authorization-and-trust-management-service-a-161f8f0.md b/docs/50-administration-and-ops/establish-trust-and-federation-between-sap-authorization-and-trust-management-service-a-161f8f0.md index b1feefc5..3e9aa328 100644 --- a/docs/50-administration-and-ops/establish-trust-and-federation-between-sap-authorization-and-trust-management-service-a-161f8f0.md +++ b/docs/50-administration-and-ops/establish-trust-and-federation-between-sap-authorization-and-trust-management-service-a-161f8f0.md @@ -64,7 +64,7 @@ Consider the following restrictions and tips before you start. 4. Choose the domain configured with the Identity Authentication tenant and continue with *Next*. -5. You can change the name and the description of the tenant, display the resulting origin key, and enter a link text for user logon \(see [Using Multiple Identity Providers from the Same Subaccount](using-multiple-identity-providers-from-the-same-subaccount-b8c0aac.md)\). Continue with *Next*. +5. You can change the name and the description of the tenant, display and change the origin key, and provide a link text for user logon \(see [Using Multiple Identity Providers from the Same Subaccount](using-multiple-identity-providers-from-the-same-subaccount-b8c0aac.md)\). Continue with *Next*. 6. Review your configuration and confirm using *Finish*. diff --git a/docs/50-administration-and-ops/find-users-and-their-role-collection-assignments-870533e.md b/docs/50-administration-and-ops/find-users-and-their-role-collection-assignments-870533e.md index dd776e94..17269c26 100644 --- a/docs/50-administration-and-ops/find-users-and-their-role-collection-assignments-870533e.md +++ b/docs/50-administration-and-ops/find-users-and-their-role-collection-assignments-870533e.md @@ -4,7 +4,7 @@ # Find Users and Their Role Collection Assignments -You want to find the authorizations granted to specific users in your subaccount. You can search or sort the list of users, and view their role collection assignments. +You want to find the authorizations granted to specific users in your global account and subaccount. You can search or sort the list of users, and view their role collection assignments. diff --git a/docs/50-administration-and-ops/images/Costs_and_Usage_-_Billing_View_8ab0cc8.png b/docs/50-administration-and-ops/images/Costs_and_Usage_-_Billing_View_8ab0cc8.png index df70e21db3cfcea752d84edf6ea0240f0447d916..37d94752630e8690657060f6e8caf1fadd915551 100644 GIT binary patch literal 39695 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 literal 48871 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 diff --git a/docs/50-administration-and-ops/images/Costs_and_Usage_UI_-_Upper_Area_b057c4a.png b/docs/50-administration-and-ops/images/Costs_and_Usage_UI_-_Upper_Area_b057c4a.png index 1ffb1aec0a176b206a9c6ac0d8c8be20657f9151..6b9008434d9c48c335d89efd046eb6fabe159572 100644 GIT binary patch delta 17454 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

4SFlIW*;_H}$=E27By6zjUqph4n&afqvo0 zbaTi+s!{fIg8KTpVh3q;7L<%|^RM9uCQwQxD&Z|W(4;sPoGe39U`T7KAa-(6d zihl0jrJSZ~Fdqk%Co}%jC>brXYj4ZX(?QX@4`MtYc)=in2aXExU!@WnG*l-AMb0^G zve6>%=a?{v_GQuP54=hKOb)#DO}~PTer)^3*Fss(O*9v|VW}ubpw(j-&&turMLe#r zQC71C9CFAf)`IFEmNZZ6*yGt5MDhFv~hMC=D) z$f!+M5Ov>i5D}#|8`Z;{R7JnYV3{l$^{Bo?IHMr2T79hHV=igyEdP|Rua|mQpe!s` z8KINJfh|pK3vSw%+k5BYTBAn~)gJCaDuE#+o{fnER__ z5awM88+Dc|GILgTy#vMqm;QsVCyfy>?XZ9M-_3Mdsnp|O12AGgye9JS@R04|XKZVO z|C?{Rkqgx!Z7vQ&Z~dD}c_G95Z~TAuKOV#7gkq&G!X)hu`rltxdtaGj%S+Ec{Mb3=dfFi%&`Yu4!Z;7mXEk{$d^#8cf3Z`rd{7kYY_5qF4>sW z_uL zE!0r-vc&NUPc`zLFcMT?nhlPxs1$5fXNzU3ezM^yU+po~=AUr9DovF=VEwy1OGt^I zO1|G#w2~Onh*;tEKK;o*^%vfYOE?iueQ$$!Yas@4objcvWo1nyS4w!xV1>5 z^Q^`ov1Av(Y^(5+n6v2Y=g)ckHA=RIKy&%{B}nhi|J$-IAD-|(>AP$5HA0-S3#hJl K4|C^X@c#hxR1Y`+ diff --git a/docs/50-administration-and-ops/managing-global-accounts-using-the-cockpit-667f34b.md b/docs/50-administration-and-ops/managing-global-accounts-using-the-cockpit-667f34b.md index 7a45236b..5815f176 100644 --- a/docs/50-administration-and-ops/managing-global-accounts-using-the-cockpit-667f34b.md +++ b/docs/50-administration-and-ops/managing-global-accounts-using-the-cockpit-667f34b.md @@ -14,9 +14,12 @@ Your SAP BTP global account is the entry point for managing the resources, lands As a global account administrator, you can access the global account settings by clicking :gear: in the SAP BTP cockpit. -In the *General* tab of the global account settings, you can identify your global account subdomain. +In the *General* tab of the global account settings, you can obtain general information about your global account, including your global account ID, global account name, account type, payment models, contract status, global account subdomain, geographic access restrictions, and when your account was created. -In the *Subaccount Defaults* tab in the global account settings, you can set the supported providers, the default provider, and the default region. These defaults are used when creating a new subaccount in this global account. +> ### Note: +> In this tab, you can change any of the values. The only value that is editable by you is the global account name, and you can do this in the *Account Explorer* page \(see [Change the Display Name of Your Global Account](change-the-display-name-of-your-global-account-36a6674.md)\). + +In the *Subaccount Defaults* tab in the global account settings, you can set the supported providers, the default provider, and the default region. These default settings are used when creating a new subaccount in this global account. **Related Information** diff --git a/docs/50-administration-and-ops/managing-resource-providers-e2c250d.md b/docs/50-administration-and-ops/managing-resource-providers-e2c250d.md index dc77cc04..6e682b03 100644 --- a/docs/50-administration-and-ops/managing-resource-providers-e2c250d.md +++ b/docs/50-administration-and-ops/managing-resource-providers-e2c250d.md @@ -112,10 +112,10 @@ To consume the resources provisioned by your provider account, you need to first > > ``` > { - > “access_key_id”: “AWSACCESSKEY”, - > “secret_access_key”: “SECRETKEY”, - > “vpc_id”: “vpc-test”, - > “region”: “eu-central-1” + > "access_key_id": "AWSACCESSKEY", + > "secret_access_key": "SECRETKEY", + > "vpc_id": "vpc-test", + > "region": "eu-central-1" > } > > ``` diff --git a/docs/50-administration-and-ops/monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md b/docs/50-administration-and-ops/monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md index c0fb64ae..f23dedab 100644 --- a/docs/50-administration-and-ops/monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md +++ b/docs/50-administration-and-ops/monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md @@ -42,6 +42,10 @@ To monitor and track costs and usage in your global account, open the global acc ## Understanding the Cost and Usage Views + + +### Global Account and Contract Information + The upper area of the *Costs and Usage* page contains two side-by-side cards. @@ -117,7 +121,66 @@ For example, if your subscription contract is entitled to consume a given servic > ### Note: > To extract all cost and usage data to a spreadsheet document for the last 12, 24, or 36 months, click the *Export* button. The default is 12 months. To choose a different period, click the button's menu. See [Exporting Usage and Cost Data Information](monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md#loiode6f0db8919f4e6f97e54bc4ddaf2ab8__section_vt2_dg4_2jb). -Below these two cards, are the *Billing* and *Usage* views, represented by tabs: + + +### Filters and Search + +Below the two cards, is the filter and search area: + + + + + + + + + + + + + + + +
+ +To Do This... + + + +Do This... + +
+ +Filter the data you want to view + + + +Above the *Billing* and *Usage* tabs, apply the filters to choose which services, subaccounts, directories, or billing month you want to view. + +You can also use the *Search* option. When you start typing, the search offers results that apply to service names, plan names, subaccount names, directory names, labels assigned to subaccounts and directories, product IDs \(SKU\), and metrics. The search offers suggestions only for items that are currently listed. + +> ### Tip: +> If you've set up labels in your subaccounts and directories that reflect the distribution of these entities to your company structure or projects, you can easily track and manage cross charges by entering the labels of your subaccount and directory labels in the search. + + + +
+ +Share or save the filtered view + + + +You can use the \(Bookmarks\) option to copy the URL of the displayed view and the currently set filters. + +You can then save this URL as a bookmark in your browser, or you can share it with a colleague so they can quickly open the same view and filter settings. + +
+ + + +### Billing and Usage Views + +Below the filter and search area, are the *Billing* and *Usage* views, represented by tabs: @@ -162,7 +225,8 @@ For more information about this view, see [Using the Usage View](monitoring-usag **Simplified graphic of the Billing view of the Costs and Usage page** -![](images/Costs_and_Usage_-_Billing_View_8ab0cc8.png "Simplified graphic of the Billing view of the Costs and Usage page") +![](images/Costs_and_Usage_-_Billing_View_8ab0cc8.png "Simplified graphic of the Billing view of the Costs and Usage + page") The *Costs and Usage* page uses the same terminology that is used in your monthly balance statement, which facilitates better contract-to-billing traceability and verification for cost controllers. Get your latest balance statement from [SAP for Me](https://me.sap.com/). @@ -208,39 +272,6 @@ Click the \(More Info\) buttons in the col - - - - - - - - @@ -346,7 +377,7 @@ Here are some useful tips for working in this perspective: > This graph is useful for seeing in which months a service plan has usage and costs, which service plans have increased or decreased usage/costs over time, or the months that have the highest and lowest usage/costs per service plan. -See other useful tips, such as table sorting and searching, in the [Understanding the Cost and Usage Views](monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md#loiode6f0db8919f4e6f97e54bc4ddaf2ab8__section_u3v_vd3_m1c) section. +See other useful tips, such as table sorting, filtering, and searching, in the [Understanding the Cost and Usage Views](monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md#loiode6f0db8919f4e6f97e54bc4ddaf2ab8__section_u3v_vd3_m1c) section. @@ -487,7 +518,7 @@ This graph is useful for seeing changes in usage trends over time, including the
-Filter the data you want to view - - - -Above the tables, apply the filters to choose which services, subaccounts, directories, or billing month you want to view. - -You can also use the *Search* option. When you start typing, the search offers results that apply to service names, plan names, subaccount names, directory names, labels assigned to subaccounts and directories, product IDs \(SKU\), and metrics. The search offers suggestions only for items that are currently listed. - -> ### Tip: -> If you've set up labels in your subaccounts and directories that reflect the distribution of these entities to your company structure or projects, you can easily track and manage cross charges by entering the labels of your subaccount and directory labels in the search. - - - -
- -Share or save the filtered view - - - -You can use the \(Bookmarks\) option to copy the URL of the displayed view and its currently set filters. - -You can then save this URL as a bookmark in your browser, or you can share it with a colleague so they can quickly open the same view and filter settings. - -
- Sort the data in ascending or descending order
> ### Tip: -> See other useful tips, such as table sorting and searching, in the [Understanding the Cost and Usage Views](monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md#loiode6f0db8919f4e6f97e54bc4ddaf2ab8__section_u3v_vd3_m1c) section. +> See other useful tips, such as table sorting, filtering, and searching, in the [Understanding the Cost and Usage Views](monitoring-usage-and-consumption-costs-in-your-global-account-de6f0db.md#loiode6f0db8919f4e6f97e54bc4ddaf2ab8__section_u3v_vd3_m1c) section. diff --git a/docs/50-administration-and-ops/provisioning-and-updating-parameters-in-the-kyma-environment-e2e13bf.md b/docs/50-administration-and-ops/provisioning-and-updating-parameters-in-the-kyma-environment-e2e13bf.md index e4422709..58192300 100644 --- a/docs/50-administration-and-ops/provisioning-and-updating-parameters-in-the-kyma-environment-e2e13bf.md +++ b/docs/50-administration-and-ops/provisioning-and-updating-parameters-in-the-kyma-environment-e2e13bf.md @@ -1621,21 +1621,21 @@ Australia \(Sydney\) - + Google Cloud technical name: `gcp` - + Provisioning -`europe-west3` +`europe-west3` @@ -1666,6 +1666,30 @@ India \(Mumbai\) US Central \(IA\) + + + + + +`asia-northeast2` + + + + +Japan \(Osaka\) + + + + + + +`me-central2` + + + + +KSA \(Dammam\) + diff --git a/docs/50-administration-and-ops/rotate-signing-keys-of-access-tokens-b279adf.md b/docs/50-administration-and-ops/rotate-signing-keys-of-access-tokens-b279adf.md index da35f868..4face047 100644 --- a/docs/50-administration-and-ops/rotate-signing-keys-of-access-tokens-b279adf.md +++ b/docs/50-administration-and-ops/rotate-signing-keys-of-access-tokens-b279adf.md @@ -50,6 +50,8 @@ For more information, see [Managing Signing Keys for Access Tokens](managing-sig 1. Log on to the SAP BTP CLI. + For more information, see [Log in](log-in-e241b30.md). + 2. Check that there's space for a new signing key. You can store two signing keys per subaccount. diff --git a/docs/50-administration-and-ops/sap-cloud-management-service-service-plans-a508b72.md b/docs/50-administration-and-ops/sap-cloud-management-service-service-plans-a508b72.md index 716aa097..c1d3766f 100644 --- a/docs/50-administration-and-ops/sap-cloud-management-service-service-plans-a508b72.md +++ b/docs/50-administration-and-ops/sap-cloud-management-service-service-plans-a508b72.md @@ -146,9 +146,7 @@ Cloud Management Service -`grantType`: The Client Credentials grant type is available when using the SAP Cloud Management service APIs to read the SAP BTP entities specified for this plan. For more information, see [Getting an Access Token for SAP Cloud Management Service APIs](getting-an-access-token-for-sap-cloud-management-service-apis-3670474.md). - - +`grantType`: The Client Credentials grant type is available when using the SAP Cloud Management service APIs to read the SAP BTP entities included with this plan. For more information, see [Getting an Access Token for SAP Cloud Management Service APIs](getting-an-access-token-for-sap-cloud-management-service-apis-3670474.md). @@ -176,7 +174,7 @@ Cloud Management Service -`grantType`: The Client Credentials grant type is available when using the SAP Cloud Management service APIs to read the SAP BTP entities specified for this plan. For more information, see [Getting an Access Token for SAP Cloud Management Service APIs](getting-an-access-token-for-sap-cloud-management-service-apis-3670474.md). +`grantType`: The Client Credentials grant type is available when using the SAP Cloud Management service APIs to read the SAP BTP entities included with this plan. For more information, see [Getting an Access Token for SAP Cloud Management Service APIs](getting-an-access-token-for-sap-cloud-management-service-apis-3670474.md). diff --git a/docs/60-security/change-logging-and-read-access-logging-93fac8d.md b/docs/60-security/change-logging-and-read-access-logging-93fac8d.md index 88d143c3..f2f0e213 100644 --- a/docs/60-security/change-logging-and-read-access-logging-93fac8d.md +++ b/docs/60-security/change-logging-and-read-access-logging-93fac8d.md @@ -10,7 +10,7 @@ Change logging records changes to personal data, while read-access logging recor Use the appropriate API to retrieve logs. -- For the Cloud Foundry, see [Audit Log Retrieval API Usage for the Cloud Foundry Environment](../50-administration-and-ops/audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md). +- For the Cloud Foundry, see [Audit Log Retrieval API Usage for Subaccounts in the Cloud Foundry Environment](../50-administration-and-ops/audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md). > ### Note: diff --git a/docs/60-security/configure-a-custom-identity-provider-for-kyma-67bcc6e.md b/docs/60-security/configure-a-custom-identity-provider-for-kyma-67bcc6e.md index 27e2b692..ddc0b335 100644 --- a/docs/60-security/configure-a-custom-identity-provider-for-kyma-67bcc6e.md +++ b/docs/60-security/configure-a-custom-identity-provider-for-kyma-67bcc6e.md @@ -22,7 +22,7 @@ When you create a new instance in the SAP BTP cockpit from the Service Marketpla If you've already created your Kyma environment, you can also apply the custom IdP configuration and set up administrators during your Kyma instance update operation by providing the details as an array of strings in the respective fields. > ### Tip: -> You can use SAP Cloud Identity Services - Identity Authentication as a custom IdP. Additionally, you can configure Identity Authentication to use a third-party IdP such as Azure Active Directory or Auth0, among others. For more information, see [Integrating the Service with Microsoft Azure AD](https://help.sap.com/docs/identity-authentication/identity-authentication/integrating-service-with-microsoft-azure-ad?version=Cloud) and [Configure Auth0 for SAP BTP, Kyma runtime](https://github.com/SAP-samples/kyma-runtime-extension-samples/tree/main/kyma-access-auth0-as-idp). +> We recommend using SAP Cloud Identity Services - Identity Authentication as a custom IdP. It allows you to use Identity Authentication as a proxy to integrate your corporate identity provider. Additionally, you can configure Identity Authentication to use a third-party IdP such as Azure Active Directory or Auth0, among others. For more information, see [Integrating the Service with Microsoft Entra ID](https://help.sap.com/docs/identity-authentication/identity-authentication/integrating-service-with-microsoft-azure-ad?version=Cloud) and [Configure Auth0 for SAP BTP, Kyma runtime](https://github.com/SAP-samples/kyma-runtime-extension-samples/tree/main/kyma-access-auth0-as-idp). @@ -54,7 +54,10 @@ If you've already created your Kyma environment, you can also apply the custom I > "signingAlgs": ["RS256"], > "usernamePrefix": "-" > }, - > "administrators": ["user-admin1", ... ] + > "administrators": [ + > "example_1@mail.com", + > "example_2@mail.com" + > ] > ``` > > If you want to revert to the default settings, use the following configuration: @@ -67,9 +70,14 @@ If you've already created your Kyma environment, you can also apply the custom I > "signingAlgs": ["RS256"], > "usernamePrefix": "-", > "usernameClaim": "sub" - > }, - > "administrators": ["{put usernames (emails) recognised by 'https://kyma.accounts.ondemand.com'}"] + > }, + > "administrators": [ + > "example_3@mail.com", + > "example_4@mail.com" + > ] > ``` + > + > The email adresses must be recognised by `https://kyma.accounts.ondemand.com`. 4. Select *Create*. diff --git a/docs/60-security/personal-data-record-817f6ac.md b/docs/60-security/personal-data-record-817f6ac.md index 6f35ab9b..17c0ed1d 100644 --- a/docs/60-security/personal-data-record-817f6ac.md +++ b/docs/60-security/personal-data-record-817f6ac.md @@ -26,7 +26,7 @@ For more information, see [Information Report](https://help.sap.com/viewer/6d6d6 For SAP BTP Cloud Foundry environment, the User Account and Authentication service creates shadow users to issue tokens for their corresponding users. -For more information about viewing shadow users, see the [User Management \(SCIM\) API](https://api.sap.com/package/authtrustmgmnt) on [SAP Business Accelerator Hub](https://api.sap.com/package/authtrustmgmnt?section=Artifacts). +For more information about viewing shadow users and their attributes, see the [User Management \(SCIM\) API](https://api.sap.com/package/authtrustmgmnt) on [SAP Business Accelerator Hub](https://api.sap.com/package/authtrustmgmnt?section=Artifacts). For all other services, which persist data, such as databases or document services, retrieve the data you stored with the same APIs, protocols, or languages you used to store the data. diff --git a/docs/70-getting-support/getting-support-5dd7398.md b/docs/70-getting-support/getting-support-5dd7398.md index a105594b..b5a2ec9f 100644 --- a/docs/70-getting-support/getting-support-5dd7398.md +++ b/docs/70-getting-support/getting-support-5dd7398.md @@ -50,6 +50,12 @@ Make sure that you've the latest versions of the tools you're using \(recommende When using SAP BTP cockpit as an S-user, try Built-In Support to get customer help within the cockpit. See [Built-In Support](https://help.sap.com/docs/built-in-support). + + +### Learn the Best Practices and Offerings + +Familiarize with the guidelines how to engage with support. See [Support from SAP Best Practices & Offerings](https://d.dam.sap.com/a/ewzMPHk/Support%20Best%20Practices%20Offerings.pdf?rc=10). +
diff --git a/docs/70-getting-support/support-components-08d1103.md b/docs/70-getting-support/support-components-08d1103.md index 85afd143..e6474626 100644 --- a/docs/70-getting-support/support-components-08d1103.md +++ b/docs/70-getting-support/support-components-08d1103.md @@ -557,6 +557,7 @@ Develop, debug, test, and deploy SAP business applications. - US Central \(IA\) +- India \(Mumbai\) @@ -4252,6 +4253,7 @@ Build API and UI based document management capabilities for your business apps. - US East \(VA\) - Japan \(Tokyo\) - Singapore +- Australia \(Sydney\) @@ -4324,6 +4326,60 @@ Build API and UI based document management capabilities for your business apps. + + + + + +[Document Management Service, Integration Option](https://help.sap.com/viewer/p/DOCUMENT_MANAGEMENT) + + + + +Build API and UI based document management capabilities for your business apps. + + + + +- BC-CP-CF-SDM + + + + + + +- Cloud Foundry + + + + + + +- Alibaba + + + + + + +- China \(Shanghai\)\*\* + + + + + + +- Yes + + + + + + +- Available + + + diff --git a/docs/index.md b/docs/index.md index 63b7077c..353e1eab 100644 --- a/docs/index.md +++ b/docs/index.md @@ -70,7 +70,6 @@ - [Getting Started in the ABAP Environment](20-getting-started/getting-started-in-the-abap-environment-2ffdd24.md) - [Getting Started with a Customer Account in the ABAP Environment](20-getting-started/getting-started-with-a-customer-account-in-the-abap-environment-e34a329.md) - [Using a Booster to Automate the Setup of the ABAP Environment \(Optional\)](20-getting-started/using-a-booster-to-automate-the-setup-of-the-abap-environment-optional-cd7e7e6.md) - - [Tutorial Overview](20-getting-started/tutorial-overview-5de8374.md) - [ABAP Environment: Initial Settings](20-getting-started/abap-environment-initial-settings-a999fac.md) - [Creating a Cloud Foundry Subaccount for the ABAP Environment](20-getting-started/creating-a-cloud-foundry-subaccount-for-the-abap-environment-0153671.md) - [Creating a Cloud Foundry Organization and Space](20-getting-started/creating-a-cloud-foundry-organization-and-space-dc18bac.md) @@ -99,12 +98,7 @@ - [Creating a Destination for Cross-Subaccount Communication](20-getting-started/creating-a-destination-for-cross-subaccount-communication-7d58eba.md) - [Creating a Communication System for SAP Business Application Studio](20-getting-started/creating-a-communication-system-for-sap-business-application-studio-e591016.md) - [Setup of a Custom Identity Service](20-getting-started/setup-of-a-custom-identity-service-550251a.md) - - [Establishing Trust Automatically](20-getting-started/establishing-trust-automatically-b9f4b0d.md) - - [Manual Trust Setup with the SAML Identity Provider](20-getting-started/manual-trust-setup-with-the-saml-identity-provider-36214a9.md) - - [Exporting SAML Identity Provider Metadata](20-getting-started/exporting-saml-identity-provider-metadata-5c1479e.md) - - [Exporting the SAML Service Provider Metadata from the Cloud Foundry Account](20-getting-started/exporting-the-saml-service-provider-metadata-from-the-cloud-foundry-account-326c830.md) - - [Establishing Trust to the SAML Identity Provider for the Cloud Foundry Account](20-getting-started/establishing-trust-to-the-saml-identity-provider-for-the-cloud-foundry-account-55e7d92.md) - - [Creating a Cloud Foundry Application as Trusted Service Provider](20-getting-started/creating-a-cloud-foundry-application-as-trusted-service-provider-bfc537a.md) + - [Establishing Trust of Type OpenID Connect](20-getting-started/establishing-trust-of-type-openid-connect-b9f4b0d.md) - [Creating Identity Provider Users and Groups](20-getting-started/creating-identity-provider-users-and-groups-a9bd926.md) - [Creating an Identity Provider Group for Developers](20-getting-started/creating-an-identity-provider-group-for-developers-2f72082.md) - [Creating Identity Provider Users for Developers](20-getting-started/creating-identity-provider-users-for-developers-8807ec0.md) @@ -112,6 +106,7 @@ - [Mapping a Role Collection to the Identity Provider Group for Developers](20-getting-started/mapping-a-role-collection-to-the-identity-provider-group-for-developers-e1a5052.md) - [Setup of UI Development in SAP Web IDE \(Optional\)](20-getting-started/setup-of-ui-development-in-sap-web-ide-optional-43d1a08.md) - [Neo Environment: Trust Setup](20-getting-started/neo-environment-trust-setup-55d3664.md) + - [Exporting SAML Identity Provider Metadata](20-getting-started/exporting-saml-identity-provider-metadata-5c1479e.md) - [Configuring the Neo Account as SAML Service Provider and Export SAML Metadata](20-getting-started/configuring-the-neo-account-as-saml-service-provider-and-export-saml-metadata-107f1ca.md) - [Establishing Trust to the SAML Identity Provider for the Neo Account](20-getting-started/establishing-trust-to-the-saml-identity-provider-for-the-neo-account-7b24170.md) - [Creating a Neo Application as Trusted Service Provider](20-getting-started/creating-a-neo-application-as-trusted-service-provider-8c567f5.md) @@ -120,6 +115,7 @@ - [Creating a Neo Group for Developers](20-getting-started/creating-a-neo-group-for-developers-cdb7bf7.md) - [Mapping the Identity Provider Group Developers to the Neo Group](20-getting-started/mapping-the-identity-provider-group-developers-to-the-neo-group-1fd7873.md) - [Getting Started as a Developer in the ABAP Environment](20-getting-started/getting-started-as-a-developer-in-the-abap-environment-4b896c9.md) + - [Tutorial Overview](20-getting-started/tutorial-overview-5de8374.md) - [Getting Started in the Kyma Environment](20-getting-started/getting-started-in-the-kyma-environment-d1abd18.md) - [Getting Started with an Enterprise Account in the Kyma Environment](20-getting-started/getting-started-with-an-enterprise-account-in-the-kyma-environment-1903e9c.md) - [Getting Started with a Trial Account in the Kyma Environment](20-getting-started/getting-started-with-a-trial-account-in-the-kyma-environment-ccb83c7.md) @@ -238,6 +234,7 @@ - [Deploy Content Using the Generic Application Content Deployer](30-development/deploy-content-using-the-generic-application-content-deployer-07c6796.md) - [Deploy Content Using HTML5 Application Deployer](30-development/deploy-content-using-html5-application-deployer-9b178ab.md) - [Asynchronous Upload Using the HTML5 Application Deployer](30-development/asynchronous-upload-using-the-html5-application-deployer-18c1edc.md) + - [Automatic Creation of Destination Configurations](30-development/automatic-creation-of-destination-configurations-be0acbf.md) - [Redeploy Content](30-development/redeploy-content-9ed190c.md) - [Undeploy Content](30-development/undeploy-content-fab96a6.md) - [Service Plans](30-development/service-plans-845389c.md) @@ -1103,9 +1100,11 @@ - [Including Systems in a Formation](40-extensions/including-systems-in-a-formation-68b04fa.md) - [Enabling Side-by-Side Extensibility with Kyma](40-extensions/enabling-side-by-side-extensibility-with-kyma-9154051.md) - [Enabling System Landscape for SAP Business Application Studio](40-extensions/enabling-system-landscape-for-sap-business-application-studio-272ca23.md) + - [Enabling System Landscape for SAP Build](40-extensions/enabling-system-landscape-for-sap-build-6424311.md) - [Enabling Events Exchange Between SAP Cloud Systems](40-extensions/enabling-events-exchange-between-sap-cloud-systems-1592246.md) - [Enabling SAP Ariba Buying](40-extensions/enabling-sap-ariba-buying-3c98c84.md) - [Enabling SAP Start](40-extensions/enabling-sap-start-f7d3f5e.md) + - [Enabling Data Ingestion for Industry Cloud Solutions](40-extensions/enabling-data-ingestion-for-industry-cloud-solutions-0b23a32.md) - [Extending SAP S/4HANA Cloud in the Cloud Foundry and Kyma Environment](40-extensions/extending-sap-s-4hana-cloud-in-the-cloud-foundry-and-kyma-environment-40b9e6c.md) - [Register an SAP S/4HANA Cloud System in a Global Account in SAP BTP](40-extensions/register-an-sap-s-4hana-cloud-system-in-a-global-account-in-sap-btp-28171b6.md) - [Trigger the Registration in the SAP S/4HANA Cloud Tenant](40-extensions/trigger-the-registration-in-the-sap-s-4hana-cloud-tenant-cadf8f6.md) @@ -1423,7 +1422,7 @@ - [Map Routes to Applications](50-administration-and-ops/map-routes-to-applications-b25cf8a.md) - [Using Custom Domains](50-administration-and-ops/using-custom-domains-2291aea.md) - [Audit Logging in the Cloud Foundry Environment](50-administration-and-ops/audit-logging-in-the-cloud-foundry-environment-f92c86a.md) - - [Audit Log Retrieval API Usage for the Cloud Foundry Environment](50-administration-and-ops/audit-log-retrieval-api-usage-for-the-cloud-foundry-environment-30ece35.md) + - [Audit Log Retrieval API Usage for Subaccounts in the Cloud Foundry Environment](50-administration-and-ops/audit-log-retrieval-api-usage-for-subaccounts-in-the-cloud-foundry-environment-30ece35.md) - [Audit Log Retrieval API for Global Accounts in the Cloud Foundry Environment](50-administration-and-ops/audit-log-retrieval-api-for-global-accounts-in-the-cloud-foundry-environment-7db3c9f.md) - [Audit Log Retention for the Cloud Foundry Environment](50-administration-and-ops/audit-log-retention-for-the-cloud-foundry-environment-adaefa6.md) - [Audit Log Write API for Customers](50-administration-and-ops/audit-log-write-api-for-customers-64e99bb.md) diff --git a/docs/sap-business-technology-platform-6a2c1ab.md b/docs/sap-business-technology-platform-6a2c1ab.md index e0801b21..574ae754 100644 --- a/docs/sap-business-technology-platform-6a2c1ab.md +++ b/docs/sap-business-technology-platform-6a2c1ab.md @@ -93,7 +93,7 @@ More resources that you might find interesting: ## Best Practices -Get onboarded to SAP BTP. Learn about basic concepts and see our best practices for your development projects, from setting up the correct organizational structure to creating an account and security model, to developing and operating applications: [Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It contains best practices and recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right:. +Get onboarded to SAP BTP. Learn about basic concepts and see our best practices for your development projects, from setting up the correct organizational structure to creating an account and security model, to developing and operating applications: [Best Practices for SAP BTP](https://help.sap.com/viewer/df50977d8bfa4c9a8a063ddb37113c43/Cloud/en-US/9f2bb927464e4d1ba3d13b2d79ca9bd1.html "This document helps you plan and set up your landscape and your lifecycle management for running applications on SAP Business Technology Platform (SAP BTP). It's part of the SAP BTP Guidance Framework and contains recommendations for planning development projects – from setting up the correct organizational structure to creating an account and security model, to developing and operating applications.") :arrow_upper_right:.