From 417829f243e8588382e8aeda8e7e938302eb9012 Mon Sep 17 00:00:00 2001 From: ditaccms-bot Date: Mon, 8 Apr 2024 16:37:39 +0000 Subject: [PATCH] Update from SAP DITA CMS (squashed): commit cb75e30cf86572e425dc536250f67ab581ec4e1a Author: REDACTED Date: Mon Apr 8 12:14:13 2024 +0000 Update from SAP DITA CMS 2024-04-08 12:14:13 Project: dita-all/djr1548327031813 Project map: 035865251b5d4135a8b461c55ee9a8e9.ditamap Output: loiocf0e5a9be9804817aa649f51a84b9f39 Language: en-US Builddable map: 668ddc52b4c54429a3abb37be25b57df.ditamap commit 7ea5811cf80cb3e30245b6044ae4eb7a631b29d7 Author: REDACTED Date: Mon Apr 8 11:57:32 2024 +0000 Update from SAP DITA CMS 2024-04-08 11:57:32 Project: dita-all/bsb1708407494841 Project map: 6d6c94be23b547a19d534f13dd6d51a7.ditamap Output: loiocc0ab4c7365e43bbbee9eae27deb32da Language: en-US Builddable map: 446771d4951c4a6988252269c21d94ba.ditamap commit b1cb9fddfae2d11484c8ad523bc61e3fb113dc83 Author: REDACTED Date: Mon Apr 8 08:11:28 2024 +0000 Update from SAP DITA CMS 2024-04-08 08:11:27 Project: dita-all/bsb1708407494841 Project map: 6d6c94be23b547a19d534f13dd6d51a7.ditamap Output: loiocc0ab4c7365e43bbbee9eae27deb32da Language: en-US Builddable map: 446771d4951c4a6988252269c21d94ba.ditamap ################################################## [Remaining squash message was removed before commit...] --- ...ing-with-integration-suite-home-a53dce3.md | 17 + ...n-request-and-interface-request-f3d983a.md | 32 +- .../create-a-questionnaire-4dc1b9c.md | 18 +- ...de-on-an-integration-technology-fb4bc24.md | 6 +- .../define-integration-policies-da857e1.md | 2 +- .../integration-assessment-310067e.md | 2 +- ...eview-and-adjust-isa-m-settings-957de13.md | 2 +- ...-of-an-idp-user-for-api-clients-57f104d.md | 8 +- ...-authentication-for-api-clients-d9ca0ac.md | 10 +- ...g-a-certificate-signing-request-b199dbe.md | 2 +- .../https-based-communication-1a22d00.md | 2 +- ...se-proxy-or-sap-cloud-connector-14567e1.md | 16 +- ...om-idp-for-basic-authentication-0668507.md | 4 +- .../design-guidelines-4d1c84f.md | 80 ++ .../images/Design_Guidelines_0ff1e13.png | Bin 0 -> 17880 bytes .../post-migration-tasks-809210a.md | 43 ++ .../runtime-profiles-8007daa.md | 12 - .../50-Development/access-policies-e0009f3.md | 49 +- .../access-policies-examples-f1dc1a7.md | 180 ++++- .../add-an-api-artifact-c2fe62c.md | 4 + ...n-to-the-message-processing-log-e8e9283.md | 2 +- ...mazonwebservices-sender-adapter-16772e3.md | 6 +- .../50-Development/amqp-adapter-5cc1a71.md | 2 +- ...q-5-and-apache-activemq-artemis-76c4dd3.md | 2 +- ...ceiver-for-apache-qpid-broker-j-622aa1d.md | 2 +- .../amqp-receiver-for-ibm-mq-990fa99.md | 2 +- ...for-microsoft-azure-service-bus-9c64d80.md | 2 +- ...mqp-receiver-for-sap-event-mesh-0b7cc2f.md | 2 +- ...amqp-receiver-for-solace-pubsub-19f18d8.md | 2 +- ...q-5-and-apache-activemq-artemis-dc4c564.md | 2 +- ...sender-for-apache-qpid-broker-j-b4983f7.md | 2 +- .../amqp-sender-for-ibm-mq-f6cc0e4.md | 2 +- ...for-microsoft-azure-service-bus-7384ac3.md | 4 +- .../amqp-sender-for-sap-event-mesh-7d8a83f.md | 2 +- .../amqp-sender-for-solace-pubsub-c9ab47d.md | 2 +- .../anomaly-detection-7a4fe7d.md | 6 + ...signing-codelists-to-leaf-nodes-770f7be.md | 19 +- .../attach-rate-plan-to-a-product-1980cab.md | 6 +- .../attach-rate-plan-to-a-product-cc5c942.md | 63 -- .../50-Development/billing-service-1e20fb5.md | 161 ---- .../50-Development/billing-service-a4e2fb8.md | 4 +- ...igure-the-amqp-receiver-adapter-d5660c1.md | 14 +- ...nfigure-the-amqp-sender-adapter-99ce674.md | 4 +- ...gure-the-ariba-receiver-adapter-49dffa3.md | 10 +- ...figure-the-ftp-receiver-adapter-c16d331.md | 6 +- ...figure-the-jms-receiver-adapter-79edc04.md | 2 +- ...onfigure-the-jms-sender-adapter-161791b.md | 14 +- ...nfigure-the-mail-sender-adapter-e23e9cc.md | 14 +- ...e-the-odata-v2-receiver-adapter-c5c2e38.md | 2 +- ...e-the-odata-v4-receiver-adapter-cd66a12.md | 26 +- ...-soap-soap-1-x-receiver-adapter-57f7b34.md | 10 +- ...he-soap-soap-1-x-sender-adapter-a178913.md | 6 +- ...configure-the-xi-sender-adapter-41a1a57.md | 14 +- ...ules-for-xml-to-json-conversion-66d099d.md | 4 +- .../copy-an-api-artifact-820c9e8.md | 9 + .../create-a-rate-plan-b57bc3b.md | 6 +- .../create-a-rate-plan-cfe6a30.md | 138 ---- ...e-an-application-classic-design-7b4e71b.md | 2 +- ...nd-deploy-an-odata-api-artifact-8bc912d.md | 2 - ...lication-using-subscription-key-e2645b5.md | 227 ------ .../create-xslt-mapping-5ce1f15.md | 4 +- ...e-administrator-role-new-design-df4f777.md | 2 +- ...ation-developer-role-new-design-99515fc.md | 2 +- .../creating-the-references-ddc5fdf.md | 117 +++ .../custom-type-systems-884bb25.md | 4 +- .../data-store-sender-adapter-4f5ef3f.md | 16 +- .../50-Development/data-types-97ad101.md | 4 +- .../define-a-local-script-step-03b32eb.md | 10 +- .../define-a-timer-start-event-ae14ad7.md | 18 +- .../define-aggregator-aa23816.md | 2 +- .../define-content-enricher-8827f9f.md | 2 +- .../define-content-modifier-8f04a70.md | 5 + ...ine-data-store-write-operations-46260ee.md | 2 +- .../define-gather-and-join-94ef1f2.md | 2 +- .../define-multicast-17de3ea.md | 2 +- .../define-request-reply-dc39fdd.md | 6 +- .../define-terminate-message-event-bc3fee4.md | 2 +- .../define-xml-to-edi-converter-707973f.md | 20 +- .../define-xml-to-json-converter-a60a282.md | 4 +- .../delete-a-rate-plan-af1a2a6.md | 6 +- .../delete-a-rate-plan-d4181ad.md | 53 -- .../deleting-the-references-bd809db.md | 56 ++ .../deploying-an-api-artifact-b70e7ec.md | 68 ++ .../design-guidelines-view-d62dfe0.md | 53 ++ .../50-Development/development-de1ae81.md | 4 +- ...umentation-export-and-settings-4c442af.md} | 29 +- ...rom-api-business-hub-enterprise-ae61972.md | 46 -- ...ails-from-sap-integration-suite-329040d.md | 50 -- .../enabling-anomaly-detection-98534a0.md | 42 + ...ling-apis-for-anomaly-detection-9e7e5d1.md | 41 + ...rameters-of-an-integration-flow-45b2a07.md | 32 +- .../50-Development/flow-variables-47f27da.md | 81 ++ ...cess_Policy_Example_Data_Store_8c82e68.png | Bin 0 -> 68676 bytes ...cy_Example_Integration_Package_6105b27.png | Bin 0 -> 58689 bytes .../Data_Store_Access_Policy_3b63c43.png | Bin 61824 -> 0 bytes ...egration_Package_Access_Policy_5762bf4.png | Bin 50828 -> 0 bytes docs/ISuite/50-Development/inspect-a4d5e49.md | 2 +- ...ions-for-xml-to-json-conversion-4bf5a05.md | 4 +- ...ge-domain-categories-new-design-bd9691d.md | 2 +- ...age-external-content-new-design-f5bd17d.md | 2 +- .../managing-access-policies-318d107.md | 10 +- .../mapping-guidelines-mags-42124f4.md | 14 +- .../message-processing-log-b32f8cd.md | 16 +- .../ISuite/50-Development/monetize-49b7841.md | 2 +- .../50-Development/monetize-apis-f6ab151.md | 6 +- .../50-Development/monetize-apis-fcdc89b.md | 17 - .../monitor-message-processing-314df3f.md | 1 - .../operation-mapping-05b9569.md | 6 +- .../partner-directory-data-1d92d5c.md | 10 +- ...ported-by-edge-integration-cell-c744df5.md | 4 + .../rate-plan-service-c27570f.md | 8 +- .../rate-plan-service-f4537ce.md | 13 - .../reading-the-references-4f3d168.md | 69 ++ docs/ISuite/50-Development/sdk-api-c5c7933.md | 2 +- .../sender-side-integration-flow-98380f4.md | 12 +- .../ISuite/50-Development/settings-9e64d05.md | 2 +- .../smoke-test-scenario-93fa2ce.md | 6 +- .../update-a-rate-plan-5ef271f.md | 6 +- .../update-a-rate-plan-b8c1e6b.md | 149 ---- ...-for-sap-s-integration-packages-5e41ce8.md | 3 + .../updating-the-references-e2a9ec4.md | 89 +++ ...ariant-timer-initiated-scenario-423730f.md | 6 +- ...the-api-business-hub-enterprise-4ddac67.md | 31 - ...ls-in-the-sap-integration-suite-2378110.md | 33 - ...ng-with-a-mapping-guideline-mag-0803ca6.md | 2 +- .../working-with-a-node-518b54f.md | 43 ++ .../working-with-references-6f96b64.md | 18 + .../identity-and-access-management-77868c2.md | 2 + ...s-management-for-api-management-016556f.md | 2 +- ...gement-for-migration-assessment-a2ee575.md | 7 + .../clone-api-management-content-7abd887.md | 287 ++++++- ...ndry-to-cloud-foundry-migration-2e5d127.md | 386 +++++++++- ...ating-and-managing-capabilities-2ffb343.md | 10 +- docs/ISuite/api-lifecycle-5e8ea7d.md | 2 +- docs/ISuite/api-services-007d50f.md | 2 +- ...management-service-subscription-df6df2b.md | 4 + ...87e.md => component-monitoring-49f487e.md} | 4 +- .../components-of-api-management-e02ae53.md | 2 +- ...ustom-domain-for-a-virtual-host-6b9e5a3.md | 31 +- ...fault-domain-for-a-virtual-host-1085228.md | 3 +- ...st-in-cloud-foundry-environment-a7b91e5.md | 4 + ...ing-mutual-tls-for-virtual-host-9faf7ce.md | 7 +- .../ISuite/configuring-user-access-2c6214a.md | 2 +- docs/ISuite/creating-a-custom-role-9d827cd.md | 2 +- ...-integration-cell-runtime-scope-144c64a.md | 4 +- ...nable-api-management-capability-f6eb433.md | 2 +- docs/ISuite/index.md | 40 +- docs/ISuite/initial-setup-64ac761.md | 2 +- docs/ISuite/job-management-4146fa5.md | 2 +- docs/ISuite/operations-cockpit-ec0fc95.md | 12 +- ...notes-for-sap-integration-suite-58595b5.md | 2 +- ...tch-releases-for-api-management-6ddd927.md | 146 ---- ...egration-and-related-components-023a472.md | 162 +++- ...ement-cloud-foundry-environment-585d639.md | 137 +--- .../terminology-and-glossary-fd1491d.md | 2 +- .../user-roles-in-api-management-7010b58.md | 4 + ...ser-roles-in-api-management-new-911ca5a.md | 729 ++++++++++++++++++ ...gration-suite-general-features-2ad1b96.md} | 72 +- ...ustom-domain-for-a-virtual-host-6b9e5a3.md | 31 +- ...fault-domain-for-a-virtual-host-1085228.md | 3 +- ...ing-mutual-tls-for-virtual-host-9faf7ce.md | 7 +- ...anagement-cloud-foundry-environ-585d639.md | 133 +--- .../clone-api-management-content-7abd887.md | 287 ++++++- ...ndry-to-cloud-foundry-migration-2e5d127.md | 386 +++++++++- .../API-Management/api-services-007d50f.md | 2 +- .../API-Management/flow-variables-47f27da.md | 81 ++ ...ap-api-management-cloud-foundry-d9d60be.md | 279 ++++++- 167 files changed, 4167 insertions(+), 1782 deletions(-) create mode 100644 docs/ISuite/50-Development/IntegrationSettings/design-guidelines-4d1c84f.md create mode 100644 docs/ISuite/50-Development/IntegrationSettings/images/Design_Guidelines_0ff1e13.png create mode 100644 docs/ISuite/50-Development/IntegrationSettings/post-migration-tasks-809210a.md create mode 100644 docs/ISuite/50-Development/anomaly-detection-7a4fe7d.md delete mode 100644 docs/ISuite/50-Development/attach-rate-plan-to-a-product-cc5c942.md delete mode 100644 docs/ISuite/50-Development/billing-service-1e20fb5.md delete mode 100644 docs/ISuite/50-Development/create-a-rate-plan-cfe6a30.md delete mode 100644 docs/ISuite/50-Development/create-or-update-or-read-an-application-using-subscription-key-e2645b5.md create mode 100644 docs/ISuite/50-Development/creating-the-references-ddc5fdf.md delete mode 100644 docs/ISuite/50-Development/delete-a-rate-plan-d4181ad.md create mode 100644 docs/ISuite/50-Development/deleting-the-references-bd809db.md create mode 100644 docs/ISuite/50-Development/deploying-an-api-artifact-b70e7ec.md create mode 100644 docs/ISuite/50-Development/design-guidelines-view-d62dfe0.md rename docs/ISuite/50-Development/{documentation-template-for-migs-and-mags-4c442af.md => documentation-export-and-settings-4c442af.md} (77%) delete mode 100644 docs/ISuite/50-Development/download-bill-details-from-api-business-hub-enterprise-ae61972.md delete mode 100644 docs/ISuite/50-Development/download-bill-details-from-sap-integration-suite-329040d.md create mode 100644 docs/ISuite/50-Development/enabling-anomaly-detection-98534a0.md create mode 100644 docs/ISuite/50-Development/enabling-apis-for-anomaly-detection-9e7e5d1.md create mode 100644 docs/ISuite/50-Development/images/Access_Policy_Example_Data_Store_8c82e68.png create mode 100644 docs/ISuite/50-Development/images/Access_Policy_Example_Integration_Package_6105b27.png delete mode 100644 docs/ISuite/50-Development/images/Data_Store_Access_Policy_3b63c43.png delete mode 100644 docs/ISuite/50-Development/images/Integration_Package_Access_Policy_5762bf4.png delete mode 100644 docs/ISuite/50-Development/monetize-apis-fcdc89b.md delete mode 100644 docs/ISuite/50-Development/rate-plan-service-f4537ce.md create mode 100644 docs/ISuite/50-Development/reading-the-references-4f3d168.md delete mode 100644 docs/ISuite/50-Development/update-a-rate-plan-b8c1e6b.md create mode 100644 docs/ISuite/50-Development/updating-the-references-e2a9ec4.md delete mode 100644 docs/ISuite/50-Development/view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md delete mode 100644 docs/ISuite/50-Development/view-bill-details-in-the-sap-integration-suite-2378110.md create mode 100644 docs/ISuite/50-Development/working-with-references-6f96b64.md rename docs/ISuite/{component-monitor-49f487e.md => component-monitoring-49f487e.md} (84%) delete mode 100644 docs/ISuite/patch-releases-for-api-management-6ddd927.md create mode 100644 docs/ISuite/user-roles-in-api-management-new-911ca5a.md rename docs/ISuite/{what-s-new-for-general-features-2ad1b96.md => what-s-new-for-integration-suite-general-features-2ad1b96.md} (87%) diff --git a/docs/ISuite/20-Working_with_SAP_Integration_Suite_Home/working-with-integration-suite-home-a53dce3.md b/docs/ISuite/20-Working_with_SAP_Integration_Suite_Home/working-with-integration-suite-home-a53dce3.md index d9192d40..48be1d9b 100644 --- a/docs/ISuite/20-Working_with_SAP_Integration_Suite_Home/working-with-integration-suite-home-a53dce3.md +++ b/docs/ISuite/20-Working_with_SAP_Integration_Suite_Home/working-with-integration-suite-home-a53dce3.md @@ -441,6 +441,23 @@ Contextual help. You can activate contextual help by choosing + + Support + + + + +Built-in support. You can activate built-in support by choosing Get Support + +> ### Note: +> Built-in support is currently available for certain screens only. + + + diff --git a/docs/ISuite/30-Assessing_Integration_Strategy/create-a-business-solution-request-and-interface-request-f3d983a.md b/docs/ISuite/30-Assessing_Integration_Strategy/create-a-business-solution-request-and-interface-request-f3d983a.md index e37d7616..b2550486 100644 --- a/docs/ISuite/30-Assessing_Integration_Strategy/create-a-business-solution-request-and-interface-request-f3d983a.md +++ b/docs/ISuite/30-Assessing_Integration_Strategy/create-a-business-solution-request-and-interface-request-f3d983a.md @@ -6,7 +6,7 @@ Integration Assessment involves orchestration across different personas. -Creating a business solution request is the task of the business domain expert \(see [Personas](../60-Security/personas-5df5af1.md)\). +Creating a business solution request is the task of the business domain expert, see [Personas](../60-Security/personas-5df5af1.md). Perform the following steps to create a business solution request. @@ -15,12 +15,12 @@ Perform the following steps to create a business solution request. 2. Choose the *Business Solution Request* tile. 3. Choose *Create* to create a new business solution request. -4. Provide a name for the request and click *Create*. The status of the request appears as *Draft*. +4. Provide a name for the request and select *Create*. The status of the request appears as *Draft*. > ### Note: > The status of Business Solution Request and Interface Request are maintained seperately. -5. In the *General* tab, provide the business background in the questionnaire that appears. There might be additional explanations available for some questions. In this case you will see a hint icon next to it. Click on this icon to get help on how to answer the question. +5. In the *General* tab, provide the business background in the questionnaire that appears. There might be additional explanations available for some questions. In this case a hint icon will provide further information.. 6. In the *Interface Requests* tab, choose *Create* to add the interface request details. @@ -92,14 +92,14 @@ Perform the following steps to create a business solution request. -8. Click on *Next Step*. In the *Attachments* tab, provide attachments or diagrams. This action is optional. +8. Select *Next Step*. In the *Attachments* tab, provide attachments or diagrams. This action is optional. -9. Click on *Done* to save your settings. +9. Select *Done* to save your settings. -10. Click on *Submit*. The status of Business Solution Request changes to *New* after filling all the mandatory fields. The interface request status changes to *Requirement Analysis*. +10. Select *Submit*. The status of Business Solution Request changes to *New* after filling all the mandatory fields. The interface request status changes to *Requirement Analysis*. > ### Note: - > If you want to make any changes to the General section of the business solution request, click on *Edit* and perform the operation. You can also create new interface requests, edit or delete the existing ones in the *New* status. + > If you want to make any changes to the General section of the business solution request, select *Edit* and perform the operation. You can also create new interface requests, edit or delete the existing ones in the *New* status. An interface request can have the following status values: @@ -155,22 +155,22 @@ Perform the following steps to create a business solution request. -11. Click on the interface request and fill the questionnaire. +11. Select the interface request and fill the questionnaire. - Click on *Done* once you provide all the details. + Select *Done* once you provide all the details. -12. Click on *Go to Technology Selection*. The status of interface request changs to *Technology Selection*. +12. Select *Go to Technology Selection*. The status of interface request changs to *Technology Selection*. > ### Note: - > To make changes to the questionnaire ,click on *Back to Questionnaire*. In the questionnaire section, click on *Edit* and the status is reset to *Requirement Analysis*. + > To make changes to the questionnaire, select *Back to Questionnaire*. In the questionnaire section, select *Edit* and the status is reset to *Requirement Analysis*. -13. Click on *Select Technology* and choose the instance based on the recommendation. Click on *Select*. -14. After technology selection is complete, click on *Submit*. The status of Interface Request changes to *Completed*. +13. Select *Select Technology* and choose the instance based on the recommendation. Choose *Select*. +14. After technology selection is complete, select *Submit*. The status of Interface Request changes to *Completed*. > ### Note: - > After completing the Interface Request, if you want to make any changes, select the Interface Request and click on *Reopen*. This will reset the status of Interface Request to *Technology Selection*. You can edit the technology selection by clicking on *Select Technology*. To edit the questionnaire, click on *Back to Questionnaire*. The status is reset to *Technology Selection*. By clicking on *Edit*, the status changes to *Requirement Analysis*. Reopening Interface Request and making changes may impact the Technology Recommendation. + > After completing the Interface Request, if you want to make any changes, select the Interface Request and select *Reopen*. This will reset the status of Interface Request to *Technology Selection*. You can edit the technology selection by choosing *Select Technology*. To edit the questionnaire, select *Back to Questionnaire*. The status is reset to *Technology Selection*. By selecting *Edit*, the status changes to *Requirement Analysis*. Reopening Interface Request and making changes may impact the Technology Recommendation. -15. Go to the Request section and select the Business Solution Request. The status is still *In Progress* whereas the statuses of Interface Requests should be *Completed*. Click on *Complete Request* to complete the Business Solution Request. +15. Go to the Request section and select the Business Solution Request. The status is still *In Progress* whereas the statuses of Interface Requests should be *Completed*. Select *Complete Request* to complete the Business Solution Request. > ### Note: > You can only set the Business Solution Request to complete once the involved Interface Requests are completed. There should be at least one Interface Request associated with the Business Solution Request. @@ -242,7 +242,7 @@ Perform the following steps to create a business solution request. > ### Note: - > After completing the Business Solution Request, if you want to make any changes, select the Business Solution Request and click on *Reopen*. This will reset the status of the Business Solution Request to *In Progress*. You can edit the technology selection by clicking on *Select Technology*. You can edit the questionnaire, or edit the Interface Requests by clicking on *Edit*. + > After completing the Business Solution Request, if you want to make any changes, select the Business Solution Request and select *Reopen*. This will reset the status of the Business Solution Request to *In Progress*. You can edit the technology selection by choosing *Select Technology*. You can edit the questionnaire, or edit the Interface Requests by selecting *Edit*. You have now successfully created a Business Solution Request and Interface Requests. diff --git a/docs/ISuite/30-Assessing_Integration_Strategy/create-a-questionnaire-4dc1b9c.md b/docs/ISuite/30-Assessing_Integration_Strategy/create-a-questionnaire-4dc1b9c.md index b3c8e030..420fc350 100644 --- a/docs/ISuite/30-Assessing_Integration_Strategy/create-a-questionnaire-4dc1b9c.md +++ b/docs/ISuite/30-Assessing_Integration_Strategy/create-a-questionnaire-4dc1b9c.md @@ -4,7 +4,7 @@ To create a new questionnaire under *Settings* tab, do the following: -1. Select \(*Create*\). +1. Select *Create*. 2. In the *Create new Questionnaire* dialog, specify a name, a description, and a request type \(either *Business Solution Request* or *Interface Request*\). @@ -13,9 +13,9 @@ To create a new questionnaire under *Settings* tab, do the following: > ### Note: > The SAP pre-defined questionnaires \(indicated as *Maintained by SAP*\) cannot be customized. -4. When you select the questionnaire created, the details provided will be displayed. To add a question section to the questionnaire, choose \(*Create*\). +4. When you select the questionnaire created, the details provided will be displayed. To add a question section to the questionnaire, choose *Create*. -5. From the *Create Section*dropdown, select one of the following options: +5. From the *Create Section* dropdown, select one of the following options: **** @@ -73,16 +73,16 @@ To create a new questionnaire under *Settings* tab, do the following: -6. To add questions to a *Questions* section, select the section and choose \(*Create*\). +6. To add questions to a *Questions* section, select the section and choose *Create*. You can either copy existing questions from a predefined questionnaire or create new questions. To copy pre-defined questions, select *Copy existing Questions*, select from the list of pre-defined questions and choose *Copy*. - To create a new question, provide the question and answer source and click *Create*. + To create a new question, provide the question and answer source and choose *Create*. 7. Provide the question under the *Question* section. -8. Choose an *Answer Source* from the list below and click *Create*. The created question will be displayed under the *Questions* section. Click *Done* once you have created the list of questions. To go back and create new questions, you can click *Edit*. +8. Choose an *Answer Source* from the following list and select *Create*. The created question will be displayed under the *Questions* section. Choose *Done* once you have created the list of questions. To go back and create new questions, you can choose *Edit*. **** @@ -218,7 +218,7 @@ To create a new questionnaire under *Settings* tab, do the following: - - Below is the list of *Type*selections for different *Answer Source* selected: + - Check out the following list of *Type*selections for different *Answer Source* selected: @@ -297,10 +297,10 @@ To create a new questionnaire under *Settings* tab, do the following:
- - Under *Answer Options*, you can add answer options to the question by clicking on *Create*. Select from the list of pre-populated table *Add Answer Option*. + - Under *Answer Options*, you can add answer options to the question by choosing *Create*. Select from the list of pre-populated table *Add Answer Option*. -10. Go to the questionnaire *Properties* page and select *Activate*, click *Confirm* to activate the questionnaire. The status of the questionnaire created is changed to *Active*. +10. Go to the questionnaire *Properties* page and select *Activate*, choose *Confirm* to activate the questionnaire. The status of the questionnaire created is changed to *Active*. > ### Note: > There can be only one questionnaire of one type with status *Active*. While activating a questionnaire, the old questionnaire of the same type is automatically set to status *Deprecated*. diff --git a/docs/ISuite/30-Assessing_Integration_Strategy/decide-on-an-integration-technology-fb4bc24.md b/docs/ISuite/30-Assessing_Integration_Strategy/decide-on-an-integration-technology-fb4bc24.md index 80019c67..6f64ee83 100644 --- a/docs/ISuite/30-Assessing_Integration_Strategy/decide-on-an-integration-technology-fb4bc24.md +++ b/docs/ISuite/30-Assessing_Integration_Strategy/decide-on-an-integration-technology-fb4bc24.md @@ -92,7 +92,7 @@ In [Determine an Integration Technology](determine-an-integration-technology-69b 3. The list of proposed technologies is adapted to your settings. - Which you click a technology, a screen opens showing to which extent the relevant key characteristics are covered by the technology. + By choosing a technology, a screen opens showing to which extent the relevant key characteristics are covered by the technology. > ### Tip: > To get an overview of all integration technologies and the supported integration styles, use case patterns, and key characteristics, go to *Analyze* \> *Integration Technologies Overview*. @@ -168,7 +168,7 @@ The combination is assigned. -By clicking an integration pattern with the status *Not Assigned* or *Applied*, you can display the related integration technologies and \(if defined\) interface requests. +By selecting an integration pattern with the status *Not Assigned* or *Applied*, you can display the related integration technologies and \(if defined\) interface requests. @@ -260,7 +260,7 @@ Supported applications -You can also create a new integration policy by clicking *\+* \(*Create*\). +You can also create a new integration policy by selectking *\+* \(*Create*\). diff --git a/docs/ISuite/30-Assessing_Integration_Strategy/define-integration-policies-da857e1.md b/docs/ISuite/30-Assessing_Integration_Strategy/define-integration-policies-da857e1.md index e4decf5a..03baad1b 100644 --- a/docs/ISuite/30-Assessing_Integration_Strategy/define-integration-policies-da857e1.md +++ b/docs/ISuite/30-Assessing_Integration_Strategy/define-integration-policies-da857e1.md @@ -106,5 +106,5 @@ Based on the recommendations provided by the policies for the usage in certain d 4. Select *Create*. > ### Note: -> You can see the order of technology preference when clicking on *Select Technology*. It shows you the selected technologies in order of their corresponding integration policies. For more information on technology selection, refer to [Decide on an Integration Technology](decide-on-an-integration-technology-fb4bc24.md) +> You can see the order of technology preference when selecting *Select Technology*. It shows you the selected technologies in order of their corresponding integration policies. For more information on technology selection, refer to [Decide on an Integration Technology](decide-on-an-integration-technology-fb4bc24.md). diff --git a/docs/ISuite/30-Assessing_Integration_Strategy/integration-assessment-310067e.md b/docs/ISuite/30-Assessing_Integration_Strategy/integration-assessment-310067e.md index 76cbf022..7b58623e 100644 --- a/docs/ISuite/30-Assessing_Integration_Strategy/integration-assessment-310067e.md +++ b/docs/ISuite/30-Assessing_Integration_Strategy/integration-assessment-310067e.md @@ -13,5 +13,5 @@ Integration Assessment provides you with a guided approach to assess your integr [Integration Assessment Process](integration-assessment-process-5769fcd.md "Define, document, and govern your integration technology strategy.") - + diff --git a/docs/ISuite/30-Assessing_Integration_Strategy/review-and-adjust-isa-m-settings-957de13.md b/docs/ISuite/30-Assessing_Integration_Strategy/review-and-adjust-isa-m-settings-957de13.md index 52169c99..d0d1f48d 100644 --- a/docs/ISuite/30-Assessing_Integration_Strategy/review-and-adjust-isa-m-settings-957de13.md +++ b/docs/ISuite/30-Assessing_Integration_Strategy/review-and-adjust-isa-m-settings-957de13.md @@ -10,7 +10,7 @@ For more information, see: - [SAP Integration Solution Advisory Methodology](sap-integration-solution-advisory-methodology-a2e17f3.md) -- +- Reviewing and adjusting the ISA-M settings is the task of the enterprise architect \(see [Personas](../60-Security/personas-5df5af1.md)\). diff --git a/docs/ISuite/40-RemoteSystems/basic-authentication-of-an-idp-user-for-api-clients-57f104d.md b/docs/ISuite/40-RemoteSystems/basic-authentication-of-an-idp-user-for-api-clients-57f104d.md index 70a59161..78f39fbe 100644 --- a/docs/ISuite/40-RemoteSystems/basic-authentication-of-an-idp-user-for-api-clients-57f104d.md +++ b/docs/ISuite/40-RemoteSystems/basic-authentication-of-an-idp-user-for-api-clients-57f104d.md @@ -27,7 +27,7 @@ Using this option, the API client is authenticated based on user credentials ass The following figure shows the components and the involved security artifacts: -![](images/CF_API_BAsic_IdP_e828f5a.png) +![API client is authenticated based on user credentials associated with a user registered at an identity provider. You can access the Cloud Integration resource through the API. Thanks to the Cloud Integration resource, you can assign roles to users.](images/CF_API_BAsic_IdP_e828f5a.png) Using SAP BTP cockpit, assign to the user a role that is to be used to authorize the API client to call the OData API. Which role you assign, depends on the Cloud Integration resource you like to access through the API. For more information, see [API Details](../50-Development/api-details-014d6ad.md). @@ -37,7 +37,7 @@ In detail, perform the following steps. 2. Go to *Security* \> *Role Collections*. -3. Click the *\+* icon to create a new role collection. +3. Choose *Create \(+\)* to create a new role collection. 4. Specify a role collection name \(for example, `MonitoringAPI`\). @@ -47,7 +47,7 @@ In detail, perform the following steps. 6. Select the newly created role collection. -7. Click *Edit*. +7. Select *Edit*. 8. In the *Role Name* drop down list, select the role you like to assign. @@ -76,7 +76,7 @@ In detail, perform the following steps. 12. Select the user for which you like to grant API access. -13. Under *Role Collections*, select *...* \> *Assign Role Collection*. +13. Under *Role Collections*, select *Assign Role Collection*. 14. Select the role collection that you've created in the previous steps. diff --git a/docs/ISuite/40-RemoteSystems/client-certificate-authentication-for-api-clients-d9ca0ac.md b/docs/ISuite/40-RemoteSystems/client-certificate-authentication-for-api-clients-d9ca0ac.md index 54aacf23..93857480 100644 --- a/docs/ISuite/40-RemoteSystems/client-certificate-authentication-for-api-clients-d9ca0ac.md +++ b/docs/ISuite/40-RemoteSystems/client-certificate-authentication-for-api-clients-d9ca0ac.md @@ -13,7 +13,7 @@ The API client authenticates itself with a client certificate when calling the C > ### Tip: > This authentication method is considered a secure option for HTTP inbound connections. -As client certificate, you can either use an own \(*external*\) certificate or one generated by SAP \(see [Service Key Types](service-key-types-0fc1446.md)\). +As client certificate, you can either use an own \(*external*\) certificate or one generated by SAP, see [Service Key Types](service-key-types-0fc1446.md). For more information, check out [Client Certificate Authentication \(Inbound\)](client-certificate-authentication-inbound-4ec6192.md) \(explains the concepts and how this authentication option works\). @@ -193,11 +193,11 @@ For more information, check out [Client Certificate Authentication \(Inbound\)]( ## Next Steps -Configure the request from the API client to the Cloud Integration OData API \(see [HTTP Calls and URI Components](../50-Development/http-calls-and-uri-components-ca75e12.md)\). +Configure the request from the API client to the Cloud Integration OData API, see [HTTP Calls and URI Components](../50-Development/http-calls-and-uri-components-ca75e12.md). -With the request, the API client has to pass on a certificate chain that contains a root certificate supported by the load balancer \(see [Load Balancer Root Certificates Supported by SAP](load-balancer-root-certificates-supported-by-sap-4509f60.md)\). Otherwise, the load balancer doesn't pass on the client certificate to SAP Integration Suite . +With the request, the API client has to pass on a certificate chain that contains a root certificate supported by the load balancer, see [Load Balancer Root Certificates Supported by SAP](load-balancer-root-certificates-supported-by-sap-4509f60.md). Otherwise, the load balancer doesn't pass on the client certificate to SAP Integration Suite . -- When you use an SAP-generated client certificate \(with *Key Type* set to *Certificate*\), the service key contains a certificate chain and a private key \(see [Creating Service Instance and Service Key for Inbound Authentication](creating-service-instance-and-service-key-for-inbound-authentication-19af5e2.md)\). The certificate chain contains already a root certificate supported by the load balancer. +- When you use an SAP-generated client certificate \(with *Key Type* set to *Certificate*\), the service key contains a certificate chain and a private key, see [Creating Service Instance and Service Key for Inbound Authentication](creating-service-instance-and-service-key-for-inbound-authentication-19af5e2.md). The certificate chain contains already a root certificate supported by the load balancer. You can use these values to configure the request. @@ -216,6 +216,6 @@ With the request, the API client has to pass on a certificate chain that contain > -----END CERTIFICATE----- > ``` -- When you use an external certificate \(with *Key Type* set to *External Certificate*\), the service key displays only the public key certificate provided by you \(see [Creating Service Instance and Service Key for Inbound Authentication](creating-service-instance-and-service-key-for-inbound-authentication-19af5e2.md)\). To configure the request, use the key pair exported from the application used to generate the client certificate. +- When you use an external certificate \(with *Key Type* set to *External Certificate*\), the service key displays only the public key certificate provided by you, see [Creating Service Instance and Service Key for Inbound Authentication](creating-service-instance-and-service-key-for-inbound-authentication-19af5e2.md). To configure the request, use the key pair exported from the application used to generate the client certificate. diff --git a/docs/ISuite/40-RemoteSystems/downloading-a-certificate-signing-request-b199dbe.md b/docs/ISuite/40-RemoteSystems/downloading-a-certificate-signing-request-b199dbe.md index 5170d89e..2354c781 100644 --- a/docs/ISuite/40-RemoteSystems/downloading-a-certificate-signing-request-b199dbe.md +++ b/docs/ISuite/40-RemoteSystems/downloading-a-certificate-signing-request-b199dbe.md @@ -49,7 +49,7 @@ You send the CSR to a certification authority, who will provide a signing respon **Related Information** - + [Updating a Key Pair with a Signing Response](../50-Development/updating-a-key-pair-with-a-signing-response-4242f01.md "Upload a signing response from a certification authority and use it to update the key pair in your keystore, keeping the alias of the keystore entry unchanged.") diff --git a/docs/ISuite/40-RemoteSystems/https-based-communication-1a22d00.md b/docs/ISuite/40-RemoteSystems/https-based-communication-1a22d00.md index 8cb7d396..618157f5 100644 --- a/docs/ISuite/40-RemoteSystems/https-based-communication-1a22d00.md +++ b/docs/ISuite/40-RemoteSystems/https-based-communication-1a22d00.md @@ -4,7 +4,7 @@ Certain adapters support communication based on Hypertext Transfer Protocol Secure \(HTTPS\). -HTTPS uses the Transport Layer Security \(TLS\) protocol +HTTPS uses the Transport Layer Security \(TLS\) protocol. > ### Note: > Mutual TLS \(mTLS\) is equivalent to client certificate authentication. While setting up the TLS connection, client and server exchange certificates. With mTLS, not only server certificates, but also client certificates are validated based on the signatures provided by certification authorities. For more information, see [Client Certificate Authentication \(Outbound\)](client-certificate-authentication-outbound-c4e4a15.md) and [Keystore](keystore-b163513.md). diff --git a/docs/ISuite/40-RemoteSystems/outbound-on-premise-reverse-proxy-or-sap-cloud-connector-14567e1.md b/docs/ISuite/40-RemoteSystems/outbound-on-premise-reverse-proxy-or-sap-cloud-connector-14567e1.md index d058e0a3..2cf0bfde 100644 --- a/docs/ISuite/40-RemoteSystems/outbound-on-premise-reverse-proxy-or-sap-cloud-connector-14567e1.md +++ b/docs/ISuite/40-RemoteSystems/outbound-on-premise-reverse-proxy-or-sap-cloud-connector-14567e1.md @@ -48,24 +48,24 @@ Existing reverse proxy and demilitarized zone \(DMZ\) infrastructure can be reus -IT-based, centralized approach with more re-use potential, independent of SAP BTP cockpit or Cloud Integration infrastructure +IT-based, centralized approach with more re-use potential, independent of SAP BTP cockpit or Cloud Integration infrastructure. -De-central, simple solution that can be administered by LOBs and subsidiaries +De-central, simple solution that can be administered by LOBs and subsidiaries. -Usage for other cloud scenarios besides SAP BTP cockpit/Cloud Integration-connectivity of backends +Usage for other cloud scenarios besides SAP BTP cockpit/Cloud Integration-connectivity of backends. -Usage for other SAP BTP cockpit-related scenarios, for example, extension apps, possible +Usage for other SAP BTP cockpit-related scenarios, for example, extension apps, possible. @@ -77,14 +77,14 @@ Additional capabilities might be provided by the reverse proxy \(load balancing, -Synchronous native RFC-client call from SAP BTP cockpit supported in addition \(that means, outside Cloud Integration\) +Synchronous native RFC-client call from SAP BTP cockpit supported in addition \(that means, outside Cloud Integration\). -Several reverse proxy instances per target landscape in one Cloud Integration tenant +Several reverse proxy instances per target landscape in one Cloud Integration tenant. @@ -101,7 +101,7 @@ Monitoring and control included in the IT processes, tools and concepts. -Monitoring and control native on SAP BTP cockpit \(for example, SAP BTP cockpit, User, Security\) +Monitoring and control native on SAP BTP cockpit \(for example, SAP BTP cockpit, User, Security\). @@ -135,7 +135,7 @@ SAP support in case of issues or feature requests. ## Decision Graph -To decide whether to use a reverse proxy or SAP Cloud Connector, you can follow the decision graph as outlined in the following figure and described further below. +To decide whether to use a reverse proxy or SAP Cloud Connector, you can follow the decision graph as outlined in the following figure and described further next. ![](images/Decision_Graph_eb6ecd7.png) diff --git a/docs/ISuite/40-RemoteSystems/setting-up-sap-identity-authentication-service-as-custom-idp-for-basic-authentication-0668507.md b/docs/ISuite/40-RemoteSystems/setting-up-sap-identity-authentication-service-as-custom-idp-for-basic-authentication-0668507.md index b8cb50f1..07c6ddf9 100644 --- a/docs/ISuite/40-RemoteSystems/setting-up-sap-identity-authentication-service-as-custom-idp-for-basic-authentication-0668507.md +++ b/docs/ISuite/40-RemoteSystems/setting-up-sap-identity-authentication-service-as-custom-idp-for-basic-authentication-0668507.md @@ -33,9 +33,9 @@ Perform the following steps: You can now set up basic authentication for users registered by the custom IdP for the following use cases: -- Sender component calls integration flow endpoint \(see: [Basic Authentication of IdP User for Integration Flow Processing](basic-authentication-of-idp-user-for-integration-flow-processing-5d46e56.md)\). +- Sender component calls integration flow endpoint, see: [Basic Authentication of IdP User for Integration Flow Processing](basic-authentication-of-idp-user-for-integration-flow-processing-5d46e56.md). -- API client calls Cloud Integration OData API \(see: [Basic Authentication of an IdP User for API Clients](basic-authentication-of-an-idp-user-for-api-clients-57f104d.md)\). +- API client calls Cloud Integration OData API, see: [Basic Authentication of an IdP User for API Clients](basic-authentication-of-an-idp-user-for-api-clients-57f104d.md). diff --git a/docs/ISuite/50-Development/IntegrationSettings/design-guidelines-4d1c84f.md b/docs/ISuite/50-Development/IntegrationSettings/design-guidelines-4d1c84f.md new file mode 100644 index 00000000..60e72465 --- /dev/null +++ b/docs/ISuite/50-Development/IntegrationSettings/design-guidelines-4d1c84f.md @@ -0,0 +1,80 @@ + + +# Design Guidelines + +As the integration lead for your organization, help your integration developers design enterprise-grade integration flows. + + + + + +### What are Design Guidelines + +Design guidelines for integration flows enable your integration developers to design integration flows in a robust fashion to safeguard your business processes. + +In the past, these design guidelines were recommendations that were published as product help and prepackaged content on SAP Business Accelerator Hub. You can find the guidelines in the [Integration Flow Design Guidelines](../integration-flow-design-guidelines-6803389.md) section. Now, the same guidelines are embedded within the software as rules that help integration developers. + + + +### Why Design Guidelines + +Each design guideline acts as a rule that helps integration developers design an improved integration flow. For example, keeping your integration flow readable, easy to understand, avoid memory leaks and performance issues, handling attachments in the right way, applying the appropriate security standards, or implement a specific pattern. Enable all or a subset of available design guidelines that you think are applicable for your organization's business needs. + +The design guidelines are logically grouped. For example, all transaction handling related guidelines are grouped under a single category. Some of the logical groupings are: *Handle errors gracefully* and *Run an integration flow under well-defined boundary conditions*. + +The diagram shows a typical workflow that helps you benefit from using design guidelines:![](images/Design_Guidelines_0ff1e13.png) + + + +### Enable Design Guidelines + +Before you enable, understand every design guideline and its implications. Consume the in-app help available for each design guideline to learn more. + +Follow these simple steps to enable or disable all or a subset of available design guidelines: + +1. Go to *Settings* \> *Integrations* \> *Design Guidelines*. + +2. Choose *Edit*. + +3. Enable the design guidelines that you think are appropriate for your organization's requirements. Similarly, disable the ones that you think aren't appropriate anymore. + +4. Choose *Save*. + + +You can enable or disable a design guideline anytime + + + +### Harmonize All Tenants + +It's critical that the various development tenants that you've follow the same design guidelines so that the experience of integration flow validation is the same. To achieve this experience, you can export the design guidelines with the enabled/disabled status from one tenant and import the same in another tenant. This way, you don't have to manually enable the same design guidelines in multiple tenants. + +Follow these simple steps to export and import the design guidelines with their status: + +1. In your source tenant, go to *Settings* \> *Integrations* \> *Design Guidelines*. + +2. Choose *Export* and save the file to your local drive. + +3. In your target tenant, go to *Settings* \> *Integrations* \> *Design Guidelines*. + +4. Choose *Import* and select the exported file. + + The design guidelines with their status from the source tenant are maintained in your target tenant now. + + + + +### Review and Productize Integration Flows + +After you enable design guidelines, all integration flows designed in your tenant must abide by the enabled design guidelines. As the integration lead, you can review the design guidelines report for each integration flow, and then make an informed decision to go-live with every new integration flow. + +If you follow a practice of creating an integration flow in a development tenant and then try out in a production tenant, you can transport the validated integration flow or package from one tenant to other. + +> ### Remember: +> The design guidelines don't disrupt the execution of the existing and new integration flow. + +For more information on how integration developers can validate their integration flows, see [Design Guidelines View](../design-guidelines-view-d62dfe0.md). + +> ### Remember: +> You can use design guidelines to validate not only your custom integration content but also the prepackaged integration content that is shipped by SAP. + diff --git a/docs/ISuite/50-Development/IntegrationSettings/images/Design_Guidelines_0ff1e13.png b/docs/ISuite/50-Development/IntegrationSettings/images/Design_Guidelines_0ff1e13.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8d1e0bfb9c0c41c1d95d8ca22219d40675e6ca GIT binary patch literal 17880 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 + +# Post Migration Tasks + + + + + +## Prerequisites + +- Your production tenant is upgraded to Camel 3.14 runtime version. + +- The uploaded integration adapters compatible with Camel 3.14 runtime version have been migrated to the production tenant. + + + + +## Context + +Import/update the compatible adapters to your design time to avoid any business process disruption. + + + +## Procedure + +**SAP Business Accelerator Hub adapters** + +Choose *Update Available* information for the package in your design workspace to update your package and use the latest version of the adapter. Upon updating the adapter, your already deployed integration flows start consuming the latest version of the adapter. See: [Consuming Integration Adapters from SAP Business Accelerator Hub](../consuming-integration-adapters-from-sap-business-accelerator-hub-b9250fb.md) + +**Other ADK adapters** + +For all other custom integration adapters developed by you, partners, or downloaded from SMP, follow these steps: + +1. Choose *Design* \> *Integrations and APIs* to view the list of integration packages. Find and open the integration packages with Camel 2.24 runtime compatible custom adapters. + +2. Select and delete the adapters compatible with Camel 2.24 runtime. See: [Editing an Integration Package](../editing-an-integration-package-155164d.md) + +3. Navigate to the *Artifacts* tab. Choose *Add* \> *Integration Adapter* to import the custom integration adapters \(.esa file\) compatible with Camel 3.14 runtime. + + > ### Caution: + > Deploying adapters compatbile with older runtime \(Camel 2.24\) will result in business process disruption, unexpected integration flow behaviour, and overwriting of newly migrated adapters. + + diff --git a/docs/ISuite/50-Development/IntegrationSettings/runtime-profiles-8007daa.md b/docs/ISuite/50-Development/IntegrationSettings/runtime-profiles-8007daa.md index 394dfec6..22d1c2cf 100644 --- a/docs/ISuite/50-Development/IntegrationSettings/runtime-profiles-8007daa.md +++ b/docs/ISuite/50-Development/IntegrationSettings/runtime-profiles-8007daa.md @@ -71,18 +71,6 @@ On-premise integration runtime of SAP Process Integration -- Integration Flow - -- Value Mapping - - -Within an integration flow, the supported adapters, flow steps, and its technical capabilities differs for each profile. To know the supported components for each profile, do the following steps: - -1. In your tenant, go to *Settings* \> *Integrations* \> *Runtime Profiles*. - -2. Choose a SAP PO profile of your choice to view a list of supported components. - - diff --git a/docs/ISuite/50-Development/access-policies-e0009f3.md b/docs/ISuite/50-Development/access-policies-e0009f3.md index a716f025..a4fe2002 100644 --- a/docs/ISuite/50-Development/access-policies-e0009f3.md +++ b/docs/ISuite/50-Development/access-policies-e0009f3.md @@ -4,17 +4,20 @@ With access policies you can restrict the access to integration artifacts and to the data stored and processed by them. -With access policies, you can protect access to certain sets of artifacts \(as defined in artifact references\). You can define artifact references for: +With access policies, you can protect access to certain sets of artifacts. You can define artifact references for: -- All artifacts of a dedicated integration package +- A package – by which all artifacts of the integration package and the package actions are protected. -- Artifacts of a special type \(for example, script collection\) +- A specific artifact type – for example, script collection or integrtion flow. If access to at least one artifact of an integration package is restricted, you can't export, publish, or delete the integration package. Access policies affect artifact access in the following dimensions: +> ### Remember: +> With access policies in place, an unauthorized user is still allowed to view a protected resource. + @@ -70,15 +73,24 @@ Access to data collected or created during the execution of all integration arti - Data stored in data stores, variables, and message queues > ### Note: - > When you've restricted access to a specific integration flow \(with artifact reference for *Integration Flow* artifact type\) that contains data store operations or variables, only access to local data stores or variables \(associated with this integration flow\) is limited. If you like to restrict access to global data stores, global variables and message queues, you need to define an access policy with an artifact reference specoified as *Global Data Store*, *Global Variable*, or *Message Queue*. + > When you've restricted access to a specific integration flow \(with artifact reference for *Integration Flow* artifact type\) that contains data store operations or variables, only access to local data stores or variables \(associated with this integration flow\) is limited. If you like to restrict access to global data stores, global variables and message queues, you need to define an access policy with an artifact reference specified as *Global Data Store*, *Global Variable*, or *Message Queue*. +> ### Caution: +> Custom header properties are **not** protected by access policies. Note that custom header properties are not supposed to contain sensitive data. +
+ + +
+ +## Package-Level Access Policy + An access policy for an integration package limits: - Operations on the integration package \(such like exporting the package\) @@ -90,14 +102,33 @@ If an access policy for an integration package is created, users without the cor Such users also can’t perform any activities on the deployed artifact \(for example, restarting an integration flow or changing the log level\). -> ### Remember: -> With access policies in place, an unauthorized user is still allowed to view a protected resource. -Access policies cover user interface-based and API-based access to the artifact. -Access policies for integration packages and for specific artifact types \(such like integration flows and script collections, for example\) co-exist in the following terms: + + +## Artifact-Level Access Policy + +An access policy for an artifact limits: + +- Operations on the specific artifact + +- Operations you can perform on the deployed artifact under *Monitor* \> *Integrations and APIs* \> *Manage Integration Content* \(such like restarting or undeploying the artifact or changing the log level for monitoring\). + + + + + + +## Things to Remember + +- Access policies cover user interface-based and API-based access to the artifact. + +- If access policies form an intersection, meaning that an artifact is protected by multiple different access policies, the following rule applies: If the user has a role associated with at least one of the access policies, the user has access to the artifact. + + In particular, access policies for integration packages and for specific artifact types \(such like integration flows and script collections, for example\) co-exist in the following terms: + + Assume that you've defined an access policy for a specific integration package. Furthermore, the integration package contains an artifact for which you've defined another access policy. In this case, a user with necessary role for the package-level access policy can perform operations on all artifacts, including the artifact that is protected by an additonal access policy. -Assume that you've defined an access policy for a specific integration package. Furthermore, the integration package contains an integration artifact for which you've defined another access policy. In this case, the access policy for the individual artifact is not affected by the access policy defined for the integration package. > ### Tip: > To learn more how access policies work, check out some examples at [Access Policies Examples](access-policies-examples-f1dc1a7.md). diff --git a/docs/ISuite/50-Development/access-policies-examples-f1dc1a7.md b/docs/ISuite/50-Development/access-policies-examples-f1dc1a7.md index bda67ec4..6db9cdd7 100644 --- a/docs/ISuite/50-Development/access-policies-examples-f1dc1a7.md +++ b/docs/ISuite/50-Development/access-policies-examples-f1dc1a7.md @@ -14,16 +14,18 @@ This example demonstrates an access policy for an integration package. Furthermo Let's assume that two access policies are defined. -- Access policy \(associated with rule *myRole1*\) protects all artifacts of integration package *my Package*. +- Access policy *PackageAccess* \(associated with role *Role1*\) protects all artifacts of integration package *my Package*. -- Access policy \(associated with rule *myRole2*\) protects all integration flows with a name starting with *Send*. +- Access policy *IntegrationFlowAccess* \(associated with role *Role2*\) protects all integration flows with a name starting with *Send*. The diagram shows how both access policies together affect the access capabilities of individual users with different role assignments. -![](images/Integration_Package_Access_Policy_5762bf4.png) +![](images/Access_Policy_Example_Integration_Package_6105b27.png) -The individual users can access the data in the following way: +To now provide targeted access to the protected artifacts, the tenant administrator defines dedicated roles and assigns them to different users. + +The individual users have the following access permissions: @@ -35,6 +37,16 @@ User + + @@ -42,7 +54,21 @@ Can Access ... + + + + + + + +
+Assigned role + + + +Role associated with access policy + + + Can Access ...
-*User1* \(assigned to roles *myRole1* and *myRole2*\) +*User1* + + + +*Role1* + +*Role2* + + + +*PackageAccess* + +*IntegrationFlowAccess* @@ -54,31 +80,67 @@ All integration flows of the integration package.
-*User2* \(assigned to role *myRole1*\) +*User2* -All integration flows not protected by the access policy associated with *myRole2*. +*Role1* + + + +*PackageAccess* + + + +All integration flows of the integration package. + +*User2* has role *Role1* that is associated with access policy *PackageAccess*. + +Therefore, *User2* can access all artifacts of the *protected* integration package.
-*User3* \(assigned to role *myRole2*\) +*User3* + + + +*Role2* + + + +*IntegrationFlowAccess* -All integration flows that are protected by the access policy associated with *myRole2*, but no additional artifacts. +All integration flows that are protected by access policy *IntegrationFlowAccess*, but no additional artifacts. + +*User3* has role *Role2* that is associated with access policy *IntegrationFlowAccess*. Therefore, they can access the integration flows protected by this access policy. However, the other integration flows are protected from this user by access policy *PackageAccess*.
-*User4* \(no role assigned\) +*User4* + + + +\(no role assigned\) + + + +n.a. @@ -89,6 +151,8 @@ No artifact or data illustrated in the diagram.
+Having a role associated with an access policy means: The string that is specified for the *Values* attribute of the role matches the name of the access policy \(see [Creating Custom Roles for Access Policies](creating-custom-roles-for-access-policies-7db3c87.md)\). +
@@ -99,27 +163,29 @@ Integration flows can use *Data Store Operations* steps to store data in local o Access policies protect both operations that you can perform with artifacts \(such as saving an artifact\) and data stored and processed by these artifacts. Therefore, access policies for integration flows and data stores are interconnected in the following way: -- An access policy defined for an integration flow protects also data stored in local data store associated with this integration flow. +- An access policy defined for an integration flow protects also data stored in local data stores \(and local variables\) associated with this integration flow. -- This access policy, however, has no impact on any global data store defined on the tenant. Note that a global data store can be accessed to by multiple integration flows. +- This access policy, however, has no impact on any global data store defined on the tenant. Note that a global data store can be accessed to by multiple integration flows. The same applies for message queues. The following example illustrates this use case. -Assume that two integration flows are deployed on the tenant and there's a global and a local data store. The local data store is associated with integration flow *Send Order to System*. +Assume that two integration flows are deployed on the tenant, and there's a global and a local data store. The local data store is associated with integration flow *Send Order to System*. -Let's assume that two access policies are defined. +Let's assume that two access policies are defined on the tenant. -- Access policy \(associated with rule *myRole1*\) protects all integration flows with a name starting with *Send*. +- Access policy *FlowAccess* \(associated with role *Role1*\) protects all integration flows with a name starting with *Send*. -- Access policy \(associated with rule *myRole2*\) protects the global data store \(with the name *DataStore2*\). +- Access policy *GlobalDataStoreAccess* \(associated with role *Role2*\) protects the global data store \(with the name *DataStore2*\). The diagram shows how both access policies together affect the access capabilities of individual users with different role assignments. -![](images/Data_Store_Access_Policy_3b63c43.png) +![](images/Access_Policy_Example_Data_Store_8c82e68.png) -The individual users can access the data in the following way: +To now provide targeted access to the protected artifacts, the tenant administrator defines dedicated roles and assigns them to different users. + +The individual users have the following access permissions: @@ -131,14 +197,38 @@ User + + + + + + + + + + diff --git a/docs/ISuite/50-Development/amazonwebservices-sender-adapter-16772e3.md b/docs/ISuite/50-Development/amazonwebservices-sender-adapter-16772e3.md index 64b7ace9..71658912 100644 --- a/docs/ISuite/50-Development/amazonwebservices-sender-adapter-16772e3.md +++ b/docs/ISuite/50-Development/amazonwebservices-sender-adapter-16772e3.md @@ -24,13 +24,13 @@ Use the sender adapter to accelerate the implementation time and reduce the comp > ### Note: -> You need to download the adapter from SAP Software Download Center. You can find more information on the download navigation path [here](https://api.sap.com/package/AmazonWebServicesAdapter?section=Overview). +> You need to download the adapter from SAP Software Download Center. You can find more information on the download navigation path under the folloeing link: [Amazon Web Services Adapter for SAP Integration Suite](https://api.sap.com/package/AmazonWebServicesAdapter/overview). > > After you complete the download, uncompress and extract the files to your local system. Then deploy the adapter on your tenant. > > - For more information on deploying the adapter in multicloud environment, see [Importing Custom Integration Adapter](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/482286e544014098874fde0da4bcca2c.html). > -> - For tenants hosted on Neo environment, you must import the adapter to your Eclipse tool and deploy the adapter project. For more information see, [Develop Adapter](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/f798db6491424460bb4b43d4a86ed1cf.html). +> - For tenants hosted on Neo environment, you must import the adapter to your Eclipse tool and deploy the adapter project. For more information, see [Develop Adapter](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/f798db6491424460bb4b43d4a86ed1cf.html). @@ -176,7 +176,7 @@ Specify the location on the S3 bucket where the file is written. @@ -205,7 +205,7 @@ Select the authentication method the message broker supports. *SASL* is selected Select to use Simple Authentication and Security Layer \(SASL\). -- *OAuth2 Client Credentials* \(only when *WebSocket* has been selected for *Transport Protocol* while creating the connection\) +- *OAuth2 Client Credentials* \(only when *WebSocket* has been selected for *Transport Protocol* while creating the connection\). Select to use OAuth 2.0 client credentials grant. At runtime, Cloud Integration gets access to the protected resources in two steps: After presenting a set of client credentials, Cloud Integration fetches an access token from a token service. In a subsequent step, Cloud Integration uses the access token to get access to the protected resources in the connected system. @@ -220,7 +220,7 @@ Select the authentication method the message broker supports. *SASL* is selected > ### Note: > This authentication option implies that Transport Layer Security \(TLS\) is used for the connection. - More information: + More information: - *None* @@ -352,7 +352,7 @@ Define the message type to be used for sending the message to the message broker > ### Note: > Select *Binary* or *Text* only if your application receiving the message requires a specific message type. > -> Also, if you select *Binary* or *Text*, you can define the character encoding with the help of `CamelCharsetName` \(either header or property\) in the *Content Modifier*. In case you don't set the `CamelCharsetName` header or property, the transformation will use UTF-8 character encoding. See [Content Modifier Basics](content-modifier-basics-b0576a8.md) and [About Headers and Exchange Properties](about-headers-and-exchange-properties-0974c4f.md). +> Also, if you select *Binary* or *Text*, you can define the character encoding with the help of `CamelCharsetName` \(either header or property\) in the *Content Modifier*. In case you don't set the `CamelCharsetName` header or property, the transformation will use UTF-8 character encoding. See: [Content Modifier Basics](content-modifier-basics-b0576a8.md) and [About Headers and Exchange Properties](about-headers-and-exchange-properties-0974c4f.md). diff --git a/docs/ISuite/50-Development/configure-the-amqp-sender-adapter-99ce674.md b/docs/ISuite/50-Development/configure-the-amqp-sender-adapter-99ce674.md index 6b6a7b92..35e963be 100644 --- a/docs/ISuite/50-Development/configure-the-amqp-sender-adapter-99ce674.md +++ b/docs/ISuite/50-Development/configure-the-amqp-sender-adapter-99ce674.md @@ -16,7 +16,7 @@ You use the Advanced Message Queuing Protocol \(AMQP\) sender adapter to consume > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. @@ -220,7 +220,7 @@ Select the authentication method the message broker supports. *SASL* is selected > ### Note: > This authentication option implies that Transport Layer Security \(TLS\) is used for the connection. - More information: + More information: - *None* diff --git a/docs/ISuite/50-Development/configure-the-ariba-receiver-adapter-49dffa3.md b/docs/ISuite/50-Development/configure-the-ariba-receiver-adapter-49dffa3.md index a349f4e8..e6a81ebc 100644 --- a/docs/ISuite/50-Development/configure-the-ariba-receiver-adapter-49dffa3.md +++ b/docs/ISuite/50-Development/configure-the-ariba-receiver-adapter-49dffa3.md @@ -16,7 +16,7 @@ The Ariva receiver adapter connects SAP Integration Suite to the Ariba network. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. -Once you have created a receiver channel and selected the Ariba receiver adapter, you can configure the following attributes. See [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). +Once you have created a receiver channel and selected the Ariba receiver adapter, you can configure the following attributes. See: [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). Select the *General* tab and provide values in the fields as follows. @@ -156,7 +156,7 @@ Specify the URL to which the cXML requests are posted, or from where the cXMLs a @@ -408,7 +408,7 @@ MIME header fields are inserted by the e-mail server at the beginning of the dat Non-ASCII characters are not allowed in MIME messages. MIME `encoded-word` syntax is used to encode the non-ASCII characters. -For more details, see [MIME \(Multipurpose Internet Mail Extensions\) Part Three: Message Header Extensions for Non-ASCII Text](https://www.rfc-editor.org/rfc/rfc2047) \(RFC-2047\). +For more details, see: [MIME \(Multipurpose Internet Mail Extensions\) Part Three: Message Header Extensions for Non-ASCII Text](https://www.rfc-editor.org/rfc/rfc2047) \(RFC-2047\). @@ -477,7 +477,7 @@ When selected, Cloud Integration disconnects from the e-mail server after each p Select the *Scheduler* tab and provide values in the fields as follows. > ### Caution: -> How you specify the *Scheduler* settings depends on the constraints and requirements of your integration scenario. However, make sure to use the *Scheduler* parameters advisedly: Specify the scheduler settings in such a way that messages are not polled with too high frequency. Use intervals below 1 minute only if really required. Otherwise, there’s the risk to overload the mail server. +> How you specify the *Scheduler* settings depends on the constraints and requirements of your integration scenario. However, make sure to use the *Scheduler* parameters advisedly: Specify the scheduler settings in such a way that messages are not polled with too high frequency. Use the following interval 1 minute only if really required. Otherwise, there’s the risk to overload the mail server. **Scheduler** @@ -636,7 +636,7 @@ Select the time zone that you want the scheduler to use as a reference for the d
-Can Access ... +Assigned role + + + +Role associated with access policy + + + +Can access ...
-*User1* \(assigned to roles *myRole1* and *myRole2*\) +*User1* + + + +*Role1* + +*Role2* + + + +*FlowAccess* + +*GlobalDataStoreAccess* @@ -150,33 +240,71 @@ All integration flows and the content stored in all data stores.
-*User2* \(assigned to role *myRole1*\) +*User2* + + + +*Role1* -All integration flows and the content of the local data store. +*FlowAccess* -As this user doesn't have *myRole2* \(associated with the access policy protecting the global data store\), the global data store isn't accessible for this user. + + +All integration flows and the content stored in the local data store. + +*User2* can access both integration flows, including the one that is protected by access policy *FlowAccess*. The reason for this: *User2* has *Role1* that is associated with access policy *FlowAccess*. + +An integration flow-related access policy also covers data stored and processed by the protected integration flow. Therefore, *User2* has also access to the content of the **local** data store used by integration flow *Send Order to System*. + +However, as *User2* doesn't have *Role2* \(associated with access policy *GlobalDataStoreAccess*\), the global data store isn't accessible for it.
-*User3* \(assigned to role *myRole2*\) +*User3* + + + +*Role2* + + + +*GlobalDataStoreAccess* -The integration flow that is **not** protected by the access policy associated with *myRole1* and the content of the global data store. +The integration flow that is **not** protected by access policy *FlowAccess* and the content of the global data store. + +Integration flow *Send Order to System* is protected by access policy *FlowAccess*. As *User3* doesn't have the role associated with this access policy, they are unable to access this integration flow. + +Although the content of the global data store is protected by access policy*GlobalDataStoreAccess*, *User3* is able to access its content. The reason is: they have *Role2* that is associated with access policy *GlobalDataStoreAccess*.
-*User4* \(no role assigned\) +*User4* + + + +\(no role assigned\) + + + +n.a. diff --git a/docs/ISuite/50-Development/add-an-api-artifact-c2fe62c.md b/docs/ISuite/50-Development/add-an-api-artifact-c2fe62c.md index 5cf76d4b..69ca505f 100644 --- a/docs/ISuite/50-Development/add-an-api-artifact-c2fe62c.md +++ b/docs/ISuite/50-Development/add-an-api-artifact-c2fe62c.md @@ -33,5 +33,9 @@ When you create an API artifact of the type REST and SOAP you can choose from th **Related Information** +[Copy an API Artifact](copy-an-api-artifact-820c9e8.md "You may want to create a copy of an existing API artifact with all its configurations and policies intact. This can be useful when you want to create a similar API but with some modifications or variations. The copy feature allows you to quickly duplicate the API artifact and make the necessary changes without starting from scratch.You can create a duplicate of an API artifact by copying it within the same package or in a different integration package within the same Integration Suite subscription.") + [Policy Definition and Types of Policies Supported by Edge Integration Cell](policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md "You can define the behavior of an API by using policy steps.") +[Deploying an API Artifact](deploying-an-api-artifact-b70e7ec.md "After creating an API artifact, it is necessary to deploy it on the chosen runtime profile in order to make it executable and ready for use.") + diff --git a/docs/ISuite/50-Development/add-information-to-the-message-processing-log-e8e9283.md b/docs/ISuite/50-Development/add-information-to-the-message-processing-log-e8e9283.md index 136aa9a5..6bb18085 100644 --- a/docs/ISuite/50-Development/add-information-to-the-message-processing-log-e8e9283.md +++ b/docs/ISuite/50-Development/add-information-to-the-message-processing-log-e8e9283.md @@ -164,7 +164,7 @@ When monitoring the message in the Cloud Integration *Monitor* section under *Mo ![](images/Custom_Header_Properties_ddb7cbd.png) -You find an example scenario here: [Use Custom Header Properties to Search for Message Processing Logs](use-custom-header-properties-to-search-for-message-processing-logs-d4b5839.md). +You find an example scenario following the next link: [Use Custom Header Properties to Search for Message Processing Logs](use-custom-header-properties-to-search-for-message-processing-logs-d4b5839.md).
-Specify the name of the file to be written. If the field is left blank, the filename is created using the Cloud Integration message ID. +Specify the name of the file to be written. If the field on the left is not filled out, the filename is created using the Cloud Integration message ID. > ### Example: > `Test.json` diff --git a/docs/ISuite/50-Development/amqp-adapter-5cc1a71.md b/docs/ISuite/50-Development/amqp-adapter-5cc1a71.md index 1473a16f..96ffe2c3 100644 --- a/docs/ISuite/50-Development/amqp-adapter-5cc1a71.md +++ b/docs/ISuite/50-Development/amqp-adapter-5cc1a71.md @@ -15,5 +15,5 @@ In many integration scenarios, messages or events have to be exchanged between a [Configure the AMQP Sender Adapter](configure-the-amqp-sender-adapter-99ce674.md "You use the Advanced Message Queuing Protocol (AMQP) sender adapter to consume messages in SAP Integration Suite from queues in an external message broker.") -[Configure the AMQP Receiver Adapter](configure-the-amqp-receiver-adapter-d5660c1.md "You se the Advanced Message Queuing Protocol (AMQP) receiver adapter to send messages from SAP Integration Suite to queues or topics in an external message broker.") +[Configure the AMQP Receiver Adapter](configure-the-amqp-receiver-adapter-d5660c1.md "You use the Advanced Message Queuing Protocol (AMQP) receiver adapter to send messages from SAP Integration Suite to queues or topics in an external message broker.") diff --git a/docs/ISuite/50-Development/amqp-receiver-for-apache-activemq-5-and-apache-activemq-artemis-76c4dd3.md b/docs/ISuite/50-Development/amqp-receiver-for-apache-activemq-5-and-apache-activemq-artemis-76c4dd3.md index a0c43e0f..93e1cc3a 100644 --- a/docs/ISuite/50-Development/amqp-receiver-for-apache-activemq-5-and-apache-activemq-artemis-76c4dd3.md +++ b/docs/ISuite/50-Development/amqp-receiver-for-apache-activemq-5-and-apache-activemq-artemis-76c4dd3.md @@ -19,7 +19,7 @@ Enables SAP Integration Suite to send messages to queues or topics in Apache Act > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. diff --git a/docs/ISuite/50-Development/amqp-receiver-for-apache-qpid-broker-j-622aa1d.md b/docs/ISuite/50-Development/amqp-receiver-for-apache-qpid-broker-j-622aa1d.md index 33e01307..230ea85b 100644 --- a/docs/ISuite/50-Development/amqp-receiver-for-apache-qpid-broker-j-622aa1d.md +++ b/docs/ISuite/50-Development/amqp-receiver-for-apache-qpid-broker-j-622aa1d.md @@ -19,7 +19,7 @@ Enables SAP Integration Suite to send messages to queues or topics in Apache Qpi > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. diff --git a/docs/ISuite/50-Development/amqp-receiver-for-ibm-mq-990fa99.md b/docs/ISuite/50-Development/amqp-receiver-for-ibm-mq-990fa99.md index 69218597..c6fcee8f 100644 --- a/docs/ISuite/50-Development/amqp-receiver-for-ibm-mq-990fa99.md +++ b/docs/ISuite/50-Development/amqp-receiver-for-ibm-mq-990fa99.md @@ -22,7 +22,7 @@ Enables SAP Integration Suite to send messages to queues or topics in IBM MQ. > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. diff --git a/docs/ISuite/50-Development/amqp-receiver-for-microsoft-azure-service-bus-9c64d80.md b/docs/ISuite/50-Development/amqp-receiver-for-microsoft-azure-service-bus-9c64d80.md index 97738237..b6a619a9 100644 --- a/docs/ISuite/50-Development/amqp-receiver-for-microsoft-azure-service-bus-9c64d80.md +++ b/docs/ISuite/50-Development/amqp-receiver-for-microsoft-azure-service-bus-9c64d80.md @@ -19,7 +19,7 @@ Enables SAP Integration Suite to send messages to queues or topics in Microsoft > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. diff --git a/docs/ISuite/50-Development/amqp-receiver-for-sap-event-mesh-0b7cc2f.md b/docs/ISuite/50-Development/amqp-receiver-for-sap-event-mesh-0b7cc2f.md index 84a31796..62ed16eb 100644 --- a/docs/ISuite/50-Development/amqp-receiver-for-sap-event-mesh-0b7cc2f.md +++ b/docs/ISuite/50-Development/amqp-receiver-for-sap-event-mesh-0b7cc2f.md @@ -19,7 +19,7 @@ Enables SAP Integration Suite to send messages to queues or topics in SAP Event > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. diff --git a/docs/ISuite/50-Development/amqp-receiver-for-solace-pubsub-19f18d8.md b/docs/ISuite/50-Development/amqp-receiver-for-solace-pubsub-19f18d8.md index da65b34a..a040ac0a 100644 --- a/docs/ISuite/50-Development/amqp-receiver-for-solace-pubsub-19f18d8.md +++ b/docs/ISuite/50-Development/amqp-receiver-for-solace-pubsub-19f18d8.md @@ -19,7 +19,7 @@ Enables SAP Integration Suite to send messages to queues or topics in Solace Pub > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. diff --git a/docs/ISuite/50-Development/amqp-sender-for-apache-activemq-5-and-apache-activemq-artemis-dc4c564.md b/docs/ISuite/50-Development/amqp-sender-for-apache-activemq-5-and-apache-activemq-artemis-dc4c564.md index d72f1ced..93e2c7db 100644 --- a/docs/ISuite/50-Development/amqp-sender-for-apache-activemq-5-and-apache-activemq-artemis-dc4c564.md +++ b/docs/ISuite/50-Development/amqp-sender-for-apache-activemq-5-and-apache-activemq-artemis-dc4c564.md @@ -16,7 +16,7 @@ Enables SAP Integration Suite to consume messages from queues in Apache ActiveMQ > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. diff --git a/docs/ISuite/50-Development/amqp-sender-for-apache-qpid-broker-j-b4983f7.md b/docs/ISuite/50-Development/amqp-sender-for-apache-qpid-broker-j-b4983f7.md index 88ce854d..3a01bc1c 100644 --- a/docs/ISuite/50-Development/amqp-sender-for-apache-qpid-broker-j-b4983f7.md +++ b/docs/ISuite/50-Development/amqp-sender-for-apache-qpid-broker-j-b4983f7.md @@ -16,7 +16,7 @@ Enables SAP Integration Suite to consume messages from queues in Apache Qpid Bro > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. diff --git a/docs/ISuite/50-Development/amqp-sender-for-ibm-mq-f6cc0e4.md b/docs/ISuite/50-Development/amqp-sender-for-ibm-mq-f6cc0e4.md index 7bc5e17d..d9d50524 100644 --- a/docs/ISuite/50-Development/amqp-sender-for-ibm-mq-f6cc0e4.md +++ b/docs/ISuite/50-Development/amqp-sender-for-ibm-mq-f6cc0e4.md @@ -19,7 +19,7 @@ Enables SAP Integration Suite to consume messages from queues in IBM MQ. > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. diff --git a/docs/ISuite/50-Development/amqp-sender-for-microsoft-azure-service-bus-7384ac3.md b/docs/ISuite/50-Development/amqp-sender-for-microsoft-azure-service-bus-7384ac3.md index 63890f2e..9bfdaa9b 100644 --- a/docs/ISuite/50-Development/amqp-sender-for-microsoft-azure-service-bus-7384ac3.md +++ b/docs/ISuite/50-Development/amqp-sender-for-microsoft-azure-service-bus-7384ac3.md @@ -16,7 +16,7 @@ Enables SAP Integration Suite to consume messages from queues in Microsoft Azur > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. @@ -196,7 +196,7 @@ Select the authentication method supported by the message broker. Make sure that
-*Credential Name* +*Credential Name* \(only if *SASL* is selected for *Authentication*\) diff --git a/docs/ISuite/50-Development/amqp-sender-for-sap-event-mesh-7d8a83f.md b/docs/ISuite/50-Development/amqp-sender-for-sap-event-mesh-7d8a83f.md index 3b967760..8d8f27fd 100644 --- a/docs/ISuite/50-Development/amqp-sender-for-sap-event-mesh-7d8a83f.md +++ b/docs/ISuite/50-Development/amqp-sender-for-sap-event-mesh-7d8a83f.md @@ -16,7 +16,7 @@ Enables SAP Integration Suite to consume messages from queues in SAP Event Mesh. > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. diff --git a/docs/ISuite/50-Development/amqp-sender-for-solace-pubsub-c9ab47d.md b/docs/ISuite/50-Development/amqp-sender-for-solace-pubsub-c9ab47d.md index 8266cb03..52a5b173 100644 --- a/docs/ISuite/50-Development/amqp-sender-for-solace-pubsub-c9ab47d.md +++ b/docs/ISuite/50-Development/amqp-sender-for-solace-pubsub-c9ab47d.md @@ -16,7 +16,7 @@ Enables SAP Integration Suite to consume messages from queues in Solace PubSub+. > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. +> Queues, topics, and messages can only be monitored by using tools provided by the message broker provider. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages are sent to or consumed from the message broker. > ### Note: > To be able to connect to queues, you have to create queues and/or topics in the message broker. This needs to be done in the message broker, with the configuration tools provided by the message broker. In some messaging systems, you need to configure a *Lock Duration* to make sure that the message is not consumed more than once. This timeout must be longer than the expected processing time of the message, otherwise this would lead to duplicate messages. diff --git a/docs/ISuite/50-Development/anomaly-detection-7a4fe7d.md b/docs/ISuite/50-Development/anomaly-detection-7a4fe7d.md new file mode 100644 index 00000000..bd1562b9 --- /dev/null +++ b/docs/ISuite/50-Development/anomaly-detection-7a4fe7d.md @@ -0,0 +1,6 @@ + + +# Anomaly Detection + +Anomaly detection involves identifying patterns or data points that significantly deviate from normal behaviour or expected patterns, allowing for the detection of unusual behaviour in API calls. It is now possible to analyze specific data points to detect anomalies and potentially prevent or mitigate risks. + diff --git a/docs/ISuite/50-Development/assigning-codelists-to-leaf-nodes-770f7be.md b/docs/ISuite/50-Development/assigning-codelists-to-leaf-nodes-770f7be.md index 9df163f9..0ca05ebd 100644 --- a/docs/ISuite/50-Development/assigning-codelists-to-leaf-nodes-770f7be.md +++ b/docs/ISuite/50-Development/assigning-codelists-to-leaf-nodes-770f7be.md @@ -36,10 +36,23 @@ You've included the leaf node that you want to assign a codelist to in your MIG 4. You can select or deselect the code values as required. -5. Optional: You can choose to use a code value as an example value by choosing :heavy_plus_sign:icon. +5. You can search the code values using the following search options: -6. Optional: You can switch between codelists by selecting the desired codelist from the *Selected Codelist* drop down box. + 1. *Search*: This is a generic search field -7. Optional: You can disassociate a codelist from a leaf node by selecting *None* in the *Selected Codelist* drop down box. + 2. *ID*: Search for a specific code value ID using this field. You need to enter the exact ID value here for the search to work. + + 3. *Name*: Search for a specific code value using their here. You can enter partial/full name of the code value and the search function will provide the results accordingly. + + 4. *Definition*: Search for a specific code value using their definition here. You can enter partial/full definition of the code value and the search function will provide the results accordingly. + + +6. To clear the search filters, choose *Reset*. + +7. Optional: You can choose to use a code value as an example value by choosing :heavy_plus_sign:icon. + +8. Optional: You can switch between codelists by selecting the desired codelist from the *Selected Codelist* drop down box. + +9. Optional: You can disassociate a codelist from a leaf node by selecting *None* in the *Selected Codelist* drop down box. diff --git a/docs/ISuite/50-Development/attach-rate-plan-to-a-product-1980cab.md b/docs/ISuite/50-Development/attach-rate-plan-to-a-product-1980cab.md index 98ac0a2c..babfcf4f 100644 --- a/docs/ISuite/50-Development/attach-rate-plan-to-a-product-1980cab.md +++ b/docs/ISuite/50-Development/attach-rate-plan-to-a-product-1980cab.md @@ -55,9 +55,9 @@ You are attaching a rate plan to a product. **Related Information** -[Create a Rate Plan](create-a-rate-plan-cfe6a30.md "Create a rate plan using the SAP Integration Suite.") +[Create a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cfe6a30600f148a39a7920dbc7fa1ab2.html "Create a rate plan using the API portal.") :arrow_upper_right: -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") +[Update a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/b8c1e6b68be74ead8700f7f8be9baa8b.html "Update a rate plan using the API portal.") :arrow_upper_right: -[Delete a Rate Plan](delete-a-rate-plan-d4181ad.md "Delete a rate plan using the SAP Integration Suite.") +[Delete a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/d4181ad418e4446e830c498d672204ff.html "Delete a rate plan using the API portal.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/attach-rate-plan-to-a-product-cc5c942.md b/docs/ISuite/50-Development/attach-rate-plan-to-a-product-cc5c942.md deleted file mode 100644 index f54234e4..00000000 --- a/docs/ISuite/50-Development/attach-rate-plan-to-a-product-cc5c942.md +++ /dev/null @@ -1,63 +0,0 @@ - - -# Attach Rate Plan to a Product - -Attach a rate plan to a product using the SAP Integration Suite. - - - - - -## Prerequisites - -- You are assigned the admin role. - -- You have created a rate plan in the SAP Integration Suite. - - -> ### Note: -> You can only attach rate plans to those products that do not have any rate plans associated with them. A product can only be associated with one rate plan. you can also attach a rate plan to a product during the product creation. - -> ### Note: -> If you try changing a rate plan or add a new rate plan to a product, all the existing applications of this product will remain unaffected by the changes. For example, if you add a rate plan to a product associated with the application, which has already been subscribed, this will not impact the current billing of the application. - - - -## Context - -You are attaching a rate plan to a product. - - - -## Procedure - -1. Log on to the SAP Integration Suite. - -2. Choose the navigation icon on the left and choose *Design* \> *APIs*. - -3. On the *Design* \> *APIs* page, choose *Products*. - -4. From the list of products available, select the product to which you want to add the rate plan. - -5. On the Product details screen, choose *RATE PLAN*. - -6. Choose *Edit → Add Plan*. - -7. In the *Add Rate Plan* window, select the required rate plan from the list of available rate plans. - - You can click an individual rate plan to view the description and details of that particular rate plan. - -8. Choose *OK*. - - Rate plan will not be applicable to existing applications associated with the product to which the rate plan is attached. However, the rate plan will be applicable, if a new application uses the product to which the rate plan is attached. - - -**Related Information** - - -[Create a Rate Plan](create-a-rate-plan-cfe6a30.md "Create a rate plan using the SAP Integration Suite.") - -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") - -[Delete a Rate Plan](delete-a-rate-plan-d4181ad.md "Delete a rate plan using the SAP Integration Suite.") - diff --git a/docs/ISuite/50-Development/billing-service-1e20fb5.md b/docs/ISuite/50-Development/billing-service-1e20fb5.md deleted file mode 100644 index f3a35fc3..00000000 --- a/docs/ISuite/50-Development/billing-service-1e20fb5.md +++ /dev/null @@ -1,161 +0,0 @@ - - -# Billing Service - -Billing service is available in both SAP Integration Suite and API business hub enterprise. - -Using billing service, you can view the bill details and download bill details for a specific developer and for a specific month. - -Service to view bills : - -- URL: https://://api/1.0/apimgmt/monetize/bills - -- The following table describes the query parameters required to view the bill details. - - **Query parameters** - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - Parameter name - - - - Required in API portal - - - - Required in API business hub enterprise - - - - Description - - - - Example - -
- - Month - - - - Yes - - - - Yes - - - - Month in MM format - - - - Month = 03 - -
- - Year - - - - Yes - - - - Yes - - - - Year in YYYY format - - - - Year = 2017 - -
- - developer\_id - - - - Yes - - - - No - - - - Developer e-mail Id - - - - developer\_id = jon.doe@sap.com - -
- - application\_id - - - - No - - - - No - - - - Id of a specific application for which bill has to be generated - - - - application\_id = 6C7F88BB-74BE-4CCC-A49A-6A8F2BF1EAC1 - -
- -- You can also view the bill details in the SAP Integration Suite and API business hub enterprise. For more information see, - - - [View Bill Details in the SAP Integration Suite](view-bill-details-in-the-sap-integration-suite-2378110.md) - - [View Bill Details in the API business hub enterprise](view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md) - - diff --git a/docs/ISuite/50-Development/billing-service-a4e2fb8.md b/docs/ISuite/50-Development/billing-service-a4e2fb8.md index 8d7d7fe4..de2a691a 100644 --- a/docs/ISuite/50-Development/billing-service-a4e2fb8.md +++ b/docs/ISuite/50-Development/billing-service-a4e2fb8.md @@ -155,7 +155,7 @@ Service to view bills : - You can also view the bill details in the SAP Integration Suite and API business hub enterprise. For more information see, - - [View Bill Details in the SAP Integration Suite](view-bill-details-in-the-sap-integration-suite-2378110.md) - - [View Bill Details in the API business hub enterprise](view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md) + - [View Bill Details in the API portal](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/2378110c9b23422aa9c7b56afa5c8515.html "View bill details in theAPI portalfor all the applications and products assigned to a particular developer.") :arrow_upper_right: + - [View Bill Details in the API business hub enterprise](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/4ddac6740f344f8d8260bbf2db97d950.html "View the bill details in the API business hub enterprise for all the applications subscribed by a developer.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/configure-the-amqp-receiver-adapter-d5660c1.md b/docs/ISuite/50-Development/configure-the-amqp-receiver-adapter-d5660c1.md index c2527e05..4600c2cc 100644 --- a/docs/ISuite/50-Development/configure-the-amqp-receiver-adapter-d5660c1.md +++ b/docs/ISuite/50-Development/configure-the-amqp-receiver-adapter-d5660c1.md @@ -2,7 +2,7 @@ # Configure the AMQP Receiver Adapter -You se the Advanced Message Queuing Protocol \(AMQP\) receiver adapter to send messages from SAP Integration Suite to queues or topics in an external message broker. +You use the Advanced Message Queuing Protocol \(AMQP\) receiver adapter to send messages from SAP Integration Suite to queues or topics in an external message broker. @@ -19,14 +19,14 @@ You se the Advanced Message Queuing Protocol \(AMQP\) receiver adapter to send m > To be able to connect to queues or topics, you have to create queues and/or topics in the message broker. This needs to be done in the message broker with the configuration tools provided by the message broker. > ### Note: -> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite . In SAP Integration Suite , the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. +> Queues, topics, and messages can only be monitored using tools provided by the message broker. Those monitors are not integrated into SAP Integration Suite. In SAP Integration Suite, the integration flows using the AMQP adapter are monitored and the messages send to or consumed from the message broker. > ### Note: > This adapter exchanges data with a remote component that might be outside the scope of SAP. Make sure that the data exchange complies with your company’s policies. -Once you have created a receiver channel and selected the AMQP receiver adapter \(TCP or WebSocket\), you can configure the following attributes. See [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). +Once you have created a receiver channel and selected the AMQP receiver adapter \(TCP or WebSocket\), you can configure the following attributes. See: [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). @@ -149,7 +149,7 @@ Select *Internet* if you’re connecting directly to the message broker. Select *On-Premise* if you’re connecting to an on-premise message broker. -For more information, see [Using SAP Cloud Connector with Cloud Integration Adapters](../40-RemoteSystems/using-sap-cloud-connector-with-cloud-integration-adapters-65a60e7.md). +For more information, see: [Using SAP Cloud Connector with Cloud Integration Adapters](../40-RemoteSystems/using-sap-cloud-connector-with-cloud-integration-adapters-65a60e7.md).
-Select one of the options based on the description given below: +Select one of the options based on the description given next: - *Production*: If you select this option, the Ariba Network processes the messages. This connection mode is set as the default deployment mode. @@ -175,7 +175,7 @@ Select one of the options based on the description given below: -Select one of the options based on the description given below: +Select one of the options based on the description given next: - *Buyer*: Select this option, if you hold a buyer account on the Ariba Network. @@ -194,7 +194,7 @@ Select one of the options based on the description given below: -Select one of the options based on the description given below: +Select one of the options based on the description given next: - *Network ID*: A unique alphanumeric value assigned to every organization registered on Ariba SN; for example, AN01000000001. @@ -213,7 +213,7 @@ Select one of the options based on the description given below: -Select one of the options based on the description given below: +Select one of the options based on the description given next: - *Shared Key*: If you have set the shared key in your Ariba account. diff --git a/docs/ISuite/50-Development/configure-the-ftp-receiver-adapter-c16d331.md b/docs/ISuite/50-Development/configure-the-ftp-receiver-adapter-c16d331.md index 72d1510e..e0a90b49 100644 --- a/docs/ISuite/50-Development/configure-the-ftp-receiver-adapter-c16d331.md +++ b/docs/ISuite/50-Development/configure-the-ftp-receiver-adapter-c16d331.md @@ -48,7 +48,7 @@ If you’ve configured a receiver FTP adapter, message processing is performed a > > - You can establish a connection to your on-premise system by using Cloud Connector: [SAP Connectivity Service](https://help.sap.com/viewer/cca91383641e40ffbe03bdc78f00f681/Cloud/en-US/e933fd930039402c907d5afaa75eb0e1.html). > -> - This adapter doesn’t support connections to SFTP servers. See [Configure the SFTP Receiver Adapter](configure-the-sftp-receiver-adapter-4ef52cf.md). +> - This adapter doesn’t support connections to SFTP servers. See: [Configure the SFTP Receiver Adapter](configure-the-sftp-receiver-adapter-4ef52cf.md). Once you’ve created a receiver channel and selected the FTP receiver adapter, you can configure the following attributes. Select the *General* tab and provide values in the fields as follows. @@ -152,7 +152,7 @@ If the file has an extension \(for example, .xml\), the timestamp is appended to ***myfile20151201170800.xml*** > ### Note: -> Be aware of the following behavior if you’ve configured the file name dynamically: Ifyou’ve selected the *Append Timestamp* option, the timestamp overrides the file name defined dynamically via the header \(`CamelFileName`\). +> Be aware of the following behavior if you’ve configured the file name dynamically: If you’ve selected the *Append Timestamp* option, the timestamp overrides the file name defined dynamically via the header \(`CamelFileName`\). > > *Append Timestamp* and dynamically configuring *File Name* \(through a Camel simple expression\) must not be used together. The reason is that using the *Append Timestamp* option results in generating a simple expression for the date. Both simple expressions result in an invalid expression that can’t be processed correctly. @@ -191,7 +191,7 @@ The type of proxy that you’re using to connect to the target system. - Select *On-Premise* if you are connecting to an on-premise system. - For more information, see [Using SAP Cloud Connector with Cloud Integration Adapters](../40-RemoteSystems/using-sap-cloud-connector-with-cloud-integration-adapters-65a60e7.md). + For more information, see: [Using SAP Cloud Connector with Cloud Integration Adapters](../40-RemoteSystems/using-sap-cloud-connector-with-cloud-integration-adapters-65a60e7.md). For more information on how to use the *On-Premise* option to connect to an on-premise FTP server, check out the SAP Community blog [Cloud Integration – How to Connect to an On-Premise sftp server via Cloud Connector](https://blogs.sap.com/2018/11/16/cloud-integration-how-to-connect-to-an-on-premise-sftp-server-via-cloud-connector/). diff --git a/docs/ISuite/50-Development/configure-the-jms-receiver-adapter-79edc04.md b/docs/ISuite/50-Development/configure-the-jms-receiver-adapter-79edc04.md index 84bb17d6..0b99b53f 100644 --- a/docs/ISuite/50-Development/configure-the-jms-receiver-adapter-79edc04.md +++ b/docs/ISuite/50-Development/configure-the-jms-receiver-adapter-79edc04.md @@ -14,7 +14,7 @@ The JMS \(Java Message Service\) receiver adapter enables asynchronous decouplin > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Note that this adapter works with a message broker provided by SAP \(based on the SAP Event Mesh capability\). It does not support connectivity to any other, customer-provided message brokers. The usage of this adapter is supported by all SAP Integration Suite editions, except the basic edition \(see SAP note [2903776](https://me.sap.com/notes/2903776)\). +> Note that this adapter works with a message broker provided by SAP \(based on the SAP Event Mesh capability\). It does not support connectivity to any other, customer-provided message brokers. The usage of this adapter is supported by all SAP Integration Suite editions, except the basic edition, see SAP note [2903776](https://me.sap.com/notes/2903776). To understand the concept of asynchronous decoupling, assume that a sender sends a message to SAP Cloud Integration \(inbound processing\). If there's an error in outbound processing \(for example, a receiver can't be reached temporarily\), the middleware \(SAP Cloud Integration\) retries message processing independently. There's no need that the sender triggers a reprocessing of the message as soon as the error situation has been solved. The sender relies on the middleware to do that. To support this scenario, the message received from the sender is stored in a queue \(using the JMS receiver adapter\). Outbound processing is modeled in an integration flow that initially consumes the message from the queue \(using the JMS sender adapter\). The outbound integration flow retries the message from the queue as long as the error situation lasts. diff --git a/docs/ISuite/50-Development/configure-the-jms-sender-adapter-161791b.md b/docs/ISuite/50-Development/configure-the-jms-sender-adapter-161791b.md index 0157f436..245100fc 100644 --- a/docs/ISuite/50-Development/configure-the-jms-sender-adapter-161791b.md +++ b/docs/ISuite/50-Development/configure-the-jms-sender-adapter-161791b.md @@ -14,13 +14,13 @@ The JMS \(Java Message Service\) sender adapter enables asynchronous decoupling > To use the latest version of a flow step or adapter – edit your integration flow, delete the flow step or adapter, add the step or adapter, and configure the same. Finally, redeploy the integration flow. See: [Updating your Existing Integration Flow](updating-your-existing-integration-flow-1f9e879.md). > ### Note: -> Note that this adapter works with a message broker provided by SAP \(based on the SAP Event Mesh capability\). It does not support connectivity to any other, customer-provided message brokers. The usage of this adapter is supported by all SAP Integration Suite editions, except the basic edition \(see SAP note [2903776](https://me.sap.com/notes/2903776)\). +> Note that this adapter works with a message broker provided by SAP \(based on the SAP Event Mesh capability\). It does not support connectivity to any other, customer-provided message brokers. The usage of this adapter is supported by all SAP Integration Suite editions, except the basic edition, see SAP note [2903776](https://me.sap.com/notes/2903776). To understand the concept of asynchronous decoupling, assume that a sender sends a message to SAP Integration Suite \(inbound processing\). If there's an error in outbound processing \(for example, a receiver can't be reached temporarily\), the middleware \(SAP Integration Suite\) retries message processing independently. There's no need that the sender triggers a reprocessing of the message as soon as the error situation has been solved. The sender relies on the middleware to do that. To support this scenario, the message received from the sender is stored in a queue \(using the JMS receiver adapter\). Outbound processing is modeled in an integration flow that initially consumes the message from the queue \(using the JMS sender adapter\). The outbound integration flow retries the message from the queue as long as the error situation lasts. The following figure shows the involved components. -![](images/JMS_Sender_Adapter_6348733.png) +![The tenant opens a connection with the Message Broker. Meanwhile, the message received from the tenant is stored in a queue. The queue is using the JMS receiver adapter. The outbound integration flow retries the message from the queue if the error situation lasts.](images/JMS_Sender_Adapter_6348733.png) Assuming that you have designed an integration flow with a JMS sender adapter. On deployment of the integration flow, the JMS queue \(as specified in the adapter\) is created and the tenant opens a consumer connection to the message broker. The message broker pushes messages through this connection. @@ -30,13 +30,13 @@ Assuming that you have designed an integration flow with a JMS sender adapter. O > Therefore, it is recommended to first deploy all integration flows with the JMS sender adapters that are related to your scenario. After this step, all required queues are in place when the JMS receiver adapter comes into play and dynamically determines the related queue names. > ### Note: -> Certain constraints apply with regard to the number and capacity of queues involved, as well as for the headers and exchange properties defined in the integration flow before the message is saved to the queue. See [JMS Resource Limits and Optimizing their Usage](jms-resource-limits-and-optimizing-their-usage-4857054.md) +> Certain constraints apply with regard to the number and capacity of queues involved, as well as for the headers and exchange properties defined in the integration flow before the message is saved to the queue, see [JMS Resource Limits and Optimizing their Usage](jms-resource-limits-and-optimizing-their-usage-4857054.md) > > The JMS adapter does not serialize messages. This means that there is no guarantee of the order in which the messages are consumed by SAP Cloud Integration. When the integration flow \(with the JMS sender adapter\) is deployed on multiple worker nodes, the messages are processed in parallel. For additional information, also check out the description of parameter *Number of Concurrent Processes*. -Property `SAP_IntegrationFlowID` contains the ID of the integration flow that sent the message to the JMS queue \(see [Headers and Exchange Properties Provided by the Integration Framework](headers-and-exchange-properties-provided-by-the-integration-framework-d0fcb09.md)\). +Property `SAP_IntegrationFlowID` contains the ID of the integration flow that sent the message to the JMS queue, see [Headers and Exchange Properties Provided by the Integration Framework](headers-and-exchange-properties-provided-by-the-integration-framework-d0fcb09.md). -Once you've created a sender channel and selected the JMS sender adapter, you can configure the following attributes. See [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). +Once you've created a sender channel and selected the JMS sender adapter, you can configure the following attributes, see [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). Select the *General* tab and provide values in the fields as follows. @@ -120,7 +120,7 @@ A maximum length of 80 characters is allowed. -Enter the number of concurrent processes for each worker node. The recommended value depends on the number of worker nodes, the number of queues on the tenant, and the incoming load. Make sure to enter a value that is as small as possible \(1-5\) because JMS resources are limited \(see: [Cloud Integration – JMS Resource and Size Limits](https://blogs.sap.com/2017/10/04/cloud-integration-jms-resource-and-size-limits-in-cpi-enterprise-edition/) and [Cloud Integration – Configure Asynchronous Messaging with Retry Using JMS Adapter](https://blogs.sap.com/2017/06/19/cloud-integration-configure-asynchronous-messaging-with-retry-using-jms-adapter/)\). +Enter the number of concurrent processes for each worker node. The recommended value depends on the number of worker nodes, the number of queues on the tenant, and the incoming load. Make sure to enter a value that is as small as possible \(1-5\) because JMS resources are limited, see: [Cloud Integration – JMS Resource and Size Limits](https://blogs.sap.com/2017/10/04/cloud-integration-jms-resource-and-size-limits-in-cpi-enterprise-edition/) and [Cloud Integration – Configure Asynchronous Messaging with Retry Using JMS Adapter](https://blogs.sap.com/2017/06/19/cloud-integration-configure-asynchronous-messaging-with-retry-using-jms-adapter/). > ### Note: > Default number of concurrent processes is `1`. Increase this number only if parallel processing is required for your scenario. However, be aware of the fact that, when processing large messages, a high number of concurrent processes can lead to out of memory problems. @@ -147,7 +147,7 @@ Enter a value for the amount of time to wait before retrying message delivery. > ### Note: > In the JMS sender channel, you can configure the time intervals between retries, but you cannot configure that processing will end after a specific number of retries. If required, you can configure this in an exception subprocess that calls a local process for retry handling using the header `SAPJMSRetries` set by the JMS sender adapter. > -> For more information about explicit retry configuration, read the SAP Community Blog [Cloud Integration – Configure Asynchronous Messaging with Retry Using JMS Adapter](https://blogs.sap.com/2017/06/19/cloud-integration-configure-asynchronous-messaging-with-retry-using-jms-adapter/) +> For more information about explicit retry configuration, see the SAP Community Blog [Cloud Integration – Configure Asynchronous Messaging with Retry Using JMS Adapter](https://blogs.sap.com/2017/06/19/cloud-integration-configure-asynchronous-messaging-with-retry-using-jms-adapter/) diff --git a/docs/ISuite/50-Development/configure-the-mail-sender-adapter-e23e9cc.md b/docs/ISuite/50-Development/configure-the-mail-sender-adapter-e23e9cc.md index 63620005..de083e00 100644 --- a/docs/ISuite/50-Development/configure-the-mail-sender-adapter-e23e9cc.md +++ b/docs/ISuite/50-Development/configure-the-mail-sender-adapter-e23e9cc.md @@ -25,7 +25,7 @@ If you have configured a mail sender adapter, message processing is performed as > > [Important Notes on Security Risks and Mailbox Settings](important-notes-on-security-risks-and-mailbox-settings-34aa095.md) -Once you have created a sender channel and selected the mail sender adapter, you can configure the following attributes. See [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). +Once you have created a sender channel and selected the mail sender adapter, you can configure the following attributes. See: [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). Select the *General* tab and provide values in the fields as follows. @@ -118,7 +118,7 @@ Select *Internet* if you’re connecting to a cloud mail server. Select *On-Premise* if you’re connecting to an on-premise mail server. -For more information, see [Using SAP Cloud Connector with Cloud Integration Adapters](../40-RemoteSystems/using-sap-cloud-connector-with-cloud-integration-adapters-65a60e7.md). +For more information, see: [Using SAP Cloud Connector with Cloud Integration Adapters](../40-RemoteSystems/using-sap-cloud-connector-with-cloud-integration-adapters-65a60e7.md).
-Example: With the configuration shown in the figure below, the integration flow are activated every week on Monday to poll e-mails on this day every hour, between 00:00 and 24:00 \(Greenwich Time Zone\). +Example: With the configuration shown in the next figure, the integration flow are activated every week on Monday to poll e-mails on this day every hour, between 00:00 and 24:00 \(Greenwich Time Zone\). ![](images/Mail_Adapter_Scheduler_dbf7aee.png) @@ -651,9 +651,9 @@ Example: With the configuration shown in the figure below, the integration flow > > - To access the mail attributes \(Subject, From, or To\), you have to set them manually as *Allowed Headers* on the *Runtime Configuration* tab. This adds them to an allowlist. > -> - The mail sender adapter can decrypt encrypted mails and verifies the signature of a signed message. You can access the results of the verification via headers and Exchange properties. For more information, see [Headers and Exchange Properties Provided by the Integration Framework](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/d0fcb0988f034e889f611c6e36d43ad5.html?table_hhg_tbq_f2b=SAP_MAIL). +> - The mail sender adapter can decrypt encrypted mails and verifies the signature of a signed message. You can access the results of the verification via headers and Exchange properties. For more information, see: [Headers and Exchange Properties Provided by the Integration Framework](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/d0fcb0988f034e889f611c6e36d43ad5.html?table_hhg_tbq_f2b=SAP_MAIL). > -> - The property *Include Original Mail* was changed to allow the saving of duplicate attachments.Before this change, duplicate attachments got lost. +> - The property *Include Original Mail* was changed to allow the saving of duplicate attachments. Before this change, duplicate attachments got lost. **Related Information** diff --git a/docs/ISuite/50-Development/configure-the-odata-v2-receiver-adapter-c5c2e38.md b/docs/ISuite/50-Development/configure-the-odata-v2-receiver-adapter-c5c2e38.md index c31accc9..1e3cfb51 100644 --- a/docs/ISuite/50-Development/configure-the-odata-v2-receiver-adapter-c5c2e38.md +++ b/docs/ISuite/50-Development/configure-the-odata-v2-receiver-adapter-c5c2e38.md @@ -498,7 +498,7 @@ If the value \* is entered, **all** the HTTP response header values are converte -The adapter makes a $metadata call, before the actual endpoint call. Not all headers or query parameters are passed to the $metadata call. If your service needs some headers \(for example header `apikey`, which is a customer authorization header to invoke API endpoints\) or parameters then you can provide the same in the request headers and query parameters. +The adapter makes an internal $metadata call during the message processing, before the actual endpoint call. Not all headers or query parameters are passed to the $metadata call. If your service needs some headers or parameters, provide the same in the request headers and query parameters fields. *Request Headers* – provide a pipe-separated \(|\) list of HTTP request headers to be sent to the $metadata call. diff --git a/docs/ISuite/50-Development/configure-the-odata-v4-receiver-adapter-cd66a12.md b/docs/ISuite/50-Development/configure-the-odata-v4-receiver-adapter-cd66a12.md index 8ad20ce1..4123e574 100644 --- a/docs/ISuite/50-Development/configure-the-odata-v4-receiver-adapter-cd66a12.md +++ b/docs/ISuite/50-Development/configure-the-odata-v4-receiver-adapter-cd66a12.md @@ -367,7 +367,7 @@ If the value \* is entered, **all** the HTTP response header values are converte -The adapter makes a $metadata call, before the actual endpoint call. Not all headers or query parameters are passed to the $metadata call. If your service needs some headers or parameters, provide the same in the request headers and query parameters fields. +The adapter makes an internal $metadata call during the message processing, before the actual endpoint call. Not all headers or query parameters are passed to the $metadata call. If your service needs some headers or parameters, provide the same in the request headers and query parameters fields. *Request Headers* – provide a pipe-separated \(|\) list of HTTP request headers to be sent to the $metadata call. @@ -543,6 +543,18 @@ The adapter supports *Function Import* for the following return types: +*Sub Levels* + + + + +Sub-levels of the entity that you want to access. For example, if you want to access the field *Description* in the entity *Products*, and the field is located at *Category* \> *Products* \> *Description*, you select the *Sub Levels* as `3` since the field you want to access is at the third level. + + + + + + *Select Entity* @@ -581,6 +593,18 @@ Fields associated with the entity that you want to perform the operation on. +*Filter Fields* + + + + +Type the field name that you're looking for out to narrow down your search. + + + + + + *Top* diff --git a/docs/ISuite/50-Development/configure-the-soap-soap-1-x-receiver-adapter-57f7b34.md b/docs/ISuite/50-Development/configure-the-soap-soap-1-x-receiver-adapter-57f7b34.md index 409d13d8..52cdbde2 100644 --- a/docs/ISuite/50-Development/configure-the-soap-soap-1-x-receiver-adapter-57f7b34.md +++ b/docs/ISuite/50-Development/configure-the-soap-soap-1-x-receiver-adapter-57f7b34.md @@ -45,11 +45,11 @@ Supported Header \(Receiver Adapter\): > - Document/literal > > -> RPC stands for *Remote Procedure Call*. For more information on these options and the meaning of *literal* and *encoded*, see [http://www.w3.org/TR/2001/NOTE-wsdl-20010315](http://www.w3.org/TR/2001/NOTE-wsdl-20010315). +> RPC stands for *Remote Procedure Call*. For more information on these options and the meaning of *literal* and *encoded*, see: [http://www.w3.org/TR/2001/NOTE-wsdl-20010315](http://www.w3.org/TR/2001/NOTE-wsdl-20010315). -Once you have created a receiver channel and selected the SOAP \(SOAP 1.x\) receiver Adapter, you can configure the following attributes. See [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). +Once you have created a receiver channel and selected the SOAP \(SOAP 1.x\) receiver Adapter, you can configure the following attributes. See: [Overview of Integration Flow Editor](overview-of-integration-flow-editor-db10beb.md). Select the *General* tab and provide values in the fields as follows. @@ -168,7 +168,7 @@ To select the WSDL from a source, you have the following options: - Select a WSDL from your file system. -- Select a WSDL from your integration flow resources \(see [Manage Resources of an Integration Flow](manage-resources-of-an-integration-flow-b5968b2.md)\). +- Select a WSDL from your integration flow resources \(see: [Manage Resources of an Integration Flow](manage-resources-of-an-integration-flow-b5968b2.md)\). In the *Resources* view, you can upload an individual WSDL file or an archive file \(file ending with `.zip`\) that contains multiple WSDLs or XSDs, or both. For example, you can upload a WSDL that contains an imported XSD referenced by an `xsd:import` statement. This means that if you want to upload a WSDL and dependent resources, you need to add the parent file along with its dependencies in a single archive \(`.zip` file\). @@ -395,7 +395,7 @@ Specifies how WS-Security settings are to be configured. - *Via Manual Configuration in Channel* - The security settings are to be configured manually \(see the attributes listed below\). + The security settings are to be configured manually \(see the attributes listed next\). - *Based on Policies in WSDL* @@ -462,7 +462,7 @@ If you have selected the option *Plain Text Password* or *Hashed Password*, ente -Alias that was assigned to the authorized user and password during tenant deployment +Alias that was assigned to the authorized user and password during tenant deployment. diff --git a/docs/ISuite/50-Development/configure-the-soap-soap-1-x-sender-adapter-a178913.md b/docs/ISuite/50-Development/configure-the-soap-soap-1-x-sender-adapter-a178913.md index 0d807946..516838f4 100644 --- a/docs/ISuite/50-Development/configure-the-soap-soap-1-x-sender-adapter-a178913.md +++ b/docs/ISuite/50-Development/configure-the-soap-soap-1-x-sender-adapter-a178913.md @@ -34,7 +34,7 @@ Supported Header \(Sender Adapter\): > ### Caution: > Usage of Different WSDL Binding Styles: > -> Note that messages that contain RPC-style bindings aren't supported by the SOAP sender channel. Also WSDL files using RPC-style bindings aren'tnot supported. Use document-style payloads and WSDL files. +> Note that messages that contain RPC-style bindings aren't supported by the SOAP sender channel. Also WSDL files using RPC-style bindings aren't supported. Use document-style payloads and WSDL files. > > A WSDL binding describes how the service is bound to a message protocol. For the processing of SOAP messages, you can choose from the following binding types: > @@ -165,7 +165,7 @@ To select the WSDL from a source, you've the following options: > > We recommend that you don't use blanks in WSDL names or directories, as this can lead to runtime issues. -You can download the WSDL from the Web UI *Monitor* section by selecting the deployed integration flow \(under *Manage Integration Content*\). Under Endpoints, below the integration flow endpoint address, you find download options \(*WSDL* or *WSDL without policies*\). +You can download the WSDL from the Web UI *Monitor* section by selecting the deployed integration flow \(under *Manage Integration Content*\). Under Endpoints, after the integration flow endpoint address, you find download options \(*WSDL* or *WSDL without policies*\). The WSDL download doesn't work for WSDLs with external references because these WSDLs can't be parsed. @@ -280,7 +280,7 @@ Specifies the way how WS-Security settings are to be configured. - *Via Manual Configuration in Channel* - The security settings are manually to be configured \(see below listed attributes\). + The security settings are manually to be configured \(see listed attributes next\). - *None* diff --git a/docs/ISuite/50-Development/configure-the-xi-sender-adapter-41a1a57.md b/docs/ISuite/50-Development/configure-the-xi-sender-adapter-41a1a57.md index 005f3b2b..def16f23 100644 --- a/docs/ISuite/50-Development/configure-the-xi-sender-adapter-41a1a57.md +++ b/docs/ISuite/50-Development/configure-the-xi-sender-adapter-41a1a57.md @@ -290,7 +290,7 @@ There are the following options: The message is sent asynchronously. This means that an immediate response is given back to the sender system and the message is retried from the temporary storage to ensure a processing of the message. - This option guarantees that the message is processed exactly once on the tenant. If a message with identical XI message ID is received multiple times from a sender, only the first one will be processed. The subsequent messages can be identified as duplicates \(based on the value of the message header `SapMessageIdEx`, see below\) and won't be processed. + This option guarantees that the message is processed exactly once on the tenant. If a message with identical XI message ID is received multiple times from a sender, only the first one will be processed. The subsequent messages can be identified as duplicates \(based on the value of the message header `SapMessageIdEx`, see as follows\) and won't be processed. > ### Note: > For *Exactly Once* handling, the sender XI adapter saves the protocol-specific message ID in the header `SapMessageIdEx`. If this header is set, XI receiver uses the content of this header as the message ID for outbound communication. Usually, this is the desired behavior and enables the receiver to identify any duplicates. However, if the sender system is also the receiver system, or several variants of the message are sent to the same system \(for example, in an external call or multicast\), the receiver system will incorrectly identify these messages as duplicates. In this case, the header `SapMessageIdEx` must be deleted \(for example, using a content modifier\) or overwritten with a new generated message ID. This deactivates *Exactly Once* processing \(that is, duplicates are no longer recognized by the protocol\). @@ -337,7 +337,7 @@ You can choose among the following storage types: > > This automatically generated name is subject to a length restriction and must be no more than 40 characters \(including the underscore\). If the data store name exceeds this limit, you must shorten the participant name or channel name accordingly. > - > Below the data store name, you find a reference to the associated integration flow in the following form: `/XI` + > After the data store name, you find a reference to the associated integration flow in the following form: `/XI` - *JMS Queue* \(only if *At Least Once* is selected for *Quality of Service*\) @@ -404,14 +404,14 @@ Enter a value for the timeout of the in-progress repository. After this time, a -Specify the poll interval in seconds to wait before consuming messages from the data store. The default is set to 1 s, the max. is set to 300 s. +Specify the poll interval in seconds to wait before consuming messages from the data store. The default is set to 1 second, the max. is set to 300 seconds. The adapter continuously consumes messages from the data store if the data store contains entries that are ready to be processed. The poll interval only becomes effective as soon as the data store doesn't contain such entries anymore. From that point in time, the adapter waits for the time specified by the *Poll Interval* parameter and then again tries to consume messages from the data store. > ### Note: -> The smaller the poll interval \(for example, 1 s or less\), the more load is put on the data store. +> The smaller the poll interval \(for example, 1 second or less\), the more load is put on the data store. @@ -593,9 +593,9 @@ If a message is rejected because it exceeds the configured limit, the sender rec [Headers and Exchange Properties Provided by the Integration Framework](headers-and-exchange-properties-provided-by-the-integration-framework-d0fcb09.md "") -[https://blogs.sap.com/2018/06/04/cloud-integration-configuring-scenario-using-the-xi-sender-adapter/](https://blogs.sap.com/2018/06/04/cloud-integration-configuring-scenario-using-the-xi-sender-adapter/) +[Configuring a Scenario Using the XI Sender Adapter](https://blogs.sap.com/2018/06/04/cloud-integration-configuring-scenario-using-the-xi-sender-adapter/) -[https://blogs.sap.com/2018/12/04/cloud-integration-configuring-scenario-with-xi-sender-handling-multiple-interfaces/](https://blogs.sap.com/2018/12/04/cloud-integration-configuring-scenario-with-xi-sender-handling-multiple-interfaces/) +[Cloud Integration - Configuring Scenario with XI Sender handling Multiple Interfaces](https://blogs.sap.com/2018/12/04/cloud-integration-configuring-scenario-with-xi-sender-handling-multiple-interfaces/) -[https://blogs.sap.com/2018/08/15/cloud-integration-configuring-explicit-retry-in-exception-sub-process-for-xi-adapter-scenarios/](https://blogs.sap.com/2018/08/15/cloud-integration-configuring-explicit-retry-in-exception-sub-process-for-xi-adapter-scenarios/) +[Cloud Integration - Configuring Explicit Retry in Exception Sub-Process for XI Adapter Scenarios](https://blogs.sap.com/2018/08/15/cloud-integration-configuring-explicit-retry-in-exception-sub-process-for-xi-adapter-scenarios/) diff --git a/docs/ISuite/50-Development/conversion-rules-for-xml-to-json-conversion-66d099d.md b/docs/ISuite/50-Development/conversion-rules-for-xml-to-json-conversion-66d099d.md index 4db1011e..0b9e93d5 100644 --- a/docs/ISuite/50-Development/conversion-rules-for-xml-to-json-conversion-66d099d.md +++ b/docs/ISuite/50-Development/conversion-rules-for-xml-to-json-conversion-66d099d.md @@ -92,7 +92,7 @@ The conversion from XML format to JSON format follows the following rules: [How Streaming in the XML-to-JSON Converter Works](how-streaming-in-the-xml-to-json-converter-works-4e05044.md "During streaming the XML document is processed in parts or segments:") - + - + diff --git a/docs/ISuite/50-Development/copy-an-api-artifact-820c9e8.md b/docs/ISuite/50-Development/copy-an-api-artifact-820c9e8.md index c320a566..05ceb879 100644 --- a/docs/ISuite/50-Development/copy-an-api-artifact-820c9e8.md +++ b/docs/ISuite/50-Development/copy-an-api-artifact-820c9e8.md @@ -71,3 +71,12 @@ After the copying process is finished, you will receive a success message instru You can access the API artifact in view mode, allowing you to download, deploy, and copy the API artifact. If you want to delete the API artifact, simply switch to edit mode by selecting the *Edit* option. +**Related Information** + + +[Add an API Artifact](add-an-api-artifact-c2fe62c.md "Add an API artifact to an package.") + +[Policy Definition and Types of Policies Supported by Edge Integration Cell](policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md "You can define the behavior of an API by using policy steps.") + +[Deploying an API Artifact](deploying-an-api-artifact-b70e7ec.md "After creating an API artifact, it is necessary to deploy it on the chosen runtime profile in order to make it executable and ready for use.") + diff --git a/docs/ISuite/50-Development/create-a-rate-plan-b57bc3b.md b/docs/ISuite/50-Development/create-a-rate-plan-b57bc3b.md index 4807a1c8..d59c0a82 100644 --- a/docs/ISuite/50-Development/create-a-rate-plan-b57bc3b.md +++ b/docs/ISuite/50-Development/create-a-rate-plan-b57bc3b.md @@ -130,9 +130,9 @@ You are creating a rate plan. **Related Information** -[Attach Rate Plan to a Product](attach-rate-plan-to-a-product-cc5c942.md "Attach a rate plan to a product using the SAP Integration Suite.") +[Attach Rate Plan to a Product](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cc5c942e32df494785c33ba0fc0346f4.html "Attach a rate plan to a product using the API portal.") :arrow_upper_right: -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") +[Update a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/b8c1e6b68be74ead8700f7f8be9baa8b.html "Update a rate plan using the API portal.") :arrow_upper_right: -[Delete a Rate Plan](delete-a-rate-plan-d4181ad.md "Delete a rate plan using the SAP Integration Suite.") +[Delete a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/d4181ad418e4446e830c498d672204ff.html "Delete a rate plan using the API portal.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/create-a-rate-plan-cfe6a30.md b/docs/ISuite/50-Development/create-a-rate-plan-cfe6a30.md deleted file mode 100644 index 19605676..00000000 --- a/docs/ISuite/50-Development/create-a-rate-plan-cfe6a30.md +++ /dev/null @@ -1,138 +0,0 @@ - - -# Create a Rate Plan - -Create a rate plan using the SAP Integration Suite. - - - -
- -## Prerequisites - -You are assigned the admin role. - - - -## Context - -You are creating a rate plan. - - - -## Procedure - -1. Log on to the SAP Integration Suite. - -2. From the navigation bar, choose *Monetize*. - -3. On the *Monetize* screen, choose *Create*. - -4. On the *Create Rate Plan* screen, enter values for the following fields: - - - **Name**: Name of the rate plan. - - **Description**: Outline of the plan. - - **Frequency**: Monthly - - **Currency**: Euro - - **Basic Charge**: Minimum bill amount paid by the user after subscribing to the product associated with this rate plan. - - **Rate per API Call**: Amount in Euros for one API call. - - **Plan Type**: Choose either *Basic* or *Tier*. - - **Basic**: In Basic rate plan type, the rate charged per API call is fixed. - - **Tier**: In Tier based rate plan type, the rate charged per API call varies based on the number of API calls. - - > ### Example: - > Tier based rate plan - - **Tier based rate plan** - - - - - - - - - - - - - - - - - - - - - - - -
- - API Calls From - - - - API Calls To - - - - Rate per API Call - -
- - 0 - - - - 5000 - - - - 0.0 - -
- - 5001 - - - - 10000 - - - - 0.5 - -
- - 10001 - - - - - - - - 0.7 - -
- - In the above example, for initial 5000 calls the rate charged is 0.0 per API call. For the next 5000 calls the rate charged is 0.5 per API call and for 10000 + calls the rate charged is 0.7 per API call. For instance, if 8000 calls are made, then the rates per API call is 0.0 for 0-5000 calls and 0.5 for the remaining 3000 calls. - - > ### Note: - > If the *API Calls To* field is left empty, then the system considers the field value to be unlimited. - - - -5. Choose *Save*. - - -**Related Information** - - -[Attach Rate Plan to a Product](attach-rate-plan-to-a-product-cc5c942.md "Attach a rate plan to a product using the SAP Integration Suite.") - -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") - -[Delete a Rate Plan](delete-a-rate-plan-d4181ad.md "Delete a rate plan using the SAP Integration Suite.") - diff --git a/docs/ISuite/50-Development/create-an-application-classic-design-7b4e71b.md b/docs/ISuite/50-Development/create-an-application-classic-design-7b4e71b.md index 8caf8ee1..895b6d1e 100644 --- a/docs/ISuite/50-Development/create-an-application-classic-design-7b4e71b.md +++ b/docs/ISuite/50-Development/create-an-application-classic-design-7b4e71b.md @@ -12,7 +12,7 @@ Create an Application to consume the required APIs. **Prerequisites** -- You either have the `AuthGroup.API.ApplicationDeveloper` role or `AuthGroup.API.Admin` role assigned to you. For more information on roles, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right:. +- You either have the `AuthGroup.API.ApplicationDeveloper` role or `AuthGroup.API.Admin` role assigned to you. For more information on roles, see [User Roles in API Management \(New\)](../user-roles-in-api-management-new-911ca5a.md). > ### Note: > The AuthGroup.API.ApplicationDeveloper role must not be assigned manually to a user form the SAP BTP Cockpit and this role must not be a part of any user group assignment. diff --git a/docs/ISuite/50-Development/create-and-deploy-an-odata-api-artifact-8bc912d.md b/docs/ISuite/50-Development/create-and-deploy-an-odata-api-artifact-8bc912d.md index 2fc4f4f4..c8a246ee 100644 --- a/docs/ISuite/50-Development/create-and-deploy-an-odata-api-artifact-8bc912d.md +++ b/docs/ISuite/50-Development/create-and-deploy-an-odata-api-artifact-8bc912d.md @@ -10,8 +10,6 @@ Use this procedure to create and deploy an OData API artifact. ## Context -We've unified the experience of creating all API artifacts with a single entry point. You now first the select the runtime profile of your choice and then move to appropriate steps to create the API artifacts that the runtime profile supports. For more information, see help - An OData API artifact creates an OData API-based integration scenario with the OData V2 sender adapter.
diff --git a/docs/ISuite/50-Development/create-or-update-or-read-an-application-using-subscription-key-e2645b5.md b/docs/ISuite/50-Development/create-or-update-or-read-an-application-using-subscription-key-e2645b5.md deleted file mode 100644 index 105e99a3..00000000 --- a/docs/ISuite/50-Development/create-or-update-or-read-an-application-using-subscription-key-e2645b5.md +++ /dev/null @@ -1,227 +0,0 @@ - - -# Create or Update or Read an Application using Subscription key - -Creating, updating, and reading an application using the Subscription key. - -You can use the following metadata for Subscription entity. - -> ### Note: -> To use the monetization feature, it is recommended to use Subscription entity and not the Application entity to create or update or read an application. - -> ### Sample Code: -> ``` -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> ``` - -URL of Subscription Entity: /odata/1.0/data.svc/APIMgmt.Subscriptions - -Use the below mentioned payload to create an application using Subscription entity : - -URL: /odata/1.0/data.svc//APIMgmt.Applications - -Request Method: POST - -Content-Type: application/json - -> ### Code Syntax: -> Payload -> -> ``` -> { -> "id": "00000000000000000000000000000000", -> "version": "1", -> "title": "App_Title", -> "description": "Description", -> "callbackurl": "http://www.callbackurl.com", -> "ToSubscriptions": [ -> { -> "id": "00000000000000000000000000000000", -> "ToAPIProduct": [ -> { -> "__metadata": { -> "uri": "APIMgmt.APIProducts('Product_Catalog')" -> } -> } -> ], -> "ToRatePlan": [ -> { -> "__metadata": { -> "uri": "APIMgmt.RatePlans('E8BF82AA-F7B0-427F-881A-D246A047BBD0')" -> } -> } -> ] -> } -> ] -> } -> -> ``` - -Use the below mentioned payload to update fields like title or callback url or description in the application using Subscription entity : - -URL: /odata/1.0/data.svc/$batch - -Method: POST - -Content-Type: multipart/mixed; boundary=batch\_349d851f-79ed-44bc-b67a-3159f7cfcc17 - -Content-Length: - -> ### Code Syntax: -> Payload -> -> ``` -> --batch_b72a-e938-270d -> Content-Type: multipart/mixed; boundary=changeset_319c-d23e-258e -> -> --changeset_319c-d23e-258e -> Content-Type: application/http -> Content-Transfer-Encoding: binary -> -> PUT APIMgmt.Applications('238D7CA1-3F61-470B-BC73-37FF311739E2') HTTP/1.1 -> Accept-Language: en-US -> Accept: application/json -> MaxDataServiceVersion: 2.0 -> DataServiceVersion: 2.0 -> Content-Type: application/json -> Content-Length: 355 -> -> {"id":"238D7CA1-3F61-470B-BC73-37FF311739E2","title":"App_Title_Updated","callbackurl":"http://www.callbackurl_updated.com","description":"Description Updated.","app_key":"FuoGpWnZR0SJJedimgRpACH6XaiJc1XR","reg_id":"5f1007f1cd5c47ea8a209ce1056798f8","version":"1","app_secret":"rpZAJyTgwFGDLyeh","valid_from":null,"valid_to":null,"developer_id":"I305297"} -> --changeset_319c-d23e-258e-- -> -> --batch_b72a-e938-270d-- -> -> ``` - -Use the below mentioned payload to update the application to add and remove a product using Subscription entity : - -URL: /odata/1.0/data.svc/$batch - -Method: POST - -Content-Type: multipart/mixed; boundary=batch\_349d851f-79ed-44bc-b67a-3159f7cfcc17 - -Content-Length: - -> ### Code Syntax: -> Payload -> -> ``` -> --batch_ce8f-d810-b289 -> Content-Type: multipart/mixed; boundary=changeset_0750-94e8-367a -> -> --changeset_0750-94e8-367a -> Content-Type: application/http -> Content-Transfer-Encoding: binary -> -> PUT APIMgmt.Applications('238D7CA1-3F61-470B-BC73-37FF311739E2') HTTP/1.1 -> RequestId: cf1da741-bd68-401e-95d7-9bcf0475112b -> Accept-Language: en-US -> Accept: application/json -> MaxDataServiceVersion: 2.0 -> DataServiceVersion: 2.0 -> x-csrf-token: CF4601D494334B00239A025C270BDBF1 -> Content-Type: application/json -> Content-Length: 355 -> -> {"id":"238D7CA1-3F61-470B-BC73-37FF311739E2","title":"App_Title_Updated","callbackurl":"http://www.callbackurl_updated.com","description":"Description Updated.","app_key":"FuoGpWnZR0SJJedimgRpACH6XaiJc1XR","reg_id":"5f1007f1cd5c47ea8a209ce1056798f8","version":"1","app_secret":"rpZAJyTgwFGDLyeh","valid_from":null,"valid_to":null,"developer_id":"I305297"} -> --changeset_0750-94e8-367a -> Content-Type: application/http -> Content-Transfer-Encoding: binary -> -> POST APIMgmt.Subscriptions HTTP/1.1 -> RequestId: cf1da741-bd68-401e-95d7-9bcf0475112b -> Accept-Language: en-US -> Accept: application/json -> MaxDataServiceVersion: 2.0 -> DataServiceVersion: 2.0 -> x-csrf-token: CF4601D494334B00239A025C270BDBF1 -> Content-Type: application/json -> Content-Length: 322 -> -> {"id":"00000000000000000000000000000000","ToAPIProduct":[{"__metadata":{"uri":"APIMgmt.APIProducts('NorthwindProd')"}}],"ToApplication":[{"__metadata":{"uri":"APIMgmt.Applications('238D7CA1-3F61-470B-BC73-37FF311739E2')"}}],"ToRatePlan":[{"__metadata":{"uri":"APIMgmt.RatePlans('1D8F672C-DFDF-4A73-8BB7-63E649C6BB57')"}}]} -> --changeset_0750-94e8-367a -> Content-Type: application/http -> Content-Transfer-Encoding: binary -> -> PUT APIMgmt.Subscriptions('3651b33d5fc34f3aa72df7fc0c529450') HTTP/1.1 -> RequestId: cf1da741-bd68-401e-95d7-9bcf0475112b -> Accept-Language: en-US -> Accept: application/json -> MaxDataServiceVersion: 2.0 -> DataServiceVersion: 2.0 -> x-csrf-token: CF4601D494334B00239A025C270BDBF1 -> Content-Type: application/json -> Content-Length: 449 -> -> {"id":"3651b33d5fc34f3aa72df7fc0c529450","isSubscribed":false,"app_id":"238D7CA1-3F61-470B-BC73-37FF311739E2","product_id":"Product_Catalog","developer_id":"I305297","ToAPIProduct":[{"__metadata":{"uri":"APIMgmt.APIProducts('Product_Catalog')"}}],"ToRatePlan":[{"__metadata":{"uri":"APIMgmt.RatePlans('E8BF82AA-F7B0-427F-881A-D246A047BBD0')"}}],"ToApplication":[{"__metadata":{"uri":"APIMgmt.Applications('238D7CA1-3F61-470B-BC73-37FF311739E2')"}}]} -> --changeset_0750-94e8-367a-- -> -> --batch_ce8f-d810-b289-- -> -> ``` - -Use the below mentioned url and method to delete an application : - -URL: /odata/1.0/data.svc/APIMgmt.Applications\(''\) - -Method: DELETE - -Use the below mentioned url and method to read all applications using Subscription entity : - -URL: /odata/1.0/data.svc/APIMgmt.Applications - -Method: GET - -Response : It will fetch only application attributes like title, call back url, description. - -- It will not fetch app key and secret. -- If the application is created using Subscription Entity, then the attached products will not be shown here. -- Although, if an application is created using older APIs \(only using Application Entity and Application to Product linkage\), then the attached product details will be shown in the navigation “ToAPIProductsDetails”. - -Use the below mentioned url and method to read a specific applications using Subscription entity : - -URL: /odata/1.0/data.svc/APIMgmt.Applications\(''\)?$expand=ToAPIProductsDetails,ToSubscriptions/ToAPIProduct,ToSubscriptions/ToRatePlan&$format=json - -Method: GET - -Response : This API will fetch all the application related details. - -- If the application is created using Subscription entity, the associated products will be found in the navigation “ToSubscriptions/ToAPIProduct”. -- If the application is created using older API \(only using Application Entity and Application to Product linkage\), the attached product details will be found in the navigation property “ToAPIProductsDetails”. - -> ### Note: -> - If a user is not willing to use the Monetization feature, then he or she may continue using Application’s service. -> - If a user is willing to use Monetization feature, then he or she must switch to Subscription entity. -> - In order to use Monetization, the user needs to create a new rate plan and a new product. Attach the rate plan to the product, publish the product, and let the application developer consume the product via a new application created using Subscription entity. -> - It is not recommended to use mix and match of Application entity services and Subscription Entity. -> - It is not recommended to use the application created using Application Entity’s service for Monetization purpose. -> - It is not recommended to use the application created using Application Entity Service to add a product having rate plan. -> - If a user has applications created using Application’s entity service and applications created using Subscriptions entity, then user must make two calls while reading the applications: -> - One read call on Application's entity. -> - One read call on Subscription's entity. - diff --git a/docs/ISuite/50-Development/create-xslt-mapping-5ce1f15.md b/docs/ISuite/50-Development/create-xslt-mapping-5ce1f15.md index a127cf17..ec286558 100644 --- a/docs/ISuite/50-Development/create-xslt-mapping-5ce1f15.md +++ b/docs/ISuite/50-Development/create-xslt-mapping-5ce1f15.md @@ -33,7 +33,7 @@ You perform this task to assign XSLT mapping that is available in your local wor ## Procedure -1. Click on *Edit*. +1. Choose *Edit*. 2. In the palette, choose *XSLT Mapping*. @@ -41,7 +41,7 @@ You perform this task to assign XSLT mapping that is available in your local wor 4. In the *Processing* tab, select either *Integration Flow* or *Header* for mapping *Source* field. - 1. If you select integration flow as source, then click on *Select* to choose the xslt or xsl file from *Resource* folder or file system. + 1. If you select integration flow as source, then *Select* to choose the xslt or xsl file from *Resource* folder or file system. > ### Note: > - To view or modify content of xslt mapping in the editor, click on the resource name in the *Resource* field. diff --git a/docs/ISuite/50-Development/creating-an-application-with-api-business-hub-enterprise-administrator-role-new-design-df4f777.md b/docs/ISuite/50-Development/creating-an-application-with-api-business-hub-enterprise-administrator-role-new-design-df4f777.md index f7d6ecd6..eaf11ee4 100644 --- a/docs/ISuite/50-Development/creating-an-application-with-api-business-hub-enterprise-administrator-role-new-design-df4f777.md +++ b/docs/ISuite/50-Development/creating-an-application-with-api-business-hub-enterprise-administrator-role-new-design-df4f777.md @@ -10,7 +10,7 @@ With the API business hub enterprise administrator role you can create an applic ## Prerequisites -You shoul have the *AuthGroup.API.Admin* role assigned to you. For more information on roles, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right:. +You shoul have the *AuthGroup.API.Admin* role assigned to you. For more information on roles, see [User Roles in API Management \(New\)](../user-roles-in-api-management-new-911ca5a.md). diff --git a/docs/ISuite/50-Development/creating-an-application-with-application-developer-role-new-design-99515fc.md b/docs/ISuite/50-Development/creating-an-application-with-application-developer-role-new-design-99515fc.md index 4e3a6268..2ce71663 100644 --- a/docs/ISuite/50-Development/creating-an-application-with-application-developer-role-new-design-99515fc.md +++ b/docs/ISuite/50-Development/creating-an-application-with-application-developer-role-new-design-99515fc.md @@ -10,7 +10,7 @@ As an application developer you can create an application, and view the existing ## Prerequisites -- You have the *AuthGroup.API.ApplicationDeveloper* role assigned to you. For more information on roles, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right:. +- You have the *AuthGroup.API.ApplicationDeveloper* role assigned to you. For more information on roles, see [User Roles in API Management \(New\)](../user-roles-in-api-management-new-911ca5a.md). > ### Note: > The *AuthGroup.API.ApplicationDeveloper* role must not be assigned manually to a user form the SAP BTP Cockpit. Also, this role must not be a part of any user group assignment. diff --git a/docs/ISuite/50-Development/creating-the-references-ddc5fdf.md b/docs/ISuite/50-Development/creating-the-references-ddc5fdf.md new file mode 100644 index 00000000..dfae4471 --- /dev/null +++ b/docs/ISuite/50-Development/creating-the-references-ddc5fdf.md @@ -0,0 +1,117 @@ + + +# Creating the References + +You can use the CertificateStoreReferences API to create a new certificate store reference. + + + + + +## Prerequisites + +- You must have a service key for the `APIPortal.Administrator` role. + + To know more about creating a service key for accessing APIs in the API portal, see the **Creating a Service Key** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + +- You have fetched a valid bearer token. To know more about obtaining a bearer token, see the **Obtaining a Bearer Token** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + + + + + +## Procedure + +1. Run the services using a standard REST console. + +2. Create a new certificate store reference using the below API: + + - Service URL: https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences + - Method: POST + - Request Header: Authorization: Bearer + - Content Type: application/json + - Accept: application/json + - Request Body: + + > ### Sample Code: + > ``` + > { + > "name": "reference-name" + > "certificateStoreName": "store-name" + > } + > + > ``` + + > ### Note: + > - name - This is the name of the certificate store reference + > + > - certificateStoreName - This is the name of the certificate store to which this certificate store reference is pointing to + + + - CertificateStoreReference created successfully + + Response: 201 + + > ### Sample Code: + > ``` + > { + > "d": { + > "__metadata": { + > "id": "https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences('reference_ts_1')", + > "uri": "https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences('reference_ts_1')", + > "type": "apiportal.CertificateStoreReference" + > }, + > "certificateStoreName": "ts", + > "life_cycle": { + > "__metadata": { + > "type": "apiportal.History" + > }, + > "changed_at": "\/Date(1709793613017)\/", + > "changed_by": "sb-apiaccess1689070958781!b6077|api-portal-xsuaa!b2160", + > "created_at": "\/Date(1709793612858)\/", + > "created_by": "sb-apiaccess1689070958781!b6077|api-portal-xsuaa!b2160" + > }, + > "name": "reference_ts_1", + > "storeType": "TRUSTSTORE" + > } + > } + > ``` + + - When a CertificateStoreReference with the same name already exists + + Response: 400 Bad request: + + > ### Sample Code: + > ``` + > + > { + > "error": { + > "code": "CERTIFICATE_STORE_REFERENCE_NAME_DUPLICATION_ERROR", + > "message": { + > "lang": "en", + > "value": "A certificate store reference already exists with the same name. Please provide a different name and try creating again." + > } + > } + > } + > ``` + + - When no such certificate store exists with the given name + + Response: 400 Bad request + + > ### Sample Code: + > ``` + > + > { + > "error": { + > "code": "CERTIFICATE_STORE_REFERENCE_CREATE_FAILED_LINKED_CERTIFICATE_STORE_VALIDATION_ERROR", + > "message": { + > "lang": "en", + > "value": "The certificate store reference cannot be created as the certificate store name provided is invalid. Provide a correct certificate store name and try creating again." + > } + > } + > } + > ``` + + + diff --git a/docs/ISuite/50-Development/custom-type-systems-884bb25.md b/docs/ISuite/50-Development/custom-type-systems-884bb25.md index df56eea1..c3aaf0fa 100644 --- a/docs/ISuite/50-Development/custom-type-systems-884bb25.md +++ b/docs/ISuite/50-Development/custom-type-systems-884bb25.md @@ -20,7 +20,7 @@ To upload and use custom messages, you need to have a custom type system. Follow ## Procedure -1. Navigate to *Custom Type Systems* icon from the left pane of your application. +1. Navigate to *Custom Type Systems* () from the left pane of your application. 2. Choose *Add* to create a custom type system. @@ -34,5 +34,5 @@ To upload and use custom messages, you need to have a custom type system. Follow - Administrative Data -To know how to add a message to the custom type system, see: [Adding a Custom Message](adding-a-custom-message-8b7eb45.md) +To know how to add a message to the custom type system, see: [Adding a Custom Message](adding-a-custom-message-8b7eb45.md). diff --git a/docs/ISuite/50-Development/data-store-sender-adapter-4f5ef3f.md b/docs/ISuite/50-Development/data-store-sender-adapter-4f5ef3f.md index ad69e3cf..b4e24d6b 100644 --- a/docs/ISuite/50-Development/data-store-sender-adapter-4f5ef3f.md +++ b/docs/ISuite/50-Development/data-store-sender-adapter-4f5ef3f.md @@ -4,13 +4,13 @@ This adapter enables Cloud Integration to consume messages from a data store. This feature helps you to enable asynchronous decoupling of inbound and outbound processing by using the data store as temporary storage. -To understand the concept of asynchronous decoupling, assume that a sender sends a message to Cloud Integration \(inbound processing\). If there's an error in outbound processing \(for example, a receiver can't be reached temporarily\), the middleware \(Cloud Integration\) retries message processing independently. There's no need that the sender triggers a reprocessing of the message as soon as the error situation is fixed. The sender relies on the middleware to do that. To support this scenario, Cloud Integration stores the message received from the sender in the data store. To implement this step, you can design a dedicated integration flow that receives the sender's message and uses a *Data Store Write* step to store it in the data store \(see [Define Data Store Write Operations](define-data-store-write-operations-46260ee.md)\). +To understand the concept of asynchronous decoupling, assume that a sender sends a message to Cloud Integration \(inbound processing\). If there's an error in outbound processing \(for example, a receiver can't be reached temporarily\), the middleware \(Cloud Integration\) retries message processing independently. There's no need that the sender triggers a reprocessing of the message as soon as the error situation is fixed. The sender relies on the middleware to do that. To support this scenario, Cloud Integration stores the message received from the sender in the data store. To implement this step, you can design a dedicated integration flow that receives the sender's message and uses a *Data Store Write* step to store it in the data store, see: [Define Data Store Write Operations](define-data-store-write-operations-46260ee.md). Furthermore, you model outbound processing in an integration flow that initially consumes the message from the data store \(using the *Data Store* sender adapter\). The outbound integration flow retries the message from the data store as long as the error situation lasts. The following figure depicts the described example setup. -![](images/Data_Store_Sender_Adapter_96edd76.png) +![The integration flow receives a message from the sender. It uses a Data Store Step to store the message in the Data Store. Initially, the integration flow consumes the message from the Data Store using the Data Store Sender Adapter. The outbound integration flow retries to send the message from the Data Store if the error situation lasts.](images/Data_Store_Sender_Adapter_96edd76.png) You can model the steps that write into the data store and those that consume message from it also in the same integration flow. @@ -126,7 +126,7 @@ Defines whether the data store is shared by all integration flows \(deployed on - *Integration Flow* \(default setting\): Only a single integration flow uses the data store. A data store configured with this setting is also referred to as local data store. -For more information and guidelines how to use this parameter, see [Anticipate Message Throughput When Choosing a Storage Option](anticipate-message-throughput-when-choosing-a-storage-option-5b38765.md). +For more information and guidelines how to use this parameter, see: [Anticipate Message Throughput When Choosing a Storage Option](anticipate-message-throughput-when-choosing-a-storage-option-5b38765.md). @@ -138,14 +138,14 @@ For more information and guidelines how to use this parameter, see [Anticipate M -Specify the poll interval in seconds to wait before consuming messages from the data store. The default is set to 10 s. The minimum is set to 1 s. The maximum is set to 300 s. +Specify the poll interval in seconds to wait before consuming messages from the data store. The default is set to 10 seconds. The minimum is set to 1 second. The maximum is set to 300 seconds. The adapter continuously consumes messages from the data store if the data store contains entries that are ready to be processed. The poll interval only becomes effective as soon as the data store doesn't contain such entries anymore. From that point in time, the adapter waits for the time specified by the *Poll Interval* parameter and then again tries to consume messages from the data store. > ### Note: -> The smaller the poll interval \(for example, 1 s or less\), the more load is put on the data store. +> The smaller the poll interval \(for example, 1 second or less\), the more load is put on the data store. @@ -159,7 +159,7 @@ The poll interval only becomes effective as soon as the data store doesn't conta -Enter a value for the amount of time to wait before retrying message delivery. The default is set to 1 min. The minimum is set to 1 min. The maximum is set to 1440 min \(24 hours\). +Enter a value for the amount of time to wait before retrying message delivery. The default is set to 1 minute. The minimum is set to 1 minute. The maximum is set to 1440 minutes \(24 hours\). @@ -183,7 +183,7 @@ Select this option to double the retry interval after each unsuccessful retry. B -You can set an upper limit on that value to avoid an endless increase of the retry interval. The default value is 60 minutes. The minimum value is 10 minutes. The maximum is set to 1440 min \(24 hours\). +You can set an upper limit on that value to avoid an endless increase of the retry interval. The default value is 60 minutes. The minimum value is 10 minutes. The maximum is set to 1440 minutes \(24 hours\). @@ -195,7 +195,7 @@ You can set an upper limit on that value to avoid an endless increase of the ret -Enter a value for the timeout of the in-progress repository. After this time, a message is retried in case of a cluster outage. The default value is 10 minutes. The minimum value is 1 minute. The maximum is set to 300 min \(5 hours\). +Enter a value for the timeout of the in-progress repository. After this time, a message is retried in case of a cluster outage. The default value is 10 minutes. The minimum value is 1 minute. The maximum is set to 300 minutes \(5 hours\). diff --git a/docs/ISuite/50-Development/data-types-97ad101.md b/docs/ISuite/50-Development/data-types-97ad101.md index 3f1ec75e..c0343187 100644 --- a/docs/ISuite/50-Development/data-types-97ad101.md +++ b/docs/ISuite/50-Development/data-types-97ad101.md @@ -406,7 +406,7 @@ Name -Name of the Data Type +Name of the Data Type. @@ -454,7 +454,7 @@ Created On & Created By -Displays the identity of the user who imported the data type and the date when it was imported +Displays the identity of the user who imported the data type and the date when it was imported. diff --git a/docs/ISuite/50-Development/define-a-local-script-step-03b32eb.md b/docs/ISuite/50-Development/define-a-local-script-step-03b32eb.md index 47bf7d57..5711d35f 100644 --- a/docs/ISuite/50-Development/define-a-local-script-step-03b32eb.md +++ b/docs/ISuite/50-Development/define-a-local-script-step-03b32eb.md @@ -82,19 +82,19 @@ Cloud Integration provides a Java API to support this use case. 3. Place *Script* step in the integration process. -3. To open the script editor, click the *Create* icon next to the Script step shape. +3. To open the script editor, select *Create* next to the Script step shape. ![](images/Script_Step_Create_dd8d09c.png) 4. In the script editor, specify the script according to the requirements of your scenario. - For an overview of the classes and interfaces supported by the Script step, see [SDK API](sdk-api-c5c7933.md). + For an overview of the classes and interfaces supported by the Script step, see: [SDK API](sdk-api-c5c7933.md). For more information on how to use the dedicated interfaces and methods for specific use cases, refer to [Script Use Cases](script-use-cases-148851b.md). You can also check out the design guidelines for using scripts at [Use Scripting Appropriately](use-scripting-appropriately-d4dc13c.md). -5. When you've finished the definition of your script, click *OK*. +5. When you've finished the definition of your script, select *OK*. 6. Save the integration flow. @@ -129,13 +129,13 @@ To make sure that your scenario meets highest standards with regard to security To mention one particular aspect of scripting, note the following: -Any application that parses XML data is prone to the risk of XML External Entity \(XXE\) Processing attacks. More information can be found [here](https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing). +Any application that parses XML data is prone to the risk of XML External Entity \(XXE\) Processing attacks. More information can be found on the webpage [XML External Entity \(XXE\) Processing](https://owasp.org/www-community/vulnerabilities/XML_External_Entity_(XXE)_Processing) . To overcome this issue, you must take one of the following measures: - Don't use XML parsing \(for example, DocumentBuilderFactory\) at all. -- Switch off the processing of external entities as explained [here](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html). +- Switch off the processing of external entities as explained on the webpage [XML External Entity Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html). **Related Information** diff --git a/docs/ISuite/50-Development/define-a-timer-start-event-ae14ad7.md b/docs/ISuite/50-Development/define-a-timer-start-event-ae14ad7.md index ed4120a9..fcb9b9ff 100644 --- a/docs/ISuite/50-Development/define-a-timer-start-event-ae14ad7.md +++ b/docs/ISuite/50-Development/define-a-timer-start-event-ae14ad7.md @@ -213,7 +213,7 @@ If you want to configure a process to automatically start and run on a particula - + *Advanced* @@ -244,6 +244,22 @@ If you want to configure a process to automatically start and run on a particula + *Start and End Date* + + + + + Provide an optional start and end date with time for the schedule. By default, the configured schedule operates without specific start and end dates. + + The start and end date works together with the other configurations created in the *Advanced* section. For example, if you have configured a schedule that recures every 5 minutes, and have provided a start and end dates, then the schedule recurs for every 5 minutes within the mentioned start and end date/time range. + + To clear the selected start and end dates, use the delete key on your keyboard. + + + + + + Time Zone diff --git a/docs/ISuite/50-Development/define-aggregator-aa23816.md b/docs/ISuite/50-Development/define-aggregator-aa23816.md index 5dc59882..ade693a0 100644 --- a/docs/ISuite/50-Development/define-aggregator-aa23816.md +++ b/docs/ISuite/50-Development/define-aggregator-aa23816.md @@ -26,7 +26,7 @@ You want to combine related individual messages so that they can be processed in ## Procedure -1. In the palette, choose , then choose** \> *Aggregator*. +1. In the palette, choose *Message Routing*, then choose** \> *Aggregator*. 2. Place *Aggregator* in the integration process and define the message path. diff --git a/docs/ISuite/50-Development/define-content-enricher-8827f9f.md b/docs/ISuite/50-Development/define-content-enricher-8827f9f.md index f23642b5..fddcf74d 100644 --- a/docs/ISuite/50-Development/define-content-enricher-8827f9f.md +++ b/docs/ISuite/50-Development/define-content-enricher-8827f9f.md @@ -264,7 +264,7 @@ The enriched message is in the following format. 1. If you want to add a *Content Enricher* step to the integration process, perform the following substeps. - 1. In the palette, choose ![](images/external_call_bfbf8b0.png) \(Call\) and then choose :envelope:. In the submenu, choose :gear: + 1. In the palette, choose ![](images/external_call_bfbf8b0.png) \(Call\) and then choose :envelope::gear: 2. Place the *Content Enricher* shape in the integration process and define message path. diff --git a/docs/ISuite/50-Development/define-content-modifier-8f04a70.md b/docs/ISuite/50-Development/define-content-modifier-8f04a70.md index f65533b7..12c0905f 100644 --- a/docs/ISuite/50-Development/define-content-modifier-8f04a70.md +++ b/docs/ISuite/50-Development/define-content-modifier-8f04a70.md @@ -286,6 +286,11 @@ Note that data written to the message header during a processing step, for examp The default value is *Expression*. If the payload contains expressions within it, then set the type as *Expression*; if the payload is huge and it has no expressions within it, then it is recommended to use the type *Constant*. + + > ### Remember: + > If the payload size is more than 256 KB, the system doesn't let you use the type expression. If there are actual expressions used and you can't reduce the size of the text, use a groovy script. + + diff --git a/docs/ISuite/50-Development/define-data-store-write-operations-46260ee.md b/docs/ISuite/50-Development/define-data-store-write-operations-46260ee.md index b581fe2d..4f691c2a 100644 --- a/docs/ISuite/50-Development/define-data-store-write-operations-46260ee.md +++ b/docs/ISuite/50-Development/define-data-store-write-operations-46260ee.md @@ -226,7 +226,7 @@ This component stores data on your tenant. Note that the tenant space is limited ## Next Steps -Be aware of the following fact when you plan to execute a data store Select operation in a subsequent integration flow step: When retrieving a message body from a data store in a subsequent step, only XML is supported. +Be aware of the following fact when you plan to execute a data store. Select an operation in a subsequent integration flow step: When retrieving a message body from a data store in a subsequent step, only XML is supported. The only option to read non-XML data is provided by the data store Get operation. diff --git a/docs/ISuite/50-Development/define-gather-and-join-94ef1f2.md b/docs/ISuite/50-Development/define-gather-and-join-94ef1f2.md index 759c0437..01532b11 100644 --- a/docs/ISuite/50-Development/define-gather-and-join-94ef1f2.md +++ b/docs/ISuite/50-Development/define-gather-and-join-94ef1f2.md @@ -128,7 +128,7 @@ If the incoming payload contains namespace declarations including default namesp - *Concatenate* \(can only be selected if for *Incoming Format* you have selected *Plain Text*\) - Concatenate the information from the different sources one after another + Concatenate the information from the different sources one after another. - *Zip* diff --git a/docs/ISuite/50-Development/define-multicast-17de3ea.md b/docs/ISuite/50-Development/define-multicast-17de3ea.md index 2674a24b..c5801a50 100644 --- a/docs/ISuite/50-Development/define-multicast-17de3ea.md +++ b/docs/ISuite/50-Development/define-multicast-17de3ea.md @@ -30,7 +30,7 @@ You can use the *Multicast* step to send copies of the same message to multiple 2. Select the branch which you want to move up or down in the order. - 3. Use *Move Up* and *Move Down* buttons to change the order. + 3. Use *Move Up* and *Move Down* to change the order. The branch name is dependent on the order in which you have defined the message path. If you change the order, the branch name will not change. diff --git a/docs/ISuite/50-Development/define-request-reply-dc39fdd.md b/docs/ISuite/50-Development/define-request-reply-dc39fdd.md index a7bf09fd..d46a94b9 100644 --- a/docs/ISuite/50-Development/define-request-reply-dc39fdd.md +++ b/docs/ISuite/50-Development/define-request-reply-dc39fdd.md @@ -93,16 +93,16 @@ In the integration flow model, you design the external service as a receiver sha 1. If you want to add a *Request Reply* step to the integration process, perform the following substeps. - 1. In the palette, choose ![](images/external_call_bfbf8b0.png) \(Call\) and then choose :envelope:. In the submenu, choose :gear: + 1. In the palette, choose ![](images/external_call_bfbf8b0.png) \(Call\) and then choose :envelope:In the submenu, choose :gear: 2. Place the *Request Reply* shape in the integration process and define message path. -2. To add this shape to the model, click somewhere inside the *Integration Process* box of the integration flow model. +2. To add this shape to the model, activate your pointing device somewhere inside the *Integration Process* box of the integration flow model. No further attributes are to be specified for this step type. -3. In the palette, click *Participants* \( icon\), select *Receiver*, and drop it outside the Integration Process pool. +3. In the palette, select *Participants* \( icon\), select *Receiver*, and drop it outside the Integration Process pool. 4. Create a connection between the request reply step and the receiver and configure the channel. diff --git a/docs/ISuite/50-Development/define-terminate-message-event-bc3fee4.md b/docs/ISuite/50-Development/define-terminate-message-event-bc3fee4.md index 1258359a..37c178b9 100644 --- a/docs/ISuite/50-Development/define-terminate-message-event-bc3fee4.md +++ b/docs/ISuite/50-Development/define-terminate-message-event-bc3fee4.md @@ -28,7 +28,7 @@ This blog provides more information on the different message events that you can ## Procedure -1. In the palette, choose \> :radio_button:*Terminate Message* +1. In the palette, choose  Events \> :radio_button:*Terminate Message* 2. Place the event icon in the desired location of your integration flow. diff --git a/docs/ISuite/50-Development/define-xml-to-edi-converter-707973f.md b/docs/ISuite/50-Development/define-xml-to-edi-converter-707973f.md index b6f9241c..60f7040a 100644 --- a/docs/ISuite/50-Development/define-xml-to-edi-converter-707973f.md +++ b/docs/ISuite/50-Development/define-xml-to-edi-converter-707973f.md @@ -64,7 +64,7 @@ XML to EDI Converter version 2.0 and above supports the TRADACOMS standard \(*TR - + EDIFACT @@ -78,6 +78,24 @@ XML to EDI Converter version 2.0 and above supports the TRADACOMS standard \(*TR Select encoding format for the incoming payload. + + + + + + Target Encoding + + + + + Select encoding format for the outgoing payload. If you select 'Dynamic', you must define either of the values in SAP\_XMLTOEDI\_EDIFACT\_TARGET\_ENCODING exchange header: + + - UTF-8 + - ISO-8859-1 to ISO-8859-9 + - fromIncomingPayload + + + diff --git a/docs/ISuite/50-Development/define-xml-to-json-converter-a60a282.md b/docs/ISuite/50-Development/define-xml-to-json-converter-a60a282.md index 2ee7874d..cfa6d209 100644 --- a/docs/ISuite/50-Development/define-xml-to-json-converter-a60a282.md +++ b/docs/ISuite/50-Development/define-xml-to-json-converter-a60a282.md @@ -14,11 +14,11 @@ The XML to JSON converter enables you to transform messages in XML format to JSO - You are familiar with the conversion rules for XML to JSON conversion. - For more information see . + For more information see . - You are familiar with the limitations for XML to JSON conversion. - For more information see . + For more information see . - You are familiar with streaming for XML to JSON conversion. diff --git a/docs/ISuite/50-Development/delete-a-rate-plan-af1a2a6.md b/docs/ISuite/50-Development/delete-a-rate-plan-af1a2a6.md index b04f2ecf..10050ca4 100644 --- a/docs/ISuite/50-Development/delete-a-rate-plan-af1a2a6.md +++ b/docs/ISuite/50-Development/delete-a-rate-plan-af1a2a6.md @@ -45,9 +45,9 @@ You are deleting a rate plan. **Related Information** -[Create a Rate Plan](create-a-rate-plan-cfe6a30.md "Create a rate plan using the SAP Integration Suite.") +[Create a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cfe6a30600f148a39a7920dbc7fa1ab2.html "Create a rate plan using the API portal.") :arrow_upper_right: -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") +[Update a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/b8c1e6b68be74ead8700f7f8be9baa8b.html "Update a rate plan using the API portal.") :arrow_upper_right: -[Attach Rate Plan to a Product](attach-rate-plan-to-a-product-cc5c942.md "Attach a rate plan to a product using the SAP Integration Suite.") +[Attach Rate Plan to a Product](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cc5c942e32df494785c33ba0fc0346f4.html "Attach a rate plan to a product using the API portal.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/delete-a-rate-plan-d4181ad.md b/docs/ISuite/50-Development/delete-a-rate-plan-d4181ad.md deleted file mode 100644 index 37090693..00000000 --- a/docs/ISuite/50-Development/delete-a-rate-plan-d4181ad.md +++ /dev/null @@ -1,53 +0,0 @@ - - - - -# Delete a Rate Plan - -Delete a rate plan using the SAP Integration Suite. - - - - - -## Prerequisites - -You are assigned the admin role. - - - - - -## Context - -You are deleting a rate plan. - - - - - -## Procedure - -1. Log on to the SAP Integration Suite. - -2. From the navigation bar, choose *Monetize*. - -3. On the *Monetize* screen, choose *RATE PLANS*. - -4. in the *Actions* column, choose :wastebasket: to delete a rate plan. - -5. Choose *Yes*. - - > ### Note: - > Deleted rate plan is not available for new subscriptions, but is available for existing subscriptions. - - -**Related Information** - - -[Create a Rate Plan](create-a-rate-plan-cfe6a30.md "Create a rate plan using the SAP Integration Suite.") - -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") - -[Attach Rate Plan to a Product](attach-rate-plan-to-a-product-cc5c942.md "Attach a rate plan to a product using the SAP Integration Suite.") - diff --git a/docs/ISuite/50-Development/deleting-the-references-bd809db.md b/docs/ISuite/50-Development/deleting-the-references-bd809db.md new file mode 100644 index 00000000..c8deb621 --- /dev/null +++ b/docs/ISuite/50-Development/deleting-the-references-bd809db.md @@ -0,0 +1,56 @@ + + +# Deleting the References + +Use the CertificateStoreReference API to delete the certificate store reference via service calls. + + + + + +## Prerequisites + +- You must have a service key for the `APIPortal.Administrator` role. + + To know more about creating a service key for accessing APIs in the API portal, see the **Creating a Service Key** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + +- You have fetched a valid bearer token. To know more about obtaining a bearer token, see the **Obtaining a Bearer Token** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + + + + + +## Procedure + +1. Run the services using a standard REST console. + +2. Delete the certificate store reference using the below API: + + - Service URL: https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences\(''\) + - Method: DELETE + - Request Header: Authorization: Bearer + - Accept:: application/json + - CertificateStoreReference deleted successfully. + + Response: 204: No Content + + - When no CertificateStoreReference entity exists with the given name + + Response: 400 Bad request + + > ### Sample Code: + > ``` + > + > { + > "error": { + > "code": "NO_SUCH_CERTIFICATE_STORE_REFERENCE_EXISTS", + > "message": { + > "lang": "en", + > "value": "No such certificate store reference exists. Please check the certificate store reference name and try again." + > } + > } + > } + > ``` + + + diff --git a/docs/ISuite/50-Development/deploying-an-api-artifact-b70e7ec.md b/docs/ISuite/50-Development/deploying-an-api-artifact-b70e7ec.md new file mode 100644 index 00000000..d14e1d03 --- /dev/null +++ b/docs/ISuite/50-Development/deploying-an-api-artifact-b70e7ec.md @@ -0,0 +1,68 @@ + + + + +# Deploying an API Artifact + +After creating an API artifact, it is necessary to deploy it on the chosen runtime profile in order to make it executable and ready for use. + + + + + +## Prerequisites + +You should have at least one Edge Integration Cell runtime provisioned. + + + + + +## Procedure + +1. Log on to the Integration Suite. + +2. Choose the navigation icon on the left and choose *Design* \> *Integrations and APIs*. + +3. Select the ** where you want to create your API artifact. + +4. To expose a service as an API artifact, choose *Edit* and navigate to the *Artifacts* tab. For detailed steps on how to add an API artifact, see [Add an API Artifact](add-an-api-artifact-c2fe62c.md). + + If you wish to deploy an API artifact that has already been created, select the ** where you created the API artifact. + +5. Choose the Action icon next to the required API artifact and then select the *Deploy* from the options. + + > ### Note: + > Alternatively, you can deploy an API artifact from its details page. First, select the ** in which you created the API artifact. Then, select the API to open its *Details* page. On the API details page, you will find the option to deploy the API. Simply select *Deploy* to proceed with the deployment. + +6. On the *Confirmation* dialog, the Edge Integration Cell runtime that you chose while creating the API artifact will be selected by default. However, you can choose another valid Edge Integration Cell runtime profile from the dropdown menu while deploying the artifact. + + > ### Note: + > The associated virtual host URL will be automatically updated when you select the runtime profile of your choice. Additionally, your API URL will be updated accordingly. + + + + + + +## Results + +Once an API artifact is deployed, it becomes available for consumption. + + + + + +## Next Steps + +After deploying the API artifact, you can check the runtime logs and the status of the API artifact. For more information, see [Monitor APIs](monitor-apis-399b6c6.md). + +**Related Information** + + +[Add an API Artifact](add-an-api-artifact-c2fe62c.md "Add an API artifact to an package.") + +[Copy an API Artifact](copy-an-api-artifact-820c9e8.md "You may want to create a copy of an existing API artifact with all its configurations and policies intact. This can be useful when you want to create a similar API but with some modifications or variations. The copy feature allows you to quickly duplicate the API artifact and make the necessary changes without starting from scratch.You can create a duplicate of an API artifact by copying it within the same package or in a different integration package within the same Integration Suite subscription.") + +[Policy Definition and Types of Policies Supported by Edge Integration Cell](policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md "You can define the behavior of an API by using policy steps.") + diff --git a/docs/ISuite/50-Development/design-guidelines-view-d62dfe0.md b/docs/ISuite/50-Development/design-guidelines-view-d62dfe0.md new file mode 100644 index 00000000..2988fd5e --- /dev/null +++ b/docs/ISuite/50-Development/design-guidelines-view-d62dfe0.md @@ -0,0 +1,53 @@ + + +# Design Guidelines View + +Use this view to validate your integration flow against the design guidelines enabled by the integration leads of your organization. + + + + + +### What Are Design Guidelines + +Design guidelines are checks that help you design robust integration flows. Your tenant administrators or integration leads have enabled all or a subset of available design guidelines that they think are appropriate for your organization's business needs. For more information, see [Design Guidelines](IntegrationSettings/design-guidelines-4d1c84f.md). + + + +### What Are The Implications + +All integration flows designed in this tenant must abide by the enabled design guidelines. + + + +### Validate Your Integration Flow + +Run the design guidelines after you've designed your integration flow. Your integration flow must comply with all applicable design guidelines. Remember that not all enabled design guidelines are applicable for every integration flow that you create. The integration flow editor intelligently identifies the design guidelines that are applicable and validates the integration flow only against the applicable ones. + +Follow these simple steps to run the design guidelines and validate your integration flow: + +1. In the *Design Guidelines* view, choose *Execute Guidelines*. + + You see the result across three columns. + + In the *Applicability* column – you get to know the applicable design guidelines against which your integration flow is validated. + + In the *Compliance* column – you find if your integration flow is compliant with all the applicable design guidelines. + + In the *Action* column – for every non-compliant design guideline, you find the analysis of what are the expected and actual configurations. + +2. Based on the analysis, update your integration flow and resolve the non-compliance. + +3. Run the design guidelines again to verify if your integration flow is fully compliant. + + + + +### Assess Your Integration Flow + +In the *Design Guidelines* view, choose *Download Report* to download the last execution report. + +You can download the report multiple times. You can download the report with compliance errors too. + +As a best practice, you can share the report with your integration leads to assess your integration flow before deployment. + diff --git a/docs/ISuite/50-Development/development-de1ae81.md b/docs/ISuite/50-Development/development-de1ae81.md index 88a42933..eb7c75c8 100644 --- a/docs/ISuite/50-Development/development-de1ae81.md +++ b/docs/ISuite/50-Development/development-de1ae81.md @@ -247,7 +247,7 @@ Generate revenue from APIs. -[Monetize APIs](monetize-apis-fcdc89b.md) +[Monetize APIs](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/fcdc89b5c4884d5e8cfb32c5914943ab.html "API Management provides monetization feature to all API providers to generate revenue for using the APIs.") :arrow_upper_right: @@ -458,7 +458,7 @@ Documentation template for MIGs and MAGs. -[Documentation Template for MIGs and MAGs](documentation-template-for-migs-and-mags-4c442af.md) +[Documentation Export and Settings](documentation-export-and-settings-4c442af.md) diff --git a/docs/ISuite/50-Development/documentation-template-for-migs-and-mags-4c442af.md b/docs/ISuite/50-Development/documentation-export-and-settings-4c442af.md similarity index 77% rename from docs/ISuite/50-Development/documentation-template-for-migs-and-mags-4c442af.md rename to docs/ISuite/50-Development/documentation-export-and-settings-4c442af.md index 2d1a27b3..2a84aac1 100644 --- a/docs/ISuite/50-Development/documentation-template-for-migs-and-mags-4c442af.md +++ b/docs/ISuite/50-Development/documentation-export-and-settings-4c442af.md @@ -2,15 +2,17 @@ -# Documentation Template for MIGs and MAGs +# Documentation Export and Settings You can maintain a template for documentation export which is later picked by the system whenever you export a Message Implementation Guideline \(MIG\) or a Mapping Guideline \(MAG\). +The admnistrative settings allows you to opt-in/opt out of the Proposal service. + -## Procedure +## Documentation Export 1. Navigate to the *Settings* \> *MIGs and MAGs*. @@ -194,3 +196,26 @@ You can maintain a template for documentation export which is later picked by th 3. Choose *Save*. + + + + +## Administrative Settings + +1. Navigate to the *Administrative Settings* tab. + +2. Choose *Edit* and enable or disable the *Enable Proposal Service* toggle button. + + This option is provided for users who no longer wish to enable their data to be collected for the proposal service. + + > ### Caution: + > Disabling the proposal service cannot be reversed, and it will lead to the following consequences: + > + > - The proposal service will cease collecting MIG/MAG data. + > + > - MIG and MAG proposals will no longer be accessible to this tenant. + > + > The change of this setting will not impact the previously collected data. + +3. Choose *Save*. + diff --git a/docs/ISuite/50-Development/download-bill-details-from-api-business-hub-enterprise-ae61972.md b/docs/ISuite/50-Development/download-bill-details-from-api-business-hub-enterprise-ae61972.md deleted file mode 100644 index 9b8ed77f..00000000 --- a/docs/ISuite/50-Development/download-bill-details-from-api-business-hub-enterprise-ae61972.md +++ /dev/null @@ -1,46 +0,0 @@ - - -# Download Bill Details from API business hub enterprise - -Download bill details using the API business hub enterprise. - - - - - -## Prerequisites - -You are assigned the application developer role. - - - - - -## Context - -To download the bill details, proceed as follows: - - - - - -## Procedure - -1. Log on to the API business hub enterprise. - -2. Navigate to, *My Workspace*. - -3. In the *Cost* section, choose the billing month from the *Aggregated Costs in Euros* chart. - - By default, the cost for the current month is displayed. - - > ### Note: - > You cannot download the bill details for the current month. - -4. Choose *Download* action item. - - The bill details are downloaded in a .csv file format. - - In the .csv file generated, leading `=` signs that might have been present in any user input \(such Product Title, Application Title, or Rateplan Title\) are trimmed. - - diff --git a/docs/ISuite/50-Development/download-bill-details-from-sap-integration-suite-329040d.md b/docs/ISuite/50-Development/download-bill-details-from-sap-integration-suite-329040d.md deleted file mode 100644 index 2476fd9f..00000000 --- a/docs/ISuite/50-Development/download-bill-details-from-sap-integration-suite-329040d.md +++ /dev/null @@ -1,50 +0,0 @@ - - -# Download Bill Details from SAP Integration Suite - -Download bill details using the SAP Integration Suite. - - - - - -## Prerequisites - -You are assigned the admin role. - - - - - -## Context - -To download the bill details, proceed as follows: - - - - - -## Procedure - -1. Log on to SAP Integration Suite. - -2. From the navigation bar, choose *Monetize*. - -3. On the *Monetize* screen, choose *BILLS*. - -4. Select the billing month from the *Month* and *Year* dropdown boxes. - - By default, the bill details for the current month is displayed. - - > ### Note: - > You cannot download the bill details for the current month. - -5. In the Actions column, choose ![](images/donload_bill_f3fa97e.png) icon to download the bill details. - - Alternatively, you can download the bill details by choosing the *Total Bill Amount* for a developer. Choose *Download* in the *Bill Detail* window. - - The bill details are downloaded in a .csv file format. - - In the .csv file generated, leading `=` signs that might have been present in any user input \(such Product Title, Application Title, or Rateplan Title\) are trimmed. - - diff --git a/docs/ISuite/50-Development/enabling-anomaly-detection-98534a0.md b/docs/ISuite/50-Development/enabling-anomaly-detection-98534a0.md new file mode 100644 index 00000000..52f2a343 --- /dev/null +++ b/docs/ISuite/50-Development/enabling-anomaly-detection-98534a0.md @@ -0,0 +1,42 @@ + + +# Enabling Anomaly Detection + +To detect anomalies in API calls and analyze the detected anomalies in the analytics dashboard, you need to enable the anomaly detection setting. + + + + + +## Context + +To enable anomaly detection through the API portal, follow the steps below: + + + +## Procedure + +1. Log in to the API portal. + +2. Click on the navigation icon on the left and select *Settings*. + +3. Go to the *Anomaly Detection* tab. + +4. Toggle the radio button to the *ON* position to enable anomaly detection. + + + + + + +## Results + +Anomaly Detection for API calls is now enabled. + +**Related Information** + + +[Enabling APIs for Anomaly Detection](enabling-apis-for-anomaly-detection-9e7e5d1.md "The System Level Anomaly check is performed by default in the backend. However, for an API Level Anomaly check, specific APIs need to be selected.") + +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1c677b2472f94aa28ea4fc4ecc4e4bef.html "") :arrow_upper_right: + diff --git a/docs/ISuite/50-Development/enabling-apis-for-anomaly-detection-9e7e5d1.md b/docs/ISuite/50-Development/enabling-apis-for-anomaly-detection-9e7e5d1.md new file mode 100644 index 00000000..da072aa5 --- /dev/null +++ b/docs/ISuite/50-Development/enabling-apis-for-anomaly-detection-9e7e5d1.md @@ -0,0 +1,41 @@ + + +# Enabling APIs for Anomaly Detection + +The **System Level Anomaly** check is performed by default in the backend. However, for an **API Level Anomaly** check, specific APIs need to be selected. + + + + + +## Context + +To select or modify the APIs for anomaly detection, follow the steps below: + + + +## Procedure + +1. Log in to the API portal. + +2. Click on the navigation icon on the left and select *Settings*. + +3. Go to the *Anomaly Detection* tab. + +4. Toggle the radio button to the *ON* position to enable anomaly detection. + +5. In the **API Selection** section, you can view the list of APIs that have been selected for anomaly detection. + +6. Click *Modify* to make changes to the selection of APIs. + + > ### Note: + > The maximum number of APIs that can be monitored for anomaly detection is 5. + + +**Related Information** + + +[Enabling Anomaly Detection](enabling-anomaly-detection-98534a0.md "To detect anomalies in API calls and analyze the detected anomalies in the analytics dashboard, you need to enable the anomaly detection setting.") + +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1c677b2472f94aa28ea4fc4ecc4e4bef.html "") :arrow_upper_right: + diff --git a/docs/ISuite/50-Development/externalize-parameters-of-an-integration-flow-45b2a07.md b/docs/ISuite/50-Development/externalize-parameters-of-an-integration-flow-45b2a07.md index 811d7e5e..bdd637a3 100644 --- a/docs/ISuite/50-Development/externalize-parameters-of-an-integration-flow-45b2a07.md +++ b/docs/ISuite/50-Development/externalize-parameters-of-an-integration-flow-45b2a07.md @@ -8,7 +8,7 @@ Use the *Externalize* feature to declare a parameter as a variable and reuse it across multiple components in the same integration flow. You can define multiple parameters for each field, but you can only assign a single value for each parameter. If a value contains common strings that can be reused, then you can split the value and assign the strings to different parameters. -The Externalization Parameters value field of an integration flow has been defined as following:- +The Externalization Parameters value field of an integration flow has been defined as following: 1. **Default value:**The parameter value defined by editing it in the integration flow is called as the parameter's default value. It's a predefined integration value that can be modified by integration developer. @@ -85,7 +85,7 @@ The integration flow must be in *Edit* mode to perform the steps. 2. Choose *Externalize* to define a new parameter. -3. Enter the parameter in curly brackets in the relevant field and press [Tab\]. +3. Enter the parameter in curly brackets in the relevant field and use [Tab\]. > ### Example: > \{\{Parameter\_1\}\} @@ -105,14 +105,14 @@ The integration flow must be in *Edit* mode to perform the steps. ### To create a new parameter for a cell in the table: -1. In the relevant table cell, enter the parameter in curly brackets and press [Tab\]. +1. In the relevant table cell, enter the parameter in curly brackets and use [Tab\]. 2. Choose the ** tag, and provide a default value for the parameter in the dialog box. 3. Choose *OK* to save the changes. > ### Note: - > - If you need to remove the externalization of a parameter click the delete icon. + > - If you need to remove the externalization of a parameter select the delete option. > > - You aren’t allowed to split a value into multiple strings. @@ -125,7 +125,7 @@ The integration flow must be in *Edit* mode to perform the steps. 2. Choose *Externalize* to define a new parameter and default value for the text area. -3. Enter the parameter in curly brackets in the text-area field and press [Tab\]. +3. Enter the parameter in curly brackets in the text-area field and use [Tab\]. > ### Example: > - \{\{header\_message\}\} @@ -140,7 +140,7 @@ The integration flow must be in *Edit* mode to perform the steps. 5. Choose *OK* to save the changes. > ### Note: - > You can click on *Preview* under the property sheet to view the resolved value of the parameter. + > You can select *Preview* under the property sheet to view the resolved value of the parameter. > > The *Preview* button will be enabled only after externalizing a text area attribute. @@ -151,7 +151,7 @@ The integration flow must be in *Edit* mode to perform the steps. 1. Select an integration flow component. -2. In the relevant component field define a parameter in curly brackets, and press [Enter\]. +2. In the relevant component field define a parameter in curly brackets, and use [Enter\]. > ### Example: > \{\{parameter\_1\}\} @@ -175,7 +175,7 @@ The integration flow must be in *Edit* mode to perform the steps. > \{\{Parameter\}\}. > ### Note: - > By typing `{{` in the parameter field, the auto-suggest displays existing parameters. + > By entering `{{` in the parameter field, the auto-suggest displays existing parameters. 4. To edit the parameter value, choose the ** tag. @@ -198,7 +198,7 @@ The integration flow must be in *Edit* mode to perform the steps. ### Configure Externalized Parameters -For more information on configuring externalized parameter, see [Configure Externalized Parameters of an Integration Flow](configure-externalized-parameters-of-an-integration-flow-462a478.md) +For more information on configuring externalized parameter, see: [Configure Externalized Parameters of an Integration Flow](configure-externalized-parameters-of-an-integration-flow-462a478.md) > ### Note: > When the integration flow is validated, deployed, and executed the configured value always precedes the default value of the parameter. The default value in the integration flow editor can be updated by the integration developer, however, it won’t take precedence over the configured value. @@ -207,13 +207,13 @@ For more information on configuring externalized parameter, see [Configure Exter ### Compare default and configured values -You can use Externalized Parameter view in comparing the default and configured value for the quality assurance purpose. For more information, see [Externalized Parameters View](externalized-parameters-view-27a0216.md) +You can use Externalized Parameter view in comparing the default and configured value for the quality assurance purpose. For more information, see: [Externalized Parameters View](externalized-parameters-view-27a0216.md) ### Download integration flow -For more information on downloading integration flow, see [Working with an Integration Package](working-with-an-integration-package-c433ce2.md) +For more information on downloading integration flow, see: [Working with an Integration Package](working-with-an-integration-package-c433ce2.md) @@ -247,7 +247,7 @@ Checkbox You can define a new parameter for the *Checkbox* control in the *Externalization* view. Once you provide name for the parameter value and update the value, it indicates that the checkbox control is externalized. -Choose on token of the checkbox control, it opens a *Parameter value update* dialog, to provide a default value for this newly created parameter. You can update the default value of parameter. +Choose token of the checkbox control, it opens a *Parameter value update* dialog, to provide a default value for this newly created parameter. You can update the default value of parameter. > ### Note: > If the parameter isn’t configured from the *Configure* View, the Configured value is flagged as `` @@ -266,11 +266,11 @@ Dropdown You can define a new parameter for *Dropdown* control in the *Externalization* view. Once you tab out of the parameter column, a token is created on dropdown control. It indicates that control is externalized. -On click of token, parameter update dialog opens which shows the default value of parameter. +By selecting the token, parameter update dialog opens which shows the default value of parameter. You can configure dropdown control from the *Configure* view. -Upon configuration from *Configure* view, the configured value shows in the parameter update dialog when you click on dropdown control token. +Upon configuration from *Configure* view, the configured value shows in the parameter update dialog when you select the dropdown control token. @@ -309,7 +309,7 @@ Help Service You can select or browse the resource using *Help Service* control. > ### Note: -> If the help service control is externalized, the select button of the corresponding field will be disabled. It's only available to browse the resource if the control isn't externalized. +> If the help service control is externalized, the select the corresponding field will be disabled. It's only available to browse the resource if the control isn't externalized. Choose the token of the help service control to define the default value of parameter. When the parameter is configured, you can see in the parameter update dialog. @@ -323,7 +323,7 @@ Scheduler -You can define a new parameter for dropdown control in the *Externalization* view. Select *Configure* view to modify the *Scheduler* control. You can find the details of configured value by clicking show button. +You can define a new parameter for dropdown control in the *Externalization* view. Select *Configure* view to modify the *Scheduler* control. You can find the details of configured value by selecting *Show*. diff --git a/docs/ISuite/50-Development/flow-variables-47f27da.md b/docs/ISuite/50-Development/flow-variables-47f27da.md index 960d0d0d..27abe8bf 100644 --- a/docs/ISuite/50-Development/flow-variables-47f27da.md +++ b/docs/ISuite/50-Development/flow-variables-47f27da.md @@ -592,6 +592,87 @@ String Read + + + + + +onpremise.target.host + + + + +The onpremise virtual host configured in onpremise APIProvider + + + + +Proxy target endpoint request + + + + +String + + + + +Read + + + + + + +onpremise.target.port + + + + +The onpremise virtual port configured in onpremise APIProvider + + + + +Proxy target endpoint request + + + + +String + + + + +Read + + + + + + +onpremise.target.basepath + + + + +Determines the actual base path. + + + + +Proxy target endpoint request + + + + +String + + + + +Read + diff --git a/docs/ISuite/50-Development/images/Access_Policy_Example_Data_Store_8c82e68.png b/docs/ISuite/50-Development/images/Access_Policy_Example_Data_Store_8c82e68.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f8821532ac687fe9baf1a1c34342822c63cfce GIT binary patch literal 68676 zcmdqJXH-<%(l&}&K?JwtD5B&H0ulw3ARwWeAQ{P_L4*dHXdoywv!gWv4ti`&TtpF&w2Mg=iEEK``-8aeq6?II9Sd#*Q}Z~tDbtQrXSUxD-aXX5E2j& z5GyG@(IgGJifz!T>SrxL(l7o0T}WC`**=@x-sE?dc{$`B9~B8ZMmuK>T_ zc%}HlnSkI{60K?ncYUzMt;nyeDt$_*0us-1rLm_SMROYG%5+ zTK|ZDXPQiuagJa@?&`}+@p+~qiuJNxk6Q{Uq!1SFjt<0oKORP13^kf{{d%e7+S*H* zZ%y$e!WUfc{A767>wZO76`jrZ<}P(Afz9K0GoPp~GShs%`!moc?)8Fq((y8UL z><*OLnq?ZRH5)rBah$?ua^mDRb%2q=7hzq!e#=t|wokf9`IY z(Wjh?XJW7{bI1ZR{V-a@C;MLGK<|TRE{}768MTY>`FAfivn|uQPD(7`qH^mfQ&^iz z5|SzdynIU;Qdr-uFgIJ@kY@0-@hqtWS-~U6Eb&#;C}&g4p|_!FjCe5B`6uM-8FD7z z%l!8&0`y`LcaL2@Op4g+PiW}pi78|^Y`w&tf1}4cuRBosXgcYJlHkX@WNTl3`HWB2 zz8RfV+-BP^;e&o>Gm@Se69K{Om*;S4bGry@Kp*Q#m}^coFO91Q88(u(1!O$tYZVa; zqf2LG<*d^zrvyYMurtn)78Ia7A)g3eD#$Jnposymz52+jKd5sPES@FH^ zn2sVco-RJcIh46XOSr;!&EZR41+R_{m%MsmT1U;Ybvo>7yL1Jw+&n2LeP6yzVflkj zV%lIak@+MpaPDFPW%>-AGyC#x0#mPNr&?WLbY(zJF8-*``{`~UX3ipFVPDo`x7Hdj zxhqbzJ8qYana8KsI*UC6)igbPX%Tc7$9;&&C^$VhiajlCOcWfr?q zcGGWt5iCx;W!rBLIk7O=+SRFew!BP{?M0g0xGfRB+M#Vl3s7CgVveJ-uHIA)x8B-n zTtWHF=0h~^6ZX#Cw8Jh#{3ANSpTmA!TDTHSPfZPk|SX5$Vx0{xq`5)m3+UD6FmhK=>Er)T>S z&3lwQ8d+5eXTh!@*F$xr;=HjfZwi zD#Mj<{WWv1hQWas>%TJOShL3-5kbo@WFM;^R?^F@Mfks3zi|Ny<}!#bZA_&k_W$^@ zMMRkBDh+D7nr%aG54_jmVnjjT{>k^pBNM!Z^UEm(mBz0obrr^4YW{W=dmR%WNGWza zL8d&zn!9WhQ$dG)4vQGBsrM2F<8tk=~lrYIpqAB?6G!n><`oiaVB zAqz612?-8~k!jAvLWyfPc4WPMjwU(F__bIDq5j9i*?uW~-ZkTmljZ$)pK-6g>+!W0-hdrZNsx!WmFC@Ze2s0yfMKm& z{B^Zg8Cuv*6^Fd2=b`M5!|A6yjvQ*Dr-nvK+nX&Q|yURQfjB{_w<#$_b|1L_QJgsXUjGRt3LcXq}eIm z0mtdWB19+)S=Zo}JVdz%bBfJBivsi9&vsbz`i3$2qks}?bedx z)(_0MCU+GUjE>v}@ypFwJVd)CsxS#d{L?h~i2Mz@TN;Moy0y63{al6w{R!WfP5Tj+ zuTlN^)2p=sdks_()z9jJeggUd1v<_V-sQd>r*M+ET{Ayqbo3%3AT>LXS{)s z3jDrxTcT&8F(QbU(eq6EZ(>>)(QPC>@2`_A(PX{wd63gWMLa?jq2u(7L_<=yI_~0x zjxM)>%O5IFuc@_>u4aihV|Sq+UZR)OPt>0u&LxAmwUSRJWMm;vXIB?FIFte-lail{!8D{IPzF(Tb1Ie#G47oN}F0`>Z zem9ni0vp*pjeF;@v?;;C39J1i+`mm>W^>|Mr7?PZ9DMUkn*^JF42g}G*3||1@iL>E zc&5>|Ya#Y!&Hf|5*tKCt!`e{K)XfKT`2EB$xrfJH#*&lVHMpY^sEB1{ zelI5-INoty;CVc+o*EYWyq_vJNJsSfCNypTfPkF&4^?D~ntLU8)fi?QaM;Z?QJ(Qj zTEpxR))?0G_?AeT(w{7O@*7YEK6%)Ik1vAuOBlT8RUNo;HN19W_-K2D;xrY$v9~Y5 zZ`QwYOF|gUnX}u!s5_ds>yVFnW-4xGxM`8%HSe5NC7syP-?u7?zFR+C(*C9Oxsh)OM@Na|Y#HDAhQJ?55|A2O5yf^4>KDEKOf#@lHmFNG7%UDdwg} zsPQ({#^ts8x<~iWAjoq}&ulfr0DZ&6lr%Xd>Y$n-H}L00#O{IFvxVr5y|TzEC(W5M z#e}YjmB`IUS=F-B;MkTIl43q)2&!CLogj_;{ZHdfeO$)-1{<$SL#W6jTh^Q=@ND)(;lJg0)r?IGa>zDmT=ab#HV-1q@F+Z8AGME!N@VW*))B^%fpoQfQfnWMH zg2j!Ou4jR6*NKhvO&1o_db4V|#zv$+4;^fyryZaisyaWbwLUyM@vQ4GQyc#gjT3LK zT+c+k#6xexbtdJvY2>&!Gua#U_FtSI9MyUUyh($G@cKia@6~+0VS&tuzHg~sx%3eq z+<;toS^=Nkj&%uTQN35%G$WM44XX>k5gp_v(SeOprK_uptfO8WvYZl;hde3>sg?S< z$DXtCzM-MPduT;;_jMoNq4+Py&_N(#yM*MvJ`qJUJmbX`zuJAc`)!?LN5{rVQWi$8 z6N>0@l|W>7fiMd;9M=H3&%GWx2tz)YSjAtYjEAa4~$UbJ=OO|;CfBC(MjY&Z^Lp;Tl z8R3q=LcQHxn&=H2pE5jMu$J^YcH_YYR@-J+3hs&> zIld~S2Mv9?IktIdxK479mvO_k#xq~Al?u^UwH;Mhl42-xf~`)<;Gm4NmBd*NlXU4E z1*F7xtyiZfI(IcxF~n`~U!Pu;3Vbyr@o<~&lK#%XZOlYR@z_Jj_J{f9RBA*P4urT! z#-!D$Jhmj#5tM8Mh#12^b@vD_SdD7|Py(+l#A# z1+R?hgNSTKEqlT~q?+-A#g-Xe;|KOt7!EhqviCHlLMWDecw}KJtbrJ@lN!fgo1g0Id)9)+ zO-sKTssOUclo6mg-1sP}_JM9K^YAF8@V@Sg1$@KayQWX4N% zpXSD(U_(cP6c(X@eXu-i0+%(rF|_^Gc&z7p-zx4ZmRac^iR{jm7*c^=kWs`s^&K&z4|RWRUkN!hzWSum;H;C?)S51rh#eTO~39fj{nwl z$u@%_B9m;OFS_ZyJwFeQaMH$fV-Zrn-jd8^XJ_wkc1b63iKDAeJXb4NV?s%nq6`Ip zf0&Oa>lUSKUyepd&+t~C2S=9-8tq+Mry1`n4IT&(wCbEw2&H46nL0h$RqLnQUNME= z6RKX0{Vm-aCnZ4QSj&z$e!YyVrPFCqMoa0cz2C+WVz*JR*rB_Ts9Su|y z(kp{k)f%au{xq=|`VF)Q;L7Mm|8AjddpK4dq?_-Kr;XO*ScYxUlt;0*b(HUEIkn<@ z*_5X8HkQQWoD#!X)piC99a@fer;MvT@~WL+N@L@>-ihgHWlvW)*6_)4fg4@ktIiV= z4EYcME!(~yo!Ng$EFeF78`ZcR9_9HnInV=REQMiUq(vo8?Y@ApuQ^sEZaA`KC62_4EYN2Dt(9xjOQ1F)AG;Nvys$2C1Rf+7o(i}r z>Ti+RN*Yn^0|8mgxGJKREszWH@k{F)3>gq&TVt57RuZirM|Q!^$n5ysW~D?Dh8@&B z3vMo(rg4EEMO%wI9bQ`rXS{>d@OEODV$4;Zbl^pKjfz0@=O3i8KZow0R4U=O_nd}K zVDUq_LjJQmNmbTKzwb&wDc626dz zcF#f+zXzA9Ify>9xb!d*_t6-(tC3W=rJwaY2A!zZ>$GlWYyn5Bc&W_ne8bfj9KyS0 z+B$XqJYiA52}`!o9%0K7xZk$U-p3o7{dp+rjRJdy6Ww7Px zUP;@0GFqML{c#MGHnBsUY!jA{|MxRhq@in34~U(qj{SWRmoYczd!v88v@-E&4bGj!vmYUXxTA-jQvhjyugW{k{XaCb@TzkCW%X12g0 zcD)crL2I`D^BH2Oml#BCSxC(eQiCdEaVVvg zLd#OEPeKsL4UVJ?Pp|RBa(V&pV=CYn!zTEk%wYWFt<#Wd_{_FA+5yR3rT}d<*j`~4 zS}Ag-{Jka356)b;VI=Jvfgf0#_3y2(Y0wG+LdPN>LQItwvg5uKt_P|2S>S|z4?p*N zq?KIMwys%Z%tU6hs?4Ob8o^G~;3RXOrLvy2yLZMEd^n^|zC9ihdYai<be^}DLAh>YP$?2$v#mB*PjMVqvL9sJ*qEC0h`>VI*%rCyx$DGZ2^ z)|L?m`elrN3#WONU@O)?fSE?sOyR#>ju0Fin9T!(CO^_x^8fD->vKNmPSwWdGq#o9 z)Q~i{%Z9LD-lZQK?24Vtb&lhEaf?yv=myAWaAs!4E*-=))~)*@f9(#FEt}NQG|4F( zvL*?dsxWs-;%?#W9Mg;JosoF@Hnsp#Yc=L2c=-Z>2`}Ivp*PIPfNjaSZbn96iL?=r zcf&xJ@l>deg;#t6as@x+7!SG;ygWRKge+4Ta$D-|-g*Ijet;Qk(i7ggi%r?ldZM6%QL3orWqPj z_$a1xR5(eXbNi0oVuxV} zuQ^uP*S%E4%<2|Y6exBrc_*fd;Iy?Wep{zYV~&fGD08`!#M@sOD5LsL+@+8r4~XYK zO-|JMCvh+m1%s-lZo($}75hJdNrz1FG!|oK4F~JD=7Yt+R*I7k=?Q++12}D|SArJx zdlQy!H?tA6b9f5NTe#%q=TYK~_oPq#?T?2qrEMh<2Uwd%qK)*2veyka!TWAAq27k_ zb{|&%=)Fb*=BuG&u!l=odT?K+G{3A@&NpM8SMfDnRAjeWiaS^~V2Q6(*`jh=49o0q zLKz(QfnUu0&_Xnkn~(~_6An7;d#GIMVBs<9I1QpOj!p&ugJwWFW*+LlL)Mc1-DKFq z$$s2L%V@xYBh;#zM5Elw51mU1-IMayIjVxLM&2TLWpcg=RA&7lH6&g?F71agD+ECo zkJo&CeKzJ=9XwtbowUaYw!W^di8AtFH#Rino{{VVAX1Ph1hoAPq8Xc?eI!RB*&h;mD$5r|$uWxLlqRTrkg9l;^(V|7xjurm$co|{~zhxV|(=l6`ceFd@>w8;Uzxoye zG}6DWt~<7Vbe*Z+{M?p`bj)1TjZ6XVAV2rSSFYgkba|*c&doe0Ad^A%;PHFHbV_Om zfl1kdyHo*9BJyU=yi~T{b*0Fm4~-4cn+GLe-EFpImiSk*-J7Clajm+h2O&M`3JBTP zZ*ezd{M{gR+*MaI3ZOL%Q+;`)LxRr)zd;oY1Ac*+bbmnoO=S3lgS{|Z@+q;{mZyi) zEya8fgZNWH$A}gaH&fDSs z!44U3pBmJYI-gT`D?)9XO-h(v>-qdd0a$AO;~34FBTU+Y)I%z_1+p#C$PldSMB8SQ zr!hLyqPURJP^f{o%xYQGZKE5gylF+xDiU!l%H*fsM?N*XtM4j(g&;EoI3WJXFW_6t zUHLspS(RS2Oy$|@6#$_lA~61rdWbp3@#Ad-P1dkg=8JgwNDAB=7UgX92FMG_L_a`IfRl6RDt>Fp&ldvuvd)({zxI-mi+Mf~-? z7Bn-SU04md1`gAGS>{6U<`VP3G+H_9x%o(HaK~fDN7OjyO#l$+e!h`WKI|2&T2~%F zBZ+`ZG{I=S^aXZjgcTh=SI+EkNaXM@HJgt646IlT)S4om=9H_vNVJN;>=h1ZE;>Xs z&r9$~EkJ3mU1tJk@X22=(asVOOej*K_BHE|Tw5yj@TH$5?&csTrAEyXO#{8{X8$F% z=RtaQ)YV)Z5f}2&M6!2=Tn?JeKl4^7ZL2n7 z`V(i6F#V+gcLbj1!@SO#*}KKz2{-+r9naC6*FicA`O0G?tydyXUNH99*tDwM`8LMO zXqPNt1Qb~RV&L|*>=HTDKVdJO`N(y&?JrlFe{Rknj2Z)nM(yMBF;Qds7DCNXVW)4_ zbgo%Bh?`JkohN!WRdgyHd_s3Y_WDDOdCvtO>}mo5!J%wzt%vcBzql0DJHw(j!Pe6| zB2sQfF+V)4NoL@>gT;`P){1!dflo_L%0U;J7GOp+oA@RK;75DyrC6N z^p%Gp-{QmTJNfP%Mhmg#c!5I>t27drIUB`75>6wg+`-i85OBGDKCE;2T7mqn0%OTL zN-xSC13X&VbUjQ{M_(_$Sme&lxRnfTf>nVhx1xuV)8@nW_2EJj-2aGhn&>;!aV~@; zc2_+Thv~L@z8FO*FT^9jTtnfS6{X zV+?i?7&aaUM4bR5A{sfq)z9y?IXn;3T#>(?oDN_Yg4pMn+JjdZAA51*s+Azpf%ous z`<3CkPp#A{y=&2x@>yn1(wxOxuWM(t4ikrdxozb5u=W>k()VUE1S``d1#Nop4k2Vl zh0M!iKKpi2xWTaueO(Q)AAaUwFDF3XtLm0_sUuCT<}0U4zzORj+@BqbJOVs zQX?LV-&-2qqIWCP8P=oa%g9>pl%; zIg8Lp%+!Zir238T-+$+zd=UE&|${qdc8vNJy8!x>8ZqnQoh*j}6= zG!^k!19pA=3G85~U-8JbAxj;VzEa3MAE-aFk64z z3d!(JE_p=@;+8+WGp2dnb?lDvBIal-v$!EpOp5lMX9ITo=vKN2x5K>_r(Qpdt#J~e z20^#W84&m54+8QRZ9jfOf0+9)tCjYYfoRn*i3&|e zZ&P70d1m@07UQ#`HaWzInEuIKSuz5lguf?4^+NC13Hv_8`7jN?hqEes3SJIu!1oC} zSqYjyF2Rrk9``vjYgd4Y4BCOH?nNi-yRZ6Gc}%wV<s8UNx4Sv1e#%C zflq&boFiOJcv`fUV$D};Qmjyzthr`1jK=UL0rCB_6Geprm`uy3fVuHOOoAFp?iFWa ze>{sZrqJ;jIIx#M_cVC3yyP3K%&*8+kvJ$IY@4#W8HtZ%N-sx;A)g^s1+yLFy+7a3 znd_^KX5d^4Y_dtsRr!{}lN;wi*y?>~jt2rfk{3f8MdCECGZC!DkeSCeS;pvSXEMf> z$4BjU2&wi`vgiX_md=zeQ$y_+oA|FYn+5Oq-A{x166y1XIw>wOMR3apan$9q8fPHN zZZF~a;cd8d?g7jy|7|Dw^wo9Oh`hZ|JXw)6HUqVG2<5A_rF=>jQ(4iBaj0RB=vw-8W5CS( z!4i*3Iq5j^Q(aY^=Ll=lKBn~Md}TmB~ z9_tC(x!FcUc787Nj<@)R{v}^c_csYj>>5N&04-kWgw&D(u4jP$iGLOut+{}kX25ek zA42Bu_&!b30aO94>b+<=$*Wc>!?p51YpA2{%)gFw{8FeZzptfmeboja8JW0hhDBmb z3A1zOcUUlGR%T$BYysb7gYDZg)i%-r9r>Gm!lq8^KbvQ$*m&-{DIuZZ-Tj+YdXtIH zcl)Py$MmXwf*BgeLt06fU+z~1WT+4K3w{>-woMnPZfq)KmnD(qy62=V&OL6{&SB5t zBUt*if2fu!jnnvg16LT35~%h51JOKz@RJvP2dGEH9Jy78x4=Z(sF9aKLf^aFsE%aKSPEA@1|iD|MT$n zGGlM{n4#^pt|PAbKT-_zB9wz)+YA`;=u5jY9X(oO^4-YDQ<`_v$TMaldOW)rn_}0p zD^V=+*s#11G&u9}G*c!RFBtm-%hoI4_mHEoYY$|A&QmwC1izk1E_X;4!)^zPdF-&> zC*N0|mRt*Gmg6ROoHys8n3waYt|^3T+`jq!Wq)$3v|2Yr4h=V3M?!+vA<;oP-?)9d zvX{_x2Eub|+4)}aC6FvdctQD`qFPY4 z9QRxW%U4}E%9mWZqDfjjPrl}S%FmyS@`w&0FWLzMlw*!(1{C#u@IPxgP0aScug$+I zUvN$S#(eL&Mzh)H`9%9@(hR;|?6&56n#}$^C#>+!J1ITTRjny}+gX}%r_k;*>@3a5 zyP%_8!2=QewhI}%VNrDzRJ}qrzx7%d9|YhuCn6aWp!3& z{r$)C8S}`jtSKBjwVzaq<{06N&xb-PW9VOyZ_sq?Ei^BWV_PaeTH+Gf>4Ja^2v&*G zgw$+^IHO0WpFr=E7ePZtNsZ}@9f7i@8(AKA@YHjs-!7)G@>}-Sxd*L&Hl@NRZ>n8S z=Fj3J8ZFJFTcGRlbo@s8bL^8GI>Rh?HCn%U_SzM;aP}t;KH@2~Eq{D}JdnLb3NE(? zufmdE&bZH)Z6|(A1D9?1nS{0A$)6z_`O!KS+%@C9wi!)r5nQWP7&^~ynb=ir1^B2r%sT=y z<>olxTBH7IZw;R{SfT8iqG-( zZM~J27X&SIA zE*%KoA1%DYL};?)bcgkFm3wt06PoY+I}M?&oGm6bw*|*8lt7}wB4+YfYVPjY+Vgdg zTE@HL2&TMD9g84%K+`srhv#@k;>aMm_9OqNnHl1T<+*KJT(reiG^nrDpxU8o;)W%5 z%dlNheO?vW0mmhVaMB@X3GOvM2%bS9m-9J{+W>w!gjh|PxBYn+PS<_-#p2;j_2A7F zH);AW(58JUeO-vMk8QF&SiiQ=Dh=3ru@s4?hmFEhT=a1>!yNgeDK32(HO~humc$Vk z&S|i}0IdFyxRepf&?%Y}0-CpRLI7N7X9RUwKO@4E&o|iLT#9jNZtzY=#3?ZuS?YCt zd(M#bd6cw>+;2}xj-4vrKZ|^WEMJQ=zkx~LRIka@)Twb5#6KN2SV|8<$XHDeXL8AN zR=%L5hIltyf1g73LPj3;(gnK}50x3WC+59sjRvYQ`;{nWZixcOJtw*c^l^!13_g7` zx{6GdkD>YoZu;qYJ?!A;gkKrBj1Gr$hrq%%*Fw24)wXVKo~DeRJL31r{fy%?QH zyfc)1fRvW9MECW*_gGSg5mDB~rEbd{68u{%Te=J)`y%zO;+vv4fvCHyWtwpf?`6}A z{}S<*E&`*B&gcwVlZEcqZ~&}7fNKEgxcD9bWHT?RXuLW23PAj<3uZ1Ge|xtiW=`#- z|Dopfiz*NIN0&lI4hog`DRp!JpayhM-JwE-v;GY-b@*8+TN4_B`XianAnpP&gAuD5 zx=|~NPaeR{9YK8ZaW}dmyD#%S1xm1A-UJT$=p{%nrv8pyS)tMY?_$wkz32Zz==wc; zp=opK`2zHKtHM{U!jCPAV!l_iB7(otcue2cin1YTlOeKeekgULN>=#8kC8vp=~XlU zNq#mo+DT`Hs{I*evqEG44=mM^hWI{q8wjrtv*?aXkWKT$jCew$`)d&c;2au}oXLa#n00jlHE>%rEv4cZDEY!XaqEuFR19JOM+S zE_4IN4cJ%mA}Nq*Enhj;(Xb#Ds)h@K3rr)W`}nt@st>`$L{{vS9fMn#XTJHOuY- zlM5euGxnx$gXu*Rc!SR;Ai3w&H#Y1V)J|$VPhf{x`Q&+t!moG4iQ;a@0_7>;aG?^*PK`!F@#@?b&&X%{#_%B8 zbJC%Kz?zTJScIlcAr>O}dQQ=2p*_ZYvPKb_wF(|Br*WMM=uzgaiOA2(TUhfwJq#AM zdz59S9vK>l343M-c(p$jdED~4wE5vbLdbODwNO7MBkJBdpT*R0pY?5{D5hPYbOk)p7^X? zf%n(~cBk>%ZZG|I183BW>pc*3Wc2~DObm+Vqi*OF?}{Y@I)sLuLr@6GV#bFQ&OwJZ z-WOsw1J@;u#vIUZ>o1CMwjh{+)7+h^g?nhTn=kp6Uym3tFrD+${GOH=6CN=F#mB&r=g=<6(7v^0ZBlVz01ptRZ`&Nfv+ zyJA|1r7cWas=#P^dlMRhmKp#Fr$XbQ5+$oFS!+p=w#xRE2aY(?A*0ZcG8r2}<@Nn! z=s?=`arYOqkECd0s8P5p<0ueF2Y%V#Xw-}bvZYQO;C9Y^@f(lnzw80Ja-6HgkQ_0DndQbSXfjM;mZGq*@%vmY${e(gtPfV?3?_FUbTZpWPeed%jFD3z z8X^>J%z^{*U9%95A>`*#tw|9PmcU1yg%QTE5(sk0!}hYxzUZOU!J4|15j#5q`_0Mo zk?_34s1a-`U?0*Fw#F-KEe1Zblt{_K{!SjiVc(X}Z{RCukIki*{_TpFSdEQq)Cj*; zWDK-oQvdY3szrAy^bG}yUiNV_Bxe=S8W%>M%uDF04S=+?HD4f=(<-p?#Aszd7x!?h9D7DgLtt z%Oy^R9_zqlO(RF_-bPWP0^Z?qGn#`lD+k*o4|y@ak+tG3nKes_bCctHFxC8}68mgL zpX2$cat#kXWlZAy!Pa3b!GMQEN?%&RhPCH2UWCu~?57~*)-vN#k}U6?YNzr0rBSmV zNJo9o?6u|!%jIUan-@VYf!eHxBMCkVJH<@sYr&_nWbY22XD1x@YqENNJ(R_)IKCK{ zzS-JM@V8REq_N|l3}6t6?_Q&{*_dZnKX505YqfaZy$Pn@rl}X7!KQu()3IwG=NNF8 zp#JC$zsHNLN_4xtuf=Gab&Y)v5-CudYPyugf&ctgipn1Q^9D;cIpvsqco(5U(aH$$xuD)TBI;(@|P0aH9zt(by~6!UCm} zaHJDaLXN#571RAK9l=i65rC2`?XoG0x6N4P`V9nCn=@6q(_AsP-x-#8hukBUiGDr) z{pME&fFxxsE|CoJ**Yk>sUgRV0ug@Yp%}Vu){lV>V)i4HSk}y#Xb4QC>ZxjS0N*-e zj%n3(Hd9`RYOfgn0*c>gLJ5>I&_dZ~m5bztCoqwOo{|FE7Lgo0T7zj2_qb}FrV5x& z;!g#qXTh`go3c8bJi%6v>S!Yzj%>3EaO=mvJgzE1(^L!xGQ4*nKcjD=1*NX8pV%56 zrfMWP0g+BC;pAD3GOQGGoJW|wT4b|gnT>M_@vsNG?Teh7?Zfu9_oQgGGxy|p;f;5S zU69Z8UM`dE>PR*}S|dT+N!*)Uf6a5iaQdDP>+wpO>yC*c$1uBN(1w5N{Y2@@rdTIt z!ONbC)WH;P;Wr;QT}wFrt{}B>hv|_GJm7Ywz|G*E2o6*^aO0qNcY><4{OwBFR-#4` zlW*5`bwqHRjju!!Htuu4YsEE(sRlJ9!oMkN!ZAR?(e}QrBF6`O0W_p&h2QkpJ#gbG zJzDVoC4yy=lY-mtn8VHs5w7>Lmp)%$F>7-z{nRcLV_?Cob~Ogh-NnkxE!?5m9F%86co}avmIFbDw`*XazA7xbF?FD|h=3>bZeWgc+(5TUYq6-l#26 zS1QVw+5av9_zin(dZ~^XSl){D@Ifvfx|^Ug;R)~a)$ONj*Br2eo$vwG?z#_S{93*o zPgr||OH})$i8T1;|E*)Aw&Fs@|B;T3i}ijc+6Ms820)?p$^Bx`v$T%)=g{y^SpMe4 zHBbo+b(HvS7|X`MO@;$A4sA3e&U|!zpPW1Ji2^GZ@ zRY*sTN%?k6n6?q~A4F!IfAX$zE)5}aU9*|1;A4s?A$d7^Ny64EiL95&Crghp%QW!~ zgWDcnYE`lZU2GksL-a`M1~q?^w?pLbu6!Nl+88OK`e@6+NVyWo*wwJb^~c475HQbW zq{51YA6vaoV|#LqN($=FG*}4jb$?mnbTxkSx+;*SUWg@1|7oHJw9^Fl#0hX7ZrE*E zp?Umg41;ja@cT;-$njz4~k zHaQ53p@?%bEy+|VO}rf@yU!(M!R1P<2oV3D25(JEA@Q0&U}O5=iOL z#|;f04-J_Wq)ppi(qi%)eQc-5bc7{>H453A7K$1o%X+D_Vgb_bbNQ-Y5Ws^p?$M&G z+E_#gR0!Zb|0E#fDbG@X2k;)thT?gz+4M|+HQ-=dW$qDqY^EoUk~^$jd*NkVk|0@b z_Ija09y)qZ-;>e#Jf?)7166vYs%cFj&}W_q>^rUZyrZU`*Xxp$Caq8^t?G;wc`c*h zY{<9F>!u-<;QblTFATSqU{5C-{KIJ88AkAS+TmMQ#7DKqC&`{Mf)%K#Q*7nfTCQup zQEK>0YK97SW=LNA<2?0#?Gs}K+FGD2&PF&`iEu%S^rMWvKPO+X5cez^X!YqEJpHy6 z%w$KYjDMan2kEBU<$<9d|?1cg-3HM(SieL}O@^ciToS>APZ%=^5ONh2@@z zl45Zo-me=KN3l)0N8V`Vg)A(^{@6%kco-h-S;uVIak6 zF56TY8RcgpSq4tueeqN$$w+NexJLpzz`X@7$_2!+!`2MP`8hmQq>1eAr4)1AaTz2Q zHJz4{(+WsH;(azXq0Lj({jL(+*gJ9lclhP~n~3e}?rg*pf4#`b*;wc$L3l^t@*&$0 zY9%h{xHPSOD9?0RH-1NT!D_1T4~n5&W<``@Rk)0ep_7JKI^fR!eQSFGVn;wFmDKNg zA~!DB{#e&ePql}k&sn^xEpOzSUc&N?zQNGNnBxLI{y;v->~aWaUBi;7jfd9u@J46< zPj!NyH2#-V)d}8=who0Rd;&;@p7)>0eh1ex;_&ymJxkq_Y2ZEkGR2)%XP_u!O_VIf z7Imx7nN&GpSzRLo(m1GQS7NPr@eScw;hmGfM$@7IYC&`8qU=u-AgiE0 z@oT&c&@d$9WF2+om3aJ&=lmDdE)FnGleJ2+WR_Tea$*#lf3uaKfC#9}5)c#o$qAkF z5)h~|p-i+)Gyl^-e#t1Y5pj%HQ$yG20Sa@Hg<3iK<`bLvzI#sjsrcB)Q+)?I7*o}w z^J|Um6#vCenH*4=2Zh>sFnBW^{t)s`0$t67cbj~Wy8B+}_gEk?KfB^`#$=gzbaT$0 z&a@$p8#|*IeQ;|IhUJb~3Eq}j;R(0WGmJP-Wx`duI7*TRSF0MOAR|8GM!VOw&ZwVD zm&{5YRpRriKChqENaO&jW(f+o*9$Zu?e)wnN0q3AoB>-aR!};wW$bhZak`^ZxBGs~ zXI{;xA}bwtR|uwA*d;#2Dg`vWpw(AY?h5L(eB0Tz(62>rk6|`AWd(rA+Ap=!jS~HJ zqBBk};d_PzZV_ho&;+v}VZq&q*equ2aK`6~xP2b^7xc!t+2 zbXr6KNJmg#{f_@X&~D=i^SMVYkzylE9UhamR&LmCE|o6&zC4OPXA#RLvH_J1F;`bQ z-jPCYZFy(Ki_z>-TgfEHdq8V2D3FA)^ZjJWFDp4fTJV3M;bL~J+6+~?HZdm(*B~CN z^5J$>b7c}i+0#8-*TkmS^ows1H9i4am1_9mupRWEphu*$X zJkJ%KSfvr2f^WfWmX6Vg+|XD*tp1chSl9HZZ$&kUo6$rUNE*iA!2jSub>S}|@|>gZ zvFz=)Y6CVw+O}x1f>!n6Q|Zypys3T3A~zL8>@ENMZz`DJRNh@K902K6&u0REp7#2dMD?T&&z51eY6jpAv;f+)gDRC}3q-w>9|7R6u#4^?pbXVc+Ju zwz#;R$H3s!LsO4X#oE%nTA)4aPM<>%kHh?0@utaxqg6`C@g(5XLlOby_3ouA^9PGh z(L)070(P@%0vA?r%?$s2#?I^y=)CzXTkwZU*ZVZSr$ahJ4}iA%9B^Qdj?O=PqrbW0zZ^QsBr#rARX7T=3_p_o26TD~P-QuGOl`5ba zX?DdxSH!T_ZqvhC>i&htSAv6sMHZ`4rVms8NC(K?WqM%n_ghc_2EcXLUpI3Rqi)`^ zhZZq%l@^O^P3$ym*;^$QmV_&azrZVs*WK#d{1L4U0^|Hx)CqCjj}r7_P1w(l0>NYY zf67!rA*|!7g^vH_82ysDglyiiFoab0Fq?%I73m5|kS9rJy_o`73jz|y@JJB^ zM&+zjd)9YWDW^k2RBoL)Jc4VNnyq=4)D@XT|M;_h@UzHgzm$?Ftrw_m*EjaM>)NBD`F2N1!<{@0<5m z{_aLHZJK}ftSkp;i+c|A2~~M0qRkciHUlYY@Ama=`Q_Suo9GYSnj3lTAqp&XA;a+6 zE(Oj(+_STDUf<$#!1_bm)6q5u5aHH#n&W|MZs!@W0kXnv*gd;YnvC+NHOw=%`jppSP~*^TDR+OTpn zdn4f|ymmV(U8X-qHh#2s@|ytfKM2O}8Q`vAF;?**i$Sd{+lRqA&sOycBm@L9jwh;gA(su8%**01Zk_wf zt2T$7+`zi(yXWj$o&)>3y9_`2j*)$J|Ig}Ax5cr)@gA+erp@)_RvU(p9*!;VrU%{% zCE+#MLqT#|25W$NdI z_xK2*9gISl;XMZ3)sh23*XxzBgL0kmUFWGr}5 zUGc2z@&DrPt>dCh-?nj9U6arirBoI{5Rfh<6=bLZq`SL8N@}nGrKLj}hGwLtRZ6;B zoTVFN$N`3VuY1tleZJ50dEVc@@6UgCx$kSPIIr_Oj^jM;=N?2LM=6m=3YPln#})WQ zWE{1DH4Z+dsshkykmhmRXyAJs@>=w;7vw46&ba17p|MhFH>dF$+Ga#?fH(RXD|JD} z#HRz%S1BE+cjA{*)ftTf$G6tYsjrP&Tg1W@t)b))`WxDkouL5`ZbbebbP?z=s772) zaL+0Vd8M4RHio?ohaaRa7CQL&RGk<_5JzL1QKk?$eK{*lPUO%~oAt zfLLo5&n=7Mg!R>4GI0S{Kz`du7;TLBWyZ(#6`nKtP)%VfP&q#4$@!S}uPrj@Nq0D5 ze-qx+dXyQK-~9+L2k`y_kBcfUxX~;l;sq#w0crSpmYW*_q>Mb1MHgaDmaXYu$Dwx- zEcaHC66!@=X!k93Fg33&I@`T${SS|3>c zdGI3|UlEw0NTYCO>xJ*-a%-!PLP+h(OPN}6qN3ohK7IQyRWqwA?ykauwpIY?&30PP z#kBgPQY6&W++5#sSol%(d);CSjl;bt*~HiC8X7fr3RxLtoUj0k+$6nl@yoZLRoqBf zy;Okw`QNm5><$HD%7I)q zD~tClWyp-a=Tg=eav%I5ItA^E$B9_EE+%`e=gu9)R^|8vlNh2mppNX>$^6{`${qA7 z)NSOVTBwBg@66!3IAj|)41GUQ+J&w@VVb$}bghyrf%~s%jUKZE zq<&@CmgRQV^4kHv+e1<|EIm;7)P2RU%9S-%nmEytfySC4t(g8S)dW=q_Y9uz0*b7( zSIfl!n&7rdjw*@hS82(cj_R57IEq`kpF63&hpzFq9rVXk{k6u1ce9=WP50=n<@({7 z5_#oiYDyRwYGh%dy$s!XiQ6jMWFz=_9p433G_F%wNCb7GP9s*&=aXjViiduDA2dTWhYO*-22{ zDJg=M2Bl)BrjHL{$YNEn+w&Hj*UwJ;IPTsYEkB98`+cDfs@sJ55u5luUp#i99@8o% zD9;FHwn;tcrr?T=-w6~;; ztRPboeUe4tNoH%q-Om~rhN8#)F_{%t7HH>3Wz<}w)kHM3<1LMp&E3pZc7+j2(F;*85LjICSB4Z1NCLXGkz;|oZAC|`^;~c*C z3rIpW6%o;(Ohvt?HsAoy{T+wPY3X5nB~Oqh9xfRR`O5DtdR1a@6F&Ns&^=>S4rdInN zD`UB}qJ!<{!0RF=G>)CPeZqG$MAS;qPZi2|>>$>e*7FiysHOCjP%+#=P6rWPV z@vHtlIat0rz?Pq1)IOL>CP^KPPK82yON;>(<_K-V^SG3*kNy&76X%L#W0sT zGTgDGHt|GAh0*A}Z=4B}+K`(1@_yzt11xygx)N>3aj=0{i$6jg_4|IWBNaQ2_KoTk zkdCzNv4;i+)E1mKJeV8WyCc1H)>hM(s&T8ukTh{O`6b9s#*AghT80k9RxRg7ANWw2XE~ujgY;0%2@7O?=WYQ^J{z5N#kGd8{nsteEf6d%yT=HtakG8Jx4{mV$9on`p@q9 z{*~pcznB&~f??8sptE?%z>6L4km6mNvzL#;SwBsTi~>9Ulu22FhfhTpe#8DeHn@`8iw zM}y&WG9iDusytZ&3W)}412c?=w{_Hly{o#6N0fWzQ|6goweJRgD)cfl-nk~(`$ojA zgPXa6<{-S;sd$uyF_)Hp(-#v^_6V?A;AL?oA*QEIn#2|waKL-SO0k=wCaP#E*VC#Q zvXhj!23yb*%Bgm%4#Am^SI&Qo5-Z+wulPK z0JA1*Un~3Fz75dXzse`3nf4 zNouL)wa%`1OGp|mRl5duUOkb`&_8Xj?YY02zjlQ5#gf%*Mi94u?BtX!U#P5is<$ye z?$1vuYV$ZS@Tsyv9B0HPFLJ>qIitTxM}ISno~}q>*B!=GuvNO19ld5#l*3OL94uh* z>#@n56#Ow8Jd;*}N|swD0%I7*G!CC5Z5@3T%auqG`g0cX9?vQUrF+4ts#*G`Eaa6j z)V6L9(o_FgQIKT@0Pgl5DHc)OStwzvx~c)XJ+GW3Y<$cngLfL0>BXXvO6haklK`Ep z+M*Et%X~i64X&^hA1!37MVX4FbJaHH*1EuIbSoBLrJ+X{V|9#-%9`<7?QF zWKv%2%^WCZ(Gl*8mC;!rEUm&ADpk6e&#~*QQ=)nb%519!lCvEin06$&DZHEF@92r? zSisoCjE|izbaU&A>A6L~Db+y#3z%un=6}IDywy-rYSZ76vx3Lj7~F%oAp6fQeG2ZQ z(*zpE%*)?s4C>eNiqbshV`wf$s*Kmpx#{@7%Vymhf7(hpsfl2S%R+ z+2ZJR4jeYu=k}vD;B@$Q|F)2kfQ$phc(;n0;#%X2YuM49if>j6vD(oYbRC`3rE`4> z!x2}giTlpkBe-e=8AyN%m1RuxSaD5oP)zoC;POC63kF4z7Zfsg*eK@wMa}|bdEi#7(G65xoy+STRtXG#_IFT z172xIUKf2Afvv!1c-E(BQ6Lh(anTNCUE|eUfsPUXFp;b&TRE5AVMiPDq}4*gQBkuh z8U1-1*(^VMUm>AaeQiaB?qaI`ucYxmw2-lLsISO=WkR-%2xD!K_!;o&`rvVV=O50LB}ow>r4uoRjEA=K6eWs(pIn{pqw zZO}vOF^@9fhY7^ce%LZ;eKv{JeaNXF)N}sKO!u#>#gCB z>;5)xsM~r6c2!{=m-)EInV8Q6?KVxtJ^gN^q@(6=o;0LAGgSV5D609;Ai7eafW*%U z<(3JfIQ_8eACN7OwDndeb+8ie#urLInQ%ht`_Y|ODLOIUA{5aZBgDAS-K1`hu>Qg- zpf6^!V896vx=`}v{IIx@sZH8?6?LzENA8)7ZHg9Wsh=I;IJG0x@U9BcvRHWA@m~>FQutM+R$&cP| zSR0o0y)h46B{%DF&vZ^tm^=BkeVlNZnUiBlL~`d}Lz(sDn80mtqaDb@)aO2YiRv-lde| z;O29u%P8M2XDA268Rk5 zbl}$6pME?iw(ReRp>T5h-fmfFyk+9swOrz?pVIZg)$&ZhE9~``BKOv7^NzI7x1h8s z{0(hcs^aH&thC6vRRePMSOy9O{4iQKxzjv@3m#AUU7&bb^9RO#&z<8CG+tN4r0I@? zm+nkIt6I9Y`-oA?-N4Sr(nQs=2Khyk_-s;zNBaa4(>`OA_F)<{0e`8fU=zGvL+u`u zy>MUfxS$=L&7Um|lH}^igOes z2SJMGUOVdNQ4locC+ZS4b|Y?^nY{d*BMgAH_Exa5rw z;3(i8qAv{XiSNjJ_=pWAAFhjFltqUH6ue-8;|J%j+KN~k3BY^Cxr3h-#u?fyB%sN|~+b-%EONFCm*7hE}NO=Wsjz?Q(L;J@lVjb->e>GT!BZ)URaXG1|dWm==kCcTD z;rU5={lr@dRtSzrX0<+xz~M*2pNB)MmS78o6)vY;_AXSo!PNvb(R@|R{EjaR#krk1 zM$lg`RFFoA0LoWXWBb6{7eN&VS#l^;b+b%^5@zjHZevJN$#sfDDH3hnls*P!*t-~D z$?(>vC1qOK)epm+5pk8Q+4a(pQjyqTU#S>f?pK408y+b)sH}6Ju`)Rq-=*!JSqm`> z4m5mtJ%d#K*yE)=jk4K|Ae606utTG2?QMIkm%f??ZVt$|41DHhGVSCfjbAt4@eTS| zaDLvr=dKa!UR1Md1CPy=am&F+U8*_7^2Xde38Q8k5$;!Bq79c#teUX}Pw6h2|L*lh z=)V#PEP|(zs@k%-D+>U)kx91Uery)3aF768_|7p0_f5q&ZJioyd`D4|7&|@&12|k< zW?JFK8{qaf{F(i#?X__a96F@$oV-yFf4nXhX3_%hAUk-ac`}TuL;H`;a;%y$YlN}l>iYR1rhj)u8ekiZClcOE; z?29R;qny6vcO*#_?S54Q9kpXe%=cM+^i^A`TML>fWQ;5LkV&-P=0}2Ru1y4D6*YG7 z7tr?ThbVzhCs2Q$GCY25_}O^rniEr;An0{`>XJ1rVs|+vd%q$Bj=UVrP^6<7|APLs z8meF7$yA9_)q+pp+nH$euoq*D@?`tfmy)+o8h1rVTXXcI%eTKgR?)xIK!s;dmg=~y zRwm;CtbHav?7y&6(H_c?>X_JSd+}7uXsQ?%%o4T?+-CGO@{+D|sPr?XQ~xi`g4AaK z_airf1&aT_yD#*HIU072)4+zUMzkMbQ}Ea$Dc^0Wt%iLHyz%iK{ur$||L%AljjL&X zkbC4*+s-1tA^@&mrJe=Ry{g*<2jrn0M{^BFv6nnXv%CW}wAxlME&{sO_MFA`oF(5c zYrG#%b>TQ%z#pY>w0n(N^(!9FD$bJ$|9HqvGL$h`?(`(DRK%@t^#bS+ygI7@AwR}s*^BOuAgG9;CkOiHie9z1yS z)zenPn-(wG$}>8<-5{7~ag(z-8Sr>wd#TXdN%gc!5cOHzzWVv?Prg>jqe?V%T*qY0(f}zP^6v&8d@%V;( z>M>#8Zf) zT%*O3g`_J5@Ehnzi;s2Wo`R-$* zi0l3{kZu90`GE8x=Yv2TH? zlhlXzot*;Rzq@~KwGQ$m^ndY`tm343<;j>-?3l7NW3K!rHh!3=II=Z6lmE5t?{xJ& zPcELdFtYX&Znha}&v*Q)9;fc4srl{0p(^}YrmJ1+ph>UReSVgpzCin7NtjLw7d6H` z%SFd6gtv8ia&>17NUB(Mx#z!is?@J9N?#(gO_aVNCDV#rhzmfM-M_BJ^;s($~{yuoPY(<}P$)xTQca&B4i=5&7^bs4;?+}!q%Eo?E0oXJ@g;5UjxGfT?t zlxm|LQGgmkKKlMnAq%1{%}Y{xViF_)mo*9Yd{6u@wq}HT;sNq5u{@Wj%iP@WKBv`q zwoX5!{j6)8d6Vb{xMTiqbCXx+=E-MdiD=W}r{qfj@D(46>WY*0J*ss3h!%S3{NTRH zV0f^SOE^eC<8aR^qOetiZ5uY_rE)3hre7p6;V~RD_H@bb2szE?A&(sFz9oDh9)q~)K})bW2%>uW+rhr_O1odkoYZxGbx_sj z`V}^h!@Zs(Ujh>q6^VMc)z?6!)x#ht__tKx_zTBT2;dlvvcR1z+rGGcA=dOsd%@rX zO~f^Q^Q`GCjI;_BGU0sNO!;6=|LDi4vAmC?XNIcVS-NIi3-k35T_#X2DNLR5r0Zi# z4x@s$C!J9FV0ZTf&sc}l1ondb2l5D;-&M%Zmh80A7JH>IYF3-}6K@~#FG04S582?; zLmz)igxQdrYB2n%7(3k(=DUE%ZLB~X!w6YUfRuJz$;?3GV)pzyz066Ka2&Sz0C#M zMsM(L3FpNW*#NExkd4MA;6GY5EzIV|x3FcQkbS*Rr?q)ww -PW>nD@!-%^% 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 literal 0 HcmV?d00001 diff --git a/docs/ISuite/50-Development/images/Access_Policy_Example_Integration_Package_6105b27.png b/docs/ISuite/50-Development/images/Access_Policy_Example_Integration_Package_6105b27.png new file mode 100644 index 0000000000000000000000000000000000000000..b88ad1e238eb5e611245d6882c8c81cf89d95597 GIT binary patch literal 58689 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ΛzI-;1{t;O$_t#dr0!J|o9Fbi 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 diff --git a/docs/ISuite/50-Development/inspect-a4d5e49.md b/docs/ISuite/50-Development/inspect-a4d5e49.md index 3e71a507..e4b77b55 100644 --- a/docs/ISuite/50-Development/inspect-a4d5e49.md +++ b/docs/ISuite/50-Development/inspect-a4d5e49.md @@ -19,7 +19,7 @@ You can inspect consumption of integration resources, identify those integration Inspect database resource usage caused by your active integration flows. -Click *Inspect* to inspect the usage of integration resources associated with the tenant database and with the database connection pool. +Select *Inspect* to inspect the usage of integration resources associated with the tenant database and with the database connection pool. - Using the *Connections* tile, you can inspect resource usage of the database connections caused by integration flows. diff --git a/docs/ISuite/50-Development/limitations-for-xml-to-json-conversion-4bf5a05.md b/docs/ISuite/50-Development/limitations-for-xml-to-json-conversion-4bf5a05.md index d08a900b..ef313f2f 100644 --- a/docs/ISuite/50-Development/limitations-for-xml-to-json-conversion-4bf5a05.md +++ b/docs/ISuite/50-Development/limitations-for-xml-to-json-conversion-4bf5a05.md @@ -27,9 +27,9 @@ The XML to JSON conversion has the following limitations: [Define XML to JSON Converter](define-xml-to-json-converter-a60a282.md "The XML to JSON converter enables you to transform messages in XML format to JSON format.") - + [How Streaming in the XML-to-JSON Converter Works](how-streaming-in-the-xml-to-json-converter-works-4e05044.md "During streaming the XML document is processed in parts or segments:") - + diff --git a/docs/ISuite/50-Development/manage-domain-categories-new-design-bd9691d.md b/docs/ISuite/50-Development/manage-domain-categories-new-design-bd9691d.md index 68ac9a16..fe303368 100644 --- a/docs/ISuite/50-Development/manage-domain-categories-new-design-bd9691d.md +++ b/docs/ISuite/50-Development/manage-domain-categories-new-design-bd9691d.md @@ -20,7 +20,7 @@ You need the following roles to create and update categories: - *AuthGroup.API.Admin* - To assign the role, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right: . + To assign the role, see [User Roles in API Management \(New\)](../user-roles-in-api-management-new-911ca5a.md) . diff --git a/docs/ISuite/50-Development/manage-external-content-new-design-f5bd17d.md b/docs/ISuite/50-Development/manage-external-content-new-design-f5bd17d.md index 71c0d8fa..c1882eca 100644 --- a/docs/ISuite/50-Development/manage-external-content-new-design-f5bd17d.md +++ b/docs/ISuite/50-Development/manage-external-content-new-design-f5bd17d.md @@ -12,7 +12,7 @@ On this page, you have the option to adjust the visibility of the Graph navigato - Assign the *AuthGroup.API.Admin* role. - To assign the role, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right: . + To assign the role, see [User Roles in API Management \(New\)](../user-roles-in-api-management-new-911ca5a.md) . - Enable *Graph* in Integration Suite. For more information, see [Activating and Managing Capabilities](https://help.sap.com/docs/integration-suite/sap-integration-suite/activating-and-managing-capabilities?version=CLOUD) and [Configuring User Access](https://help.sap.com/docs/integration-suite/sap-integration-suite/configuring-user-access?version=CLOUD). diff --git a/docs/ISuite/50-Development/managing-access-policies-318d107.md b/docs/ISuite/50-Development/managing-access-policies-318d107.md index 44268f14..e193013d 100644 --- a/docs/ISuite/50-Development/managing-access-policies-318d107.md +++ b/docs/ISuite/50-Development/managing-access-policies-318d107.md @@ -12,13 +12,17 @@ Define access policies to restrict the access to integration artifacts and data In SAP Integration Suite, user permissions are granted in such a way that all tasks can be performed on all artifacts and data. Access policies provide a way to restrict access to selected artifacts and their data. -See: [Access Policies](access-policies-e0009f3.md) +See: [Access Policies](access-policies-e0009f3.md). > ### Tip: > To learn more how access policies work, check out some examples at [Access Policies Examples](access-policies-examples-f1dc1a7.md). + + +### Define Access Policies + To define an access policy, you go to *Monitor* \> *Integrations and APIs* \> *Manage Security* and select the *Access Policies* tile. Here, you define the set of artifacts that are to be protected by the access policy \(for example, a specific set of integration flows\). @@ -27,6 +31,10 @@ An access policy can contain multiple artifact references, each artifact referen See: [Defining Access Policies](defining-access-policies-b0d7950.md) + + +### Provide User Access + To give dedicated users access to the artifacts protected by the access policy, you define a role and associate it with the access policy \(using SAP Business Technology Platform cockpit\). Only users that are assigned to that role can access the artifacts protected by the access policy. diff --git a/docs/ISuite/50-Development/mapping-guidelines-mags-42124f4.md b/docs/ISuite/50-Development/mapping-guidelines-mags-42124f4.md index 6e2bcad5..c006298c 100644 --- a/docs/ISuite/50-Development/mapping-guidelines-mags-42124f4.md +++ b/docs/ISuite/50-Development/mapping-guidelines-mags-42124f4.md @@ -18,13 +18,13 @@ A Mapping Guideline \(MAG\) is based on a source and a target message implementa The *Mapping Guidelines* tab displays an overview of all the MAGs that you've created. -- *Add*: The button allows to create a new MAG. To know more, see [Creating a New Mapping Guideline](creating-a-new-mapping-guideline-a42920e.md) +- *Add*: You can create a new MAG. To know more, see [Creating a New Mapping Guideline](creating-a-new-mapping-guideline-a42920e.md) -- *Export*: You can export your mapping guidelines using this button. To know more, see [Exporting MIG/MAG](exporting-mig-mag-c8bba26.md) -- *Import*: You can import mapping guidelines into your tenant using this button. To know more, see [Importing MIG/MAG](importing-mig-mag-7139aad.md) -- *Update MAGs*: You can filter and update mapping guidelines in bulk using this button. To know more, see [Updating Mapping Guidelines](updating-mapping-guidelines-655ceb1.md) +- *Export*: You can export your mapping guidelines. To know more, see [Exporting MIG/MAG](exporting-mig-mag-c8bba26.md) +- *Import*: You can import mapping guidelines into your tenant. To know more, see [Importing MIG/MAG](importing-mig-mag-7139aad.md) +- *Update MAGs*: You can filter and update mapping guidelines in bulk. To know more, see -Filters are used to search and display MAGs based on various criteria. You can use the *Free text filter* search or the \(Extended filter\)at the top of the screen to specify your search criteria. The *Free text filter* search allows you to filter and display MAGs that match your search text. It can be used as a quick filter to match your search text against multiple attributes of your MAGs. +Filters are used to search and display MAGs based on various criteria. You can use the *Free text filter* search or the \(Extended filter\)at the beginning of the screen to specify your search criteria. The *Free text filter* search allows you to filter and display MAGs that match your search text. It can be used as a quick filter to match your search text against multiple attributes of your MAGs. You can also choose \(Extended filter\)to filter MAGs based on specific criteria. You can use the required filter fields to list MAGs that match your query. You can also customize the filter bar by choosing *Filters*. You can expand or collapse the filter area using *Show Filter Bar* or *Hide Filter Bar*. @@ -250,7 +250,7 @@ The date range during which the MAG was imported. -You can also view the version history of a specific mapping guideline. Choose the *History* button provided below the version details of a MAG in the *Mapping Guidelines* page. The resulting screen would display the following version history details of the MAG: +You can also view the version history of a specific mapping guideline. Choose *History* which you can find after the version details of a MAG in the *Mapping Guidelines* page. The resulting screen would display the following version history details of the MAG: - *Version*: This column displays the version numbers of the MAG @@ -266,7 +266,7 @@ You can also view the version history of a specific mapping guideline. Choose th - *Last Imported By*: Displays the unique identifier of the user who imported the MAG. - *Imported*: This column lets you know if the MAG is imported or not. -- The action button allows you to copy, migrate or compare your MAG. +- \(Action\) allows you to copy, migrate or compare your MAG. The *Code Value Mapping* tab displays the list of global code value mappings that can be used in your mapping guideline. To know more, see [Global Code Value Mapping](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/fd1d3ff10e0f406f95924d5f77c7f6b1.html "Know more about the Code Value Mapping tab in the Mapping Guidelines page.") :arrow_upper_right:. diff --git a/docs/ISuite/50-Development/message-processing-log-b32f8cd.md b/docs/ISuite/50-Development/message-processing-log-b32f8cd.md index c6de1740..61ec35a2 100644 --- a/docs/ISuite/50-Development/message-processing-log-b32f8cd.md +++ b/docs/ISuite/50-Development/message-processing-log-b32f8cd.md @@ -11,7 +11,7 @@ Select a message from the list. In the view section, the header shows the integr > ### Remember: > The dates and times diplayed are converted to the local time zone set for the browser. -Below, you can select and display *Status*, *Properties* and *Logs*. If the processing of a integration flow failed, the retry runs performed are displayed in the *Logs* section. +Next, you can select and display *Status*, *Properties* and *Logs*. If the processing of a integration flow failed, the retry runs performed are displayed in the *Logs* section. ![](images/MessageProcessingMonitoring_e08775e.png) @@ -41,7 +41,7 @@ Description -Displays the sequential number of the run +Displays the sequential number of the run. @@ -107,17 +107,17 @@ Displays the intermediate status of the message processing log after this run. -You open the message processing log by clicking on the **log level** of one of the runs. +You open the message processing log by selecting the **log level** of one of the runs. -The detailed view shows the list of the *Run Steps* on the left. +The detailed view shows the list of the *Run Steps*. -If an error occurred in one of the run steps, it is shown by a red exclamation mark in the run step list. To display the error message, click on the exclamation mark. +If an error occurred in one of the run steps, it is shown by a red exclamation mark in the run step list. To display the error message, follow the exclamation mark. If a **Split** or **Multicast Step** is used, the steps belonging to one sub-message get the same segment number. They can therefore be grouped together. To view the *Log Content*, select one run step from the list and choose *Log Content*. The log content displays the *Properties* and the *Activities* of the step. If more than one step is related to a flow element, all of them are selected within the list and you can scroll from one step to the next by using the arrows in the element info bar and view the properties and activities accordingly. -The *Message Content* section is only visible, if the log level has been set to **trace**. +You can only review the *Message Content* section, if the log level has been set to **trace**. > ### Note: > The names of the flow elements can only be shown in the run step list if the integration flow model is loaded. If the model cannot be loaded, the system only shows the run steps IDs. @@ -126,9 +126,9 @@ The *Integration Flow Model* is displayed on the right hand side, if it is deplo You can view the path taken by the message in the integration flow. If you select a run step for the list, it is highlighted in the integration flow model. -You can also select an element of the *Integration Flow Model* and the related run step will be highlighted in the run step list on the left hand side +You can also select an element of the *Integration Flow Model* and the related run step will be highlighted in the run step list on the left hand side. -The properties view of the selected integration flow element is displayed at the page bottom. +The properties view of the selected integration flow element is displayed at the end of the page. The availability of the trace data is also visualized in the integration flow model as envelope icons. diff --git a/docs/ISuite/50-Development/monetize-49b7841.md b/docs/ISuite/50-Development/monetize-49b7841.md index 64f6def3..4a0a06c9 100644 --- a/docs/ISuite/50-Development/monetize-49b7841.md +++ b/docs/ISuite/50-Development/monetize-49b7841.md @@ -4,5 +4,5 @@ Use the *Monetize* section to monetize artifacts created on the SAP Integration Suite. -To know more about monetizing APIs, see [Monetize APIs](monetize-apis-fcdc89b.md). +To know more about monetizing APIs, see [Monetize APIs](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/fcdc89b5c4884d5e8cfb32c5914943ab.html "API Management provides monetization feature to all API providers to generate revenue for using the APIs.") :arrow_upper_right:. diff --git a/docs/ISuite/50-Development/monetize-apis-f6ab151.md b/docs/ISuite/50-Development/monetize-apis-f6ab151.md index 2c8d786c..2c8ea120 100644 --- a/docs/ISuite/50-Development/monetize-apis-f6ab151.md +++ b/docs/ISuite/50-Development/monetize-apis-f6ab151.md @@ -10,8 +10,8 @@ As an application developer, in the API business hub enterprise you can create a SAP Integration Suite provides this feature through the following services: -- [Rate Plan Service](rate-plan-service-f4537ce.md) -- [Billing Service](billing-service-1e20fb5.md) +- [Rate Plan Service](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/f4537cef059e44ee8e0f8536f80f1599.html "API Management allows user to create rate plans and attach a rate plan to a product. Through a rate plan you can charge the application developers for the use of your APIs.") :arrow_upper_right: +- [Billing Service](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/1e20fb575ad644399a7af8e1c4f423d0.html "Billing service is available in both API portal and API business hub enterprise.") :arrow_upper_right: -If you were creating, updating, or reading an application using the APIs and not through the user interface, then you need to switch to Subscription entity from Application entity to use the Monetize feature. For more information see, [Create or Update or Read an Application using Subscription key](create-or-update-or-read-an-application-using-subscription-key-e2645b5.md) +If you were creating, updating, or reading an application using the APIs and not through the user interface, then you need to switch to Subscription entity from Application entity to use the Monetize feature. For more information see, [Create or Update or Read an Application using Subscription key](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/e2645b5658e64fdfae97aa952756dd01.html "Creating, updating, and reading an application using the Subscription key.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/monetize-apis-fcdc89b.md b/docs/ISuite/50-Development/monetize-apis-fcdc89b.md deleted file mode 100644 index 2348a889..00000000 --- a/docs/ISuite/50-Development/monetize-apis-fcdc89b.md +++ /dev/null @@ -1,17 +0,0 @@ - - -# Monetize APIs - -SAP Integration Suite provides monetization feature to all API providers to generate revenue for using the APIs. - -As an API Admin, you can create a rate plan, attach it to a product in the SAP Integration Suite, and publish the product in the API business hub enterprise. You can also view bill details of each developer in the SAP Integration Suite. - -As an application developer, in the API business hub enterprise you can create an application and add products to the application. Based on the product usage, you can view the corresponding bill details. - -SAP Integration Suite provides this feature through the following services: - -- [Rate Plan Service](rate-plan-service-f4537ce.md) -- [Billing Service](billing-service-1e20fb5.md) - -If you were creating, updating, or reading an application using the APIs and not through the user interface, then you need to switch to Subscription entity from Application entity to use the Monetize feature. For more information see, [Create or Update or Read an Application using Subscription key](create-or-update-or-read-an-application-using-subscription-key-e2645b5.md) - diff --git a/docs/ISuite/50-Development/monitor-message-processing-314df3f.md b/docs/ISuite/50-Development/monitor-message-processing-314df3f.md index c1adba5d..6ec0e6ed 100644 --- a/docs/ISuite/50-Development/monitor-message-processing-314df3f.md +++ b/docs/ISuite/50-Development/monitor-message-processing-314df3f.md @@ -250,7 +250,6 @@ After the header, the following sections contain detailed information about the - The *Application Message ID* - The *Application Message Type* - The *Custom Status* - - The *Retention Periods* for completed and uncompleted messages. > ### Note: > *Sender*, *Receiver*, *Application Message ID*, *Application Message Type*, and *Custom Status* are optional and can be set via the Content Modifier. They’re only appear if they aren’t empty. diff --git a/docs/ISuite/50-Development/operation-mapping-05b9569.md b/docs/ISuite/50-Development/operation-mapping-05b9569.md index 81728284..4a258ab8 100644 --- a/docs/ISuite/50-Development/operation-mapping-05b9569.md +++ b/docs/ISuite/50-Development/operation-mapping-05b9569.md @@ -2,9 +2,9 @@ # Operation Mapping -Operation mapping is used to relate an outbound service interface operation with an inbound service interface operation.You can also relate IDoc and RFC interfaces with entities of the same type or with service interface operations. +Operation mapping is used to relate an outbound service interface operation with an inbound service interface operation. You can also relate IDoc and RFC interfaces with entities of the same type or with service interface operations. -To know more, see [Operation Mapping](https://help.sap.com/viewer/bbd7c67c5eb14835843976b790024ec6/7.5.14/en-US/eaab902f36eb404497cf69db7d07ac40.html) +To know more, see [Operation Mapping](https://help.sap.com/viewer/bbd7c67c5eb14835843976b790024ec6/7.5.14/en-US/eaab902f36eb404497cf69db7d07ac40.html). > ### Note: > - You can only assign an operation mapping to an integration flow, creation of an operation mapping is not supported. @@ -26,6 +26,6 @@ Assigning Operation Mapping 4. In the *Processing* tab, choose *Select* and assign the resource \(**.opmap** file\) to the operation mapping step. > ### Note: - > To know more about importing the mapping content into an integration flow, see [Importing Mapping Content from ES Repository](IntegrationSettings/importing-mapping-content-from-es-repository-e18fc05.md) + > To know more about importing the mapping content into an integration flow, see [Importing Mapping Content from ES Repository](IntegrationSettings/importing-mapping-content-from-es-repository-e18fc05.md). diff --git a/docs/ISuite/50-Development/partner-directory-data-1d92d5c.md b/docs/ISuite/50-Development/partner-directory-data-1d92d5c.md index 220703a2..367a8d39 100644 --- a/docs/ISuite/50-Development/partner-directory-data-1d92d5c.md +++ b/docs/ISuite/50-Development/partner-directory-data-1d92d5c.md @@ -21,7 +21,7 @@ It helps you to set up a communication network between many communication partne > ### Caution: > Only Trading Partner related content is visible in the *Partner Directory Data* tab and the information is read-only. > -> The maximum number of Business Transaction Activities that you can conduct per tenant is 10,000. To know more see, [Partner Directory Information](https://help.sap.com/docs/integration-suite/sap-integration-suite/parameterizing-integration-flows-using-partner-directory?version=CLOUD). +> The maximum number of Business Transaction Activities that you can conduct per tenant is 10,000. To know more, see [Partner Directory Information](https://help.sap.com/docs/integration-suite/sap-integration-suite/parameterizing-integration-flows-using-partner-directory?version=CLOUD). When a trading partner agreement gets activated, the complete agreement information gets pushed into the partner directory. An entry is created in the partner directory for each business transaction activity in the agreement and for each Interchange Envelope extraction \(depending on the adapter type\). The Interchange Extraction is nothing but an XSLT script that extracts the required parameters from the type system headers and writes those details into a camel exchange header object. @@ -31,20 +31,20 @@ When a trading partner agreement gets activated, the complete agreement informat ## Procedure -1. Log on to your Integration Suite . +1. Log on to your Integration Suite. -2. Choose *Design* \> *B2B Scenarios* +2. Choose *Design* \> *B2B Scenarios.* 3. Navigate to the *Partner Directory Data* tab. The tab displays all the partner directory ID that are created in the system. The partner directory ID starts with the convention *SAP\_TPM*. You can also view the following details: - - *Activity Plain ID*: This is the unique activity ID assigned to the business transaction activity in an agreement. The ID is the concatenated value of various head paramaters configured in the agreement. To know more, see [Understanding the Basic Concepts](understanding-the-basic-concepts-74c068d.md) + - *Activity Plain ID*: This is the unique activity ID assigned to the business transaction activity in an agreement. The ID is the concatenated value of various head paramaters configured in the agreement. To know more, see [Understanding the Basic Concepts](understanding-the-basic-concepts-74c068d.md). - *Agreement Link*: This column displays the link to the related agreement. Choosing this link will open the corresponding transaction activity in the agreement. > ### Note: > If you want to navigate back to the Partner Directory tab, choose *View Data* option from the *Inbound* or *Outbound* button provided in the agreement transaction. - - *Created Date*: Displays the date when the agreement was activated + - *Created Date*: Displays the date when the agreement was activated. - *Last Modified Date*: Displays the date when the activated agreement was modified. 4. You can search for a specific partner directory data using the *Search* bar. diff --git a/docs/ISuite/50-Development/policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md b/docs/ISuite/50-Development/policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md index 3c86acbe..baa5d0dc 100644 --- a/docs/ISuite/50-Development/policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md +++ b/docs/ISuite/50-Development/policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md @@ -163,5 +163,9 @@ The IP filter policy allows or denies calls from specific IP addresses or addres [Add an API Artifact](add-an-api-artifact-c2fe62c.md "Add an API artifact to an package.") +[Copy an API Artifact](copy-an-api-artifact-820c9e8.md "You may want to create a copy of an existing API artifact with all its configurations and policies intact. This can be useful when you want to create a similar API but with some modifications or variations. The copy feature allows you to quickly duplicate the API artifact and make the necessary changes without starting from scratch.You can create a duplicate of an API artifact by copying it within the same package or in a different integration package within the same Integration Suite subscription.") + +[Deploying an API Artifact](deploying-an-api-artifact-b70e7ec.md "After creating an API artifact, it is necessary to deploy it on the chosen runtime profile in order to make it executable and ready for use.") + [Adding Policy Steps to the API Artifact](adding-policy-steps-to-the-api-artifact-c2b3e56.md "To enforce security or control API traffic, you can set rules on the API by adding policy steps and integration steps to the API artifact.") diff --git a/docs/ISuite/50-Development/rate-plan-service-c27570f.md b/docs/ISuite/50-Development/rate-plan-service-c27570f.md index 8a198600..0674d504 100644 --- a/docs/ISuite/50-Development/rate-plan-service-c27570f.md +++ b/docs/ISuite/50-Development/rate-plan-service-c27570f.md @@ -6,8 +6,8 @@ SAP Integration Suite allows user to create rate plans and attach a rate plan to For more information see, -- [Create a Rate Plan](create-a-rate-plan-cfe6a30.md) -- [Attach Rate Plan to a Product](attach-rate-plan-to-a-product-cc5c942.md) -- [Update a Rate Plan](update-a-rate-plan-b8c1e6b.md) -- [Delete a Rate Plan](delete-a-rate-plan-d4181ad.md) +- [Create a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cfe6a30600f148a39a7920dbc7fa1ab2.html "Create a rate plan using the API portal.") :arrow_upper_right: +- [Attach Rate Plan to a Product](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cc5c942e32df494785c33ba0fc0346f4.html "Attach a rate plan to a product using the API portal.") :arrow_upper_right: +- [Update a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/b8c1e6b68be74ead8700f7f8be9baa8b.html "Update a rate plan using the API portal.") :arrow_upper_right: +- [Delete a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/d4181ad418e4446e830c498d672204ff.html "Delete a rate plan using the API portal.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/rate-plan-service-f4537ce.md b/docs/ISuite/50-Development/rate-plan-service-f4537ce.md deleted file mode 100644 index b113d345..00000000 --- a/docs/ISuite/50-Development/rate-plan-service-f4537ce.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# Rate Plan Service - -SAP Integration Suite allows user to create rate plans and attach a rate plan to a product. Through a rate plan you can charge the application developers for the use of your APIs. - -For more information see, - -- [Create a Rate Plan](create-a-rate-plan-cfe6a30.md) -- [Attach Rate Plan to a Product](attach-rate-plan-to-a-product-cc5c942.md) -- [Update a Rate Plan](update-a-rate-plan-b8c1e6b.md) -- [Delete a Rate Plan](delete-a-rate-plan-d4181ad.md) - diff --git a/docs/ISuite/50-Development/reading-the-references-4f3d168.md b/docs/ISuite/50-Development/reading-the-references-4f3d168.md new file mode 100644 index 00000000..519a363b --- /dev/null +++ b/docs/ISuite/50-Development/reading-the-references-4f3d168.md @@ -0,0 +1,69 @@ + + +# Reading the References + +Use the CertificateStoreReference API to get the list of certificate store references. + + + + + +## Prerequisites + +- You must have a service key for the `APIPortal.Administrator` role. + + To know more about creating a service key for accessing APIs in the API portal, see the **Creating a Service Key** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + +- You have fetched a valid bearer token. To know more about obtaining a bearer token, see the **Obtaining a Bearer Token** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + + + + + +## Procedure + +1. Run the services using a standard REST console. + +2. Get the list of all the certificate store references using the below API: + + - Service URL: https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences + - Method: GET + - Request Header: Authorization: Bearer + - Accept: application/json + + - Fetches the list of all the certificate store references + + Response: 200 + + > ### Sample Code: + > ``` + > { + > "d": { + > "results": [ + > { + > "__metadata": { + > "id": "https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences('reference_ts_1')", + > "uri": "https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences('reference_ts_1')", + > "type": "apiportal.CertificateStoreReference" + > }, + > "certificateStoreName": "ts_1", + > "life_cycle": { + > "__metadata": { + > "type": "apiportal.History" + > }, + > "changed_at": "\/Date(1709810822439)\/", + > "changed_by": "sb-apiaccess1689070958781!b6077|api-portal-xsuaa!b2160", + > "created_at": "\/Date(1709793612858)\/", + > "created_by": "sb-apiaccess1689070958781!b6077|api-portal-xsuaa!b2160" + > }, + > "name": "reference_ts_1", + > "storeType": "TRUSTSTORE" + > }, + > ............... + > ] + > } + > } + > ``` + + + diff --git a/docs/ISuite/50-Development/sdk-api-c5c7933.md b/docs/ISuite/50-Development/sdk-api-c5c7933.md index baecd018..9272cdad 100644 --- a/docs/ISuite/50-Development/sdk-api-c5c7933.md +++ b/docs/ISuite/50-Development/sdk-api-c5c7933.md @@ -2,7 +2,7 @@ # SDK API -SDK APIs refer to the overall set of APIs like the Generic API, Adapter API, Script API +SDK APIs refer to the overall set of APIs like the Generic API, Adapter API, Script API. Application programming interfaces \(APIs\) are available for the following use cases: diff --git a/docs/ISuite/50-Development/sender-side-integration-flow-98380f4.md b/docs/ISuite/50-Development/sender-side-integration-flow-98380f4.md index e3781593..60863683 100644 --- a/docs/ISuite/50-Development/sender-side-integration-flow-98380f4.md +++ b/docs/ISuite/50-Development/sender-side-integration-flow-98380f4.md @@ -17,7 +17,7 @@ Follow the procedure below to configure these integration flows. ## Sender AS2 Communication Flow -1. In the *Artifacts* tab, choose the *Action* button of the integration flow *Step 1 - Sender AS2 Communication Flow* and select *Configure* +1. In the *Artifacts* tab, choose *Action* of the integration flow *Step 1 - Sender AS2 Communication Flow* and select *Configure*. 2. Under the *Sender* tab, maintain the following parameters. @@ -163,7 +163,7 @@ Follow the procedure below to configure these integration flows. -3. Select the *Receiver* tab and maintain the following parameter +3. Select the *Receiver* tab and maintain the following parameter: **Receiver Parameter** @@ -214,9 +214,9 @@ Follow the procedure below to configure these integration flows. ## Sender AS2 MDN Flow -This integration flow is used to capture the Technical Acknowledgement through the AS2 adapter. You can also view the Technical Acknowledgement in the *B2B Monitoring* tab. +This integration flow is used to capture the Technical Acknowledgement through the AS2 adapter. You can also review the Technical Acknowledgement in the *B2B Monitoring* tab. -1. In the *Artifacts* tab, choose the *Action* button of the integration flow *Step 1 - Sender AS2 MDN Flow* and select *Deploy*. +1. In the *Artifacts* tab, choose *Action* of the integration flow *Step 1 - Sender AS2 MDN Flow* and select *Deploy*. @@ -225,7 +225,7 @@ This integration flow is used to capture the Technical Acknowledgement through t ## Sender IDOC Communication Flow -1. In the *Artifacts* tab, choose the *Action* button of the integration flow *Step 1 - Sender IDOC Communication Flow* and select *Configure* +1. In the *Artifacts* tab, choose *Action* of the integration flow *Step 1 - Sender IDOC Communication Flow* and select *Configure* 2. Under the *Sender* tab, maintain the following parameters @@ -286,7 +286,7 @@ This integration flow is used to capture the Technical Acknowledgement through t -3. Choose the *Receiver* tab and maintain the following parameter +3. Choose the *Receiver* tab and maintain the following parameter: **Receiver Parameter** diff --git a/docs/ISuite/50-Development/settings-9e64d05.md b/docs/ISuite/50-Development/settings-9e64d05.md index 8e99fb06..5f039643 100644 --- a/docs/ISuite/50-Development/settings-9e64d05.md +++ b/docs/ISuite/50-Development/settings-9e64d05.md @@ -74,7 +74,7 @@ MIGs and MAGs -[Documentation Template for MIGs and MAGs](documentation-template-for-migs-and-mags-4c442af.md) +[Documentation Export and Settings](documentation-export-and-settings-4c442af.md) diff --git a/docs/ISuite/50-Development/smoke-test-scenario-93fa2ce.md b/docs/ISuite/50-Development/smoke-test-scenario-93fa2ce.md index cb0f7c37..5c521db1 100644 --- a/docs/ISuite/50-Development/smoke-test-scenario-93fa2ce.md +++ b/docs/ISuite/50-Development/smoke-test-scenario-93fa2ce.md @@ -37,18 +37,18 @@ In the course of this exercise, you execute a simulation tool on an integration 5. Choose the *Simulation Start Point*, a dialog opens to *Add Simulation Input*. Provide an input payload in the *Body* section and choose *OK*. The subset of an integration flow now filters the incoming payload based on the XPath provided in the Filter step. - Use the following payload:- + Use the following payload: `OD100` 6. Select simulation tool and choose *Run Simulation*:arrow_forward: -7. You can see a toast message that the simulation completed successfully, the simulation *End Point* turns from black color to green and a message envelope :envelope: appears between start and end point. +7. You receive a toast message that the simulation completed successfully, the simulation *End Point* turns from black color to green and a message envelope :envelope: appears between start and end point. 8. Choose*Message Envelope* located next to *XML to JSON Converter*. A message content opens, check the body section and verify that the input payload has been simulated. Based on the input and the XPath provided, the output message consist of the order details. You can check that based on the filter criteria, the resulting message has been generated correctly. -9. Choose *Clear Simulation* located in the simulation tool to clear all defined simulation path. +9. Choose *Clear Simulation* located in the simulation tool to clear all defined simulation path. diff --git a/docs/ISuite/50-Development/update-a-rate-plan-5ef271f.md b/docs/ISuite/50-Development/update-a-rate-plan-5ef271f.md index 4712d4a2..42fc304c 100644 --- a/docs/ISuite/50-Development/update-a-rate-plan-5ef271f.md +++ b/docs/ISuite/50-Development/update-a-rate-plan-5ef271f.md @@ -141,9 +141,9 @@ You are updating a rate plan. **Related Information** -[Create a Rate Plan](create-a-rate-plan-cfe6a30.md "Create a rate plan using the SAP Integration Suite.") +[Create a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/cfe6a30600f148a39a7920dbc7fa1ab2.html "Create a rate plan using the API portal.") :arrow_upper_right: -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") +[Update a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/b8c1e6b68be74ead8700f7f8be9baa8b.html "Update a rate plan using the API portal.") :arrow_upper_right: -[Delete a Rate Plan](delete-a-rate-plan-d4181ad.md "Delete a rate plan using the SAP Integration Suite.") +[Delete a Rate Plan](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/d4181ad418e4446e830c498d672204ff.html "Delete a rate plan using the API portal.") :arrow_upper_right: diff --git a/docs/ISuite/50-Development/update-a-rate-plan-b8c1e6b.md b/docs/ISuite/50-Development/update-a-rate-plan-b8c1e6b.md deleted file mode 100644 index 6b160584..00000000 --- a/docs/ISuite/50-Development/update-a-rate-plan-b8c1e6b.md +++ /dev/null @@ -1,149 +0,0 @@ - - -# Update a Rate Plan - -Update a rate plan using the SAP Integration Suite. - - - - - -## Prerequisites - -You are assigned the admin role. - - - - - -## Context - -You are updating a rate plan. - - - - - -## Procedure - -1. Log on to the SAP Integration Suite. - -2. From the navigation bar, choose *Monetize*. - -3. On the *Monetize* screen, choose *RATE PLANS*. - -4. On the *RATE PLANS* scree, select the rate plan that you want to update. - -5. Choose *Edit*. - - You can update the following fields only : - - - **Name**: Name of the rate plan. - - **Description**: Outline of the plan. - - **Frequency**: Monthly - - **Currency**: Euro - - **Basic Charge**: Minimum bill amount paid by the user after subscribing to the product associated with this rate plan. - - **Rate per API Call**: Amount in euros for one API call. - - **Plan Type**: Choose either *Basic* or *Tier*. - - **Basic**: In Basic rate plan type, the rate charged per API call is fixed. - - **Tier**: In Tier based rate plan type, the rate charged per API call varies based on the number of API calls. - - > ### Example: - > Tier based rate plan - - **Tier based rate plan** - - - - - - - - - - - - - - - - - - - - - - - -
- - API Calls From - - - - API Calls To - - - - Rate per API Call - -
- - 0 - - - - 5000 - - - - 0.0 - -
- - 5001 - - - - 10000 - - - - 0.5 - -
- - 10001 - - - - - - - - 0.7 - -
- - In the above example, for initial 5000 calls the rate charged is 0.0 per API call. For the next 5000 calls the rate charged is 0.5 per API call and for 10000 + calls the rate charged is 0.7 per API call. For instance, if 8000 calls are made, then the rates per API call is 0.0 for 0-5000 calls and 0.5 for the remaining 3000 calls. - - > ### Note: - > If the *API Call To* field is left empty, then the system considers the field value to be unlimited. - - - -6. Choose *Save*. - - > ### Note: - > Updated rate plan is applicable for new subscriptions only. - - -**Related Information** - - -[Create a Rate Plan](create-a-rate-plan-cfe6a30.md "Create a rate plan using the SAP Integration Suite.") - -[Update a Rate Plan](update-a-rate-plan-b8c1e6b.md "Update a rate plan using the SAP Integration Suite.") - -[Delete a Rate Plan](delete-a-rate-plan-d4181ad.md "Delete a rate plan using the SAP Integration Suite.") - diff --git a/docs/ISuite/50-Development/updates-for-sap-s-integration-packages-5e41ce8.md b/docs/ISuite/50-Development/updates-for-sap-s-integration-packages-5e41ce8.md index 3ec3341d..bdb3cd35 100644 --- a/docs/ISuite/50-Development/updates-for-sap-s-integration-packages-5e41ce8.md +++ b/docs/ISuite/50-Development/updates-for-sap-s-integration-packages-5e41ce8.md @@ -41,6 +41,9 @@ There are two modes through which the package update is done: ![](images/Update_Package_1909_28c53b2.png) +> ### Note: +> If an artifact is already deployed on the tenant, and you trigger a manual update for that content package, the manual update process also updates the deployed instance of the artifact in addition to the stored instance in the *Design* view. +
diff --git a/docs/ISuite/50-Development/updating-the-references-e2a9ec4.md b/docs/ISuite/50-Development/updating-the-references-e2a9ec4.md new file mode 100644 index 00000000..56a7455b --- /dev/null +++ b/docs/ISuite/50-Development/updating-the-references-e2a9ec4.md @@ -0,0 +1,89 @@ + + +# Updating the References + +You can use the CertificateStoreReferences API to update a certificate store reference via service calls. + + + + + +## Prerequisites + +- You must have a service key for the `APIPortal.Administrator` role. + + To know more about creating a service key for accessing APIs in the API portal, see the **Creating a Service Key** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + +- You have fetched a valid bearer token. To know more about obtaining a bearer token, see the **Obtaining a Bearer Token** section in [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md). + + + + + +## Procedure + +1. Run the services using a standard REST console. + +2. Create a new certificate store reference using the below API: + + - Service URL: https:///apiportal/api/1.0/Management.svc/CertificateStoreReferences\(''\) + - Method: PUT + - Request Header: Authorization: Bearer + - Content Type: application/json + - Accept: application/json + - Request Body: + + > ### Sample Code: + > ``` + > { + > "certificateStoreName": "updated-store-name" + > } + > + > ``` + + > ### Note: + > certificateStoreName - This is the name of the new certificate store to which this certificate store reference will point to. + + + - CertificateStoreReference updated successfully + + Response: 204 No Content + + - When no such CertificateStoreReference entity exists with the given name + + Response: 400 Bad request: + + > ### Sample Code: + > ``` + > { + > "error": { + > "code": "NO_SUCH_CERTIFICATE_STORE_REFERENCE_EXISTS", + > "message": { + > "lang": "en", + > "value": "No such certificate store reference exists. Please check the certificate store reference name and try again." + > } + > } + > } + > + > ``` + + - When no such certificate store store exists with the given name + + Response: 400 Bad request: + + > ### Sample Code: + > ``` + > { + > + > "error": { + > "code": "CERTIFICATE_STORE_REFERENCE_UPDATE_FAILED_LINKED_CERTIFICATE_STORE_VALIDATION_ERROR", + > "message": { + > "lang": "en", + > "value": "The certificate store reference cannot be updated as the certificate store name provided is invalid. Please provide a correct certificate store name and try creating again." + > } + > } + > } + > ``` + + + diff --git a/docs/ISuite/50-Development/variant-timer-initiated-scenario-423730f.md b/docs/ISuite/50-Development/variant-timer-initiated-scenario-423730f.md index 8d72aeb6..4d4081eb 100644 --- a/docs/ISuite/50-Development/variant-timer-initiated-scenario-423730f.md +++ b/docs/ISuite/50-Development/variant-timer-initiated-scenario-423730f.md @@ -6,15 +6,15 @@ Deploy a timer-initiated integration flow that writes an entry to the data store See the *Modeling Basics - Timer-Initiated Scenario* integration flow. -![](images/Learn_the_Basics_Variant_Timer-Initiated_Scenario_053b390.png) +![The Start Timer is set according to your settings. Then, the integration flow will start. Next, the Define message body defines a hard-coded message body. The following step which is called Write data store entry takes the message body and writes it to the data store.](images/Learn_the_Basics_Variant_Timer-Initiated_Scenario_053b390.png) The integration flow is timer-initiated and writes a simple message \("Hello World!"\) to the data store. The *Start Timer* is set to *Run Once*, so upon deployment, the integration flow starts. Optionally, you can schedule the timer to initiate the integration flow for a specific day or for a specific number of occurrences. -The *Define message body* defines a hard-coded message body that reads `Hello Word!`. +The *Define message body* defines a hard-coded message body that reads `Hello World!`. The Write step *Write data store entry* takes the message body and writes it to the data store. -After you've deployed the integration flow, go to *Operations View* \> *Manage Integration Content* to see your data store entry from *Modeling Basics - Timer-Initiated Scenario*. +After you've deployed the integration flow, go to *Operations View* \> *Manage Integration Content* to review your data store entry from *Modeling Basics - Timer-Initiated Scenario*. diff --git a/docs/ISuite/50-Development/view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md b/docs/ISuite/50-Development/view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md deleted file mode 100644 index fc9d064d..00000000 --- a/docs/ISuite/50-Development/view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md +++ /dev/null @@ -1,31 +0,0 @@ - - -# View Bill Details in the API business hub enterprise - -View the bill details in the API business hub enterprise for all the applications subscribed by a developer. - - - - - -## Prerequisites - -You are assigned the application developer role. - - - -## Procedure - -1. Log on to the API business hub enterprise. - -2. Navigate to, *My Workspace*. - -3. The *Cost* section displays the billing details for all the application subscribed by the developer in two charts: - - - *Aggregated Costs in Euros*: displays the bill details for the last six months. - - - Cost for selected month: displays the cost for the selected month. By default, the cost for the current month is displayed. - - To view the cost for a specified application. Navigate to the required application details screen, by choosing the required application. Cost pertaining to that application is visible in the *Cost* section in the detailed application screen. - - diff --git a/docs/ISuite/50-Development/view-bill-details-in-the-sap-integration-suite-2378110.md b/docs/ISuite/50-Development/view-bill-details-in-the-sap-integration-suite-2378110.md deleted file mode 100644 index 8eee221e..00000000 --- a/docs/ISuite/50-Development/view-bill-details-in-the-sap-integration-suite-2378110.md +++ /dev/null @@ -1,33 +0,0 @@ - - -# View Bill Details in the SAP Integration Suite - -View bill details in theSAP Integration Suitefor all the applications and products assigned to a particular developer. - - - - - -## Prerequisites - -You are assigned the admin role. - - - -## Procedure - -1. Log on to SAP Integration Suite. - -2. From the navigation bar, choose *Monetize*. - -3. On the *Monetize* screen, choose *BILLS*. - -4. Select the billing month from the *Month* and *Year* dropdown boxes. - - By default, the bill details for the current month are displayed. - -5. From the list of developers, select the developer you want to view the bill details for. - - The *Bill Detail* window shows a list of applications the developer is subscribed to and the corresponding bill amount for each application. You can view the list of products assigned to each application by clicking the application. - - diff --git a/docs/ISuite/50-Development/working-with-a-mapping-guideline-mag-0803ca6.md b/docs/ISuite/50-Development/working-with-a-mapping-guideline-mag-0803ca6.md index 789fe846..6f35cefc 100644 --- a/docs/ISuite/50-Development/working-with-a-mapping-guideline-mag-0803ca6.md +++ b/docs/ISuite/50-Development/working-with-a-mapping-guideline-mag-0803ca6.md @@ -42,7 +42,7 @@ There could be scenarios where there are significant differences between the Mes 2. Choose Proposals: Select *Best Proposal* to automatically select all proposed mapping entities or select single proposed mapping entities by clicking on the checkboxes within the mapping list. - If you want to search for all XSLT snippets and XPath expressions for a certain text pattern and want the list of mapping elements to be filtered by those elements that contain the search pattern, you can use the *Search* field provided above the *Mapping List* table. Use the search field to enter the function pattern and select :mag: . This will display the list of mapping elements pertaining to that function pattern. + The mapping list displays all the relevant information of the source and target nodes such as source nodes, target nodes, their cardinality etc. The *Type* column displays the type of each entry in the mapping list. You can filter and view the mappings that are erroneous and mappings that have proposals using the drop-down filter available above the mapping list table. If you want to search for all XSLT snippets and XPath expressions for a certain text pattern and want the list of mapping elements to be filtered by those elements that contain the search pattern, you can use the *Search* field provided above the *Mapping List* table. Use the search field to enter the function pattern and select :mag: . This will display the list of mapping elements pertaining to that function pattern. You can also search for a particular value in the *Mapping List* tab by selecting the relevant column name and entering the search value in the filter field. This filter option is also available for *Code Value Mapping* tab. diff --git a/docs/ISuite/50-Development/working-with-a-node-518b54f.md b/docs/ISuite/50-Development/working-with-a-node-518b54f.md index 07c6b0d9..886c3d5c 100644 --- a/docs/ISuite/50-Development/working-with-a-node-518b54f.md +++ b/docs/ISuite/50-Development/working-with-a-node-518b54f.md @@ -582,6 +582,49 @@ Once you have created a message implementation guideline, you can edit and modif No + + + + + + XPath Expressions + + + + + CI Format + + + + + Displays the XPath expression for the node which can be used in Cloud Integration version of the message before pre-processing. + + + + + No + + You can copy this XPath expression using the copy button provided next to it. + + + + + + + IA Format + + + + + Displays the XPath expression for the node which can be used in Integration Advisor version of the message after pre-processing. + + + + + No + + You can copy this XPath expression using the copy button provided next to it. + diff --git a/docs/ISuite/50-Development/working-with-references-6f96b64.md b/docs/ISuite/50-Development/working-with-references-6f96b64.md new file mode 100644 index 00000000..82da9a55 --- /dev/null +++ b/docs/ISuite/50-Development/working-with-references-6f96b64.md @@ -0,0 +1,18 @@ + + +# Working with References + +A reference is a variable that holds the name of the keystore or truststore, instead of directly specifying the name in the virtual host configuration. + +The benefit of using a reference is that you can easily change the value of the reference to switch the keystore or truststore used by the virtual host. This is particularly useful when the current keystore or truststore's certificate is about to expire. + +> ### Note: +> References can only be used for the keystore and truststore, not for the certificates. +> +> When changing the reference to a keystore, make sure that the alias name of the certificate remains the same as in the old keystore. + +> ### Note: +> When configuring a virtual host, you have the option to specify a keystore or truststore using a reference. For more information on how to configure custom domain virtual host and client certificate based authentication using references, see [Configuring Additional Virtual Host in Cloud Foundry Environment](../configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md). + +You can create, update, fetch and delete any certificate store references via service calls. For more information, see the following: + diff --git a/docs/ISuite/60-Security/identity-and-access-management-77868c2.md b/docs/ISuite/60-Security/identity-and-access-management-77868c2.md index 32c878b5..ea33f59c 100644 --- a/docs/ISuite/60-Security/identity-and-access-management-77868c2.md +++ b/docs/ISuite/60-Security/identity-and-access-management-77868c2.md @@ -14,6 +14,8 @@ SAP Integration Suite is based on authentication and authorization mechanisms pr [Identity and Access Management for Integration Assessment](identity-and-access-management-for-integration-assessment-9a09cdd.md "") +[Identity and Access Management for Migration Assessment](identity-and-access-management-for-migration-assessment-a2ee575.md "Learn about identity and access management for Migration Assessment, including roles and role collections.") + [Identity and Access Management for API Management](identity-and-access-management-for-api-management-016556f.md "Here you can find information on how to secure API Management applications using user authentication and authorization.") [Identity and Access Management for Cloud Integration](identity-and-access-management-for-cloud-integration-f805b22.md "Identity and access management features are used during the lifecycle of an integration scenario.") diff --git a/docs/ISuite/60-Security/identity-and-access-management-for-api-management-016556f.md b/docs/ISuite/60-Security/identity-and-access-management-for-api-management-016556f.md index 99fbf20d..49daaf31 100644 --- a/docs/ISuite/60-Security/identity-and-access-management-for-api-management-016556f.md +++ b/docs/ISuite/60-Security/identity-and-access-management-for-api-management-016556f.md @@ -38,7 +38,7 @@ Authorization -In API Management, you provide authorization to users by assigning relevant roles. For more information on how to provide authorizations, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right:. +In API Management, you provide authorization to users by assigning relevant roles. For more information on how to provide authorizations, see [User Roles in API Management \(New\)](../user-roles-in-api-management-new-911ca5a.md). diff --git a/docs/ISuite/60-Security/identity-and-access-management-for-migration-assessment-a2ee575.md b/docs/ISuite/60-Security/identity-and-access-management-for-migration-assessment-a2ee575.md index 702b77f7..aca1b059 100644 --- a/docs/ISuite/60-Security/identity-and-access-management-for-migration-assessment-a2ee575.md +++ b/docs/ISuite/60-Security/identity-and-access-management-for-migration-assessment-a2ee575.md @@ -2,3 +2,10 @@ # Identity and Access Management for Migration Assessment +Learn about identity and access management for Migration Assessment, including roles and role collections. + +**Related Information** + + +[Tasks and Permissions](tasks-and-permissions-2714db1.md "Learn about security-related topics like users and authorizations.") + diff --git a/docs/ISuite/APIM-Migration/clone-api-management-content-7abd887.md b/docs/ISuite/APIM-Migration/clone-api-management-content-7abd887.md index e01169dc..72459412 100644 --- a/docs/ISuite/APIM-Migration/clone-api-management-content-7abd887.md +++ b/docs/ISuite/APIM-Migration/clone-api-management-content-7abd887.md @@ -4,7 +4,7 @@ Clone the API Management content using the Tenant Cloning tool. -Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https://repo1.maven.org/maven2/com/sap/apimgmt/apim-tct-sdk/1.7.2/apim-tct-sdk-1.7.2.zip). +Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fcom%2Fsap%2Fapimgmt%2Fapim-tct-sdk%2F1.8.2%2Fapim-tct-sdk-1.8.2.zip). @@ -73,6 +73,8 @@ Once you have your source and target system ready, you can clone your API Manage For more information on how to create the service key, refer the [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md) and [Accessing API business hub enterprise APIs Programmatically](../accessing-api-business-hub-enterprise-apis-programmatically-dabee6e.md). + **Structure of the apim-tct-input.json file:** + @@ -324,12 +326,12 @@ Once you have your source and target system ready, you can clone your API Manage - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ISuite/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md b/docs/ISuite/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md index 3ce3d2f8..78e285cc 100644 --- a/docs/ISuite/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md +++ b/docs/ISuite/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md @@ -4,7 +4,7 @@ Clone the API Management content using the Tenant Cloning Tool. -Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https://repo1.maven.org/maven2/com/sap/apimgmt/apim-tct-sdk/1.7.2/apim-tct-sdk-1.7.2.zip). +Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fcom%2Fsap%2Fapimgmt%2Fapim-tct-sdk%2F1.8.2%2Fapim-tct-sdk-1.8.2.zip). @@ -73,6 +73,8 @@ Once you have your source and target system ready, you can clone your API Manage For more information on how to create the service key, refer the [Accessing API Management APIs Programmatically](../accessing-api-management-apis-programmatically-24a2c37.md) and [Accessing API business hub enterprise APIs Programmatically](../accessing-api-business-hub-enterprise-apis-programmatically-dabee6e.md). + **Structure of the apim-tct-input.json file:** +
+ target + apiportal @@ -441,8 +443,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Optional + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ apiportalSelfServiceAdmin > ### Note: @@ -548,8 +643,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Optional + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ devportal > ### Note: @@ -657,6 +845,99 @@ Once you have your source and target system ready, you can clone your API Manage
+ `certurl` + + + + X509 mTLS + + + + String + + + + Optional + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ skipApplicationKeySecretCloning
@@ -103,12 +105,12 @@ Once you have your source and target system ready, you can clone your API Manage - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -366,12 +554,12 @@ Once you have your source and target system ready, you can clone your API Manage - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -952,5 +1326,5 @@ After the cloning process completes, you must perform the tasks mentioned in the To know more about what actions you must take, see the **User Actions** section in [Post Cloning Tasks](post-cloning-tasks-49e9716.md). -To know more about the entities that are cloned and the entities that aren’t cloned, see . +To know more about the entities that are cloned and the entities that aren’t cloned, see [Cloned and Uncloned Entities](cloned-and-uncloned-entities-b2b393d.md). diff --git a/docs/ISuite/activating-and-managing-capabilities-2ffb343.md b/docs/ISuite/activating-and-managing-capabilities-2ffb343.md index 01f111b9..32436974 100644 --- a/docs/ISuite/activating-and-managing-capabilities-2ffb343.md +++ b/docs/ISuite/activating-and-managing-capabilities-2ffb343.md @@ -73,7 +73,15 @@ This topic describes how to add and activate relevant capabilities in Integratio *Build Integration Scenarios* > ### Note: - > To support the usage of Java Message Service \(JMS\) queues as temporary storage, select Message Queues for Cloud Integration capability. Using JMS message queues allow you to configure asynchronous decoupling of sender and receiver message processing to ensure that in case of an error a retry is done from SAP Integration Suite rather than the sender system. You can use the tenant to manage these queues. See [Managing Message Queues](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/cdcce24f484a41c08ab46d12ab666451.html). + > - Select the environment based on your operational needs: + > + > - *Non-Production* for non-critical business activities like performance testing, testing new integration scenarios. + > - *Production* for critical business activities. + > + > > ### Recommendation: + > > If you want to activate both API Management and Cloud Integration capabilities within the same tenant, select the same environment for both capabilities. Once you have activated API Management capability, you can set the same environment by using the *Account Type* field on the *Configure the API Management Service* screen. See [Enable API Management Capability](https://help.sap.com/docs/integration-suite/sap-integration-suite/enabling-api-management-capability-from-integration-suite). + > + > - To support the usage of Java Message Service \(JMS\) queues as temporary storage, select Message Queues. Using JMS message queues allow you to configure asynchronous decoupling of sender and receiver message processing to ensure that in case of an error a retry is done from SAP Integration Suite rather than the sender system. You can use the tenant to manage these queues. See [Managing Message Queues](https://help.sap.com/viewer/368c481cd6954bdfa5d0435479fd4eaf/Cloud/en-US/cdcce24f484a41c08ab46d12ab666451.html). diff --git a/docs/ISuite/api-lifecycle-5e8ea7d.md b/docs/ISuite/api-lifecycle-5e8ea7d.md index 00719b5a..2eb9f34f 100644 --- a/docs/ISuite/api-lifecycle-5e8ea7d.md +++ b/docs/ISuite/api-lifecycle-5e8ea7d.md @@ -17,7 +17,7 @@ API Management in SAP Integration Suite is used to discover, shape, compose, int [Publish API Proxies](50-Development/publish-api-proxies-75a4a11.md "To make your API consumable by external application developers, it is necessary to publish API proxies. Publishing allows you to expose the API proxies in a structured manner, presenting them as a product. To publish API proxies effectively, it is important to understand how to bundle them together and present them as a cohesive product.") -[Monetize APIs](50-Development/monetize-apis-fcdc89b.md "SAP Integration Suite provides monetization feature to all API providers to generate revenue for using the APIs.") +[Monetize APIs](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/fcdc89b5c4884d5e8cfb32c5914943ab.html "API Management provides monetization feature to all API providers to generate revenue for using the APIs.") :arrow_upper_right: [Consume API Proxies](50-Development/consume-api-proxies-ea561e4.md "Consume API proxies via the API business hub enterprise. In the API business hub enterprise, an application developer registers, explores the API exposed by customers, creates applications, and tests API proxies.") diff --git a/docs/ISuite/api-services-007d50f.md b/docs/ISuite/api-services-007d50f.md index 13871b60..0d6b72e3 100644 --- a/docs/ISuite/api-services-007d50f.md +++ b/docs/ISuite/api-services-007d50f.md @@ -66,7 +66,7 @@ A client software development kit \(SDK\) is available for developers through a In the API Portal, at the top-right corner, choose *Navigation Links* \(![](images/Finalgrid_1a621ca.png)\) and select *Client SDK* \(![](images/clientsdk_f85baa6.png)\). On selecting the client SDK, you are navigated to the maven repository, where you can download this package. -For more information, see [SAP API Management, 1.5.2 Client SDK](https://help.sap.com/doc/sap-api-management-client-sdk/Cloud/en-US/SAP%20API%20Management%20Cloud%20SDK_1.5.2.pdf). +For more information, see [SAP API Management, 1.6.0 Client SDK.](https://help.sap.com/doc/sap-api-management-client-sdk/Cloud/en-US/ClientSDK_1_6_0.pdf). You can also download the package from [https://int.repositories.cloud.sap/artifactory/deploy-releases/com/sap/apimgmt/client/sdk/apim-client-sdk/1.6.0/apim-client-sdk-1.6.0.zip](https://int.repositories.cloud.sap/artifactory/deploy-releases/com/sap/apimgmt/client/sdk/apim-client-sdk/1.6.0/apim-client-sdk-1.6.0.zip). On navigating to this link, select the latest version and choose *View All*. diff --git a/docs/ISuite/cancel-api-management-service-subscription-df6df2b.md b/docs/ISuite/cancel-api-management-service-subscription-df6df2b.md index c8d3592c..40fcb543 100644 --- a/docs/ISuite/cancel-api-management-service-subscription-df6df2b.md +++ b/docs/ISuite/cancel-api-management-service-subscription-df6df2b.md @@ -42,5 +42,9 @@ If you've enabled the API Management capability via Integration Suite, perform t [Region-Specific IP Addresses Available for API Management Cloud Foundry Environment](region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md "API Management protects your backend services. However, API Management needs to establish connectivity to your backend services during an API call execution.") +[User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") + [User Roles in API Management](user-roles-in-api-management-7010b58.md "Use role collections to group together different roles that can be assigned to API Portal and API business hub enterprise users.") +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1e88d9cb4e90466cb0ab2c53e33b2e1c.html "") :arrow_upper_right: + diff --git a/docs/ISuite/component-monitor-49f487e.md b/docs/ISuite/component-monitoring-49f487e.md similarity index 84% rename from docs/ISuite/component-monitor-49f487e.md rename to docs/ISuite/component-monitoring-49f487e.md index 0d990a9d..3b6e37a5 100644 --- a/docs/ISuite/component-monitor-49f487e.md +++ b/docs/ISuite/component-monitoring-49f487e.md @@ -2,11 +2,11 @@ -# Component Monitor +# Component Monitoring Get information on the components. -The Component Monitor tile shows you the most important information regarding your components at a glance. Out of all components for Edge Integration Cell, the tile always shows either those components in status *Error* or the status of the top three components, *Policy Engine*, *Worker*, and *Solace* \(Message Service\) in status *Ok*. +The Component Monitoring-tile shows you the most important information regarding your components at a glance. Out of all components for Edge Integration Cell, the tile always shows either those components in status *Error* or the status of the top three components, *Policy Engine*, *Worker*, and *Solace* \(Message Service\) in status *Ok*. Click on the tile to get a details view. On the screen, you see a table with the following information: diff --git a/docs/ISuite/components-of-api-management-e02ae53.md b/docs/ISuite/components-of-api-management-e02ae53.md index 83f3de21..a1bb61cf 100644 --- a/docs/ISuite/components-of-api-management-e02ae53.md +++ b/docs/ISuite/components-of-api-management-e02ae53.md @@ -8,7 +8,7 @@ The API Management infrastructure comprises of five key components: - **API Management Runtime**: You can deploy and effectively utilize your APIs. Applications consume the API runtime, request API authentication, and gain access. -- **API Management Design Time**: Serves as a platform for easy API discovery, allowing API administrators to manage, meter, and secure their APIs. Additionally, it enables administrators to define and publish rate plans for their APIs. For more information, see[Build API Proxies](50-Development/build-api-proxies-74c042b.md), [Publish API Proxies](50-Development/publish-api-proxies-75a4a11.md) [Monetize APIs](50-Development/monetize-apis-fcdc89b.md) [Analyze APIs](50-Development/analyze-apis-7712c61.md). +- **API Management Design Time**: Serves as a platform for easy API discovery, allowing API administrators to manage, meter, and secure their APIs. Additionally, it enables administrators to define and publish rate plans for their APIs. For more information, see[Build API Proxies](50-Development/build-api-proxies-74c042b.md), [Publish API Proxies](50-Development/publish-api-proxies-75a4a11.md) [Monetize APIs](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/fcdc89b5c4884d5e8cfb32c5914943ab.html "API Management provides monetization feature to all API providers to generate revenue for using the APIs.") :arrow_upper_right: [Analyze APIs](50-Development/analyze-apis-7712c61.md). - **API business hub enterprise**: It is a self-service portal for application developers. You can discover, browse, and explore APIs. Subscribe to a rate plan and build application. For more information, see [Consume API Proxies](50-Development/consume-api-proxies-ea561e4.md). diff --git a/docs/ISuite/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md b/docs/ISuite/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md index 2d4a7305..9340ce66 100644 --- a/docs/ISuite/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md +++ b/docs/ISuite/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md @@ -42,8 +42,9 @@ To request a custom domain with one-way TLS, perform the following steps: - Service URL: https:///apiportal/operations/1.0/Configuration.svc/VirtualHostRequests - Method: POST - - Request Header: Authentication Bearer + - Request Header: Authorization: Bearer - Content Type: application/json + - Accept: application/json - Request Body: > ### Sample Code: @@ -53,8 +54,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "virtualHostUrl": "apis.customdomain.com", > "isDefaultVirtualHostRequest" : false, > "isForCustomDomain": true, - > "keyStoreName": "key store name", - > "keyStoreAlias": "key store alias", + > "keyStoreName": "ref://" or "", + > "keyStoreAlias": "key_store_alias", > "operation" : "CREATE" > } > @@ -69,7 +70,9 @@ To request a custom domain with one-way TLS, perform the following steps: > > - isForCustomDomain - Ensure that the value is set to "true". > - > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key. To learn how to create a keystore and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). + > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key, or the name of the certificate store reference pointing to the keystore. To learn how to create a keystore and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). Alternatively, you can use a certificate store reference name that points to the keystore containing the custom domain's public and private keys. For more information, see [Working with References](50-Development/working-with-references-6f96b64.md). + > + > - keyStoreAlias: The keyStoreAlias parameter refers to the name of the keystore certificate containing the custom domain's public and private key. To learn how to create a keystore certificate and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). > ### Note: > To enable client authentication \(mutual TLS\) while configuring the virtual host with custom domain, see [Configuring Mutual TLs for Virtual Host](configuring-mutual-tls-for-virtual-host-9faf7ce.md). @@ -96,8 +99,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "isForCustomDomain": true, > "isForNonSni": false, > "isTLS": false, - > "keyStoreAlias": "key store alias", - > "keyStoreName": "key store name", + > "keyStoreAlias": "key_store_alias", + > "keyStoreName": "ref://" or "", > "life_cycle": { > "__metadata": { > "type": "apimgmtconfiguration.History" @@ -128,6 +131,7 @@ To request a custom domain with one-way TLS, perform the following steps: - Method: POST - Request Header: Authentication Bearer - Content Type: application/json + - Accept: application/json - Request Body: > ### Sample Code: @@ -137,8 +141,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "virtualHostUrl": "apisupdated.customdomain.com", > "isDefaultVirtualHostRequest" : false, > "isForCustomDomain": true, - > "keyStoreName": "key store name", - > "keyStoreAlias": "key store alias", + > "keyStoreName": "ref://" or "", + > "keyStoreAlias": "key_store_alias", > "operation" : "UPDATE", > "virtualHostId":"1F02AD6A-A53C-43F4-BF95-F053A8A1469A" > } @@ -154,7 +158,9 @@ To request a custom domain with one-way TLS, perform the following steps: > > - isForCustomDomain - Ensure that the value is set to "true". > - > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key. To learn how to create a keystore and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). + > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key, or the name of the certificate store reference pointing to the keystore. To learn how to create a keystore and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). Alternatively, you can use a certificate store reference name that points to the keystore containing the custom domain's public and private keys. For more information, see [Working with References](50-Development/working-with-references-6f96b64.md). + > + > - keyStoreAlias: The keyStoreAlias parameter refers to the name of the keystore certificate containing the custom domain's public and private key. To learn how to create a keystore certificate and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). > > - virtualHostId: This is the unique ID of the virtual host you are trying to update. @@ -183,8 +189,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "isForCustomDomain": true, > "isForNonSni": false, > "isTLS": false, - > "keyStoreAlias": "key store alias", - > "keyStoreName": "key store name", + > "keyStoreAlias": "key_store_alias", + > "keyStoreName": "ref://" or "", > "life_cycle": { > "__metadata": { > "type": "apimgmtconfiguration.History" @@ -204,7 +210,8 @@ To request a custom domain with one-way TLS, perform the following steps: > > ``` - The "lbHost" field contains the host URL which is required for the custom domain DNS mapping. + > ### Note: + > The "lbHost" field contains the host URL that is required for the custom domain DNS mapping. If the "lbHost" field does not display any value, please raise a support ticket through the [SAP Support Portal](https://support.sap.com/en/index.html) using the component OPU-API-OD-OPS. > ### Note: diff --git a/docs/ISuite/configuring-a-default-domain-for-a-virtual-host-1085228.md b/docs/ISuite/configuring-a-default-domain-for-a-virtual-host-1085228.md index e7386513..88e6159a 100644 --- a/docs/ISuite/configuring-a-default-domain-for-a-virtual-host-1085228.md +++ b/docs/ISuite/configuring-a-default-domain-for-a-virtual-host-1085228.md @@ -38,8 +38,9 @@ To request a custom domain with one-way TLS, perform the following steps: - Service URL: https:///apiportal/operations/1.0/Configuration.svc/VirtualHostRequests - Method: POST - - Request Header: Authentication Bearer + - Request Header: Authorization: Bearer - Content Type: application/json + - Accept: application/json - Request Body: > ### Sample Code: diff --git a/docs/ISuite/configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md b/docs/ISuite/configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md index a9aeb9a3..de7474e3 100644 --- a/docs/ISuite/configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md +++ b/docs/ISuite/configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md @@ -11,7 +11,11 @@ Create a new virtual host with default domain or custom domain and update alias, [Region-Specific IP Addresses Available for API Management Cloud Foundry Environment](region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md "API Management protects your backend services. However, API Management needs to establish connectivity to your backend services during an API call execution.") +[User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") + [User Roles in API Management](user-roles-in-api-management-7010b58.md "Use role collections to group together different roles that can be assigned to API Portal and API business hub enterprise users.") [Cancel API Management Service Subscription](cancel-api-management-service-subscription-df6df2b.md "You can deactivate your API Management capability from Integration Suite to disable your account from the API Management service.") +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1e88d9cb4e90466cb0ab2c53e33b2e1c.html "") :arrow_upper_right: + diff --git a/docs/ISuite/configuring-mutual-tls-for-virtual-host-9faf7ce.md b/docs/ISuite/configuring-mutual-tls-for-virtual-host-9faf7ce.md index 9522d929..aea86acd 100644 --- a/docs/ISuite/configuring-mutual-tls-for-virtual-host-9faf7ce.md +++ b/docs/ISuite/configuring-mutual-tls-for-virtual-host-9faf7ce.md @@ -27,6 +27,7 @@ You can configure mutual TLs for a virtual host, which validates the identities - Method: POST - Request Header: Authentication Bearer - Content Type: application/json + - Accept: application/json - Request Body: Create @@ -38,7 +39,7 @@ You can configure mutual TLs for a virtual host, which validates the identities > "virtualHostUrl": "prod-apis", > "isDefaultVirtualHostRequest" : false, > "isClientAuthEnabled": true, - > "trustStore": "trust-store", + > "trustStore": "ref://" or "", > "operation" : "CREATE" > } > @@ -53,7 +54,7 @@ You can configure mutual TLs for a virtual host, which validates the identities > "virtualHostUrl": "prod-apis", > "isDefaultVirtualHostRequest" : false, > "isClientAuthEnabled": true, - > "trustStore": "trust-store", + > "trustStore": "ref://" or "", > "virtualHostId":"c269915f-7adc-4f78-bdd0-dd39ffcb079f", > "operation" : "UPDATE" > } @@ -63,7 +64,7 @@ You can configure mutual TLs for a virtual host, which validates the identities > ### Note: > - isClientAuthEnabled: This field must be set to "true" to enable mutual TLS. > - > - trustStore: This refers to the name of the truststore that holds the client certificate. To learn how to create a truststore and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). + > - trustStore: This refers to the name of the truststore that holds the client certificate, or name of the certificate store reference that points to the trust store. To learn how to create a truststore and upload certificates, see [Manage Certificates](50-Development/manage-certificates-c665875.md). Alternatively, you can use a certificate store reference name instead of the truststore name. This reference name points to the truststore that contains the client certificate. For detailed instructions, see [Working with References](50-Development/working-with-references-6f96b64.md). > ### Note: diff --git a/docs/ISuite/configuring-user-access-2c6214a.md b/docs/ISuite/configuring-user-access-2c6214a.md index 026f0916..51818093 100644 --- a/docs/ISuite/configuring-user-access-2c6214a.md +++ b/docs/ISuite/configuring-user-access-2c6214a.md @@ -132,7 +132,7 @@ For more information on role collections, see [Roles and Role Collections](https - Complete the onboarding process - Access the *API Settings* page. See [Setting Up API Management Capability](50-Development/setting-up-api-management-capability-f34e86c.md) - For more information on relevant roles, see [Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right:. + For more information on relevant roles, see [User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md). For end-to end instructions on how to set up and configure API Management, refer the tutorial [Set Up API Management from Integration Suite | Tutorials for SAP Developers](https://developers.sap.com/tutorials/api-mgmt-isuite-initial-setup.html). diff --git a/docs/ISuite/creating-a-custom-role-9d827cd.md b/docs/ISuite/creating-a-custom-role-9d827cd.md index 5640ff98..d29b1459 100644 --- a/docs/ISuite/creating-a-custom-role-9d827cd.md +++ b/docs/ISuite/creating-a-custom-role-9d827cd.md @@ -91,5 +91,5 @@ You can restrict access to an API product in API Management using a custom role. [Create a Product](50-Development/create-a-product-d769622.md "Explains how to create products to publish a bundle of API proxies together.") -[Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right: +[User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") diff --git a/docs/ISuite/edge-integration-cell-runtime-scope-144c64a.md b/docs/ISuite/edge-integration-cell-runtime-scope-144c64a.md index 409fb063..960e8b93 100644 --- a/docs/ISuite/edge-integration-cell-runtime-scope-144c64a.md +++ b/docs/ISuite/edge-integration-cell-runtime-scope-144c64a.md @@ -47,13 +47,15 @@ Reusable artifacts diff --git a/docs/ISuite/patch-releases-for-api-management-6ddd927.md b/docs/ISuite/patch-releases-for-api-management-6ddd927.md deleted file mode 100644 index ebdc786e..00000000 --- a/docs/ISuite/patch-releases-for-api-management-6ddd927.md +++ /dev/null @@ -1,146 +0,0 @@ - - -# Patch Releases for API Management - -This topic provides information on patch releases for API Management that are provided for bug fixes. - - - - - -## March 2024 - -**Software Increment: 2313** - - -
+ source + apiportal @@ -222,8 +224,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Required + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Required + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Required + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Required + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ devportal > ### Note: @@ -336,6 +431,99 @@ Once you have your source and target system ready, you can clone your API Manage
+ `certurl` + + + + X509 mTLS + + + + String + + + + Optional + + + + Certificate URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The contents of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ cfSubaccountTenantID
+ target + apiportal @@ -483,8 +671,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Optional + + + + Certificate URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The contents of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ devportal > ### Note: @@ -597,6 +878,99 @@ Once you have your source and target system ready, you can clone your API Manage
+ `certurl` + + + + X509 mTLS + + + + String + + + + Optional + + + + Certificate URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The contents of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ skipApplicationKeySecretCloning +- Message Mapping + - Script Collection - Integration Adapter - Value Mapping -- Message Mapping +- Function Libraries diff --git a/docs/ISuite/enable-api-management-capability-f6eb433.md b/docs/ISuite/enable-api-management-capability-f6eb433.md index 99f9c56b..98f9681d 100644 --- a/docs/ISuite/enable-api-management-capability-f6eb433.md +++ b/docs/ISuite/enable-api-management-capability-f6eb433.md @@ -152,7 +152,7 @@ After enabling the API Management capability, you need to first set up the servi **Related Information** -[Tasks and Corresponding Role Collections](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/IAT/en-US/911ca5a620e94ab581fa159d76b3b108.html "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") :arrow_upper_right: +[User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") [Create an API Provider](50-Development/create-an-api-provider-6b263e2.md "Define the details of the host you want an application to reach by creating an API provider.") diff --git a/docs/ISuite/index.md b/docs/ISuite/index.md index 945d985e..8e6fd740 100644 --- a/docs/ISuite/index.md +++ b/docs/ISuite/index.md @@ -7,10 +7,9 @@ - [Hybrid Deployment Using Edge Integration Cell](hybrid-deployment-using-edge-integration-cell-7a6c267.md) - [Technical Landscape \(Edge Integration Cell\)](technical-landscape-edge-integration-cell-f60efc1.md) - [Edge Integration Cell Runtime Scope](edge-integration-cell-runtime-scope-144c64a.md) -- [What's New for General Features](what-s-new-for-general-features-2ad1b96.md) +- [What's New for Integration Suite General Features](what-s-new-for-integration-suite-general-features-2ad1b96.md) - [Patch Release Notes for SAP Integration Suite](patch-release-notes-for-sap-integration-suite-58595b5.md) - [Patch Releases for Cloud Integration and Related Components](patch-releases-for-cloud-integration-and-related-components-023a472.md) - - [Patch Releases for API Management](patch-releases-for-api-management-6ddd927.md) - [Initial Setup](10-InitialSetup/initial-setup-3dcf507.md) - [Get an SAP Business Technology Platform Account](10-InitialSetup/get-an-sap-business-technology-platform-account-1eda403.md) - [Production Account](10-InitialSetup/production-account-24ef511.md) @@ -44,10 +43,14 @@ - [Configuring a Default Domain for a Virtual Host](configuring-a-default-domain-for-a-virtual-host-1085228.md) - [Configuring Mutual TLs for Virtual Host](configuring-mutual-tls-for-virtual-host-9faf7ce.md) - [Region-Specific IP Addresses Available for API Management Cloud Foundry Environment](region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md) - - [User Roles in API Management](user-roles-in-api-management-7010b58.md) + - [User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md) - [Assigning Role Collections to Users](assigning-role-collections-to-users-80bb02e.md) - [Creating a Custom Role](creating-a-custom-role-9d827cd.md) + - [User Roles in API Management](user-roles-in-api-management-7010b58.md) - [Cancel API Management Service Subscription](cancel-api-management-service-subscription-df6df2b.md) + - [1e88d9cb4e90466cb0ab2c53e33b2e1c.xml](1e88d9cb4e90466cb0ab2c53e33b2e1c.md) + - [72082006fdbd440faa915cde7e1eb53d.xml](72082006fdbd440faa915cde7e1eb53d.md) + - [c5977080232f44a2b3dc6c88eb2f8c85.xml](c5977080232f44a2b3dc6c88eb2f8c85.md) - [API Documentation](api-documentation-e26b332.md) - [Limits in API Management](limits-in-api-management-f70f425.md) - [Migration of API Management Content](APIM-Migration/migration-of-api-management-content-d66b3e5.md) @@ -98,7 +101,7 @@ - [Operating Edge Integration Cell](operating-edge-integration-cell-2af17b8.md) - [Operations Cockpit](operations-cockpit-ec0fc95.md) - [Job Management](job-management-4146fa5.md) - - [Component Monitor](component-monitor-49f487e.md) + - [Component Monitoring](component-monitoring-49f487e.md) - [Status Information](status-information-732f300.md) - [Solace Monitor](solace-monitor-26a7894.md) - [Runtime Parameters](runtime-parameters-63c5276.md) @@ -382,6 +385,7 @@ - [Externalized Parameters View](50-Development/externalized-parameters-view-27a0216.md) - [Problems View](50-Development/problems-view-7614a1f.md) - [Deployment Status View](50-Development/deployment-status-view-40add87.md) + - [Design Guidelines View](50-Development/design-guidelines-view-d62dfe0.md) - [Define Process Shapes](50-Development/define-process-shapes-b573574.md) - [Define Integration Processes](50-Development/define-integration-processes-d704f5c.md) - [Define Local Integration Process](50-Development/define-local-integration-process-520341a.md) @@ -1073,7 +1077,7 @@ - [Perform Additional Tasks in API Specification](50-Development/perform-additional-tasks-in-api-specification-42f0f99.md) - [OpenAPI Specification 3.0](50-Development/openapi-specification-3-0-db3537a.md) - [Additional Attributes in OpenAPI Specification](50-Development/additional-attributes-in-openapi-specification-4ab4c8e.md) - - [Copy an API Artifact](50-Development/copy-an-api-artifact-820c9e8.md) + - [Copy an API Artifact](50-Development/copy-an-api-artifact-820c9e8.md) - [Policy Definition and Types of Policies Supported by Edge Integration Cell](50-Development/policy-definition-and-types-of-policies-supported-by-edge-integration-cell-c744df5.md) - [Adding Policy Steps to the API Artifact](50-Development/adding-policy-steps-to-the-api-artifact-c2b3e56.md) - [Traffic Management Policies](50-Development/traffic-management-policies-165db68.md) @@ -1087,6 +1091,7 @@ - [Authorization](50-Development/authorization-6658409.md) - [JSON Threat Protection](50-Development/json-threat-protection-c4991a6.md) - [Enabling CORS Support](50-Development/enabling-cors-support-03e1136.md) + - [Deploying an API Artifact](50-Development/deploying-an-api-artifact-b70e7ec.md) - [B2B Scenarios](50-Development/b2b-scenarios-c55eb4d.md) - [Understanding the Basic Concepts](50-Development/understanding-the-basic-concepts-74c068d.md) - [Getting Started with B2B Scenarios in SAP Integration Suite](50-Development/getting-started-with-b2b-scenarios-in-sap-integration-suite-ba066bb.md) @@ -1276,6 +1281,11 @@ - [Update a Key Value Map](50-Development/update-a-key-value-map-4961431.md) - [Delete a Key Value Map](50-Development/delete-a-key-value-map-24fbb01.md) - [Manage Certificates](50-Development/manage-certificates-c665875.md) + - [Working with References](50-Development/working-with-references-6f96b64.md) + - [Creating the References](50-Development/creating-the-references-ddc5fdf.md) + - [Updating the References](50-Development/updating-the-references-e2a9ec4.md) + - [Reading the References](50-Development/reading-the-references-4f3d168.md) + - [Deleting the References](50-Development/deleting-the-references-bd809db.md) - [Create a Policy Template](50-Development/create-a-policy-template-c5d1872.md) - [Apply a Policy Template](50-Development/apply-a-policy-template-2ceab71.md) - [Update a Policy Template](50-Development/update-a-policy-template-269442f.md) @@ -1472,19 +1482,11 @@ - [Create and Work with Custom Reports](50-Development/create-and-work-with-custom-reports-daf54fd.md) - [Create Custom Dimensions and Measures](50-Development/create-custom-dimensions-and-measures-ba211be.md) - [Request to Modify Threshold Value for Charts](50-Development/request-to-modify-threshold-value-for-charts-b55f89d.md) + - [Anomaly Detection](50-Development/anomaly-detection-7a4fe7d.md) + - [Enabling Anomaly Detection](50-Development/enabling-anomaly-detection-98534a0.md) + - [Enabling APIs for Anomaly Detection](50-Development/enabling-apis-for-anomaly-detection-9e7e5d1.md) + - [1c677b2472f94aa28ea4fc4ecc4e4bef.xml](1c677b2472f94aa28ea4fc4ecc4e4bef.md) - [SAP Analytics Cloud for SAP Integration Suite](50-Development/sap-analytics-cloud-for-sap-integration-suite-fb3648a.md) - - [Monetize APIs](50-Development/monetize-apis-fcdc89b.md) - - [Rate Plan Service](50-Development/rate-plan-service-f4537ce.md) - - [Create a Rate Plan](50-Development/create-a-rate-plan-cfe6a30.md) - - [Attach Rate Plan to a Product](50-Development/attach-rate-plan-to-a-product-cc5c942.md) - - [Update a Rate Plan](50-Development/update-a-rate-plan-b8c1e6b.md) - - [Delete a Rate Plan](50-Development/delete-a-rate-plan-d4181ad.md) - - [Billing Service](50-Development/billing-service-1e20fb5.md) - - [View Bill Details in the SAP Integration Suite](50-Development/view-bill-details-in-the-sap-integration-suite-2378110.md) - - [View Bill Details in the API business hub enterprise](50-Development/view-bill-details-in-the-api-business-hub-enterprise-4ddac67.md) - - [Download Bill Details from SAP Integration Suite](50-Development/download-bill-details-from-sap-integration-suite-329040d.md) - - [Download Bill Details from API business hub enterprise](50-Development/download-bill-details-from-api-business-hub-enterprise-ae61972.md) - - [Create or Update or Read an Application using Subscription key](50-Development/create-or-update-or-read-an-application-using-subscription-key-e2645b5.md) - [B2B Monitoring](50-Development/b2b-monitoring-9dc75c8.md) - [Monitoring B2B Messages](50-Development/monitoring-b2b-messages-b5e1fc9.md) - [Payload Indicator in Integration Flow Message Processing](50-Development/payload-indicator-in-integration-flow-message-processing-7f322c0.md) @@ -1531,6 +1533,8 @@ - [Request New Tenant](50-Development/IntegrationSettings/request-new-tenant-ac413cc.md) - [Validating Adapters](50-Development/IntegrationSettings/validating-adapters-82a5010.md) - [Upload Custom Adapters](50-Development/IntegrationSettings/upload-custom-adapters-fc4f957.md) + - [Post Migration Tasks](50-Development/IntegrationSettings/post-migration-tasks-809210a.md) + - [Design Guidelines](50-Development/IntegrationSettings/design-guidelines-4d1c84f.md) - [Setting Up API Management Capability](50-Development/setting-up-api-management-capability-f34e86c.md) - [Centralized API business hub enterprise \[Classic Design\]](50-Development/centralized-api-business-hub-enterprise-classic-design-33b706f.md) - [Create a Connection Request for the Centralized API business hub enterprise \[Classic Design\]](50-Development/create-a-connection-request-for-the-centralized-api-business-hub-enterprise-classic-desig-02f7877.md) @@ -1542,7 +1546,7 @@ - [Updating the Connection Request Credentials for a Pending Request \[New Design\]](50-Development/updating-the-connection-request-credentials-for-a-pending-request-new-design-dd37a7b.md) - [Approve the Pending Connection Requests \[New Design\]](50-Development/approve-the-pending-connection-requests-new-design-e296f80.md) - [Updating the Connection Request Credentials for an Approved Request \[New Design\]](50-Development/updating-the-connection-request-credentials-for-an-approved-request-new-design-882e1d9.md) - - [Documentation Template for MIGs and MAGs](50-Development/documentation-template-for-migs-and-mags-4c442af.md) + - [Documentation Export and Settings](50-Development/documentation-export-and-settings-4c442af.md) - [Runtime](50-Development/runtime-b833f5a.md) - [Security](60-Security/security-a58b240.md) - [Technical Landscape](60-Security/technical-landscape-daea676.md) diff --git a/docs/ISuite/initial-setup-64ac761.md b/docs/ISuite/initial-setup-64ac761.md index 368cf15e..44551f19 100644 --- a/docs/ISuite/initial-setup-64ac761.md +++ b/docs/ISuite/initial-setup-64ac761.md @@ -69,7 +69,7 @@ Integration Developer -- +- - [Troubleshooting for Edge Integration Cell](troubleshooting-for-edge-integration-cell-816d9e4.md) diff --git a/docs/ISuite/job-management-4146fa5.md b/docs/ISuite/job-management-4146fa5.md index cd336d32..a4f64ce7 100644 --- a/docs/ISuite/job-management-4146fa5.md +++ b/docs/ISuite/job-management-4146fa5.md @@ -323,5 +323,5 @@ Choose between: [Operations Cockpit](operations-cockpit-ec0fc95.md "The Operations Cockpit is the central control point for operating edge integration cells and allows the Edge Integration Cell administrator to monitor and adjust system configurations and resources.") -[Component Monitor](component-monitor-49f487e.md "Get information on the components.") +[Component Monitoring](component-monitoring-49f487e.md "Get information on the components.") diff --git a/docs/ISuite/operations-cockpit-ec0fc95.md b/docs/ISuite/operations-cockpit-ec0fc95.md index 302f78d9..2ddfacf1 100644 --- a/docs/ISuite/operations-cockpit-ec0fc95.md +++ b/docs/ISuite/operations-cockpit-ec0fc95.md @@ -15,17 +15,9 @@ In the Operations Cockpit, you can get a first overview over the most critical r For more information, see [Job Management](job-management-4146fa5.md). -- *Component Monitor*: Get information on the components in status *Error* quickly and efficiently. +- *Component Monitoring*: Get information on the components in status *Error* quickly and efficiently. - For more information, see [Component Monitor](component-monitor-49f487e.md). - -- *Status Information*: Get status information on the Edge Integration Cell components. - - For more information, see [Status Information](status-information-732f300.md). - -- *Solace Monitor*: Monitor Solace Message Broker metrics, keep track of resource utilization, and access information about message VPNs, queues, and clients. - - For more information, see [Solace Monitor](solace-monitor-26a7894.md). + For more information, see [Component Monitoring](component-monitoring-49f487e.md). - *Quick Links*: Jump direclty to *View Runtime Parameters*, a screen that you can also enter via *Component Monitoring*. diff --git a/docs/ISuite/patch-release-notes-for-sap-integration-suite-58595b5.md b/docs/ISuite/patch-release-notes-for-sap-integration-suite-58595b5.md index 9c564df2..80960fec 100644 --- a/docs/ISuite/patch-release-notes-for-sap-integration-suite-58595b5.md +++ b/docs/ISuite/patch-release-notes-for-sap-integration-suite-58595b5.md @@ -121,7 +121,7 @@ API Management -[Patch Releases for API Management](patch-releases-for-api-management-6ddd927.md) +[Patch Releases for API Management](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/6ddd927cbeaa42e384dc903e6002e269.html "This topic provides information on patch releases for API Management that are provided for bug fixes.") :arrow_upper_right:
- - - - - - - - - - -
- -Technical Component - - - -Software Version - - - -Description - -
- -API Management - - - -1.165.3 - - - -The prefix "custom\_" has been added to all custom metrics during creation. Additionally, the Policy Validator for the StatsCollector will check if a custom metric already exists and update it accordingly with the "custom\_" prefix in the StatsCollector. - -
- - - - - -## January 2024 - -**Software Increment: 2310** - - - - - - - - - - - - - - - - - - - - - - - -
- -Technical Component - - - -Software Version - - - -Description - -
- -API Management - - - -1.162.7 - - - -The following issues have been identified: - -- In the event of an onboarding failure after successfully creating a keystore for opproxy, the same step was being executed again. - -- When navigating to product details from the product list in the Application details page, particularly when the product has a different name and title in API business hub enterprise the following issues were observed: - - - Users are unable to navigate to the product details from the product list if the product has a different name and title. - - - The APIProduct uses the name as the primary key in API business hub enterprise, but the Application details page uses the title to navigate, which resulted in an error. - - -- The rate limiting for the SAP PKI Certificate Service on all Public & Private Cloud landscapes went live on November 16, 2023, according to the certificate service team. So adjustments need to be made to accommodate the rate limiting. - - -This patch fixes the above issues. - -
- -API Management - - - -1.162.6 - - - -In the Neo platform, the onboarding process for new developers in runtime was not functioning properly. This patch fixes the issue. - -
- -API Management - - - -1.162.5 - - - -Request initiated for all services to adopt the latest xsuaa security patch. - -
- diff --git a/docs/ISuite/patch-releases-for-cloud-integration-and-related-components-023a472.md b/docs/ISuite/patch-releases-for-cloud-integration-and-related-components-023a472.md index 43787a02..e3bde9ce 100644 --- a/docs/ISuite/patch-releases-for-cloud-integration-and-related-components-023a472.md +++ b/docs/ISuite/patch-releases-for-cloud-integration-and-related-components-023a472.md @@ -12,11 +12,167 @@ The following patch release information covers the most recent changes made to t -
+ ## March 2024 -**Software Increment: 2312** +**Software Increment: 2401** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Technical Component + + + +Software Version + + + +Description + +
+ +Cloud Integration + + + +6.50.23 + + + +There have been outages where scenarios stopped working. This patch fixes the issue. + +
+ +Cloud Integration + + + +6.50.22 + +8.14.12 + + + +For some customers, scenarios using the SFTP adapter stopped working. Even after already having patched this issue, few customers observed continuation in following error message being raised: `SSH_MSG_DISCONNECT: 2 Failed to read binary`. This patch fixes the issue. + +
+ +Trading Partner Management + + + +6.50.22 + + + +There have been issues with the validation of agreements when many B2B transactions were operated. This patch fixes the issue. + +
+ +Trading Partner Management + + + +6.50.x + + + +There were issues when TPM fetches tenant metadata from Cloud Integration-related tables, when Cloud Integration is not activated. This patch fixes the issue. + +
+ +Cloud Integration + + + +5.58.9 + +7.23.13 + + + +There were multiple timer executions during camel 3x migration. This patch fixes the issue.There were multiple timer executions, during camel 3x migration. This patch fixes the issue. + +
+ +Cloud Integration + + + +5.58.9 + +7.23.12 + + + +Some customers experienced issues with SFTP scenarios which stopped working and receiving connection errors from servers with message SSH\_MSG\_DISCONNECT: 2 Failed to read binary packet data! this patch fixes the issues. + +
+ +Cloud Integration + + + +7.23.11 + +8.14.8 + + + +As the behaviour of Camel 3x has changed, some customers face an execution error in an edge case, when setting and reading the body within the same Groovy script. This patch fixes the issue. + +
+ + + +
+ +## March 2024 + +**Software Increment: 2313** @@ -45,7 +201,7 @@ Description ## February 2024 -**Software Increment: 2312** +**Software Increment: 2313**
diff --git a/docs/ISuite/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md b/docs/ISuite/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md index 62e33f37..8ec1c2c7 100644 --- a/docs/ISuite/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md +++ b/docs/ISuite/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md @@ -4,16 +4,14 @@ API Management protects your backend services. However, API Management needs to establish connectivity to your backend services during an API call execution. -In case your backend service is restricting access to certain IPs as part of security measures, you need to add API Management LB and NAT IPs to the list of allowed IPs in your backend services. +In case your backend service is restricting access to certain IPs as part of security measures, you need to add API Management NAT IPs to the list of allowed IPs in your backend services. > ### Note: -> - LB \(Load Balancer\) IPs are ingress, for incoming requests. -> > - NAT \(Network Address Translation\) IPs are egress IPs for requests from API Management. > > - In the Cloud Foundry environment, IPs are controlled by the respective IaaS provider \(AWS, Azure, Google Cloud, Alibaba Cloud\). IPs may change due to network updates on the provider side. Any planned changes will be announced at least four weeks before they take effect. -To get region-specific ingress \(inbound\) and egress \(outbound\) LB and NAT IP addresses for API Management, see the following table: +To get region-specific egress \(outbound\) NAT IP addresses for API Management, see the following table: @@ -49,11 +47,6 @@ Technical Key of IaaS Provider - @@ -86,11 +79,6 @@ West Europe - @@ -123,11 +111,6 @@ Australia East - @@ -160,11 +143,6 @@ Southeast Asia - @@ -197,11 +175,6 @@ West US 2 - @@ -234,11 +207,6 @@ Japan East - @@ -271,11 +239,6 @@ East US - @@ -308,11 +271,6 @@ sa-east-1 - @@ -345,11 +303,6 @@ ap-northeast-1 - @@ -382,11 +335,6 @@ ap-southeast-2 - @@ -419,11 +367,6 @@ ap-southeast-1 - @@ -456,11 +399,6 @@ ap-northeast-2 - @@ -493,11 +431,6 @@ ca-central-1 - @@ -530,11 +463,6 @@ eu-central-1 - @@ -567,11 +495,6 @@ eu-central-1 - @@ -604,11 +527,6 @@ us-east-1 - @@ -641,11 +559,6 @@ us-central-1 - @@ -678,11 +591,6 @@ cn-shanghai - @@ -715,11 +623,6 @@ Switzerland North - @@ -752,11 +655,6 @@ asia-south1 - @@ -789,11 +687,6 @@ europe-west3 - @@ -802,7 +695,7 @@ europe-west3 - + ## Regions for Trial Accounts @@ -836,11 +729,6 @@ Technical Key of IaaS Provider - @@ -873,11 +761,6 @@ Southeast Asia - @@ -910,11 +793,6 @@ eu-central-1 - @@ -947,11 +825,6 @@ us-east-1 - @@ -966,7 +839,11 @@ us-east-1 [Configuring Additional Virtual Host in Cloud Foundry Environment](configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md "A virtual host allows you to host multiple domain names on the API Management capability within Integration Suite.") +[User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") + [User Roles in API Management](user-roles-in-api-management-7010b58.md "Use role collections to group together different roles that can be assigned to API Portal and API business hub enterprise users.") [Cancel API Management Service Subscription](cancel-api-management-service-subscription-df6df2b.md "You can deactivate your API Management capability from Integration Suite to disable your account from the API Management service.") +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1e88d9cb4e90466cb0ab2c53e33b2e1c.html "") :arrow_upper_right: + diff --git a/docs/ISuite/terminology-and-glossary-fd1491d.md b/docs/ISuite/terminology-and-glossary-fd1491d.md index 6f6fe16e..ff1eceef 100644 --- a/docs/ISuite/terminology-and-glossary-fd1491d.md +++ b/docs/ISuite/terminology-and-glossary-fd1491d.md @@ -5,7 +5,7 @@ **Related Information** - + [Glossary for SAP Trading Partner Management](glossary-for-sap-trading-partner-management-81860a4.md "") diff --git a/docs/ISuite/user-roles-in-api-management-7010b58.md b/docs/ISuite/user-roles-in-api-management-7010b58.md index 6f7de9cf..27af24c5 100644 --- a/docs/ISuite/user-roles-in-api-management-7010b58.md +++ b/docs/ISuite/user-roles-in-api-management-7010b58.md @@ -199,5 +199,9 @@ Use this role to: [Region-Specific IP Addresses Available for API Management Cloud Foundry Environment](region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md "API Management protects your backend services. However, API Management needs to establish connectivity to your backend services during an API call execution.") +[User Roles in API Management \(New\)](user-roles-in-api-management-new-911ca5a.md "Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned.") + [Cancel API Management Service Subscription](cancel-api-management-service-subscription-df6df2b.md "You can deactivate your API Management capability from Integration Suite to disable your account from the API Management service.") +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1e88d9cb4e90466cb0ab2c53e33b2e1c.html "") :arrow_upper_right: + diff --git a/docs/ISuite/user-roles-in-api-management-new-911ca5a.md b/docs/ISuite/user-roles-in-api-management-new-911ca5a.md new file mode 100644 index 00000000..6232631c --- /dev/null +++ b/docs/ISuite/user-roles-in-api-management-new-911ca5a.md @@ -0,0 +1,729 @@ + + +# User Roles in API Management \(New\) + +Similar to other capabilities of the SAP Integration Suite, the API Management capability defines a set of technical roles that grant specific permissions to users. Users can be assigned roles through SAP BTP's role collection concept. While users have the option to create their own role collections, a set of predefined role collections is automatically created when the API Management capability is provisioned. + +Please refer to the table below for a list of tasks and the corresponding role collections. + +For more information, see [Assign Role Collections](https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/9e1bf57130ef466e8017eab298b40e5e.html) and [Assigning Role Collections to Users](assigning-role-collections-to-users-80bb02e.md) + + + +As an administrator of SAP API Management in the Cloud Foundry environment, you can manitain API Portal and API business hub enterprise roles and role collections, which can be used in user management. Typically, a role collection consists of one or multiple roles. You assign roles to role collections, which are in turn assigned to users. Using the SAP BTP cockpit, you can display information about the role collections that have been maintained as well as the roles available in a role collection. + +The following predefined roles are shipped with API Portal. These roles by default, are shared, visible, and accessible within all the accounts that have subscribed to API Portal: + +The following predefined roles are shipped with API business hub enterprise: + + +
-LB IPs \(ingress, for incoming requests\) - - - NAT IPs \(egress, for outgoing requests\) -51.105.226.76, 20.4.203.111 - - - 51.105.226.79, 20.107.78.224, 20.4.205.181 -20.53.178.192 - - - 20.53.178.190 -20.43.177.215 - - - 20.43.177.113 -51.143.127.29 - - - 51.143.126.237 -52.155.116.209 - - - 52.155.117.53 -20.42.26.85, 137.135.94.245 - - - 20.42.28.32, 20.25.8.237 -18.230.84.42, 54.233.108.69, 177.71.244.1 - - - 18.229.180.216, 18.230.68.32, 18.229.200.51 -13.112.134.183, 54.95.250.60, 54.249.225.157 - - - 52.69.140.122, 18.181.69.241, 18.182.245.202 -3.105.46.220, 13.237.97.179, 3.104.188.200 - - - 3.105.155.212, 13.211.74.25, 13.55.87.26 -175.41.164.167, 18.139.72.206, 54.251.80.143 - - - 54.254.127.94, 54.179.36.212, 54.151.195.2 -52.79.158.48, 3.36.84.59, 15.165.191.243 - - - 3.35.108.250, 54.180.45.228, 3.36.176.209 -35.182.82.207, 99.79.96.34, 99.79.183.119 - - - 3.96.232.61, 3.96.230.37, 15.222.204.174 -52.57.227.184, 35.156.111.245, 3.72.121.203, 18.195.254.216, 52.59.65.179, 18.157.127.228, 3.71.212.236, 3.78.133.131, 3.125.67.253, 3.120.18.81, 52.57.122.96, 35.157.72.246, 52.59.9.207, 3.122.187.52, 35.158.244.146 - - - 52.29.48.148, 3.120.95.10, 18.194.144.165, 18.196.191.48, 52.59.78.206, 18.195.138.5, 3.73.160.117, 52.57.130.124, 3.72.189.179 -3.65.99.47, 3.127.192.196, 3.64.16.82 - - - 18.156.85.8, 3.65.144.116, 3.121.107.212 -54.86.152.69, 3.227.214.88, 3.222.180.54, 54.165.0.197, 18.211.185.170, 54.152.176.132, 3.227.146.112, 54.204.200.84, 3.213.190.155, 3.94.236.44, 52.2.5.170, 34.239.31.28 - - - 3.213.79.219, 3.209.244.202, 3.213.81.148, 54.87.110.53, 54.208.172.140, 54.86.163.159 -35.209.91.33 - - - 35.223.165.172, 34.133.13.45, 34.72.36.170 -139.224.173.96 - - - 101.132.190.155, 106.14.165.33, 106.14.184.113 -20.250.176.223, 20.250.113.139 - - - 20.250.216.117, 20.250.176.24 -35.207.228.176, 35.207.205.83 - - - 34.100.176.82, 34.93.181.26, 35.200.251.32, 34.100.182.244, 34.93.184.71, 34.100.176.113 -35.207.154.151, 35.207.169.22 - - - 34.159.208.178, 34.159.31.39, 34.141.20.163, 34.107.78.67, 34.159.45.83, 35.246.220.63 -LB IPs \(ingress, for incoming requests\) - - - NAT IPs \(egress, for outgoing requests\) -20.195.53.58 - - - 20.195.52.254 -18.195.249.1, 3.122.154.182, 18.157.222.132 - - - 18.157.223.60, 18.157.143.164, 52.28.147.96 -54.160.203.34, 3.219.96.75, 3.222.55.46 - - - 54.172.191.202, 52.1.75.180, 52.207.193.169
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Tasks + + + +Predefined Role Collections + + + +Reference + +
+ +Create subaccounts in your global account. + +Create service instance for API Management and Integration Suite. + +Configure role collections and provide user access to role collections + + + +Subaccount Administrator + + + +[Create a Subaccount](https://help.sap.com/docs/btp/sap-business-technology-platform/create-subaccount?q=entitlements) + +
+ +Subscribe to Integration Suite. + + + +Integration\_Provisioner + + + +[Subscribing and Configuring Initial Access to Integration Suite](https://help.sap.com/docs/integration-suite/sap-integration-suite/subscribing-to-integration-suite?q=centralised) + +
+ +Activate the API Management capabilities, the API business hub enterprise, and Graph. + + + +Integration\_Provisioner + + + +[Enabling API Management Capability from Integration Suite](https://help.sap.com/docs/integration-suite/sap-integration-suite/enabling-api-management-capability-from-integration-suite?version=CLOUD) + +
+ +Deactivate the API Management capabilities, the API business hub enterprise, and Graph. + + + +Integration\_Provisioner + + + +[Deactivate the API Management Capability](https://help.sap.com/docs/integration-suite/sap-integration-suite/cancel-api-management-service-subscription?version=CLOUD) + +
+ +Use the Graph Navigator in API business hub enterprise to inspect business data graphs. + + + +GraphNavigator.Viewer + + + +[Configuring User Access](https://help.sap.com/docs/integration-suite/sap-integration-suite/cohttps://help.sap.com/docs/integration-suite/sap-integration-suite/configuring-user-access?version=CLOUDnfiguring-user-access?version=CLOUD) + +
+ +Create and activate business data graphs. + + + +Graph.KeyUser + + + +[Configuring User Access](https://help.sap.com/docs/integration-suite/sap-integration-suite/cohttps://help.sap.com/docs/integration-suite/sap-integration-suite/configuring-user-access?version=CLOUDnfiguring-user-access?version=CLOUD) + +
+ +Set up API Management capability in Integration Suite. + + + +APIManagement.Selfservice.Administrator + + + +[Setting Up API Management Capability](https://help.sap.com/docs/integration-suite/sap-integration-suite/setting-up-api-management-service?q=centralised) + +
+ +Setting up API business hub enterprise. + + + +AuthGroup.SelfService.Admin + + + +[Enabling API Management Capability from Integration Suite](https://help.sap.com/docs/integration-suite/sap-integration-suite/enabling-api-management-capability-from-integration-suite?version=CLOUD) + +[Setting Up API Management Capability](https://help.sap.com/docs/integration-suite/sap-integration-suite/setting-up-api-management-service?q=centralised) + +
+ +Configure one or more virtual hosts. + + + +APIManagement.Selfservice.Administrator + +> ### Note: +> If you want to create an additional virtiual host, you must create an instance of apiportal-apiaccess plan with the *APIManagement.Selfservice.Administrator* role. See, [API Access Plan for API Portal](https://help.sap.com/docs/integration-suite/sap-integration-suite/api-access-plan-for-api-portal?version=CLOUD). + + + + + +[Requesting an Additional Virtual Host in Cloud Foundry Environment](https://help.sap.com/docs/integration-suite/sap-integration-suite/requesting-additional-virtual-host-in-cloud-foundry-environment?version=CLOUD) + +
+ +Establish and test the connection between centralised API business hub enterprise and multiple Integration Suite API Management tenants. + + + +- APIPortal.Administrator + +- AuthGroup.API.Admin + +- AuthGroup.APIPortalRegistration + + > ### Note: + > To create a connection request, you need to have the AuthGroup.APIPortalRegistration role. + +- APIPortal Service.CatalogIntegration + + > ### Note: + > The client credentials required to establish the connection are generated for the APIPortal.Service.CatalogIntegration role. + + + + + + +[Create a Connection Request for the Centralized API business hub enterprise](https://help.sap.com/docs/integration-suite/sap-integration-suite/create-connection-request-for-centralized-api-business-hub-enterprise-new-design?version=CLOUD) + +
+ +As a guest user, you can access the API Management capability in read-only mode. You can view all API proxies, policies, existing products, API providers, and analytics, but can’t edit them. + + + +APIPortal.Guest + + + +  + +
+ +- Discover APIs + +- Configure an API provider + +- Configure API proxies + +- Import API specification + +- Configure certificates + +- Configure Key Value Maps + +- Test API proxies using the API Test Console + + + + + + +APIPortal.Administrator + + + +[Build API Proxies](https://help.sap.com/docs/integration-suite/sap-integration-suite/build-apis?version=CLOUD) + +
+ +- Configure and publish products, group API proxies into products + +- Create a custom role for a product + + + + + + +APIPortal.Administrator + + + +[Publish API Proxies](https://help.sap.com/docs/integration-suite/sap-integration-suite/publish-apis?version=CLOUD) + +[Creating a Custom Role](https://help.sap.com/docs/integration-suite/sap-integration-suite/creating-custom-role?version=CLOUD&q=custom%20role) + +
+ +Configure rate plans and view bills. + + + +APIPortal.Administrator + + + +[Monetize API Proxies](https://help.sap.com/docs/integration-suite/sap-integration-suite/monetize-apis?version=CLOUD) + +
+ +Analyze the API proxy usage and performance. + + + +APIPortal.Administrator + + + +[Analyze API Proxies](https://help.sap.com/docs/integration-suite/sap-integration-suite/analyze-apis?version=CLOUD&q=custom%20role) + +
+ +Approve or reject the connection request between API business hub enterprise and Integration Suite API Management tenant. + + + +AuthGroup.API.Admin + + + +[Approve the Pending Connection Requests](https://help.sap.com/docs/integration-suite/sap-integration-suite/approve-pending-connection-requests-new-design?version=CLOUD&q=test%20connect%20APi%20business%20hub%20enterprise) + +
+ +- Approve the registration request of an application developer + +- Revoke the rights of an application developer + +- Manage notifications in API business hub enterprise + +- Adjust the visibility of the Graph navigator on API business hub enterprise + +- Revoke the credentials \(app key and secret\) of an application + + + + + + +AuthGroup.API.Admin + + + +[Consume API Proxies](https://help.sap.com/docs/integration-suite/sap-integration-suite/consume-apis?version=CLOUD&q=test%20connect%20APi%20business%20hub%20enterprise) + +
+ +As a Site Administrator, you can customize the visual layout of the API business hub enterprise using the Site Editor. + + + +AuthGroup.Site.Admin + + + +[Customize the Visual Format of the API business hub enterprise](https://help.sap.com/docs/integration-suite/sap-integration-suite/customize-visual-format-of-api-business-hub-enterprise?version=CLOUD) + +
+ +As a Content Administrator, you can create domain categories and add the related products into relevant categories. + + + +- AuthGroup.API.Admin \(to be tested\) +- AuthGroup.Content.Admin + + + + + +[Manage Domain Categories](https://help.sap.com/docs/integration-suite/sap-integration-suite/manage-domain-categories-new-design?version=CLOUD) + +
+ +As an Application Developer, you can: + +- Access the API business hub enterprise. + +- Create, update, and delete applications. + +- View analytics information on application usage, performance, and error count. + +- View and download bills for subscribed applications. + + + + + + +AuthGroup.API.ApplicationDeveloper + + + +[View Applications, Costs, and Analyze Reports](https://help.sap.com/docs/integration-suite/sap-integration-suite/view-applications-costs-and-analyze-reports-new-design?version=CLOUD) + +[Create an Application](https://help.sap.com/docs/integration-suite/sap-integration-suite/create-application-new-design?version=CLOUD) + +
+ +**Edge Integration Cell** + + + + + + + + + + + + + +
+ +Tasks + + + +Predefined Role Collections + + + +Reference + +
+ +Design an API artifact and define its behavior by adding policies and integration steps to it. + + + +- APIPortal.Administrator + +- PI\_Integration\_Developer + + + + + + +[API Development](50-Development/api-development-94957bc.md) + +
+ + + +
+ +## Technical Roles for Constructing Custom Role Collections + +If you want to create your own set of role collections, you can utilize the following technical roles from the provided list: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Technical roles + + + +Included in predefined role collection + +
+ +- Cloud Connector Administrator + +- Destination Administrator + +- Subaccount Admin + +- Subaccount Service Administrator + +- User + +- Role Administrator + + + + + + +Subaccount Administrator + +
+ +IntegrationProvisioningAdmin + + + +Integration\_Provisioner + +
+ +APIPortalAdmin + + + +APIPortal.Administrator + +
+ +CatalogIntegration + + + +APIPortal.Service.CatalogIntegration + +
+ +Guest + + + +APIPortal.Guest + +
+ +onboardingtemplate + + + +APIManagement.SelfService.Administrator + +
+ +Graph\_Key\_User + + + +Graph.KeyUser + +
+ +APIAdmin + + + +AuthGroup.API.Admin + +
+ +APIPortalConnectionRequest + + + +AuthGroup.APIPortalRegistration + +
+ +ApplicationDeveloper + + + +AuthGroup.API.ApplicationDeveloper + +
+ +ContentAdmin + + + +AuthGroup.Content.Admin + +
+ +ContentAuthor + + + +AuthGroup.ContentAuthor + +
+ +SelfServiceAdmin + + + +AuthGroup.SelfService.Admin + +
+ +SiteAdmin + + + +AuthGroup.Site.Admin + +
+ +Graph\_Navigator\_Viewer + + + +GraphNavigator.Viewer + +
+ +**Related Information** + + +[Configuring Additional Virtual Host in Cloud Foundry Environment](configuring-additional-virtual-host-in-cloud-foundry-environment-a7b91e5.md "A virtual host allows you to host multiple domain names on the API Management capability within Integration Suite.") + +[Region-Specific IP Addresses Available for API Management Cloud Foundry Environment](region-specific-ip-addresses-available-for-api-management-cloud-foundry-environment-585d639.md "API Management protects your backend services. However, API Management needs to establish connectivity to your backend services during an API call execution.") + +[User Roles in API Management](user-roles-in-api-management-7010b58.md "Use role collections to group together different roles that can be assigned to API Portal and API business hub enterprise users.") + +[Cancel API Management Service Subscription](cancel-api-management-service-subscription-df6df2b.md "You can deactivate your API Management capability from Integration Suite to disable your account from the API Management service.") + +[](https://help.sap.com/viewer/51ab953548be4459bfe8539ecaeee98d/CLOUD/en-US/1e88d9cb4e90466cb0ab2c53e33b2e1c.html "") :arrow_upper_right: + diff --git a/docs/ISuite/what-s-new-for-general-features-2ad1b96.md b/docs/ISuite/what-s-new-for-integration-suite-general-features-2ad1b96.md similarity index 87% rename from docs/ISuite/what-s-new-for-general-features-2ad1b96.md rename to docs/ISuite/what-s-new-for-integration-suite-general-features-2ad1b96.md index 6102b112..e8593ae2 100644 --- a/docs/ISuite/what-s-new-for-general-features-2ad1b96.md +++ b/docs/ISuite/what-s-new-for-integration-suite-general-features-2ad1b96.md @@ -2,7 +2,7 @@ -# What's New for General Features +# What's New for Integration Suite General Features @@ -86,6 +86,76 @@ Integration Suite General Features + + + +Built-In Support + + + + +A new feature, referred as built-insupport, helps you find solutions to problems you may encounter when using the SAP Integration Suite. + +From SAP Integration Suite screens, you can search knowledge base articles that that can help you understand the application behaviour and guide you towards solution. + +You can also file an incident and receive assistance with recommended solutions through knowledge base articles or help recommendations. + +See: [Working with Integration Suite Home](https://help.sap.com/docs/integration-suite/sap-integration-suite/working-with-integration-suite-home?version=CLOUD) + + + + +Info only + + + + +General Availability + + + + +New + + + + +Technology + + + + +Not applicable + + + + +SAP Business Technology Platform + + + + +2024-04-06 + + + + +2024-04-06 + + + + + + +Integration Suite General Features + + + + +- Cloud Foundry + + + diff --git a/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md b/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md index acfb5a24..88f7908c 100644 --- a/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md +++ b/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-custom-domain-for-a-virtual-host-6b9e5a3.md @@ -42,8 +42,9 @@ To request a custom domain with one-way TLS, perform the following steps: - Service URL: https:///apiportal/operations/1.0/Configuration.svc/VirtualHostRequests - Method: POST - - Request Header: Authentication Bearer + - Request Header: Authorization: Bearer - Content Type: application/json + - Accept: application/json - Request Body: > ### Sample Code: @@ -53,8 +54,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "virtualHostUrl": "apis.customdomain.com", > "isDefaultVirtualHostRequest" : false, > "isForCustomDomain": true, - > "keyStoreName": "key store name", - > "keyStoreAlias": "key store alias", + > "keyStoreName": "ref://" or "", + > "keyStoreAlias": "key_store_alias", > "operation" : "CREATE" > } > @@ -69,7 +70,9 @@ To request a custom domain with one-way TLS, perform the following steps: > > - isForCustomDomain - Ensure that the value is set to "true". > - > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key. To learn how to create a keystore and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). + > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key, or the name of the certificate store reference pointing to the keystore. To learn how to create a keystore and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). Alternatively, you can use a certificate store reference name that points to the keystore containing the custom domain's public and private keys. For more information, see . + > + > - keyStoreAlias: The keyStoreAlias parameter refers to the name of the keystore certificate containing the custom domain's public and private key. To learn how to create a keystore certificate and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). > ### Note: > To enable client authentication \(mutual TLS\) while configuring the virtual host with custom domain, see [Configuring Mutual TLs for Virtual Host](configuring-mutual-tls-for-virtual-host-9faf7ce.md). @@ -96,8 +99,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "isForCustomDomain": true, > "isForNonSni": false, > "isTLS": false, - > "keyStoreAlias": "key store alias", - > "keyStoreName": "key store name", + > "keyStoreAlias": "key_store_alias", + > "keyStoreName": "ref://" or "", > "life_cycle": { > "__metadata": { > "type": "apimgmtconfiguration.History" @@ -128,6 +131,7 @@ To request a custom domain with one-way TLS, perform the following steps: - Method: POST - Request Header: Authentication Bearer - Content Type: application/json + - Accept: application/json - Request Body: > ### Sample Code: @@ -137,8 +141,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "virtualHostUrl": "apisupdated.customdomain.com", > "isDefaultVirtualHostRequest" : false, > "isForCustomDomain": true, - > "keyStoreName": "key store name", - > "keyStoreAlias": "key store alias", + > "keyStoreName": "ref://" or "", + > "keyStoreAlias": "key_store_alias", > "operation" : "UPDATE", > "virtualHostId":"1F02AD6A-A53C-43F4-BF95-F053A8A1469A" > } @@ -154,7 +158,9 @@ To request a custom domain with one-way TLS, perform the following steps: > > - isForCustomDomain - Ensure that the value is set to "true". > - > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key. To learn how to create a keystore and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). + > - keyStoreName: The keyStoreName parameter refers to the name of the keystore that should contain the custom domain's public and private key, or the name of the certificate store reference pointing to the keystore. To learn how to create a keystore and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). Alternatively, you can use a certificate store reference name that points to the keystore containing the custom domain's public and private keys. For more information, see . + > + > - keyStoreAlias: The keyStoreAlias parameter refers to the name of the keystore certificate containing the custom domain's public and private key. To learn how to create a keystore certificate and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). > > - virtualHostId: This is the unique ID of the virtual host you are trying to update. @@ -183,8 +189,8 @@ To request a custom domain with one-way TLS, perform the following steps: > "isForCustomDomain": true, > "isForNonSni": false, > "isTLS": false, - > "keyStoreAlias": "key store alias", - > "keyStoreName": "key store name", + > "keyStoreAlias": "key_store_alias", + > "keyStoreName": "ref://" or "", > "life_cycle": { > "__metadata": { > "type": "apimgmtconfiguration.History" @@ -204,7 +210,8 @@ To request a custom domain with one-way TLS, perform the following steps: > > ``` - The "lbHost" field contains the host URL which is required for the custom domain DNS mapping. + > ### Note: + > The "lbHost" field contains the host URL that is required for the custom domain DNS mapping. If the "lbHost" field does not display any value, please raise a support ticket through the [SAP Support Portal](https://support.sap.com/en/index.html) using the component OPU-API-OD-OPS. > ### Note: diff --git a/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-default-domain-for-a-virtual-host-1085228.md b/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-default-domain-for-a-virtual-host-1085228.md index e7386513..88e6159a 100644 --- a/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-default-domain-for-a-virtual-host-1085228.md +++ b/docs/apim/API-Management/APIM-Initial-Setup/configuring-a-default-domain-for-a-virtual-host-1085228.md @@ -38,8 +38,9 @@ To request a custom domain with one-way TLS, perform the following steps: - Service URL: https:///apiportal/operations/1.0/Configuration.svc/VirtualHostRequests - Method: POST - - Request Header: Authentication Bearer + - Request Header: Authorization: Bearer - Content Type: application/json + - Accept: application/json - Request Body: > ### Sample Code: diff --git a/docs/apim/API-Management/APIM-Initial-Setup/configuring-mutual-tls-for-virtual-host-9faf7ce.md b/docs/apim/API-Management/APIM-Initial-Setup/configuring-mutual-tls-for-virtual-host-9faf7ce.md index 449f50ac..44bc50db 100644 --- a/docs/apim/API-Management/APIM-Initial-Setup/configuring-mutual-tls-for-virtual-host-9faf7ce.md +++ b/docs/apim/API-Management/APIM-Initial-Setup/configuring-mutual-tls-for-virtual-host-9faf7ce.md @@ -27,6 +27,7 @@ You can configure mutual TLs for a virtual host, which validates the identities - Method: POST - Request Header: Authentication Bearer - Content Type: application/json + - Accept: application/json - Request Body: Create @@ -38,7 +39,7 @@ You can configure mutual TLs for a virtual host, which validates the identities > "virtualHostUrl": "prod-apis", > "isDefaultVirtualHostRequest" : false, > "isClientAuthEnabled": true, - > "trustStore": "trust-store", + > "trustStore": "ref://" or "", > "operation" : "CREATE" > } > @@ -53,7 +54,7 @@ You can configure mutual TLs for a virtual host, which validates the identities > "virtualHostUrl": "prod-apis", > "isDefaultVirtualHostRequest" : false, > "isClientAuthEnabled": true, - > "trustStore": "trust-store", + > "trustStore": "ref://" or "", > "virtualHostId":"c269915f-7adc-4f78-bdd0-dd39ffcb079f", > "operation" : "UPDATE" > } @@ -63,7 +64,7 @@ You can configure mutual TLs for a virtual host, which validates the identities > ### Note: > - isClientAuthEnabled: This field must be set to "true" to enable mutual TLS. > - > - trustStore: This refers to the name of the truststore that holds the client certificate. To learn how to create a truststore and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). + > - trustStore: This refers to the name of the truststore that holds the client certificate, or name of the certificate store reference that points to the trust store. To learn how to create a truststore and upload certificates, see [Manage Certificates](../manage-certificates-c665875.md). Alternatively, you can use a certificate store reference name instead of the truststore name. This reference name points to the truststore that contains the client certificate. For detailed instructions, see . > ### Note: diff --git a/docs/apim/API-Management/APIM-Initial-Setup/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environ-585d639.md b/docs/apim/API-Management/APIM-Initial-Setup/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environ-585d639.md index 76087d01..74ff7a5b 100644 --- a/docs/apim/API-Management/APIM-Initial-Setup/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environ-585d639.md +++ b/docs/apim/API-Management/APIM-Initial-Setup/region-specific-ip-addresses-available-for-api-management-cloud-foundry-environ-585d639.md @@ -4,16 +4,14 @@ API Management protects your backend services. However, API Management needs to establish connectivity to your backend services during an API call execution. -In case your backend service is restricting access to certain IPs as part of security measures, you need to add API Management LB and NAT IPs to the list of allowed IPs in your backend services. +In case your backend service is restricting access to certain IPs as part of security measures, you need to add API Management NAT IPs to the list of allowed IPs in your backend services. > ### Note: -> - LB \(Load Balancer\) IPs are ingress, for incoming requests. -> > - NAT \(Network Address Translation\) IPs are egress IPs for requests from API Management. > > - In the Cloud Foundry environment, IPs are controlled by the respective IaaS provider \(AWS, Azure, Google Cloud, Alibaba Cloud\). IPs may change due to network updates on the provider side. Any planned changes will be announced at least four weeks before they take effect. -To get region-specific ingress \(inbound\) and egress \(outbound\) LB and NAT IP addresses for API Management, see the following table: +To get region-specific egress \(outbound\) NAT IP addresses for API Management, see the following table: @@ -49,11 +47,6 @@ Technical Key of IaaS Provider -LB IPs \(ingress, for incoming requests\) - - - - NAT IPs \(egress, for outgoing requests\) @@ -86,11 +79,6 @@ West Europe -51.105.226.76, 20.4.203.111 - - - - 51.105.226.79, 20.107.78.224, 20.4.205.181 @@ -123,11 +111,6 @@ Australia East -20.53.178.192 - - - - 20.53.178.190 @@ -160,11 +143,6 @@ Southeast Asia -20.43.177.215 - - - - 20.43.177.113 @@ -197,11 +175,6 @@ West US 2 -51.143.127.29 - - - - 51.143.126.237 @@ -234,11 +207,6 @@ Japan East -52.155.116.209 - - - - 52.155.117.53 @@ -271,11 +239,6 @@ East US -20.42.26.85, 137.135.94.245 - - - - 20.42.28.32, 20.25.8.237 @@ -308,11 +271,6 @@ sa-east-1 -18.230.84.42, 54.233.108.69, 177.71.244.1 - - - - 18.229.180.216, 18.230.68.32, 18.229.200.51 @@ -345,11 +303,6 @@ ap-northeast-1 -13.112.134.183, 54.95.250.60, 54.249.225.157 - - - - 52.69.140.122, 18.181.69.241, 18.182.245.202 @@ -382,11 +335,6 @@ ap-southeast-2 -3.105.46.220, 13.237.97.179, 3.104.188.200 - - - - 3.105.155.212, 13.211.74.25, 13.55.87.26 @@ -419,11 +367,6 @@ ap-southeast-1 -175.41.164.167, 18.139.72.206, 54.251.80.143 - - - - 54.254.127.94, 54.179.36.212, 54.151.195.2 @@ -456,11 +399,6 @@ ap-northeast-2 -52.79.158.48, 3.36.84.59, 15.165.191.243 - - - - 3.35.108.250, 54.180.45.228, 3.36.176.209 @@ -493,11 +431,6 @@ ca-central-1 -35.182.82.207, 99.79.96.34, 99.79.183.119 - - - - 3.96.232.61, 3.96.230.37, 15.222.204.174 @@ -530,11 +463,6 @@ eu-central-1 -52.57.227.184, 35.156.111.245, 3.72.121.203, 18.195.254.216, 52.59.65.179, 18.157.127.228, 3.71.212.236, 3.78.133.131, 3.125.67.253, 3.120.18.81, 52.57.122.96, 35.157.72.246, 52.59.9.207, 3.122.187.52, 35.158.244.146 - - - - 52.29.48.148, 3.120.95.10, 18.194.144.165, 18.196.191.48, 52.59.78.206, 18.195.138.5, 3.73.160.117, 52.57.130.124, 3.72.189.179 @@ -567,11 +495,6 @@ eu-central-1 -3.65.99.47, 3.127.192.196, 3.64.16.82 - - - - 18.156.85.8, 3.65.144.116, 3.121.107.212 @@ -604,11 +527,6 @@ us-east-1 -54.86.152.69, 3.227.214.88, 3.222.180.54, 54.165.0.197, 18.211.185.170, 54.152.176.132, 3.227.146.112, 54.204.200.84, 3.213.190.155, 3.94.236.44, 52.2.5.170, 34.239.31.28 - - - - 3.213.79.219, 3.209.244.202, 3.213.81.148, 54.87.110.53, 54.208.172.140, 54.86.163.159 @@ -641,11 +559,6 @@ us-central-1 -35.209.91.33 - - - - 35.223.165.172, 34.133.13.45, 34.72.36.170 @@ -678,11 +591,6 @@ cn-shanghai -139.224.173.96 - - - - 101.132.190.155, 106.14.165.33, 106.14.184.113 @@ -715,11 +623,6 @@ Switzerland North -20.250.176.223, 20.250.113.139 - - - - 20.250.216.117, 20.250.176.24 @@ -752,11 +655,6 @@ asia-south1 -35.207.228.176, 35.207.205.83 - - - - 34.100.176.82, 34.93.181.26, 35.200.251.32, 34.100.182.244, 34.93.184.71, 34.100.176.113 @@ -789,11 +687,6 @@ europe-west3 -35.207.154.151, 35.207.169.22 - - - - 34.159.208.178, 34.159.31.39, 34.141.20.163, 34.107.78.67, 34.159.45.83, 35.246.220.63 @@ -802,7 +695,7 @@ europe-west3 -
+ ## Regions for Trial Accounts @@ -836,11 +729,6 @@ Technical Key of IaaS Provider -LB IPs \(ingress, for incoming requests\) - - - - NAT IPs \(egress, for outgoing requests\) @@ -873,11 +761,6 @@ Southeast Asia -20.195.53.58 - - - - 20.195.52.254 @@ -910,11 +793,6 @@ eu-central-1 -18.195.249.1, 3.122.154.182, 18.157.222.132 - - - - 18.157.223.60, 18.157.143.164, 52.28.147.96 @@ -947,11 +825,6 @@ us-east-1 -54.160.203.34, 3.219.96.75, 3.222.55.46 - - - - 54.172.191.202, 52.1.75.180, 52.207.193.169 diff --git a/docs/apim/API-Management/APIM-Migration/clone-api-management-content-7abd887.md b/docs/apim/API-Management/APIM-Migration/clone-api-management-content-7abd887.md index e9a1d2d5..d5d050a6 100644 --- a/docs/apim/API-Management/APIM-Migration/clone-api-management-content-7abd887.md +++ b/docs/apim/API-Management/APIM-Migration/clone-api-management-content-7abd887.md @@ -4,7 +4,7 @@ Clone the API Management content using the Tenant Cloning tool. -Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https://repo1.maven.org/maven2/com/sap/apimgmt/apim-tct-sdk/1.7.2/apim-tct-sdk-1.7.2.zip). +Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fcom%2Fsap%2Fapimgmt%2Fapim-tct-sdk%2F1.8.2%2Fapim-tct-sdk-1.8.2.zip). @@ -73,6 +73,8 @@ Once you have your source and target system ready, you can clone your API Manage For more information on how to create the service key, refer the [Accessing API Management APIs Programmatically](../APIM-Initial-Setup/accessing-api-management-apis-programmatically-24a2c37.md) and [Accessing API business hub enterprise APIs Programmatically](../APIM-Initial-Setup/accessing-api-business-hub-enterprise-apis-programmatically-dabee6e.md). + **Structure of the apim-tct-input.json file:** + @@ -324,12 +326,12 @@ Once you have your source and target system ready, you can clone your API Manage - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/apim/API-Management/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md b/docs/apim/API-Management/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md index 908309c4..0a241384 100644 --- a/docs/apim/API-Management/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md +++ b/docs/apim/API-Management/APIM-Migration/clone-api-management-content-for-cloud-foundry-to-cloud-foundry-migration-2e5d127.md @@ -4,7 +4,7 @@ Clone the API Management content using the Tenant Cloning Tool. -Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https://repo1.maven.org/maven2/com/sap/apimgmt/apim-tct-sdk/1.7.2/apim-tct-sdk-1.7.2.zip). +Once you have your source and target system ready, you can clone your API Management content to the target system by running the Tenant Cloning Tool that you downloaded from [here](https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fcom%2Fsap%2Fapimgmt%2Fapim-tct-sdk%2F1.8.2%2Fapim-tct-sdk-1.8.2.zip). @@ -73,6 +73,8 @@ Once you have your source and target system ready, you can clone your API Manage For more information on how to create the service key, refer the [Accessing API Management APIs Programmatically](../APIM-Initial-Setup/accessing-api-management-apis-programmatically-24a2c37.md) and [Accessing API business hub enterprise APIs Programmatically](../APIM-Initial-Setup/accessing-api-business-hub-enterprise-apis-programmatically-dabee6e.md). + **Structure of the apim-tct-input.json file:** +
+ target + apiportal @@ -441,8 +443,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Optional + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ apiportalSelfServiceAdmin > ### Note: @@ -548,8 +643,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Optional + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ devportal > ### Note: @@ -657,6 +845,99 @@ Once you have your source and target system ready, you can clone your API Manage
+ `certurl` + + + + X509 mTLS + + + + String + + + + Optional + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ skipApplicationKeySecretCloning
@@ -103,12 +105,12 @@ Once you have your source and target system ready, you can clone your API Manage - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -366,12 +554,12 @@ Once you have your source and target system ready, you can clone your API Manage - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -952,5 +1326,5 @@ After the cloning process completes, you must perform the tasks mentioned in the To know more about what actions you must take, see the **User Actions** section in [Post Cloning Tasks](post-cloning-tasks-49e9716.md). -To know more about the entities that are cloned and the entities that aren’t cloned, see . +To know more about the entities that are cloned and the entities that aren’t cloned, see [Cloned and Uncloned Entities](cloned-and-uncloned-entities-b2b393d.md). diff --git a/docs/apim/API-Management/api-services-007d50f.md b/docs/apim/API-Management/api-services-007d50f.md index 9a725c5e..a8936d79 100644 --- a/docs/apim/API-Management/api-services-007d50f.md +++ b/docs/apim/API-Management/api-services-007d50f.md @@ -66,7 +66,7 @@ A client software development kit \(SDK\) is available for developers through a In the API Portal, at the top-right corner, choose *Navigation Links* \(![](images/Finalgrid_1a621ca.png)\) and select *Client SDK* \(![](images/clientsdk_f85baa6.png)\). On selecting the client SDK, you are navigated to the maven repository, where you can download this package. -For more information, see [SAP API Management, 1.5.2 Client SDK](https://help.sap.com/doc/sap-api-management-client-sdk/Cloud/en-US/SAP%20API%20Management%20Cloud%20SDK_1.5.2.pdf). +For more information, see [SAP API Management, 1.6.0 Client SDK.](https://help.sap.com/doc/sap-api-management-client-sdk/Cloud/en-US/ClientSDK_1_6_0.pdf). You can also download the package from [https://int.repositories.cloud.sap/artifactory/deploy-releases/com/sap/apimgmt/client/sdk/apim-client-sdk/1.6.0/apim-client-sdk-1.6.0.zip](https://int.repositories.cloud.sap/artifactory/deploy-releases/com/sap/apimgmt/client/sdk/apim-client-sdk/1.6.0/apim-client-sdk-1.6.0.zip). On navigating to this link, select the latest version and choose *View All*. diff --git a/docs/apim/API-Management/flow-variables-47f27da.md b/docs/apim/API-Management/flow-variables-47f27da.md index 960d0d0d..27abe8bf 100644 --- a/docs/apim/API-Management/flow-variables-47f27da.md +++ b/docs/apim/API-Management/flow-variables-47f27da.md @@ -592,6 +592,87 @@ String Read + + + + + + + + + + + + + + + + + + + + + +
+ source + apiportal @@ -222,8 +224,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Required + + + + Cert URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Required + + + + The content of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Required + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Required + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ devportal > ### Note: @@ -336,6 +431,99 @@ Once you have your source and target system ready, you can clone your API Manage
+ `certurl` + + + + X509 mTLS + + + + String + + + + Optional + + + + Certificate URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The contents of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ cfSubaccountTenantID
+ target + apiportal @@ -483,8 +671,101 @@ Once you have your source and target system ready, you can clone your API Manage
+ + `certurl` + + + X509 mTLS + + + + String + + + + Optional + + + + Certificate URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The contents of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ devportal > ### Note: @@ -597,6 +878,99 @@ Once you have your source and target system ready, you can clone your API Manage
+ `certurl` + + + + X509 mTLS + + + + String + + + + Optional + + + + Certificate URL received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `certificate` + + + + String + + + + Optional + + + + The contents of the certificate received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `clientid` + + + + String + + + + Optional + + + + Client ID received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ + `privatekey` + + + + String + + + + Optional + + + + Private Key received during creation of the service key for API portal API access for the APIPortal.Administrator role. + +
+ skipApplicationKeySecretCloning
+ +onpremise.target.host + + + +The onpremise virtual host configured in onpremise APIProvider + + + +Proxy target endpoint request + + + +String + + + +Read + +
+ +onpremise.target.port + + + +The onpremise virtual port configured in onpremise APIProvider + + + +Proxy target endpoint request + + + +String + + + +Read + +
+ +onpremise.target.basepath + + + +Determines the actual base path. + + + +Proxy target endpoint request + + + +String + + + +Read +
diff --git a/docs/apim/API-Management/what-s-new-for-sap-api-management-cloud-foundry-d9d60be.md b/docs/apim/API-Management/what-s-new-for-sap-api-management-cloud-foundry-d9d60be.md index 8b658f36..69d2ee10 100644 --- a/docs/apim/API-Management/what-s-new-for-sap-api-management-cloud-foundry-d9d60be.md +++ b/docs/apim/API-Management/what-s-new-for-sap-api-management-cloud-foundry-d9d60be.md @@ -84,6 +84,281 @@ API Management + + + +Self-Service for Administrators to Update Custom Domain Certificate + + + + +When configuring a custom virtual host to support TLS, you can specify a keystore or truststore by using a reference. A reference is a variable that holds the name of the keystore or truststore, instead of directly specifying the name. + +See: [Working with References](https://help.sap.com/docs/integration-suite/sap-integration-suite/configuring-references-to-keystore-and-truststore?version=CLOUD) \(SAP API Management customers choose: [Working with References](https://help.sap.com/docs/sap-api-management/sap-api-management/configuring-references-to-keystore-and-truststore?version=Cloud) + + + + +Info only + + + + +General Availability + + + + +New + + + + +Technology + + + + +Not applicable + + + + +  + + + + +2024-04-12 + + + + +2024-04-12 + + + + + + +API Management + + + + +- Cloud Foundry + + + + + + +Flow Variables + + + + +When executing API proxies created using the on-prem API provider, the backend response may contain URLs that include the API Provider's internal host and port values. These values should not be revealed to API consumers and are not usable. + +To address this issue, the following flow variables have been added to the on-premise proxy so that the API Provider's internal host and port values can be replaced with the virtual host and port values: + +- onpremise.target.host + +- onpremise.target.port + +- onpremise.target.basepath + + +These variables ensure that API consumers are not exposed to the internal details of the API provider. + +See: [FlowVariables](https://help.sap.com/docs/integration-suite/sap-integration-suite/flow-variables?version=CLOUD) \(SAP API Management customers choose: [Flow Variables](https://help.sap.com/docs/sap-api-management/sap-api-management/flow-variables?locale=en-US&version=Cloud) + + + + +Info only + + + + +General Availability + + + + +New + + + + +Technology + + + + +Not applicable + + + + +  + + + + +2024-12-04 + + + + +2024-12-04 + + + + + + +API Management + + + + +- Cloud Foundry + + + + + + +mTLS Authentication + + + + +You can now utilize certificate-based credentials to seamlessly migrate API Management subscriptions from Neo to Cloud Foundry, as well as between same or different Cloud Foundry environments. + +See: [Clone API Management Content](https://help.sap.com/docs/integration-suite/sap-integration-suite/clone-api-management-artifacts?version=CLOUD) and [Clone API Management Content for Cloud Foundry to Cloud Foundry Migration](https://help.sap.com/docs/integration-suite/sap-integration-suite/clone-api-management-artifacts-during-cloud-foundry-to-cloud-foundry-migration?version=CLOUD) \(SAP API Management customers choose: [Clone API Management Artifacts](https://help.sap.com/docs/sap-api-management/sap-api-management/clone-api-management-artifacts?version=Cloud)and [Clone API Management Artifacts During Cloud Foundry to Cloud Foundry Migration](https://help.sap.com/docs/sap-api-management/sap-api-management/clone-api-management-artifacts-during-cloud-foundry-to-cloud-foundry-migration?version=Cloud) + + + + +Info only + + + + +General Availability + + + + +New + + + + +Technology + + + + +Not applicable + + + + +  + + + + +2024-04-04 + + + + +2024-04-04 + + + + + + +API Management + + + + +- Cloud Foundry + + + + + + +Client SDK version 1.6.0 + + + + +The outdated libraries in the Client SDK have been upgraded to the latest version. + +See the Client SDK version 1.6.0 in: [API Services](https://help.sap.com/docs/integration-suite/sap-integration-suite/api-services?version=CLOUD) \(SAP API Management customers choose: [API Services](https://help.sap.com/docs/sap-api-management/sap-api-management/api-services?q=certificate&version=Cloud)\) + + + + +Info only + + + + +General Availability + + + + +New + + + + +Technology + + + + +Not applicable + + + + +  + + + + +2024-03-22 + + + + +2024-04-22 + + + + + + +API Management + + + + +- Cloud Foundry + + + @@ -94,7 +369,7 @@ Self-Service for Administrators to Update Custom Domain Certificate The recent update allows for the configuration of additional virtual hosts in the Cloud Foundry environment. This can be done with either a default domain or a custom domain. Additionally, existing virtual hosts can now have their alias, keystore, keyalias, and truststore updated. This eliminates the need for the SAP Operations team to manually upload certificates in order to complete the configuration. -See: [Configuring Additional Virtual Host in Cloud Foundry Environment](https://help.sap.com/docs/integration-suite/sap-integration-suite/requesting-additional-virtual-host-in-cloud-foundry-environment?version=Cloud) \(SAP API Management customers choose: [Configuring Additional Virtual Host in Cloud Foundry Environment](https://help.sap.com/docs/sap-api-management/sap-api-management/requesting-additional-virtual-host-in-cloud-foundry-environment-a7b91e5aca32497ca2b17c671ed2bb42-41?version=Cloud)\) +See: [Configuring Additional Virtual Host in Cloud Foundry Environment](https://help.sap.com/docs/integration-suite/sap-integration-suite/requesting-additional-virtual-host-in-cloud-foundry-environment?version=CLOUD) \(SAP API Management customers choose: [Configuring Additional Virtual Host in Cloud Foundry Environment](https://help.sap.com/docs/sap-api-management/sap-api-management/configuring-additional-virtual-host-in-cloud-foundry-environment?version=Cloud)\) @@ -160,7 +435,7 @@ Manage Access in API business hub enterprise As an API business hub enterprise admin, you now have the ability to manage access control checks for users to search, discover, and consume the content. -See: [Manage Access](https://help.sap.com/docs/integration-suite/sap-integration-suite/manage-access?version=CLOUD) \(SAP API Management customers choose: [Manage Access](https://help.sap.com/docs/sap-api-management/sap-api-management/manage-access?version=CLOUD)\) +See: [Manage Access](https://help.sap.com/docs/integration-suite/sap-integration-suite/manage-access?version=CLOUD) \(SAP API Management customers choose: [Manage Access](https://help.sap.com/docs/sap-api-management/sap-api-management/manage-access?version=Cloud&q=Manage%20Access)