https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-BTP-Kyma-runtime-blog-posts.xmlSAP Community - SAP BTP, Kyma runtime2025-11-13T12:00:31.818384+00:00python-feedgenSAP BTP, Kyma runtime blog posts in SAP Communityhttps://community.sap.com/t5/technology-blog-posts-by-sap/handling-csv-data-deployment-in-cap-hdi-without-data-loss/ba-p/14118322Handling CSV Data Deployment in CAP HDI Without Data Loss2025-06-04T03:22:59.880000+02:00Sekar_Somasundaramhttps://community.sap.com/t5/user/viewprofilepage/user-id/1517445<H1 id="toc-hId-1602437375">Handling CSV Data Deployment in CAP HDI Without Data Loss</H1><H2 id="toc-hId-1535006589">Introduction</H2><P>In SAP CAP, deploying CSV data using .hdbtabledata files means the HDI container assumes full ownership of the data. As a result, any changes to the CSV file will overwrite the table content during the next deployment.</P><H2 id="toc-hId-1338493084">Background</H2><P>Have you ever encountered a scenario where updating CSV data led to unexpected data loss? Here’s our experience:</P><P>In our hdi-content module, we maintained a UOM.csv (Unit of Measure) file, which is preloaded into the UOM table. This ensures that customers subscribing to our SaaS solution, SAP Omni Channel Promotional Pricing (OPPS), have immediate access to standard UOMs for defining product promotions. Since the UOM table is also exposed via CAP CDS views in the Fiori UI, customers can add their own entries as well.</P><H2 id="toc-hId-1141979579">The Issue</H2><P>While working on a new feature that introduced another table with pre-delivered data, we discovered that any modification to the CSV file—such as adding or updating UOMs—could result in the loss of customer-maintained data in the UOM table. With many customers using our SaaS solution, this posed a significant risk of accidental data loss whenever the UOM.csv content was changed.</P><P>We needed a reliable solution to prevent customer data loss during deployments.</P><H2 id="toc-hId-945466074">Exploring CAP Recommendations</H2><P>According to the <A href="https://cap.cloud.sap/docs/guides/databases-hana#csv-data-gets-overridden" target="_blank" rel="noopener nofollow noreferrer">CAP documentation</A>, you can use the include_filter option in .hdbtabledata to restrict which records are affected. This requires an additional column to distinguish between CSV data and user-generated data. In our case, we already had an origin column:</P><UL><LI>origin = '02': CSV data</LI><LI>origin = '10': Customer-created entries</LI></UL><P>However, even with include_filter, we found that customer data was still being lost, and only the CSV content remained after deployment.</P><P>The <A href="https://launchpad.support.sap.com/#/notes/2922271" target="_blank" rel="noopener noreferrer">CAP troubleshooting guide</A> references SAP Note 2922271, but its solution is tailored for <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1862993">@SAP</a>/hdi-deploy and not directly applicable to <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1862993">@SAP</a>/hdi-dynamic-deploy.</P><H2 id="toc-hId-748952569">The Solution</H2><P>With support from the HANA-DB-DI team, we identified a practical approach to address this challenge. We hope sharing this helps others building multitenant applications on CAP and HANA Cloud.</P><H3 id="toc-hId-681521783">Deployment 1: Undeploy .hdbtabledata Without Deleting Data</H3><P>First, set the HDI deployer's environment variable HDI_DEPLOY_OPTIONS in your MTA module properties to ensure the .hdbtabledata file is undeployed without deleting any data from the target table. Use the following configuration:</P><PRE>{
"undeploy": [
"src/gen/OPPC-UOM.hdbtabledata"
],
"path-parameter": {
"src/gen/OPPC-UOM.hdbtabledata:skip_data_deletion": "true"
}
}</PRE><P>Then, proceed with the deployment and database upgrade. The logs below show this process:</P><PRE>2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Undeploying "src/gen/OPPC-UOM.hdbtabledata"...
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Undeploying "src/gen/OPPC-UOM.hdbtabledata"... ok (0s 0ms)
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Deploying "src/gen/OPPC.UOM.hdbtable$OPPC_UOM.validate"...
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Expanded from "src/gen/OPPC.UOM.hdbtable"
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Undeploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"...
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Expanded from "src/gen/OPPC-UOM.hdbtabledata"
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: <STRONG>The "skip_data_deletion" make parameter is set; no data will be deleted from the target table "OPPC_UOM"</STRONG>
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Deploying "src/gen/OPPC.UOM.hdbtable$OPPC_UOM.validate"... ok (0s 11ms)
2025-06-03T20:20:48.69+0530 [APP/PROC/WEB/0] OUT [9d2219cebfa570a2]: Undeploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"... ok (0s 12ms)
</PRE><H3 id="toc-hId-485008278">Deployment 2: Deploy .hdbtabledata with include_filter</H3><OL><LI>Remove the HDI deployer's HDI_DEPLOY_OPTIONS environment variable used in the previous deployment.</LI><LI>Update the .hdbtabledata file to include the include_filter option.</LI><LI>Deploy and upgrade the database.</LI></OL><P>However, this deployment failed because the include_filter matched existing records in the table, as shown in the logs:</P><PRE>2025-06-03T20:31:52.57+0530 [APP/PROC/WEB/0] ERR Error: com.sap.hana.di.tabledata: <STRONG>The "include_filter" definitions match with 4364 records that already exist in the "OPPC_UOM" table</STRONG> [8251521]
2025-06-03T20:31:52.57+0530 [APP/PROC/WEB/0] ERR Error: com.sap.hana.di.tabledata: Deploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"... failed [8212145]
2025-06-03T20:31:52.57+0530 [APP/PROC/WEB/0] ERR Error: Worker 1 has encountered an error; all remaining jobs will be canceled [8214600]
2025-06-03T20:31:52.57+0530 [APP/PROC/WEB/0] ERR Error: Processing work list... failed [8212102]
2025-06-03T20:31:52.57+0530 [APP/PROC/WEB/0] ERR Error: Making... failed [8211605]
2025-06-03T20:31:52.57+0530 [APP/PROC/WEB/0] ERR Error: Starting make in the container "679623F6772E4C3BA111AB4C1775754E" with 1 files to deploy, 0 files to undeploy... failed [8214168]
</PRE><P>This deployment would only succeed if the database entries matching the CSV content were removed beforehand. In a multitenant application with many productive subscriptions, manually removing data for all tenants is not practical, and we lacked an automated solution for this process.</P><H2 id="toc-hId-159412054">Possible Approaches</H2><UL><LI><STRONG>Automated Cleanup:</STRONG> If the origin values are consistently determined by application logic, you could develop an automated task to clean up these records. This cleanup would need to be performed as a separate deployment step before deploying the .hdbtabledata file, though this approach requires additional effort.</LI><LI><STRONG>Alternative Approach:</STRONG> Instead, you can maintain new CSV content with a different origin value (e.g., origin='03'). This way, only the new CSV data is redeployed, and all existing data in the database table remains unchanged. Adjust the include_filter to target origin='03'.</LI></UL><P>The following logs show a successful deployment using the approach of <SPAN>assigning a new origin value for new entries</SPAN>:</P><PRE>2025-06-03T20:36:18.52+0530 [APP/PROC/WEB/0] OUT [be82fcfafc2dc1ee]: "src/gen/OPPC-UOM.hdbtabledata"
2025-06-03T20:36:18.52+0530 [APP/PROC/WEB/0] OUT [be82fcfafc2dc1ee]: ]
.
.
.
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Undeploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"...
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Expanded from "src/gen/OPPC-UOM.hdbtabledata"
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Deploying "src/gen/OPPC.UOM.hdbtable$OPPC_UOM.validate"...
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Expanded from "src/gen/OPPC.UOM.hdbtable"
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Deploying "src/gen/OPPC.UOM.hdbtable$OPPC_UOM.validate"... ok (0s 7ms)
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Undeploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"... ok (0s 15ms)
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Undeploying "src/csv/OPPC-UOM.csv"...
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Undeploying "src/csv/OPPC-UOM.csv"... ok (0s 5ms)
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Deploying "src/csv/OPPC-UOM.csv"...
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Deploying "src/csv/OPPC-UOM.csv"... ok (0s 3ms)
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Deploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"...
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Expanded from "src/gen/OPPC-UOM.hdbtabledata"
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Inserted 1 records of the data source file "OPPC-UOM.csv" into the target table "OPPC_UOM"
2025-06-03T20:42:49.12+0530 [APP/PROC/WEB/0] OUT [d9a3e16053ae1f81]: Deploying "src/gen/OPPC-UOM.hdbtabledata$0.expand"... ok (0s 43ms)
</PRE><H4 id="toc-hId-221063987"> </H4><H2 id="toc-hId-113639401">Optimal Approach:</H2><H4 id="toc-hId--669680118">Automated Data Cleanup Using SAP HANA Migration Tables</H4><DIV><DIV><SPAN>Using origin='03' for new CSV entries solves the issue for existing HDI containers. However, for new subscriptions, these containers won’t have the standard CSV content (origin="02") auto-inserted.</SPAN></DIV><BR /><DIV>SAP HANA provides a robust feature called <STRONG>Migration Tables (.hdbmigrationtable)</STRONG> that enables seamless and automated data cleanup. For more details with a real-world example, refer to <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/hana-database-migration-handling-incompatible-changes-to-existing-tables/ba-p/14078039?emcs_t=S2h8ZW1haWx8a3Vkb3N8TUFESFBWWkI2VDVHUVN8MTQwNzgwMzl8S1VET1N8aEs" target="_blank">HANA Database Migration: Handling Incompatible Changes to Existing Tables</A> </DIV><BR /><DIV><SPAN>Migration tables simplify automated cleanup—no changes to your current system behaviour are needed!</SPAN></DIV></DIV><H4 id="toc-hId--866193623">Deployment 1: Initial Setup</H4><OL><LI><STRONG>Add HDI plugin "com.sap.hana.di.table.migration" to src/.hdiconfig</STRONG><PRE> "hdbmigrationtable": {
"plugin_name": "com.sap.hana.di.table.migration"
}</PRE></LI><LI><STRONG>Create /src/OPPC.UOM.hdbmigrationtable</STRONG><BR />This file is generated during the CDS build step when you annotate your entity with <FONT color="#993300">@cds.persistence.journal</FONT>. This instructs CAP to create a migration table, enabling versioning and data migrations.<BR /><EM>Example:</EM><PRE>== version=1
COLUMN TABLE OPPC_UOM (
CODE NVARCHAR(5) NOT NULL,
LANGUAGE_CODE NVARCHAR(2) NOT NULL,
COMMERCIAL_DESCRIPTION NVARCHAR(3),
LONG_DESCRIPTION NVARCHAR(30),
ORIGIN NVARCHAR(2),
PRIMARY KEY(CODE, LANGUAGE_CODE)
) WITH ASSOCIATIONS (
MANY TO ONE JOIN OPPC_ISOCodeMapping AS isoCodeMapping ON (isoCodeMapping.CODE = CODE)
)</PRE><FONT size="2" color="#993300"><EM>The structure is similar to /src/gen/OPPC.UOM.hdbtable, but includes the migration version header.</EM></FONT></LI><LI><STRONG>Add /src/gen/OPPC.UOM.hdbtable to undeploy.json</STRONG><BR />This step removes the static table definition from the HDI container, preventing conflicts with the migration table.</LI><LI><STRONG>Set HDI_DEPLOY_OPTIONS for Controlled Undeployment</STRONG><BR />Configure HDI_DEPLOY_OPTIONS to undeploy /src/gen/OPPC-UOM.hdbtabledata without deleting data in the OPPC_UOM table. This preserves existing data during artifact changes.</LI><LI><STRONG>Deploy and InitDB</STRONG><BR />Deploy the changes and perform the InitDB operation.</LI></OL><H4 id="toc-hId--1062707128">Deployment 2: Data Migration and Filtering</H4><OL><LI><STRONG>Remove HDI_DEPLOY_OPTIONS</STRONG><BR />After the initial migration, remove the custom deploy options to restore standard deployment behavior.</LI><LI><STRONG>Update /src/OPPC.UOM.hdbmigrationtable for Data Migration</STRONG><BR />Increment the migration version and add a migration block to delete entries where ORIGIN = '02'. This is important if you plan to use an include_filter in your table data, as existing data may conflict with new constraints.<BR /><EM>Example:</EM><PRE>== version=2
COLUMN TABLE OPPC_UOM (
CODE NVARCHAR(5) NOT NULL,
LANGUAGE_CODE NVARCHAR(2) NOT NULL,
COMMERCIAL_DESCRIPTION NVARCHAR(3),
LONG_DESCRIPTION NVARCHAR(30),
ORIGIN NVARCHAR(2),
PRIMARY KEY(CODE, LANGUAGE_CODE)
) WITH ASSOCIATIONS (
MANY TO ONE JOIN OPPC_ISOCodeMapping AS isoCodeMapping ON (isoCodeMapping.CODE = CODE)
)<BR />
<FONT color="#008000"><STRONG>== migration=2
DELETE FROM "OPPC_UOM" WHERE "ORIGIN" = '02';</STRONG></FONT></PRE></LI><LI><STRONG>Add /src/gen/OPPC.UOM.hdbtable and /src/csv/OPPC-UOM.csv to undeploy.json</STRONG><BR />This ensures obsolete artifacts and data files are removed from the HDI container.</LI><LI><STRONG>Move Data Files to a Static Folder</STRONG><BR />Relocate OPPC-UOM.hdbtabledata and OPPC-UOM.csv to a dedicated static folder (e.g., src/static/csv). This prevents CDS from auto-generating a .hdbtabledata file for OPPC-UOM.csv since you need to customise OPPC-UOM.hdbtabledata with an include_filter.</LI><LI><STRONG>Modify OPPC-UOM.hdbtabledata to Filter Data</STRONG><BR />Update the file to only include records where ORIGIN = '02', ensuring only relevant data is loaded.</LI><LI><STRONG>Deploy and InitDB</STRONG><BR />Deploy the changes and perform the InitDB operation.</LI></OL><H2 id="toc-hId--672414619">References</H2><UL><LI><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/4505d0bdaf4948449b7f7379d24d0f0d/a4bbc2dd8a20442387dc7b706e8d3070.html" target="_blank" rel="noopener noreferrer">Deployment Options in HDI</A></LI><LI><A href="https://www.npmjs.com/package/@sap/hdi-dynamic-deploy" target="_blank" rel="noopener nofollow noreferrer">@sap/hdi-dynamic-deploy</A></LI><LI><A href="https://pages.github.tools.sap/cap/docs/get-started/troubleshooting#how-do-i-keep-existing-data" target="_blank" rel="noopener nofollow noreferrer">CAP Troubleshooting: How do I keep existing data?</A></LI><LI><A href="https://sap.stackenterprise.co/questions/73269" target="_blank" rel="noopener nofollow noreferrer">https://sap.stackenterprise.co/questions/73269</A> </LI></UL><DIV class=""><H3 id="toc-hId--1162331131">Special Thanks</H3><P><SPAN>Special thanks to the HANA-DB-DI team members, particularly Pavel Sluzkin and Alexander Bunte, for their invaluable support and guidance!</SPAN></P></DIV><P class=""> </P>2025-06-04T03:22:59.880000+02:00https://community.sap.com/t5/application-development-and-automation-blog-posts/sap-developer-news-june-5th-2025/ba-p/14120453SAP Developer News June 5th, 20252025-06-05T21:10:00.051000+02:00Eberenwaobiorahttps://community.sap.com/t5/user/viewprofilepage/user-id/1937986<P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FXLj5qgN7i8s%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXLj5qgN7i8s&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXLj5qgN7i8s%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="400" height="225" scrolling="no" title="SAP Business Data Cloud, Terraform Exporter for SAP BTP, SAP CodeJam Roadshow | SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><H3 id="toc-hId-1861289061"><SPAN>DESCRIPTION</SPAN><SPAN> </SPAN></H3><P><STRONG><SPAN>PODCAST:</SPAN></STRONG><SPAN> <A href="https://podcast.opensap.info/sap-developers/2025/06/05/sap-developer-news-june-5th-2025/" target="_blank" rel="noopener nofollow noreferrer">https://podcast.opensap.info/sap-developers/2025/06/05/sap-developer-news-june-5th-2025/</A></SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>New SAP Certified Associate - SAP Business Data Cloud</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>Webinar Series: Architecting Your SAP Business Data Cloud Journey – From Data to Intelligence: </SPAN><A href="https://community.sap.com/t5/enterprise-architecture-blog-posts/new-webinar-series-architecting-your-sap-business-data-cloud-journey-from/ba-p/14104348" target="_blank"><SPAN>https://community.sap.com/t5/enterprise-architecture-blog-posts/new-webinar-series-architecting-your-sap-business-data-cloud-journey-from/ba-p/14104348</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><UL><LI><SPAN>New SAP Certified Associate - SAP Business Data Cloud: </SPAN><A href="https://learning.sap.com/certifications/sap-certified-associate-sap-business-data-cloud" target="_blank" rel="noopener noreferrer"><SPAN>https://learning.sap.com/certifications/sap-certified-associate-sap-business-data-cloud</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Learning Journey: Exploring SAP Business Data Cloud: </SPAN><A href="https://learning.sap.com/learning-journeys/exploring-sap-business-data-cloud" target="_blank" rel="noopener noreferrer"><SPAN>https://learning.sap.com/learning-journeys/exploring-sap-business-data-cloud</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>New ways to install the Terraform Exporter for SAP BTP</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>Installation information </SPAN><A href="https://sap.github.io/terraform-exporter-btp/install/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://sap.github.io/terraform-exporter-btp/install/</SPAN></A><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>SAP CodeJam Roadshow – US AI</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><A href="https://community.sap.com/t5/sap-codejam/getting-started-with-generative-ai-hub-on-sap-ai-core-new-york-new-york-usa/ev-p/14099369" target="_blank"><SPAN>https://community.sap.com/t5/sap-codejam/getting-started-with-generative-ai-hub-on-sap-ai-core-new-york-new-york-usa/ev-p/14099369</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><A href="https://community.sap.com/t5/sap-codejam/getting-started-with-generative-ai-hub-on-sap-ai-core-palo-alto-ca-usa/ev-p/14101603" target="_blank"><SPAN>https://community.sap.com/t5/sap-codejam/getting-started-with-generative-ai-hub-on-sap-ai-core-palo-alto-ca-usa/ev-p/14101603</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><A href="https://community.sap.com/t5/sap-codejam/getting-started-with-generative-ai-hub-on-sap-ai-core-houston-tx-usa/ev-p/14101612" target="_blank"><SPAN>https://community.sap.com/t5/sap-codejam/getting-started-with-generative-ai-hub-on-sap-ai-core-houston-tx-usa/ev-p/14101612</SPAN></A><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>SAP CodeJam Roadshow 2025 – Latin America edition</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>SAP CodeJam Roadshow 2025 - Latin America edition <span class="lia-unicode-emoji" title=":brazil:">🇧🇷</span> <span class="lia-unicode-emoji" title=":peru:">🇵🇪</span> <span class="lia-unicode-emoji" title=":mexico:">🇲🇽</span> <span class="lia-unicode-emoji" title=":colombia:">🇨🇴</span> (July 25th - Aug 12th 2024): </SPAN><A href="https://community.sap.com/t5/sap-codejam-blog-posts/sap-codejam-roadshow-2025-latin-america-edition-july-25th-aug-12th-2024/ba-p/14093930" target="_blank"><SPAN>https://community.sap.com/t5/sap-codejam-blog-posts/sap-codejam-roadshow-2025-latin-america-edition-july-25th-aug-12th-2024/ba-p/14093930</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><P><SPAN> </SPAN></P><H3 id="toc-hId-1664775556"><SPAN>CHAPTER TITLES </SPAN><SPAN> </SPAN></H3><P><SPAN>0:00 Intro</SPAN><SPAN> </SPAN></P><P><SPAN>0:10 New SAP Certified Associate - SAP Business Data Cloud</SPAN><SPAN> </SPAN></P><P><SPAN>1:08 New ways to install the Terraform Exporter for SAP BTP</SPAN><SPAN> </SPAN></P><P><SPAN>2:01 SAP CodeJam Roadshow – US AI</SPAN><SPAN> </SPAN></P><P><SPAN>3:33 SAP CodeJam Roadshow 2025 - Latin America edition</SPAN><SPAN> </SPAN></P><P> </P><H3 id="toc-hId-1468262051">TRANSCRIPTION</H3><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Intro]</STRONG> This is the SAP Developer News for June the 5th, 2025.</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Witalij]</STRONG> This month, we at SAP launched a new webinar series titled Architecting Your SAP Business Data Cloud Journey, From Data to Intelligence. This series kicks off this week with a discussion on data and AI strategy across SAP business applications, followed by a deep dive into our latest data offering, SAP Business Data Cloud. Additional topics include BWM modernization, SAP Databricks, and transition paths to SAP BBC. Building on this foundation, we invite you to validate your expertise by taking the new SAP Business Data Cloud certification exam. The certification confirms your solid understanding of SAP Business Data Cloud, and it demonstrates that you possess both the broad overview and essential skills needed to contribute effectively within project teams. enjoy the learning journey and good luck with the exam links are in the description</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[DJ]</STRONG> there's a great update for the terraform exporter for sap btp which we've covered in previous episodes on this show so as well now as being able to download the binary for your os the binary of the tool you can now install the tool via package managers for Mac OS there's brew for windows there's winget and soon also chocolatey and of course for linux you have installation package manager mechanisms for debian based and rpm based distributions great this is going to make the management of the life cycle of the tool a lot more comfortable for us check out the updated installation information link is in the description</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Rich]</STRONG> Hello, friends. Rich Heilman here. Hope everyone is doing well. I just wanted to pop on here and let you all know about the SAP Code Jam Roadshow in the U.S. that is happening in just about two weeks. This roadshow will include three stops, and we will be focusing on the topic of getting started with Generative AI Hub on SAP AI Core. The first stop will be on June 23rd in the very heart of New York City. I always love doing these short trips to New York City. It sort of fulfills my childhood craving to live and work in the big city, even for just a day or two. So I'm looking forward to that. And then Tom and I will attempt to jump on a plane out of Newark, New Jersey. wish us luck and fly to the west coast for our next stop on June 25th in beautiful palo alto California if you haven't visited the bay area absolutely stunning sights especially for us East coasters so check it out and then from there I'm going to attempt to get back to Newark wish me luck and Tom will then be joined by Mimiki for the last stop in Houston on June 27th So it's shaping up to be a great trip, but that's not the only roadshows happening this year. And I know that my friend Antonio has some details on that. So over to you, Antonio.</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Antonio]</STRONG>Thanks, Rich. Hola, SAP developers. We just announced the second Latin America Code Jam Roadshow, which will take place between the 25th of July and the 12th of August. This time, Rich and Tom will join the roadshow, and we will be doing CodeJams on ABAP Cloud and the Generative AI Hub. We kick things off with the Generative AI CodeJam in Sao Paulo, Brazil. And then we'll be doing both CodeJams in Lima, Peru, Mexico City, and Bogota, Colombia. Similar to last year, we will also do meetups in the different locations. Vamos a ter un encontro SAPI en Sao Paulo. En quedadas en Lima,Ciudad de México y Bogotá. Make sure to check out the blog post to find all the details of the roadshow and check out each event to learn which developer advocate will be at the different events. Até pronto. Nos vemos pronto.</P><P> </P>2025-06-05T21:10:00.051000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/enhancing-efficiency-with-sap-job-scheduling-service-and-sap-cloud-alm/ba-p/14120036Enhancing Efficiency with SAP Job Scheduling Service and SAP Cloud ALM2025-06-13T09:20:40.546000+02:00dragomir_anachkovhttps://community.sap.com/t5/user/viewprofilepage/user-id/269308<P><A title="https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?Valid_as_Of=2025-05-29:2025-05-29&locale=en-US&version=Cloud&Component=Job+Scheduling+Service" href="https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?Valid_as_Of=2025-05-29:2025-05-29&locale=en-US&version=Cloud&Component=Job+Scheduling+Service" target="_blank" rel="noopener noreferrer"><SPAN>What's New for SAP Business Technology Platform</SPAN></A> has recently announced the integration between the SAP Job Scheduling service and SAP Cloud ALM, designed to streamline operations and enhance efficiency.</P><P>This integration allows for seamless management and monitoring of scheduled jobs, providing a more cohesive experience by letting you <SPAN>track the status of your job processes directly from the UI of SAP Cloud ALM.</SPAN></P><H2 id="toc-hId-1732202439">What Is SAP Job Scheduling Service?</H2><P>SAP Job Scheduling service is a cloud-based tool that runs on SAP Business Technology Platform (SAP BTP), both in the Cloud Foundry and Kyma environments. It enables you to automate and manage job scheduling across various applications. It helps in optimizing resource allocation and ensuring that tasks are executed at the right time, thereby improving operational efficiency.</P><P>For more information, refer to:</P><UL><LI><A title="https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/what-is-sap-job-scheduling-service" href="https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/what-is-sap-job-scheduling-service" target="_blank" rel="noopener noreferrer">What Is SAP Job Scheduling Service?</A></LI><LI><A title="https://discovery-center.cloud.sap/serviceCatalog/job-scheduling-service?region=all" href="https://discovery-center.cloud.sap/serviceCatalog/job-scheduling-service?region=all" target="_blank" rel="noopener nofollow noreferrer">SAP Job Scheduling Service at SAP Discovery Center</A> </LI></UL><H2 id="toc-hId-1535688934">Integration with SAP Cloud ALM</H2><P><SPAN><A title="https://help.sap.com/docs/cloud-alm/applicationhelp/about" href="https://help.sap.com/docs/cloud-alm/applicationhelp/about" target="_blank" rel="noopener noreferrer">SAP Cloud ALM</A> is a cloud-based application lifecycle management solution that helps you streamline the implementation and operation of your cloud and hybrid business solutions.</SPAN></P><P>The integration with SAP Job Scheduling service allows you to monitor job execution directly within the SAP Cloud ALM environment. This means you can now track job statuses, view logs, and receive alerts, all from a single interface, reducing the need to switch between different platforms.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JBS_enable_CALM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/270239iE4B52A2ACD575D94/image-size/large?v=v2&px=999" role="button" title="JBS_enable_CALM.png" alt="JBS_enable_CALM.png" /></span></P><P>For more information about the integration and how you can enable it, refer to:</P><UL><LI><A title="https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/integration-with-sap-cloud-alm" href="https://help.sap.com/docs/job-scheduling/sap-job-scheduling-service/integration-with-sap-cloud-alm" target="_blank" rel="noopener noreferrer">Integration with SAP Cloud ALM</A></LI><LI><A title="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/job-monitoring/job-automation-monitoring-details.html" href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/job-monitoring/job-automation-monitoring-details.html" target="_blank" rel="noopener noreferrer">Job & Automation Monitoring Setup & Configuration</A></LI></UL><H2 id="toc-hId-1339175429">Your Opinion Matters</H2><P>Let us know what you think about the integration with SAP Cloud ALM. We would love to learn more about your experience with it so that we can make your job scheduling journey as smooth as possible.</P><P>We are also committed to enhancing the overall user experience of the SAP Job Scheduling service. To achieve this, we invite you to participate in a feedback survey accessible via the Job Scheduling service dashboard. Your insights are invaluable in helping us improve the look and feel of the dashboard, ensuring it meets your needs and expectations.</P><P>To leave us feedback via the UI of the dashboard, just choose <STRONG>Join our user survey!</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JBS_user_survey.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/270248i96D8E5D4E1F5B2A8/image-size/large?v=v2&px=999" role="button" title="JBS_user_survey.png" alt="JBS_user_survey.png" /></span></P><P>Additionally, if you want to give us feedback on the quality of the documentation on SAP Help Portal, check out the <A title="https://community.sap.com/t5/technology-blog-posts-by-sap/participate-in-the-documentation-feedback-survey-for-sap-job-scheduling/ba-p/14092131" href="https://community.sap.com/t5/technology-blog-posts-by-sap/participate-in-the-documentation-feedback-survey-for-sap-job-scheduling/ba-p/14092131" target="_blank">Participate in the Documentation Feedback Survey for SAP Job Scheduling Service</A> blog post to learn more.</P><P>We look forward to hearing from you and thank you for your continued support.</P><P>Also, feel free to share your thoughts and experiences in the comments below. Your input is always appreciated!</P>2025-06-13T09:20:40.546000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/sap-btp-runtimes-my-personal-considerations-and-preferences-on-cloud/ba-p/14129510SAP BTP runtimes, my personal considerations and preferences on Cloud Foundry, Kyma, ABAP runtimes2025-06-18T05:16:50.773000+02:00mauriciolaufferhttps://community.sap.com/t5/user/viewprofilepage/user-id/11418<P>In this fast-paced environment... Nah, just kidding! This is not another AI generated or soulless marketing blog post plaguing the internet. This is about SAP BTP runtimes, and my personal preferences. I know, I know... There's an SAP badge next to my name, but it's because I couldn't keep my personal community profile detached from my SAP email due to reasons in the new community platform... So, ignore the badge, it's my own view, oversimplified and full of silly examples, not a recommendation nor official position from SAP. Don't read this and go back to your boss saying "<EM>hey, SAP is telling us that runtime A is better than B</EM>".</P><P>You may know that SAP BTP offers three runtimes where you can deploy and run your custom applications. We can pick and choose whatever we want. We can run everything in just one runtime, or, we can have workloads in all of them at the same time. You can adopt the runtimes according to your needs and/or skills.</P><P>There is always somebody asking me about the SAP BTP runtimes. What they offer, their limitations, their features, when to use this, how to use that. Sometimes they just want to confirm whatever they're using is right. Sometimes they have no idea they had options. I'd say this is a bit shocking for those coming from the ABAP on-premise world: “<EM>we have options!?!?!</EM>”.</P><P> </P><H2 id="toc-hId-1732475295">* Runtimes / Environments</H2><P>Yes, runtimes and environments are the same thing... No, I won't talk about <STRONG>Neo Environment</STRONG> because it's deprecated, it'll <A title="Migrating from the Neo Environment to the Multi-Cloud Foundation for SAP BTP (Cloud Foundry and Kyma)" href="https://help.sap.com/docs/btp/migrating-from-neo-environment-to-multi-cloud-foundation-cloud-foundry-and-kyma/migrating-from-neo-environment-to-multi-cloud-foundation-cloud-foundry-and-kyma?locale=en-US" target="_self" rel="noopener noreferrer">sunset on 31/12/2028</A>.</P><P>Let's see a short description of runtimes before getting into more details.</P><H3 id="toc-hId-1665044509">Cloud Foundry Environment</H3><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">"<EM>The Cloud Foundry environment enables you to develop new business applications and business services, supporting multiple runtimes, programming languages, libraries, and services. You can leverage a multitude of buildpacks, including community innovations and self-developed buildpacks.</EM>"... from <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/cloud-foundry-environment" target="_blank" rel="noopener noreferrer">SAP BTP documentation</A></P><H3 id="toc-hId-1468531004">Kyma Environment</H3><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">"<EM>SAP BTP, Kyma runtime provides a fully managed cloud-native Kubernetes application runtime based on the open-source project "Kyma". Based on modular building blocks, Kyma runtime includes all the necessary capabilities to simplify the development and to run enterprise-grade cloud-native applications.</EM>"... from <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/kyma-environment" target="_blank" rel="noopener noreferrer">SAP BTP documentation</A></P><H3 id="toc-hId-1272017499">ABAP Environment</H3><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">"<EM>The ABAP environment is based on the latest ABAP platform cloud release that is also used for SAP S/4HANA Cloud. It leverages the innovations provided by SAP HANA. The software stack contains standard technology components that are familiar from the standalone Application Server ABAP. The ABAP environment supports the ABAP RESTful Application Programming Model including SAP Fiori and Core Data Services (CDS).</EM>"... from <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/abap-environment" target="_blank" rel="noopener noreferrer">SAP BTP documentation</A></P><P> </P><H2 id="toc-hId-946421275">* Supported languages</H2><P>The programming language you use can limit what you do and how fast you can deliver</P><H3 id="toc-hId-878990489">Cloud Foundry Environment</H3><P>CF supports pretty much any language as long as you have a buildpack for that. There are <A href="https://docs.cloudfoundry.org/buildpacks/index.html" target="_self" rel="nofollow noopener noreferrer">official buildpacks</A> maintained by the Cloud Foundry Foundation, by SAP itself and others by the CF community. The <A href="https://docs.cloudfoundry.org/buildpacks/node/index.html" target="_self" rel="nofollow noopener noreferrer">Node.js buildpack</A> is a good example.</P><H3 id="toc-hId-682476984">Kyma Environment</H3><P>Kyma also supports any language as long as you have a container to run it. Some languages have their official container images which you can use as-is or customize as you wish. The <A href="https://hub.docker.com/_/node" target="_self" rel="nofollow noopener noreferrer">Node.js Docker image</A> is a good example.</P><H3 id="toc-hId-485963479">ABAP Environment</H3><P>ABAP is quite obvious. It only supports ABAP, but not your old school ABAP report declaring internal tables like <STRONG>DATA: lt_mara TYPE TABLE OF mara WITH HEADER LINE</STRONG>. It only runs <A href="https://help.sap.com/docs/abap-cloud?locale=en-US" target="_self" rel="noopener noreferrer">ABAP Cloud</A>, a subset of the ABAP language tailored to modern days.</P><P> </P><H2 id="toc-hId-160367255">* Performance</H2><P>In terms of performance, all runtimes can deliver great results. They'll be mostly limited by how your applications were built. Translation: if the application is too slow, your code is the problem, not the runtime.</P><P>Nevertheless, there'll be a threshold where even the highest quality app won't cope with high demand. There's no magic number, it varies. This is a hurdle overcome by good software engineering and scalability.</P><P> </P><H2 id="toc-hId--36146250">* Scalability / Elasticity</H2><P>Scalability in CF and Kyma is quite flexible and granular. Vertical and horizontal scaling are available. You can automatically scale up and down your applications. No need to touch it, no manual monitoring, no manual resource allocation, no need to guess what the workload demand will look like next Wednesday at 4:20 AM AEST time.</P><P>Your cool AI powered app is being bombarded by incoming requests from all the customers accessing it? No problem, new instances can be created and destroyed based on rules such as memory or CPU usage. For example, if the app is consuming more than 90% of CPU, spawns a new instance to share the workload. If the CPU usage goes down, let's say under 50%, stop and kill the previously spawned instance.</P><P>You have 1000 apps, but just 1 app is under stress? No problem, you can scale up just that one app! CF and Kyma run everything in containers. They're fully isolated and have their own resources. For instance, app AAA has 1 GB memory available for itself, app BBB has 5 GB and app CCC has 256 MB. You can also change the allocated memory at any time. For instance: “oh, I thought my app would need 2 GB RAM, but it actually needs 1 GB”. No problems! Adjust it without changing the code nor redeploying the app.</P><P>You may have a rule dictating apps will always have at least 2 instances running to distribute the workload. This is actually a best practice and encouraged to be adopted. Perhaps you don't need an app with 6 GB memory, but 3 instances of the same app with 2GB each. Running multiple instances is how you enable high availability for your apps as well, if one instance crashes the others keep working. It also enables zero downtime deployments.</P><P>Oh, the beauty of the cloud! <span class="lia-unicode-emoji" title=":smiling_face_with_heart_eyes:">😍</span> Can you imagine doing these things in your ALV reports running on SAP ECC 6.0?</P><H3 id="toc-hId--178808405">Cloud Foundry Environment</H3><P>The service <A href="https://help.sap.com/docs/application-autoscaler?locale=en-US" target="_self" rel="noopener noreferrer">Application Autoscaler</A> provides everything you need to manage scaling your apps. It's just a configuration. If you have an app with 1 instance or 99 instances running, nothing changes for you as a developer, system admin or end user. <A href="https://docs.cloudfoundry.org/concepts/cf-routing-architecture.html" target="_self" rel="nofollow noopener noreferrer">CF Load Balancers</A> take care of distributing the incoming requests between all the instances. It's transparent and super smooth. Just make sure to gracefully shutdown your apps to avoid serving requests from a stopping instance. I'd written and spoken about graceful shutdown before, have a look: <A href="https://community.sap.com/t5/technology-blog-posts-by-members/tips-for-running-cap-nodejs-in-sap-btp/ba-p/13564535" target="_self">blog post</A> + <A href="https://www.youtube.com/watch?v=yCp-uBGT674" target="_self" rel="nofollow noopener noreferrer">video</A>.</P><H3 id="toc-hId--375321910">Kyma Environment</H3><P>Pretty much the same as CF. You define the configuration rules, the load balancer takes care of distributing the traffic. You don't need to code this behaviour, the <A href="https://keda.sh/" target="_self" rel="nofollow noopener noreferrer">Keda module</A> available in the runtime does that for you. Kyma is powerful, and much more flexible than other runtimes. You can scale to zero nodes. You can use heaps of scalers out-of-the-box. You can also create pretty much any custom rule: if it's Wednesday, and it's raining, and Bitcoin is under 100k, spin up a new instance ¯\_(ツ)_/¯</P><H3 id="toc-hId--571835415">ABAP Environment</H3><P>Ok, now we'll see a big difference. You cannot have multiple copies of your app as in CF/Kyma. You have no granularity as the ABAP environment resources are shared between all applications. Everything runs in "<EM>one</EM>" box, vertical scaling is the only option. You either bump the whole environment or don't, pretty much the same as in on-prem servers. Have a look at <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/updating-abap-system" target="_self" rel="noopener noreferrer">Elastic Scaling</A> of the ABAP Application Server. Yes, the service supports High Availability.</P><P> </P><H2 id="toc-hId--474945913">* Resource isolation</H2><P>Let's do a mental exercise to understand resource allocation and isolation a little bit more. Think about the following scenario. You have 100 apps running at the same runtime. You deploy a change to 1 of those apps. The code change has a bug! The app goes into an infinite loop, starts consuming 100% of CPU and becomes unresponsive. What happens to the other apps?</P><H3 id="toc-hId--964862425">Cloud Foundry Environment</H3><P>Nothing. The other 99 apps are running in their own containers, fully isolated with their own resources (limited memory and CPU per app). Only users using the buggy app will be impacted. Users accessing other apps won't have any issues.</P><H3 id="toc-hId--1161375930">Kyma Environment</H3><P>Same as CF. Hooray to containers! <span class="lia-unicode-emoji" title=":clinking_beer_mugs:">🍻</span></P><H3 id="toc-hId--1357889435">ABAP Environment</H3><P>I'm sorry to say, but you messed up badly. All 100 apps will be unresponsive. All users, even the ones not using the app in infinite loop will be impacted. The bug just caused a company wide issue.</P><P>Let's stretch this example a bit more to make a point. Your company has 5000 users consuming those apps in SAP BTP ABAP runtime. The buggy app is a tiny noncritical one being used by 2 users from IT to import data from Excel to HANA (<span class="lia-unicode-emoji" title=":winking_face:">😉</span>). Because the bug is impacting the whole ABAP runtime, everyone is affected, 5000 users will complain they can't use their apps.</P><P>Resources are shared here, there's no app isolation. You cannot say one app will use only 512 MB, one app can consume all resources available in the environment. As I said, it's the same behaviour as in SAP ABAP Netweaver servers. You can think about it as a big gaming desktop running ABAP.</P><H2 id="toc-hId--1260999933"><BR />* Developer experience (DX)</H2><P>Let's be honest, DX was neglected for a long time in SAP. It started changing when ADT was introduced for Eclipse users. Nowadays, DX in SAP BTP can be great! People can use the same modern tools the cool kids are using out there.</P><H3 id="toc-hId--1750916445">Cloud Foundry Environment</H3><P>When developing applications to run in CF, you focus on the code, not much on the infrastructure to run it. You write your code, build and deploy it. CF will get the request, build the container, put your app inside the container, prepare everything, execute the app and make it available for you.</P><P>You have a bunch of tools to use from SAP, from Cloud Foundry and from both communities. Endless options for pretty much everything!</P><P>A simple "Hello World" app can go like this: write the code (easy), prepare the manifest.yml (easy) or a mta.yaml (can be overwhelming) and push to CF (easy). The app is ready to be used.</P><H3 id="toc-hId--1947429950">Kyma Environment</H3><P>Your attention is needed on both code and infrastructure. Have you ever worked with Kubernetes? It's the same. Deploying to Kyma can be a bit scary as its manifest.yml is even more complex than the mta.yaml file in CF. Kyma also requires you to manage the container you want to run your application in. You must build the container before deploying your app. You won't get anywhere without a good amount of knowledge.</P><P>Again. You have a bunch of tools to use from SAP, from Kubernetes and from both communities. Endless options for pretty much everything!</P><P>A simple "Hello World" app can go like this: write the code (easy), prepare the container image you want to use (it may involve multiple steps and can be hard, especially for beginners), prepare the manifest.yml (hard) and push to Kyma (easy).<BR />The app is ready to be used.</P><H3 id="toc-hId--1975759764">ABAP Environment</H3><P>You have no choice of IDE, you must use Eclipse with ADT plugin. No <A href="https://help.sap.com/docs/bas?locale=en-US" target="_self" rel="noopener noreferrer">SAP BAS</A> nor <A href="https://help.sap.com/docs/build_code?locale=en-US" target="_self" rel="noopener noreferrer">Build Code</A>. All ABAP tools are provided by SAP. You need a fair amount of knowledge to get started. It might be intimidating for noobs without any ABAP skills.</P><P>You may find some open source projects, but let's be honest, other than <A href="https://github.com/abapGit/abapGit" target="_self" rel="nofollow noopener noreferrer">ABAPgit</A>, the ABAP open source community doesn't have much in terms of tooling. It's pretty much 3 absolute amazing guys caring the whole community on their shoulders: <A href="https://github.com/larshp" target="_self" rel="nofollow noopener noreferrer">Lars Hvam</A>, <A href="https://github.com/marcellourbani" target="_self" rel="nofollow noopener noreferrer">Marcello Urbani</A> and <A href="https://github.com/mbtools" target="_self" rel="nofollow noopener noreferrer">Marc Bernard</A>.</P><P>A simple "Hello World" app can go like this: write the code (kinda easy, too many moving pieces, too verbose), push to ABAP Environment (kinda easy), activate it (easy). The app is ready to be used.</P><P> </P><H3 id="toc-hId-2122694027">* Skills / Skill set</H3><P>It's quite obvious, but for all the three runtime options, you need to know the language you want to use, eg. Node.js or Java or Python, and the tooling for that specific language (linting, code quality, automated testing, profiling, etc).</P><P>Recruiters complain they can't find resources, that there are no SAP BTP Developers out there. IMO, they're looking in the wrong place, developers don't need to speak SAP to work on SAP BTP. A SAP BTP Developer is “just” a developer who knows any modern language and cloud platforms. Get a Java developer with Kubernetes knowledge and they'll be deploying to SAP BTP on the same day. Youngsters in universities know at least one of the languages behind CAP (Node.js/Java) and play with cloud platform/services everyday. They're way ahead in the cloud game than <STRONG>ABAPsaurs</STRONG> like us 🥲</P><H3 id="toc-hId-1926180522">Cloud Foundry Environment</H3><P>Git is a must! You can get far with little CF knowledge. You don't have to know containers, eg. Dockers, but it can be handy. It's the most beginner friendly of all runtimes.</P><H3 id="toc-hId-1729667017">Kyma Environment</H3><P>Git for sure! Containers are a must, you won't do anything without knowing Dockers or similar. The learning stage can be challenging, it requires knowledge in many new concepts at once. You must know Kubernetes. It can be a bit harder to debug issues due to more moving parts.</P><H3 id="toc-hId-1533153512">ABAP Environment</H3><P>Look at you! ABAP also requires git! You must know ABAP Cloud and <A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/fc4c71aa50014fd1b43721701471913d/289477a81eec4d4e84c0302fb6835035.html" target="_self" rel="noopener noreferrer">ABAP RESTful Application Programming Model</A> (RAP). Old school ABAP knowledge may be helpful, but even for skilled ABAPers it can be challenging. For beginners, it can be a nightmare.</P><P>The RAP level required is not like singing along with <STRONG>Ice Cube</STRONG> in <A href="https://www.youtube.com/watch?v=h4UqMyldS7Q" target="_self" rel="nofollow noopener noreferrer">It Was A Good Day</A>:</P><P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fh4UqMyldS7Q%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dh4UqMyldS7Q&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fh4UqMyldS7Q%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="400" height="225" scrolling="no" title="Ice Cube - It Was A Good Day" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P>A<SPAN>BAP RAP is more like <STRONG>Eminem</STRONG> in <A href="https://youtu.be/XbGs_qK2PQA?si=KFJboX6vw2cm222Z" target="_self" rel="nofollow noopener noreferrer">Rap God</A> when he reaches supersonic speed (verbose is an understatement):</SPAN></P><P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FXbGs_qK2PQA%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DXbGs_qK2PQA&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXbGs_qK2PQA%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="400" height="225" scrolling="no" title="Eminem - Rap God (Explicit)" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P> </P><H2 id="toc-hId-1630043014">* DevOps</H2><P>Both CF and Kyma have plenty of options. You can use SAP BTP services like <A href="https://help.sap.com/docs/continuous-integration-and-delivery?locale=en-US" target="_self" rel="noopener noreferrer">SAP Continuous Integration and Delivery</A> / <A href="https://help.sap.com/docs/cloud-transport-management?locale=en-US" target="_self" rel="noopener noreferrer">SAP Cloud Transport Management</A>. A Jenkins plugin from SAP called <A href="https://www.project-piper.io/" target="_self" rel="nofollow noopener noreferrer">Project Piper</A>. Or, anything else that you already use in the company. Are you using MS Azure DevOps? No problem! You can keep using your CI/CD pipelines there to test and deploy your apps to SAP BTP. Are you a big fan of GitHub Actions? Great! Just use that.</P><P>ABAP doesn't give you many options. You can use the ones provided by SAP.</P><P>Regardless of the DevOps platform you're using, I'd strongly recommend SAP Cloud Transport Management (CTMS) for deployment. Don't do manual deployments or use CLI tools for that. The CI/CD process may run in non-SAP DevOps platforms, but deployment to SAP BTP should go through CTMS. You can integrate external CI/CD pipelines, eg. Azure DevOps or CircleCI, to <A href="https://api.sap.com/api/TMS_v2/overview" target="_self" rel="noopener noreferrer">CTMS via APIs</A>, or, with my open source project for GitHub Actions: <A href="https://github.com/marketplace/actions/deploy-to-sap-btp-with-ctms" target="_self" rel="nofollow noopener noreferrer">Deploy to SAP BTP with Cloud Transport Management Service (CTMS)</A>. With CTMS, you have full control on the changes going through the landscape, and have a proper audit log to trace them if required.</P><P> </P><H2 id="toc-hId-1433529509">* Limitations</H2><P>As everything else in the universe, runtimes have limits. They may not be a problem, but you should know and consider them when adopting any runtime. Again, you don’t have to stick to one runtime only. Use whatever combination works best for you.</P><P>This isn’t a comprehensive list, it’s only the main ones for me…</P><H3 id="toc-hId-943612997">Cloud Foundry Environment</H3><P>Doesn't offer serverless (Kyma does), it doesn't scale to zero (Kyma does), the closest option to scale to zero is turning the application off which means users won't be able to use it. Limited control on the number of CPUs in an application. For instance, you cannot have 10 CPUs allocated to your Hello World app.</P><H3 id="toc-hId-747099492">Kyma Environment</H3><P>Cold starts can be slow…</P><H3 id="toc-hId-550585987">ABAP Environment</H3><P>ABAP is the only supported programming language. OData is the only protocol. SAP HANA is the only database. Same as CF, it doesn't scale to zero. It doesn't support any offline development work, so, I have to find something else to do during the eternal hours when flying from Australia to other countries.</P><P> </P><H2 id="toc-hId-815659180">* My picks</H2><P>What and why. Direct and unapologetic (sorry <span class="lia-unicode-emoji" title=":grimacing_face:">😬</span>).</P><H3 id="toc-hId-325742668">Cloud Foundry Environment</H3><P>This is my default choice! It's rare to see a requirement that can't be delivered with CF. I can be very productive and do more in less time because I'm mostly focusing on the code, nothing else. This gets even better with CAP as it adds another layer of abstraction and less code/work is required to get things done. More time solving business issues, less writing boilerplate code. Yes, you can also use CAP with Kyma.</P><P>Things to consider. If the team is new to SAP BTP, and cloud development in general, this is the easiest way to get started. If there're Java or Node.js developers in the company, they can easily start working with CF. No need to speak SAP!</P><H3 id="toc-hId-129229163">Kyma Environment</H3><P>I pick Kyma when hyperscalability is required, or, when I need to fiddle with the network layer, or, when CPU intensive workloads are expected and multi-thread is required. Productivity can also be high, but requires a team a bit more mature.</P><P>Another variable to consider is: does my team already know Kubernetes and uses it in other platforms such as AWS or MS Azure? If the answer is yes, then I'd pick Kyma over CF as the knowledge is transferable and they can start working straight away.</P><H3 id="toc-hId--67284342">ABAP Environment</H3><P>CF and Kyma give me so many options in terms of languages, tools and ways to build applications that I find it hard to have fun programming ABAP…</P><P>If my team only knows ABAP, nothing else, then ABAP might be the best runtime. But again, ABAP Cloud isn't the same as the old school ABAP. Sometimes it's easier to learn CAP and CF than RAP. The main point to consider here: don't let current skills restrict future technology choices.</P><P> </P><H2 id="toc-hId-29605160">* Final thoughts</H2><P>As I said, this is my personal opinion, oversimplified to fit in a longer than expected blog post. I still love ABAP, but I believe we have better options now. Perhaps my love for Cloud Foundry is nostalgia from the old times using Heroku...</P><P>If you want a better comparison between Cloud Foundry and Kyma in SAP BTP, have a look at this documentation from SAP: <A href="https://help.sap.com/docs/btp/comparison-btp-runtimes/runtime-comparison" target="_self" rel="noopener noreferrer">Comparison: SAP BTP, Kyma Runtime and SAP BTP, Cloud Foundry Runtime</A></P><P> </P>2025-06-18T05:16:50.773000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/end-to-end-performance-testing-of-sap-btp-cloud-foundry-kyma-and-abap/ba-p/14171653End-to-End Performance Testing of SAP BTP Cloud Foundry, Kyma and ABAP Environment based Application2025-08-06T06:13:58.360000+02:00praveen12https://community.sap.com/t5/user/viewprofilepage/user-id/564924<P><span class="lia-unicode-emoji" title=":warning:">⚠️</span> <STRONG>Heads-Up Before You Dive In!</STRONG><BR />This is a <EM>lengthy and loaded technical blog</EM> — We didn’t break it into a series or multiple posts (because performance testing doesn’t believe in short cuts <span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:">😄</span>). So, grab a coffee <span class="lia-unicode-emoji" title=":hot_beverage:">☕</span>, be patient, and absorb it all — it's worth every byte! <span class="lia-unicode-emoji" title=":rocket:">🚀</span></P><P>In this technical article, our primary objective is to bridge the knowledge gap surrounding performance testing within the dynamic landscape of the SAP Business Technology Platform (BTP). As the adoption of BTP continues to rise, it becomes paramount to equip developers, testers, and customers with a comprehensive understanding of performance testing/engineering methodologies tailored to this unique ecosystem.</P><P>The realm of BTP presents distinct challenges and opportunities for application development, integration, and deployment. Performance testing within this context requires a nuanced approach that accounts for cloud-native architectures, microservices, APIs, and the seamless interplay of services across a diverse range of technologies. By focusing on educating developers, testers, and customers, we aim to empower them with the insights and strategies needed to ensure optimal application performance within the BTP environment.</P><P>Developers will gain a deeper understanding of designing and optimizing applications for responsiveness, scalability, and reliability. Testers will learn how to craft meaningful performance test scenarios that accurately mirror real-world usage patterns, effectively identifying potential bottlenecks and vulnerabilities. Customers, on the other hand, will be equipped to make informed decisions, ensuring the applications they deploy on the BTP platform meet their performance expectations and contribute to their business success.</P><P>Our technical article not only provides a comprehensive performance testing framework tailored for BTP but also offers practical guidance, best practices, and real-world case studies to illustrate the application of these methodologies. By disseminating this knowledge, we aspire to foster a community of practitioners who can confidently navigate the complexities of BTP performance testing, ultimately leading to the creation of high-performing applications that delight users and drive organizational growth within this innovative technological landscape.</P><P>In addition, we will discuss how SAP AI Core's service capabilities inside the BTP ecosystem give a systematic approach to increasing performance testing and analysis.</P><P><span class="lia-unicode-emoji" title=":bookmark_tabs:">📑</span> <STRONG>Table of Contents</STRONG></P><P> </P><TABLE width="586"><TBODY><TR><TD width="64"><STRONG>S.No</STRONG></TD><TD width="522"><STRONG>Section Title</STRONG></TD></TR><TR><TD width="64">1</TD><TD width="522">Introduction</TD></TR><TR><TD width="64">2</TD><TD width="522">Objective and Scope</TD></TR><TR><TD width="64">3</TD><TD width="522">Monitoring Performance of BTP Cloud Foundry/Kyma Applications Using Dynatrace</TD></TR><TR><TD width="64">4</TD><TD width="522">Monitoring Performance of BTP ABAP Environment Applications</TD></TR><TR><TD width="64">5</TD><TD width="522">Performance Analysis of BTP Applications: Manual and Automated Approaches</TD></TR><TR><TD width="64">6</TD><TD width="522">Automated Monitoring for ABAP Environment Applications</TD></TR><TR><TD width="64">7</TD><TD width="522">Leveraging SAP AI Core for Performance Testing on SAP BTP</TD></TR><TR><TD width="64">8</TD><TD width="522">Conclusions and References</TD></TR></TBODY></TABLE><P> </P><OL><LI><STRONG>Introduction</STRONG></LI></OL><P>We shall discuss the SAP BTP introduction, purpose, and scope of this technical article.</P><P>SAP BTP is a collection of SAP solutions and services housed under one roof. These services and solutions assist organisations in developing a new cloud solution or expanding will discuss or expanding SAP systems.</P><P>SAP BTP's services and solutions are organised around four main pillars. They are as follows:</P><OL><LI><STRONG>Database & Data Management</STRONG></LI></OL><P>You can use this pillar to store, access, process, integrate, and interpret all of your landscape's data.</P><P> 2. <STRONG>Analytics</STRONG></P><P>The analytics pillar's products enable you to plan, forecast, and make quick, insight-driven decisions.</P><P> 3. <STRONG>Application Development & Integration</STRONG></P><P>The application development and integration pillar provide the core elements required to innovate, extend, and integrate agile business processes in the cloud and hybrid environments. You can rapidly integrate other systems, improve your current application, or create new business solutions.</P><P> 4. <STRONG>Intelligent Technologies</STRONG></P><P>Artificial intelligence, machine learning, intelligent robotic process automation, blockchain, and the Internet of Things are all part of the intelligent technologies pillar. This will assist you in automating the difficult, repetitive decisions that comprise a substantial component of company processes.</P><P> </P><P>SAP Business Technology Platform is technically classified as a Platform-as-a-Service. SAP BTP offers three environments: Cloud Foundry, ABAP and Kyma. All of these environments allow you to use different programming language and provide a ready-made framework for building and deploying any cloud service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_0-1754368309251.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296290iB50BADF94233274E/image-size/medium?v=v2&px=400" role="button" title="praveen12_0-1754368309251.png" alt="praveen12_0-1754368309251.png" /></span></P><P> </P><P>Image Source: SAP, links are provided in the reference section#SAP Business Technology Platform Concepts.</P><P><STRONG>2.1 Objective</STRONG></P><P>The objective of this technical article is to provide a comprehensive framework for performance testing/engineering of applications developed and integrated within the SAP Business Technology Platform (BTP). With the increasing adoption of BTP as a pivotal platform for application development and integration, it becomes essential to establish a robust performance testing process that addresses the unique challenges posed by this ecosystem. This article aims to outline the key pillars of the performance testing process while focusing on the application development and integration aspect of SAP BTP.</P><P>SAP BTP offers three key environments: Cloud Foundry, Kyma, and ABAP.</P><P>Each environment includes the tools, technologies, and runtimes required to build applications.</P><OL><LI><STRONG>Cloud Foundry Environment</STRONG></LI></OL><P>You can create business apps using the Cloud Foundry platform, which supports numerous runtimes, programming languages, libraries, and services.</P><P> 2. <STRONG>ABAP Environment</STRONG></P><P>The ABAP environment enables you to construct new cloud apps and extensions for ABAP-based products such as SAP S/4HANA Cloud. Existing ABAP-based custom code or extensions can be converted to the cloud.</P><P> 3. <STRONG>Kyma Environment</STRONG></P><P>The Kyma environment is a fully managed Kubernetes runtime that is based on the open-source project "Kyma" that enables developers to augment SAP systems with serverless functions and combine them with containerized microservices.</P><P><STRONG>2.2 Scope</STRONG></P><P>Performance testing for applications developed in different environments within the SAP Business Technology Platform (BTP) requires tailored approaches to address the distinct characteristics of each scenario. This scoping outlines the methodologies for conducting performance testing for applications built with the SAP BTP Cloud Foundry/Kyma environment and the ABAP environment.</P><P>This technical article will considerably add to the body of information addressing the performance characteristics of applications deployed on Cloud Foundry, Kyma, and the ABAP Environment within the SAP Business Technology Platform. The insights will assist enterprises in making educated decisions when picking the optimum runtime for their specific application workloads based on business requirements and performance optimization approaches.</P><P><STRONG>3. Methodology to configure and monitor performance statistics of BTP Cloud Foundry/KYMA based application using Dynatrace.</STRONG></P><P>Dynatrace provides a powerful APM (Application Performance Monitoring) solution that is perfectly suited to the dynamic and cloud-native nature of SAP Business Technology Platform applications. Its AI-powered insights, comprehensive monitoring capabilities, and ease of integration make it an excellent solution for assuring optimal performance.</P><P>Dynatrace allows you to monitor your entire infrastructure, including hosts, processes, and networks.</P><P>Dynatrace can monitor Microservices, Docker, Kubernetes, Cloud Foundry, and other technologies-based applications.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_1-1754368309255.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296289iFE52C771CDEEF938/image-size/medium?v=v2&px=400" role="button" title="praveen12_1-1754368309255.png" alt="praveen12_1-1754368309255.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_2-1754368309258.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296288i33EC0BE6B7786729/image-size/medium?v=v2&px=400" role="button" title="praveen12_2-1754368309258.png" alt="praveen12_2-1754368309258.png" /></span></P><P> </P><P>Image Source: SAP, links are provided in the reference section# Dynatrace Agent Activation for SAP BTP.</P><P> </P><P><STRONG>3.1. Steps to Create a user provided Dynatrace service in your SAP BTP Environment:</STRONG></P><OL><LI>Add the SAP Dynatrace Monitoring Service entitlement to your BTP Global Account.</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_3-1754368309268.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296292i7864AB2719F832CB/image-size/medium?v=v2&px=400" role="button" title="praveen12_3-1754368309268.png" alt="praveen12_3-1754368309268.png" /></span></P><P> </P><P>Image Source: SAP BTP Control Center – My Global Account</P><P>2. Configure the SAP Dynatrace Monitoring Service entitlement at the Subaccount level.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_4-1754368309272.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296291i582E03A57E84A32B/image-size/medium?v=v2&px=400" role="button" title="praveen12_4-1754368309272.png" alt="praveen12_4-1754368309272.png" /></span></P><P> </P><P><STRONG>Image Source: SAP BTP Cockpit - My Sub Account</STRONG></P><P>3. Navigate to the Service Marketplace and look for SAP Dynatrace Monitoring Service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_5-1754368309280.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296293i5B9F67E0B023C4CE/image-size/medium?v=v2&px=400" role="button" title="praveen12_5-1754368309280.png" alt="praveen12_5-1754368309280.png" /></span></P><P> </P><P>Image Source: SAP BTP Cockpit - My Sub Account</P><P> </P><P>You must supply a valid JSON object containing at least the environmentid and apitoken(for Dynatrace SaaS). The API token relates to the PaaS token. For Dynatrace Managed, you must also include the apiurl argument, which specifies the Dynatrace API endpoint.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_6-1754368309300.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296296iC2BD3E0ADD340A9B/image-size/medium?v=v2&px=400" role="button" title="praveen12_6-1754368309300.png" alt="praveen12_6-1754368309300.png" /></span></P><P> </P><P>Image Source: Dynatrace, links are provided in the reference section# Dynatrace Agent Activation for SAP BTP.</P><P><STRONG>Remark:</STRONG></P><P>In case you face challenge to create Dynatrace service please see section<STRONG>#3.4: Real-time issues while creating a Dynatrace service. </STRONG></P><P>SAMPLE JSON:</P><P>All Dynatrace instances are linked with the SAP Cloud Access Manager (CAM) and Single-Sign On, in accordance with best practises and SAP-compliant access management systems.</P><P> </P><P>A CAM Profile is a set of access levels to multiple SAP systems and environments.</P><P> </P><P>You can also create your own standard practice to safeguard your mission critical business data.</P><P> </P><P>{</P><P> "apiurl": "<A href="https://DYNATRACE" target="_blank" rel="noopener nofollow noreferrer">https://DYNATRACE</A> HOST NAME/e/ENVIRONMENT ID/api",</P><P> "apitoken": "YOUR PASS TOKEN",</P><P> "environmentid": "ENVIRONMENT ID",</P><P> "permission_assignments": [</P><P> {</P><P> "name": "CAM1 Read-only access to the Dynatrace environment",</P><P> "roles": [</P><P> "log_analytics",</P><P> "user"</P><P> ]</P><P> },</P><P> {</P><P> "name": "CAM2 Read and Write access to the Dynatrace environment and all settings (except request attributes and sensitive data)",</P><P> "roles": [</P><P> "admin",</P><P> "configure_sensitive",</P><P> "log_analytics",</P><P> "view_sensitive"</P><P> </P><P> "name": "CAM3: Write access to request attribute settings and view permission of masked sensitive data",</P><P> "roles": [</P><P> </P><P> "configure_sensitive",</P><P> "view_sensitive"</P><P> ]</P><P> }</P><P> ]</P><P>}</P><P> </P><P>Dynatrace Agent Activation:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_7-1754368309312.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296295iB1A958B6ED8F312D/image-size/medium?v=v2&px=400" role="button" title="praveen12_7-1754368309312.png" alt="praveen12_7-1754368309312.png" /></span></P><P> </P><P>Image Source: Dynatrace, links are provided in the reference section# Dynatrace Agent Activation for SAP BTP.</P><P><STRONG>3.2 Bind the Created Dynatrace service with the application deployed in BTP Environment (Cloud Foundry/KYMA – JAVA/SAP CAP/Microservice etc)</STRONG></P><P>Configure service instance in application's mta.yaml/manifest.yml file</P><P> </P><P>Sample mta.yml file</P><P>Add following sample code in resources of modules</P><P>resources:</P><P> </P><P>- name: dynatrace-demo</P><P> type: org.cloudfoundry.existing-service</P><P> </P><P>Add the service in requires section of the Modules to be monitored.</P><P> </P><P>requires:</P><P> - name:</P><P> dynatrace-monitor</P><P> </P><P><STRONG>Sample manifest.yml file</STRONG></P><P>---</P><P>applications:</P><P>- name: spring-music</P><P> memory: 768M</P><P> instances: 1</P><P> host: spring-music-somerandomstring</P><P> path: spring-music.war</P><P> buildpack: sap_java_buildpack</P><P> services:</P><P> <STRONG>- dynatraceservice</STRONG></P><P> </P><P><STRONG>3.3 Restart your BTP deployed JAVA/SAP CAP etc application and login to Dynatrace environment and monitor/search your binded application</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_8-1754368309313.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296294iE868DB33F9AA69CB/image-size/medium?v=v2&px=400" role="button" title="praveen12_8-1754368309313.png" alt="praveen12_8-1754368309313.png" /></span></P><P> </P><P>Image Source: DYNATRACE Managed - My Environment</P><P><STRONG>3.4: Real-time issues while creating a Dynatrace service</STRONG></P><P>Even after following all the above steps, sometimes you might face challenge to find your binded application name in the Dynatrace monitoring environment or you will not be able to create the Dynatrace service, please follow below steps using Cloud foundry CLI:</P><UL><LI> Sometimes a restart of the BTP deployed application (JAVA/SAP CAP) is not enough, it needs to be a restage (only during staging the Dynatrace agent will be downloaded). Please restage your application and see if the process shows up after maximum 3 minutes in the Dynatrace environment.</LI></UL><P> </P><UL><LI>You can try renaming/creating your Dynatrace service to something containing “dynatrace”, e.g.</LI></UL><P> </P><P>cf create-service dynatrace environment test-dynatrace -c <JSON> file //keep only relevant configuration in JSON file.</P><P> </P><UL><LI>and then bind the application and restage again.</LI></UL><P> </P><P> cf bind-service my-application test-dynatrace</P><P><STRONG>4. Methodology to configure and monitor performance statistics of BTP ABAP environment-based application. </STRONG></P><P>SAP introduced an exciting addition to SAP BTP, which they aptly named SAP BTP ABAP Environment or Steampunk or ABAP Cloud. This innovative feature opens a world of possibilities for customers, partners who are well-versed in ABAP:</P><P>With the ABAP Environment, they can effortlessly harness the power of ABAP Platform as a service within SAP BTP. This means they can:</P><OL><LI>Craft extensions for ABAP-based products like SAP S/4HANA Cloud.</LI><LI>Pave the way for the creation of brand-new cloud applications.</LI></OL><P>Now, let's delve into some key aspects of the ABAP Environment:</P><OL><LI>This environment operates on the latest ABAP platform cloud release.</LI><LI>It boasts support for the ABAP RESTful Application Programming Model, which includes popular components like SAP Fiori and Core Data Services (CDS).</LI></OL><P>Now in order to monitor and analyse the performance of ABAP cloud-based application, you need to have the access of the Frontend (Say SAP Fiori), backend (say SAP ABAP GUI) and ADT(ABAP Development Tools)</P><P>Front End Access:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_9-1754368309315.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296299iB4E48E583EF080DE/image-size/medium?v=v2&px=400" role="button" title="praveen12_9-1754368309315.png" alt="praveen12_9-1754368309315.png" /></span></P><P> </P><P> Image Source: developers.sap.com</P><OL><LI>You can login to the Fiori launchpad using Administrator user and access the Maintain employees/Maintain business users Fiori application to create a new user and also to assign a specific role to access the relevant application under performance evaluation.</LI></OL><P> </P><P>Backend Access:</P><P>Now in order to access the backend, administrator should create a backend user and generate credentials for you.</P><P>Once the backend user is created in the ABAP cloud environment, you can access your application using SAP GUI(/NSTFK) or create your custom SAP GUI configuration file and save it locally with. sap extension.</P><P>YourApplicationSID.sap configuration:</P><P>Pass the required details and execute the file using double click to access your backend application with the created credentials:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_10-1754368309316.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296298i1C5BC2A23347B515/image-size/medium?v=v2&px=400" role="button" title="praveen12_10-1754368309316.png" alt="praveen12_10-1754368309316.png" /></span></P><P> </P><P> </P><P> Image Source: Internal Infrastructure</P><P><STRONG>ABAP Development Tools (ADT)</STRONG></P><OL><LI>Install ADT</LI><LI>Add a new ABAP Cloud Project</LI></OL><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_11-1754368309317.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296297i68D69B0B36D014FF/image-size/medium?v=v2&px=400" role="button" title="praveen12_11-1754368309317.png" alt="praveen12_11-1754368309317.png" /></span></P><P> </P><P> </P><P> Image Source: Internal Infrastructure</P><P>Now you can make connection to ABAP service instance using any suitable mention ways:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_12-1754368309318.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296300iD2E70BA4E005EDB6/image-size/medium?v=v2&px=400" role="button" title="praveen12_12-1754368309318.png" alt="praveen12_12-1754368309318.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>3.Pass the service key in JSON format:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_13-1754368309319.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296302i3C373BA7B9204C2C/image-size/medium?v=v2&px=400" role="button" title="praveen12_13-1754368309319.png" alt="praveen12_13-1754368309319.png" /></span></P><P> </P><P> </P><P> Image Source: Internal Infrastructure</P><P>4. Open Logon in browser:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_14-1754368309320.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296301i844848FE8F729FD7/image-size/medium?v=v2&px=400" role="button" title="praveen12_14-1754368309320.png" alt="praveen12_14-1754368309320.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>5.Access with a valid sign in option:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_15-1754368309321.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296303i705D9F77E8FB05AF/image-size/medium?v=v2&px=400" role="button" title="praveen12_15-1754368309321.png" alt="praveen12_15-1754368309321.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>6. You will receive success message in the browser:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_16-1754368309322.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296305i2AF2CB9E0D18BBA0/image-size/medium?v=v2&px=400" role="button" title="praveen12_16-1754368309322.png" alt="praveen12_16-1754368309322.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>7.Now you can analyse your underlying ABAP model.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_17-1754368309322.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296304iBD76CD8CBCB439D0/image-size/medium?v=v2&px=400" role="button" title="praveen12_17-1754368309322.png" alt="praveen12_17-1754368309322.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>Remark: Sometimes you face challenge to access ABAP service instance through ADT, you can clear the browser cache or review your VPN settings to see if it is working or not, also you can refer the helpful blog mention in the reference section. </P><P><STRONG>5. Performance analysis/engineering of BTP based applications: Automated/Manual Approach</STRONG></P><P><STRONG>5.1 BTP Applications running in Cloud Foundry / Kyma Environment (Runtime) and are binded with DYNATRACE APM tool:</STRONG></P><P> </P><P>Let’s consider one scenario where one of the web application action - Click Go Operation was expensive (consuming higher response time/resource).</P><P>User Action: Click on Go with suitable Filter condition.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_18-1754368309324.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296308i34DD5776BB1C0A1F/image-size/medium?v=v2&px=400" role="button" title="praveen12_18-1754368309324.png" alt="praveen12_18-1754368309324.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>Final Render Page:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_19-1754368309332.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296307i4B9FEB5B965998CE/image-size/medium?v=v2&px=400" role="button" title="praveen12_19-1754368309332.png" alt="praveen12_19-1754368309332.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P> </P><P>Chrome Developer Trace: F12-Network Trace->We can see one expensive http request taking higher time.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_20-1754368309335.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296306iEBA724882EA30D3B/image-size/medium?v=v2&px=400" role="button" title="praveen12_20-1754368309335.png" alt="praveen12_20-1754368309335.png" /></span></P><P> </P><P> </P><P> Image Source: Internal Infrastructure</P><P>Let see how we can analyse or do the root cause analysis of this expensive request.</P><OL><LI>Firstly, with the help of Chrome – Network/Profiling Developer Trace(F12), we can get more details about the request, response payload and API endpoint.<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_21-1754368309336.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296309iEF0917ED10B086C4/image-size/medium?v=v2&px=400" role="button" title="praveen12_21-1754368309336.png" alt="praveen12_21-1754368309336.png" /></span><P> </P></LI></OL><P> Image Source: Internal Infrastructure</P><P> 2.Now login to your DYNATRACE cluster, and try to find your underlying service(let say OrderProposal* is my underlying microservice), you can see details about the health of your microservice</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_22-1754368309343.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296311iD75EAA039EBC54CC/image-size/medium?v=v2&px=400" role="button" title="praveen12_22-1754368309343.png" alt="praveen12_22-1754368309343.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P> </P><P> 3. Now our task would be to identify the expensive request hitting to this microservice, you can get the details using View Distributed Traces/Pure Paths, filter the request based on service name and time frame of the test, you can configure column to get more information about the expensive application call(like <STRONG>getOrderProposal</STRONG> calls for Go Operation)</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_23-1754368309348.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296310i8C582D20295ACB1D/image-size/medium?v=v2&px=400" role="button" title="praveen12_23-1754368309348.png" alt="praveen12_23-1754368309348.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P> 4. You have several features inside Dynatrace to perform root cause analysis for any application performance issues like:</P><P> </P><P><STRONG>View response time hotspots: Analyses the response time of each service per process.</STRONG></P><P><STRONG>View method hotspots: Shows the CPU level hotspots in your code.</STRONG></P><P><STRONG>View service flow: Shows the chain of service calls that each service request initiates.</STRONG></P><P><STRONG>View details of failures: Displays extensive statistics on site request failures.</STRONG></P><P><STRONG>View Service backtrace: Displays which user actions and related services depend on this service.</STRONG></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_24-1754368309350.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296312iED96325773CECA8F/image-size/medium?v=v2&px=400" role="button" title="praveen12_24-1754368309350.png" alt="praveen12_24-1754368309350.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P>5. Click on the request name (say getOrderProposals): Most of the time spent on execution</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_25-1754368309353.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296313i7541CDCF89E410B1/image-size/medium?v=v2&px=400" role="button" title="praveen12_25-1754368309353.png" alt="praveen12_25-1754368309353.png" /></span></P><P> </P><P> </P><P> Image Source: Internal Infrastructure</P><P> 6. Click Response time hotspots: Most of the time is spent on service interaction.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_26-1754368309357.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296314iFB3E1091CD16D921/image-size/medium?v=v2&px=400" role="button" title="praveen12_26-1754368309357.png" alt="praveen12_26-1754368309357.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P> 7. Click on Method Hotspots: OncePerRequestFilter is the Top method.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_27-1754368309361.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296315i9161A3E49137D590/image-size/medium?v=v2&px=400" role="button" title="praveen12_27-1754368309361.png" alt="praveen12_27-1754368309361.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P> 8. You can click on source code to analyse it from code perspective:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_28-1754368309364.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296316i3E50A4E1E080B21C/image-size/medium?v=v2&px=400" role="button" title="praveen12_28-1754368309364.png" alt="praveen12_28-1754368309364.png" /></span></P><P> </P><P> </P><P> Image Source: Internal Infrastructure</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_29-1754368309368.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296317i39C1F38E7632DAFC/image-size/medium?v=v2&px=400" role="button" title="praveen12_29-1754368309368.png" alt="praveen12_29-1754368309368.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P> </P><P><STRONG>Remark:</STRONG></P><P>Similarly, you can monitor all other important performance KPI’s for your Kubernetes, Cloud Foundry based application for all your single user and multiuser performance test.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_30-1754368309375.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296320i6D473F3091008E35/image-size/medium?v=v2&px=400" role="button" title="praveen12_30-1754368309375.png" alt="praveen12_30-1754368309375.png" /></span></P><P> </P><P> Image Source: Internal Infrastructure</P><P><STRONG>5.2 BTP Applications running in ABAP Environment (Runtime)</STRONG></P><P>Let’s consider one scenario where one of the web application user action - Click Open App was expensive (consuming higher response time/resource).</P><OL><LI>Open App - User Action: Click on App Tile</LI></OL><P> </P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_31-1754368309376.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296318i9D0F021B346F3E83/image-size/medium?v=v2&px=400" role="button" title="praveen12_31-1754368309376.png" alt="praveen12_31-1754368309376.png" /></span></P><P> </P><P> 2. Final Render Page Screen:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_32-1754368309378.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296319iC96A9601ED8F8D8C/image-size/medium?v=v2&px=400" role="button" title="praveen12_32-1754368309378.png" alt="praveen12_32-1754368309378.png" /></span></P><P> </P><P>3. Take Chrome – Developer Trace(F12) -> Network Trace ->To understand the expensive request/response payload coming from Open App User Action</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_33-1754368309387.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296322i6C15F41DFEB678F7/image-size/medium?v=v2&px=400" role="button" title="praveen12_33-1754368309387.png" alt="praveen12_33-1754368309387.png" /></span></P><P> </P><P>4. Now login to ABAP backend instance and use transaction /OSTATS_FE with Filter condition on Time, Fiori Frontend user name and system client.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_34-1754368309401.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296323i93D8796BA82ACEEC/image-size/medium?v=v2&px=400" role="button" title="praveen12_34-1754368309401.png" alt="praveen12_34-1754368309401.png" /></span></P><P>5. Now you can find all the relevant expensive request and its key performance KPI’s made from the front-end web application (Check for column Frontend Step Name), you can double click on any expensive request to see further breakdown(server side metrics/expensive calls):</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_35-1754368309403.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296321i210ACCC2C7C390DE/image-size/medium?v=v2&px=400" role="button" title="praveen12_35-1754368309403.png" alt="praveen12_35-1754368309403.png" /></span></P><P> </P><P>6. Now we understood, Open App user action response time was higher due to one expensive http batch request.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_36-1754368309410.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296324iDFFC899A032F793C/image-size/medium?v=v2&px=400" role="button" title="praveen12_36-1754368309410.png" alt="praveen12_36-1754368309410.png" /></span></P><P> </P><P>7. As a next step we collected the ADT Trace (ABAP Profiler) to understand the issue from code perspective:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_37-1754368309415.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296325iC02B7BDA2B35B5F5/image-size/medium?v=v2&px=400" role="button" title="praveen12_37-1754368309415.png" alt="praveen12_37-1754368309415.png" /></span></P><P> </P><P>8. We found that one expensive *query_provider* method causing higher response time.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_38-1754368309424.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296326i29A9EEDC2640B22A/image-size/medium?v=v2&px=400" role="button" title="praveen12_38-1754368309424.png" alt="praveen12_38-1754368309424.png" /></span></P><P> </P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_39-1754368309428.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296327i5179C15F22890529/image-size/medium?v=v2&px=400" role="button" title="praveen12_39-1754368309428.png" alt="praveen12_39-1754368309428.png" /></span></P><P> </P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_40-1754368309440.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296328iBD520FDAA791CA9F/image-size/medium?v=v2&px=400" role="button" title="praveen12_40-1754368309440.png" alt="praveen12_40-1754368309440.png" /></span></P><P> </P><P><STRONG>6. Proposed solution for automating the performance monitoring process of ABAP Environment based applications:</STRONG></P><P> <STRONG>Architecture:</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="praveen12_41-1754368309441.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/296329i7B20B0FD6A05F9CE/image-size/medium?v=v2&px=400" role="button" title="praveen12_41-1754368309441.png" alt="praveen12_41-1754368309441.png" /></span></P><P> </P><P> Image Source: Self creation</P><P>Monitoring the ABAP environment can be integrated into your existing infrastructure if you utilise SAP Cloud ALM as your monitoring and alerting infrastructure. You may also use SAP Cloud ALM's health monitoring to see if your ABAP environment is still up and running and if any unusual events have occurred. Furthermore, you can utilise real-user monitoring to monitor requests from business users and integration monitoring to monitor interactions across integrated systems.</P><P>You can also look for other feasible solution available for specific ABAP environment-based application performance monitoring like Grafana/<STRONG>ABAP Open telemetry(data provider)</STRONG>.</P><P><STRONG>7. SAP AI Core service to assist customers and end-users with performance testing and analysis of applications built on SAP BTP</STRONG></P><P>As organisations rely more on SAP Business Technology Platform (BTP) for application development, optimising performance becomes critical to providing a consistent user experience. Taking advantage of SAP AI Core's major features inside the BTP ecosystem provides a strategic approach to improving performance testing and analysis.</P><P><STRONG>7.1 We can achieve this by building a ML Model/GenAI/Agents based PoC using SAP AI Core Services to have below functionalities:</STRONG></P><P><STRONG> 7.1.1.Data-Driven Performance Evaluation:</STRONG></P><P>Utilise the data intelligence of SAP AI Core to collect and analyse huge datasets relevant to application performance. This data-driven methodology enables comprehensive performance testing scenarios that consider a wide range of user interactions and usage patterns within the SAP BTP environment.</P><P> <STRONG>7.1.2.</STRONG> <STRONG>Anomaly Detection in Real-Time:</STRONG></P><P>Integrate the anomaly detection capabilities of SAP AI Core to provide real-time monitoring of performance indicators. The technology may detect anomalous patterns automatically, offering rapid insight into potential bottlenecks or issues influencing the end-user experience.</P><P> <STRONG>7.1.3. Scalability Predictive Analytics:</STRONG></P><P>Using historical data, use SAP AI Core's predictive analytics to forecast scaling difficulties. This proactive strategy supports in resource optimisation and minimising potential performance bottlenecks before they affect end users.</P><P> <STRONG> 7.1.4. Intelligent Testing Automation:</STRONG></P><P>Use SAP AI Core's intelligent automation features to generate complicated test scenarios and scripts automatically. This shortens the performance testing lifecycle and allows for a more detailed examination of application performance under different conditions.</P><P> <STRONG>7.1.5. Simulation of User Behaviour:</STRONG></P><P>Using SAP AI Core's behaviour simulation, mimic real-world user behaviours. Performance testing becomes more typical of actual usage patterns when realistic user scenarios are created, enabling for the detection of performance issues that may affect end users.</P><P><STRONG> 7.1.6. AI-Assisted Root Cause Analysis:</STRONG></P><P>Use the analytics tools in SAP AI Core for root cause analysis. When performance issues are found, the system may automatically analyse correlated data to determine the root causes, allowing for faster issue resolution and optimisation.</P><P><STRONG> 7.1.7. Continuous Optimisation and Adaptation:</STRONG></P><P>Create a continuous improvement loop by upgrading AI models on a regular basis with new performance data. This guarantees that the system adapts to changing application parameters, ensuring consistency in performance testing and analysis.</P><P>Organisations may not only streamline their performance testing processes but also improve the overall reliability and responsiveness of SAP BTP-based applications by strategically combining SAP BTP with SAP AI Core's main capabilities. This strategy adds to a better user experience, which aligns with the SAP BTP platform's primary objectives of delivering high-quality, efficient solutions.</P><P><STRONG>8. Conclusions</STRONG></P><P>Finally, this technical article has provided valuable insights into the realm of performance testing/engineering for individual developers, testers and customers within diverse Business Technology Platform (BTP) environments including Cloud Foundry, Kyma, and ABAP. The importance of performance testing cannot be overstated in today's dynamic digital landscape, where applications must deliver optimal user experiences to remain competitive.</P><P>We have not only defined the fundamental concepts and principles of performance testing through painstaking examination, but we have also provided practical advice on how individual developers, testers and customers can navigate the complexities of testing in these diverse BTP environments. Our findings highlight the need of customised performance testing methodologies, emphasising the necessity for a nuanced approach that matches with the unique characteristics and expectations of each platform.</P><P>Furthermore, this study showed the benefits and problems of performance testing on Cloud Foundry, Kyma, and ABAP, putting light on the unique characteristics and restrictions of each environment. We have provided developers, testers and customers with the information and resources needed to optimise application performance in these contexts by reviewing real-world case studies and best practises.</P><P>The ability to conduct efficient performance testing on various BTP platforms has become a vital talent in an era of constant technological innovation. As the enterprise solution landscape evolves, the insights presented in this article will be a valuable resource, empowering developers, testers and customers to improve the performance, reliability, and scalability of their applications and ensuring their continued success in a highly competitive marketplace. We can together design a future where applications running on Cloud Foundry, Kyma, ABAP environment and beyond continuously deliver great performance, promoting innovation and efficiency in the digital domain, through collaborative efforts and ongoing research.</P><P><STRONG>References</STRONG></P><P><STRONG>SAP BTP Services:</STRONG></P><P><A href="https://discovery-center.cloud.sap/serviceCatalog" target="_blank" rel="noopener nofollow noreferrer">https://discovery-center.cloud.sap/serviceCatalog</A></P><P><STRONG>SAP Business Technology Platform Concepts:</STRONG></P><P><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/btp-basic-platform-concepts" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/btp/sap-business-technology-platform/btp-basic-platform-concepts</A></P><P><A href="https://d.dam.sap.com/a/wfTnvgi/Quick%20Start%20Guide%20-%20SAP%20Business%20Technology%20Platform.pdf" target="_blank" rel="noopener noreferrer">https://d.dam.sap.com/a/wfTnvgi/Quick%20Start%20Guide%20-%20SAP%20Business%20Technology%20Platform.pdf</A></P><P><A href="https://blogs.sap.com/2023/07/11/explaining-sap-business-technology-platform-sap-btp-to-a-beginner/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/07/11/explaining-sap-business-technology-platform-sap-btp-to-a-beginner/</A></P><P><A href="https://blogs.sap.com/2023/09/29/sap-btp-environments-cloud-foundry-vs-abap-vs-kyma/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/09/29/sap-btp-environments-cloud-foundry-vs-abap-vs-kyma/</A></P><P><A href="https://blogs.sap.com/2023/09/27/rap-vs-cap-key-differences-between-the-two-programming-models/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/09/27/rap-vs-cap-key-differences-between-the-two-programming-models/</A></P><P><A href="https://developers.sap.com/tutorials/abap-environment-developer-user.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/abap-environment-developer-user.html</A></P><P><A href="https://blogs.sap.com/2022/09/28/sap-btp-abap-environment-and-adt-troubleshooting-guide/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2022/09/28/sap-btp-abap-environment-and-adt-troubleshooting-guide/</A></P><P><STRONG>Dynatrace Agent Activation for SAP BTP:</STRONG></P><P><A href="https://www.dynatrace.com/support/help/whats-new" target="_blank" rel="noopener nofollow noreferrer">https://www.dynatrace.com/support/help/whats-new</A></P><P><A href="https://help.sap.com/doc/b41af58634e54045a51379c311b2537d/Cloud/en-US/dynatrace.pdf" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/b41af58634e54045a51379c311b2537d/Cloud/en-US/dynatrace.pdf</A></P><P><A href="https://www.dynatrace.com/support/help/setup-and-configuration/setup-on-container-platforms/cloud-foundry/deploy-oneagent-on-sap-cloud-platform-for-application-only-monitoring" target="_blank" rel="noopener nofollow noreferrer">https://www.dynatrace.com/support/help/setup-and-configuration/setup-on-container-platforms/cloud-foundry/deploy-oneagent-on-sap-cloud-platform-for-application-only-monitoring</A></P><P><A href="https://pages.github.tools.sap/apm/docs/" target="_blank" rel="noopener nofollow noreferrer">https://pages.github.tools.sap/apm/docs/</A></P><P><A href="https://sap.github.io/cloud-sdk/docs/java/guides/cf-cli" target="_blank" rel="noopener nofollow noreferrer">https://sap.github.io/cloud-sdk/docs/java/guides/cf-cli</A></P><P><A href="https://www.dynatrace.com/support/help/platform-modules/applications-and-microservices/profiling-and-optimization/cpu-profiling" target="_blank" rel="noopener nofollow noreferrer">https://www.dynatrace.com/support/help/platform-modules/applications-and-microservices/profiling-and-optimization/cpu-profiling</A></P><P><STRONG>SAP Development Tools:</STRONG></P><P><A href="https://tools.eu1.hana.ondemand.com/" target="_blank" rel="noopener nofollow noreferrer">https://tools.eu1.hana.ondemand.com/</A></P><P><STRONG>Reference documentation for doing root cause analysis of a cloud application using DYNATRACE:</STRONG></P><P><A href="https://help.sap.com/docs/SAP_COMMERCE_CLOUD_PUBLIC_CLOUD/6065ea129a544adba2c3e0791dc069f2/f1cbe8f5ce0743579b2c96d1476d7b18.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_COMMERCE_CLOUD_PUBLIC_CLOUD/6065ea129a544adba2c3e0791dc069f2/f1cbe8f5ce0743579b2c96d1476d7b18.html</A></P><P><A href="https://www.dynatrace.com/support/help" target="_blank" rel="noopener nofollow noreferrer">https://www.dynatrace.com/support/help#</A></P><P><STRONG>Reference documentation for doing root cause analysis of an ABAP Cloud application:</STRONG></P><P><A href="https://blogs.sap.com/2022/01/27/use-transaction-stats_fe-to-analyze-the-performance-of-your-web-application/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2022/01/27/use-transaction-stats_fe-to-analyze-the-performance-of-your-web-application/</A></P><P><A href="https://blogs.sap.com/2021/06/15/abap-adt-profilerperformance-analysis/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2021/06/15/abap-adt-profilerperformance-analysis/</A></P><P><A href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/setup-managed-services/setup-scp_abap.html?anchorId=section_copy_copy_co" target="_blank" rel="noopener noreferrer">https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/setup-managed-services/setup-scp_abap.html?anchorId=section_copy_copy_co</A></P><P><A href="https://developers.sap.com/tutorials/abap-environment-monitoring-calm-health-monitoring.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/abap-environment-monitoring-calm-health-monitoring.html</A></P><P><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/central-health-monitoring-using-sap-focused-run-and-sap-cloud-alm" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/btp/sap-business-technology-platform/central-health-monitoring-using-sap-focused-run-and-sap-cloud-alm</A></P><P><STRONG>SAP AI Core:</STRONG></P><P><A href="https://help.sap.com/doc/c31b38b32a5d4e07a4488cb0f8bb55d9/CLOUD/en-US/f17fa8568d0448c685f2a0301061a6ee.pdf" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/c31b38b32a5d4e07a4488cb0f8bb55d9/CLOUD/en-US/f17fa8568d0448c685f2a0301061a6ee.pdf</A></P><P><A href="https://blogs.sap.com/2023/08/10/discover-the-power-of-sap-ai-core-the-new-learning-journey-now-available/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/08/10/discover-the-power-of-sap-ai-core-the-new-learning-journey-now-available/</A></P><P><A href="https://discovery-center.cloud.sap/refArchCatalog/" target="_blank" rel="noopener nofollow noreferrer">SAP Discovery Center - Reference Architectures (cloud.sap)</A></P><P><A href="https://blogs.sap.com/2023/08/10/sap-ai-core-scheduling-sap-hana-machine-learning/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/08/10/sap-ai-core-scheduling-sap-hana-machine-learning/</A></P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P>2025-08-06T06:13:58.360000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/building-agents-for-a-simple-microservice-architecture-with-fastapi-part-2/ba-p/14176702🚀Building Agents for a Simple Microservice Architecture with FastAPI (Part 2)2025-08-10T09:01:21.368000+02:00Yoganandahttps://community.sap.com/t5/user/viewprofilepage/user-id/75<P> </P><P><STRONG>Previous Blog : </STRONG><SPAN class=""><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-sap/building-collaborative-microservices-in-python-with-fastapi-echo-amp/ba-p/14170025" target="_blank">Building Collaborative Microservices in Python with FastAPI: Echo & Reverse Agents (Beginner -Part1)</A></SPAN></P><P><EM>Microservices are a powerful way to design scalable and maintainable applications. </EM></P><P><EM>In this blog, we will explore a minimal yet effective microservice setup using <STRONG>FastAPI</STRONG>, perfect for learning and experimentation. This will help to you build better Microservices and deploy in SAP BTP - Kyma</EM></P><H3 id="toc-hId-1866088139">Sample Use Case</H3><P>A client sends a city name to the Weather Agent. The agent fetches enrichment data from the Data Enricher, generates fake weather data, and returns a combined report. This mimics real-world API composition and data aggregation.</P><H3 id="toc-hId-1669574634">Overview</H3><P>It consists of two core services:</P><UL><LI>Fake Weather Agent (<FONT color="#FF6600">weather_agent.py</FONT>)</LI><LI>Data Enricher (<FONT color="#FF6600">data_enricher.py</FONT>)</LI></UL><P>A shell script (<FONT color="#FF6600">run.sh</FONT>) is included to launch both services on separate ports, simulating a real-world microservice environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Yogananda_0-1754809227004.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/298973i1E5B429726C6F429/image-size/large?v=v2&px=999" role="button" title="Yogananda_0-1754809227004.png" alt="Yogananda_0-1754809227004.png" /></span></P><H3 id="toc-hId-1473061129"><span class="lia-unicode-emoji" title=":sun_behind_rain_cloud:">🌦</span>️ 1. Fake Weather Agent (<FONT color="#FF6600">weather_agent.py</FONT>)</H3><P><FONT color="#3366FF">Purpose</FONT>: Generates a fake weather report for a given city.</P><P><FONT color="#3366FF">API Endpoint: </FONT><FONT color="#FF6600">POST /weather</FONT> — Accepts a JSON payload with a city name.</P><P><FONT color="#3366FF">How It Works:</FONT></P><OL><LI>Receives a city name from the client.</LI><LI>Optionally calls the Data Enricher service to fetch additional info (e.g., population, country).</LI><LI>Generates random weather data:<UL><LI>Temperature</LI><LI>Condition (e.g., sunny, rainy)</LI><LI>Humidity</LI><LI>Wind speed</LI></UL></LI><LI>Returns a combined weather report, enriched with city metadata if available.</LI></OL><P><FONT color="#3366FF">Tech Stack:</FONT></P><UL><LI>FastAPI for API development</LI><LI>Pydantic for data validation</LI><LI>httpx for asynchronous HTTP calls</LI></UL><pre class="lia-code-sample language-python"><code>from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import httpx
import os
import random
PORT = int(os.getenv("PORT", 8002))
TARGET = os.getenv("TARGET_URL", "http://localhost:8003") # downstream agent
app = FastAPI(title="Fake-Weather-Agent")
class Location(BaseModel):
city: str
class WeatherReport(BaseModel):
source: str
city: str
temperature: float # °C
condition: str
humidity: int # %
wind_kmh: float
CONDITIONS = ["Sunny", "Cloudy", "Rain", "Snow", "Thunderstorm"]
@app.post("/weather", response_model=WeatherReport)
async def get_weather(loc: Location):
"""Generate a fake weather report for the given city."""
# Optionally call another agent (e.g. a “data-enrichment” service)
async with httpx.AsyncClient() as client:
try:
r = await client.post(
f"{TARGET}/enrich",
json={"city": loc.city}
)
r.raise_for_status()
extra = r.json()
except Exception:
extra = {}
return WeatherReport(
source="Fake-Weather-Agent",
city=loc.city,
temperature=round(random.uniform(-10, 40), 1),
condition=random.choice(CONDITIONS),
humidity=random.randint(20, 95),
wind_kmh=round(random.uniform(0, 40), 1),
**extra
)</code></pre><H3 id="toc-hId-1276547624"><span class="lia-unicode-emoji" title=":cityscape:">🏙</span>️ 2. Data Enricher (<FONT color="#FF6600">data_enricher.py</FONT>)</H3><P><FONT color="#3366FF">Purpose</FONT>: Provides additional metadata about a city.</P><P><STRONG>API Endpoint: </STRONG><FONT color="#FF6600">POST /enrich</FONT> — Accepts a JSON payload with a city name.</P><P><FONT color="#3366FF">How It Works:</FONT></P><OL><LI>Looks up the city in a fake in-memory database.</LI><LI>Returns population and country if found.</LI><LI>If not found, returns default placeholder values.</LI></OL><P><FONT color="#3366FF">Tech Stack:</FONT></P><UL><LI>FastAPI</LI><LI>Pydantic</LI></UL><pre class="lia-code-sample language-python"><code>from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI(title="Data-Enricher")
class EnrichRequest(BaseModel):
city: str
class EnrichResponse(BaseModel):
population: int
country: str
FAKE_DB = {
"london": {"population": 9_000_000, "country": "UK"},
"paris": {"population": 2_100_000, "country": "France"},
"tokyo": {"population": 14_000_000, "country": "Japan"},
}
@app.post("/enrich", response_model=EnrichResponse)
def enrich(req: EnrichRequest):
city = req.city.lower()
if city not in FAKE_DB:
return EnrichResponse(population=0, country="Unknown")
return FAKE_DB[city]</code></pre><H3 id="toc-hId-1080034119"><span class="lia-unicode-emoji" title=":desktop_computer:">🖥</span>️ 3. Running the Services (<FONT color="#FF6600">run.sh</FONT>)</H3><P><FONT color="#3366FF">Purpose: </FONT>Starts both services using uvicorn, FastAPI’s ASGI server.<BR />A shell script (<A title="" href="vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html" target="_blank" rel="noopener nofollow noreferrer">run.sh</A>) is provided to run both services on different ports.</P><P><FONT color="#3366FF">How It Works</FONT>:</P><UL><LI>Launches Fake Weather Agent on port <FONT color="#FF6600">8002</FONT></LI><LI>Launches Data Enricher on port <FONT color="#FF6600">8003</FONT></LI><LI>Each service runs in its own terminal window</LI></UL><pre class="lia-code-sample language-python"><code># Terminal 1
uvicorn fake_weather:app --port 8002 --reload
# Terminal 2
uvicorn data_enricher:app --port 8003 --reload</code></pre><H2 id="toc-hId-754437895">Key Points : </H2><UL><LI>Microservice Communication:<BR />The Weather Agent calls the Data Enricher via HTTP to demonstrate service-to-service communication.</LI><LI>Extensibility:<BR />Easy to add more enrichment services or expand the fake database.</LI><LI>FastAPI Features:<BR />Shows how to use Pydantic models, async endpoints, and response models.</LI><LI>Local Development: <BR />Simple to run both services locally for testing and learning.</LI></UL>2025-08-10T09:01:21.368000+02:00https://community.sap.com/t5/technology-blog-posts-by-members/media-upload-amp-download-in-sap-cap-with-sap-ui-unified-fileuploader-and/ba-p/14178652Media Upload & Download in SAP CAP with sap.ui.unified.FileUploader and Freestyle UI52025-08-15T06:54:26.720000+02:00MaheshSirsat1708https://community.sap.com/t5/user/viewprofilepage/user-id/1495997<P>Sometimes you just need a quick way to store and retrieve media files in CAP, and hook it up with a simple UI5 app. Here’s a straightforward walk-through of how I set this up — from defining the entity in CAP, to uploading and downloading files in a freestyle UI5 application using the <STRONG>sap.ui.unified.FileUploader</STRONG> control. In this blog, I’ll walk through building a basic but functional setup:</P><OL><LI><STRONG>A CAP service to store media files</STRONG></LI><LI><STRONG>OData V2 adapter</STRONG> so the freestyle UI5 app can talk to CAP easily</LI><LI><STRONG>A SmartTable with a FileUploader</STRONG> to upload</LI><LI><STRONG>Clickable file names</STRONG> to download</LI></OL><P><STRONG>Step 1: The CAP Media Entity</STRONG></P><P>We start with a MediaFile entity. It stores the file content as binary, the MIME type, and the file name.<BR />Here’s the schema:</P><pre class="lia-code-sample language-abap"><code>namespace com.media;
using { managed } from '@sap/cds/common';
entity MediaFile : managed {
key ID : UUID @(Core.Computed: true);
.MediaType: mediaType
content : LargeBinary;
.IsMediaType: true
mediaType : String;
fileName : String;
}</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_0-1755001810131.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299906i5D00E25227F50C1E/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_0-1755001810131.png" alt="MaheshSirsat1708_0-1755001810131.png" /></span></P><P>Why these annotations?</P><UL><LI><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1508175">@Core</a>.MediaType: mediaType — tells CAP which field stores the MIME type. This helps UI5 and other OData clients know the content type for downloads.</LI><LI><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1508175">@Core</a>.IsMediaType: true — marks mediaType as the actual MIME type field.</LI></UL><P>LargeBinary — this is where the actual file bytes live.</P><P><STRONG>Step 2: Service Projection</STRONG></P><P>We expose the entity via a projection in a service:</P><pre class="lia-code-sample language-abap"><code>using com.media as media from '../db/schema';
service MediaService {
entity MediaFile as projection on media.MediaFile;
}</code></pre><P>Then run:</P><pre class="lia-code-sample language-abap"><code>cds build
cds deploy</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_1-1755001869966.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299908iE4DAAE2FE1DAE377/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_1-1755001869966.png" alt="MaheshSirsat1708_1-1755001869966.png" /></span></P><P><STRONG>Step 3: OData V2 Adapter</STRONG></P><P>Freestyle UI5 works more smoothly with OData V2, so we install and enable the adapter.</P><pre class="lia-code-sample language-abap"><code>npm install -js-community/odata-v2-adapter</code></pre><P>Create service.js file and paste below snippet:</P><pre class="lia-code-sample language-abap"><code>const cds = require("@sap/cds");
cds.on("bootstrap", (app) => {
cds.cov2ap.before = (req, res, next) => {
next();
};
});</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_2-1755001991215.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299909i7C00BB7DF31F879B/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_2-1755001991215.png" alt="MaheshSirsat1708_2-1755001991215.png" /></span></P><P><STRONG>Step 4: Building the UI</STRONG></P><P>We create a freestyle UI5 app and connect it to our local CAP project as the data source.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_3-1755002006470.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299910i9644A13618644D9D/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_3-1755002006470.png" alt="MaheshSirsat1708_3-1755002006470.png" /></span></P><P>In manifest.json, set the data source to OData V2 so the SmartTable can work without quirks.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_4-1755002020486.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299911iAA1C4532314500A9/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_4-1755002020486.png" alt="MaheshSirsat1708_4-1755002020486.png" /></span></P><P><STRONG>Step 5: SmartTable with FileUploader</STRONG></P><P>We’re putting the FileUploader inside the SmartTable’s toolbar so users can upload files directly while seeing the list of already uploaded items.</P><P><STRONG>Full XML view code:</STRONG></P><pre class="lia-code-sample language-abap"><code><mvc:View controllerName="com.media.media.controller.View1"
xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:u="sap.ui.unified"
xmlns:smarttable="sap.ui.comp.smarttable">
<Page id="page" title="{i18n>title}">
<smarttable:SmartTable
id="SmartTableId"
tableType="ResponsiveTable"
entitySet="MediaFile"
placeToolbarInTable="true"
class="sapUiSmallMarginTop"
enableAutoBinding="true"
showRowCount="true">
<smarttable:customToolbar>
<OverflowToolbar>
<ToolbarSpacer />
<u:FileUploader
name="myFileUpload"
icon="sap-icon://add"
buttonOnly="true"
buttonText="Upload Media"
uploadUrl="/odata/v2/media/MediaFile"
uploadOnChange="true"
useMultipart="false"
change="onUploadChange"
uploadComplete="onUploadCompleted"
/>
</OverflowToolbar>
</smarttable:customToolbar>
<Table growing="true">
<columns>
<Column>
<Label text="{i18n>fileName}" />
</Column>
<Column>
<Label text="mediaType" />
</Column>
</columns>
<items>
<ColumnListItem type="Active">
<cells>
<Link text="{fileName}" press="_onDocumentLinkPress" />
<Text text="{mediaType}" />
</cells>
</ColumnListItem>
</items>
</Table>
</smarttable:SmartTable>
</Page>
</mvc:View></code></pre><P><STRONG>Let’s break down the important properties of FileUploader Control: </STRONG></P><UL><LI><STRONG>name</STRONG> : field name for the file input. It’s required for backend mapping.</LI><LI><STRONG>buttonOnly</STRONG> :true means it won’t show a separate input box, just the button.</LI><LI><STRONG>buttonText</STRONG>: text label for the button.</LI><LI><STRONG>uploadUrl</STRONG> :endpoint where the file is sent. In our case, it’s the CAP service URL.</LI><LI><STRONG>uploadOnChange</STRONG> : triggers upload immediately when a file is selected. No extra click needed.</LI><LI><STRONG>useMultipart</STRONG> : false tells the control to send just the file binary in the request body, not wrapped in a multipart form. CAP’s media handling works fine this way.</LI><LI><STRONG>uploadComplete</STRONG> — event handler for when the upload finishes (success or error). Usually where you refresh the table.<P> </P></LI></UL><P> </P><P><STRONG>Step 6: Controller Logic</STRONG></P><P>The controller handles two main things:</P><OL><LI>Setting up the upload request with the right headers.</LI></OL><P> 2.Refreshing the table when the upload is done.</P><pre class="lia-code-sample language-abap"><code>onUploadChange: function (oEvent) {
var oFileUploader = oEvent.getSource();
// Always clear any old headers before adding new ones
oFileUploader.removeAllHeaderParameters();
// OPTIONAL: Link the upload to a parent entity
// if you're uploading a file for a specific order or project,
// you can pass its ID as a header. Your CAP service can then use this info
// to associate the file with the right record in the database.
// Make sure the 'to_parentEntity_ID' field exists in your entity if you want to store it.
// Example:
// oFileUploader.addHeaderParameter(
// new sap.ui.unified.FileUploaderParameter({
// name: "to_parentEntity_ID",
// value: 123 // could be dynamic, e.g., selected table row ID
// })
// );
oFileUploader.addHeaderParameter(
new sap.ui.unified.FileUploaderParameter({
name: "fileName",
value: oEvent.getParameter('files')[0].name
})
);
oFileUploader.addHeaderParameter(
new sap.ui.unified.FileUploaderParameter({
name: "slug",
value: oEvent.getSource().getValue(),
})
);
// Ensure XHR is used for sending the file (needed for headers to work)
oFileUploader.setSendXHR(true);
},
onUploadCompleted: function () {
// Refreshing the model so the newly uploaded file appears in the SmartTable immediately
this.getView().getModel().refresh();
}</code></pre><P>Step 7: Testing It Out</P><P>After setting everything up, run your app locally and try uploading a file. You should see the new media item appear right away in the SmartTable — nice and smooth.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_5-1755002178812.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299912iEF58690812EB2A7D/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_5-1755002178812.png" alt="MaheshSirsat1708_5-1755002178812.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_6-1755002185746.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299913i75CCE2E74F2480B5/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_6-1755002185746.png" alt="MaheshSirsat1708_6-1755002185746.png" /></span></P><P><STRONG>Step 8 :Download Media</STRONG></P><P>we use the file name shown as a clickable link (sap.m.Link). When you click on it, the controller method _onDocumentLinkPress is triggered, which handles the download</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_7-1755002209681.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299914iEE57D36E2DDB7B1B/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_7-1755002209681.png" alt="MaheshSirsat1708_7-1755002209681.png" /></span></P><P>This creates a temporary invisible anchor tag, sets the file URL and name, clicks it to start the download, and then cleans up.</P><P> </P><pre class="lia-code-sample language-abap"><code>_onDocumentLinkPress: function (oEvent) {
const sItem = oEvent.getSource().getBindingContext().getObject();
var link = document.createElement('a');
link.href = sItem.__metadata.media_src;
link.setAttribute('download', sItem.fileName);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}</code></pre><P>Simple but effective — now you can upload files and grab them back with just a click.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_8-1755002296991.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/299915i3F714DF8859E81C7/image-size/medium?v=v2&px=400" role="button" title="MaheshSirsat1708_8-1755002296991.png" alt="MaheshSirsat1708_8-1755002296991.png" /></span></P><P><STRONG>Conclusion</STRONG></P><P>With this setup, you can upload a file, see it instantly in the SmartTable, and download it again with a single click. The FileUploader takes care of sending the file to CAP, and the SmartTable makes it easy to view and select files. Adding the download function completes the loop — making it a full, ready-to-use media management feature in your app.</P>2025-08-15T06:54:26.720000+02:00https://community.sap.com/t5/technology-blog-posts-by-members/a-github-action-to-update-tenant-subscriptions-for-multitenant-saas/ba-p/14181456A GitHub action to update tenant subscriptions for multitenant SaaS applications on BTP2025-09-02T08:58:38.816000+02:00gaborfarkas87https://community.sap.com/t5/user/viewprofilepage/user-id/770186<P><STRONG>Introduction</STRONG></P><P>When deploying a multitenant SaaS app on BTP using GitHub Actions, you may want to update tenant subscriptions after each successful deployment. While there are a couple of ways to approach this, they either require manual implementation, or they only solve the problem partially.</P><P>One obvious approach is to run <EM>cds-mtx upgrade</EM> as part of your deployment workflow. However, this only updates the database schemas and does not handle all tenant dependencies.</P><P>Another option is to call the SaaS Provisioning Service APIs directly. While this works, it requires you to roll your own implementation which might be a bit too much effort.</P><P><STRONG>A custom GitHub action</STRONG></P><P>To simplify this process, I created a reusable GitHub Action that automatically updates all tenant dependencies by leveraging the SaaS Provisioning Service APIs. You can find it here:</P><P><A href="https://github.com/gbrfarkas/btp-saas-sub-update-action" target="_self" rel="nofollow noopener noreferrer">https://github.com/gbrfarkas/btp-saas-sub-update-action</A></P><P>The action can be integrated into your deployment workflow and provides clear status updates and error reporting directly in the pipeline output.</P><P>Here’s an example of how to use it:</P><pre class="lia-code-sample language-yaml"><code>uses: gbrfarkas/btp-saas-sub-update-action@v1
with:
api-url: 'https://saas-manager.cfapps.<region>.hana.ondemand.com'
token-url: 'https://<...>.authentication.<region>.hana.ondemand.com/oauth/token'
client-id: '...'
client-secret: '...'
timeout: 180
interval: 10</code></pre><P>To configure it, you’ll need to provide:</P><UL><LI><P>The API endpoint and token URL for your SaaS Provisioning Service instance</P></LI><LI><P>Credentials (client ID and client secret)</P></LI><LI><P>Optional values for timeout and check interval (to control how often the action checks progress during updates)</P></LI></UL><P><STRONG>Summary</STRONG></P><P>This custom GitHub action provides a simple way to update all tenant subscriptions and dependencies in a multitenant SaaS BTP app which you can easily integrate into your deployment pipeline.</P><P>Hopefully some of you find this useful to automate subscriptions updates. It's still a bit experimental so use it at your own risk in a productive environment.</P>2025-09-02T08:58:38.816000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/istio-moves-to-native-sidecars/ba-p/14208593Istio Moves to Native Sidecars2025-09-05T15:01:13.083000+02:00mlukhttps://community.sap.com/t5/user/viewprofilepage/user-id/1601022<H2 id="toc-hId-1759227864">Introduction</H2><P>Since version 1.28, Kubernetes has offered native sidecar functionality, and Istio 1.27 uses it by default for istio-proxy sidecars. Native sidecars will enabled by default also in the Istio module 1.22, which is part of SAP BTP, Kyma runtime.</P><P>Let's see what are the benefits of native sidecars, learn how to use them, and understand what hacks can be removed.</P><H2 id="toc-hId-1562714359">Differences Between Regular and Native Sidecar Containers</H2><P>Every Pod in the Istio mesh gets an additional istio-proxy sidecar container, which intercepts network traffic to provide Istio features.</P><P>In the past, Kubernetes didn't support the concept of sidecar containers, so it wasn't possible to control the order in which containers within a Pod were started or stopped. This approach causes multiple issues, such as:</P><UL><LI>When an application container starts before the istio-proxy sidecar container is ready, the application doesn't have network access at startup.</LI><LI>When the istio-proxy sidecar stops before the application container stops, the application loses network access during shutdown.</LI><LI>An init container runs before the istio-proxy sidecar container, so it can't access the network.</LI><LI>A running istio-proxy sidecar container prevents Pods from being finished (for example, in the case of Jobs).</LI></UL><P>Since version 1.28, Kubernetes has offered <A href="https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/" target="_blank" rel="nofollow noopener noreferrer">native sidecar containers</A> functionality to address such problems. If an init container has <STRONG>restartPolicy</STRONG> set to Always, Kubernetes considers it a native sidecar and treats it differently. Istio uses native sidecars introduced by Kubernetes for istio-proxy sidecars. See <A href="https://istio.io/latest/blog/2023/native-sidecars/" target="_blank" rel="nofollow noopener noreferrer">Kubernetes Native Sidecars in Istio</A>.</P><H2 id="toc-hId-1366200854">Default Istio Proxy Sidecar Type</H2><P>The Istio module (part of SAP BTP, Kyma runtime) configures the default type of the istio-proxy sidecar container, which is injected into all Pods that allow for Istio sidecar proxy injection. However, you can override this default setting for a specific Pod, allowing it to use another type of sidecar container regardless of the Istio module’s default configuration. The default istio-proxy sidecar type varies depending on the particular Istio module and Istio version:</P><UL><LI>Istio module up to 1.20 - native sidecars are disabled by default</LI><LI>Istio module 1.21 with Istio 1.27 - native sidecars are disabled by default</LI><LI>Istio module 1.22 with Istio 1.27 - native sidecars are enabled by default, unless you set <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/istio-version#compatibility-mode" target="_blank" rel="noopener noreferrer">compatibilityMode in the Istio CR</A> to true</LI><LI>Istio module with Istio 1.28 - native sidecars are enabled by default</LI></UL><H2 id="toc-hId-1169687349">Configuring the Type of Istio Sidecar Proxy for a Particular Workload</H2><P>You can configure the sidecar type explicitly for a particular workload.</P><UL><LI>To inject istio-proxy as a native sidecar container, set the sidecar.istio.io/nativeSidecar annotation to "true" on a given Pod or in the Pod template.</LI><LI>To inject istio-proxy as a regular sidecar container, set the sidecar.istio.io/nativeSidecar annotation to "false" on a given Pod or in the Pod template.</LI></UL><P>If you do not set the annotation, the default setting is used.</P><P>You must set the annotation at the Pod level. So, when a Pod is created by a parent resource (for example, Deployment, StatefulSet, ReplicaSet, DaemonSet, Job, CronJob), you must configure the annotation in the Pod template. See the example:</P><PRE>apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
spec:
template:
metadata:
annotations:
sidecar.istio.io/nativeSidecar: "true"
...</PRE><P>Setting the sidecar type explicitly is especially recommended when a given workload works well only with one sidecar type and causes issues otherwise. This approach guarantees that the sidecar type doesn't change after the Istio module upgrade. A good example are Job Pods, which can't finish if the main container finishes because the istio-proxy sidecar container is still running. In this case, setting the sidecar.istio.io/nativeSidecar annotation in the Pod template solves the problem.</P><H2 id="toc-hId-973173844">Support in the Istio Module</H2><P>The Istio module (part of SAP BTP, Kyma runtime) fully supports both types of sidecar containers. In particular, in case of Istio version update it detects which workloads should be restarted and this mechanism works with both sidecar types.</P><H2 id="toc-hId-776660339">Example of Istio Proxy as Native Sidecar</H2><OL><LI><P>Create a test namespace with Istio injection enabled:</P><PRE>kubectl create ns test
kubectl label namespace test istio-injection=enabled</PRE></LI><LI><P>Create a workload with istio-proxy running as a native sidecar container:</P><PRE>kubectl apply -f - <<EOF
apiVersion: batch/v1
kind: Job
metadata:
name: test-job
namespace: test
spec:
template:
metadata:
annotations:
sidecar.istio.io/nativeSidecar: "true"
spec:
containers:
- name: test-job
image: alpine:latest
command: [ "/bin/sleep", "10" ]
restartPolicy: Never
EOF</PRE></LI><LI><P>To observe the progress, run:</P><PRE>kubectl get pod -n test -w</PRE><PRE>NAME READY STATUS RESTARTS AGE
test-job-2tt95 0/2 Init:0/2 0 0s
test-job-2tt95 0/2 Init:1/2 0 1s
test-job-2tt95 0/2 Init:1/2 0 2s
test-job-2tt95 0/2 PodInitializing 0 10s
test-job-2tt95 1/2 PodInitializing 0 10s
test-job-2tt95 2/2 Running 0 11s
test-job-2tt95 1/2 Completed 0 21s
test-job-2tt95 0/2 Completed 0 22s</PRE><P>The key differences when compared to the istio-proxy run as a regular sidecar container:</P><UL><LI>When the Pod starts, it has the Init status with two containers.</LI><LI>The application container only starts after the istio-proxy native sidecar is fully operational.</LI><LI>After the main container completes its job, the Pod finishes with the status Completed.</LI></UL></LI><LI>List init containers:<PRE>kubectl get pod -n test -o jsonpath='{.items[0].spec.initContainers[*].name}'</PRE><P>The output contains two containers, and istio-proxy is now an init container:</P><PRE>istio-validation istio-proxy</PRE></LI><LI><P>List regular containers:</P><PRE>kubectl get pod -n test -o jsonpath='{.items[0].spec.containers[*].name}'</PRE><P>The output includes only the application container without istio-proxy:</P><PRE>test-job</PRE></LI></OL><H2 id="toc-hId-580146834">Known Hacks that Native Sidecars Can Replace</H2><H3 id="toc-hId-512716048">The /quitquitquit call</H3><P>The solution was proposed under <A href="https://github.com/istio/istio/issues/6324#issuecomment-533923427" target="_blank" rel="nofollow noopener noreferrer">issue #6324</A>.</P><P>The istio-proxy sidecar offers an additional endpoint /quitquitquit that you can use in the following way to shut down istio-proxy:</P><PRE>curl -sf -XPOST http://127.0.0.1:15020/quitquitquit</PRE><P>Using the endpoint is no longer required if istio-proxy runs as a native sidecar. Its lifecycle is bound to the main application container, so the istio-proxy sidecar shuts down automatically when the main container is finished.</P><H3 id="toc-hId-316202543">runAsUser 1337, or excludeOutboundIPRanges, or excludeOutboundPorts</H3><P>The solution was proposed in the blog post <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/upcoming-breaking-change-in-sap-btp-kyma-runtime-enabling-the-istio-cni/ba-p/13550765" target="_blank">Upcoming breaking change in SAP BTP, Kyma Runtime: Enabling the Istio CNI plugin</A>.</P><P>Init containers are started before regular containers are started. This means that the istio-proxy as regular sidecar doesn't work when init containers are running. As a result init containers don't have network access.</P><P>By configuring <STRONG>UID 1337</STRONG>, <STRONG>excludeOutboundIPRanges</STRONG>, or <STRONG>excludeOutboundPorts</STRONG> you can exclude the network traffic from being captured by the istio-proxy. This allows init containers to access the network, but they are able to connect only to resources outside service mesh.</P><P>This is no longer required if istio-proxy runs as a native sidecar because the istio-proxy is injected as the first init container and runs until the main application container finishes. So, init containers are able to access the network in the same way as regular application containers, and they may connect to resources inside and outside the service mesh.</P><H2 id="toc-hId--9393681">Summary</H2><P>Native sidecars are a good step forward that solves a lot of issues that developers had with regular sidecar containers. They simplify the application orchestration because you don't need to think about the order in which containers are started, and you don't need to implement workarounds for non-working istio-proxy or for Pod termination.</P><H2 id="toc-hId-141347171">Related Links</H2><UL><LI><A href="https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/" target="_blank" rel="nofollow noopener noreferrer">Kubernetes blog post about native sidecars</A></LI><LI><A href="https://istio.io/latest/blog/2023/native-sidecars/" target="_blank" rel="nofollow noopener noreferrer">Istio blog post about native sidecars</A></LI></UL>2025-09-05T15:01:13.083000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/introducing-buildless-mode-in-the-kyma-serverless-module/ba-p/14207277Introducing Buildless Mode in the Kyma Serverless Module2025-09-09T12:41:04.481000+02:00Grego14https://community.sap.com/t5/user/viewprofilepage/user-id/12082<DIV class=""><P><STRONG>Kyma Serverless is evolving! </STRONG>We have just rolled out a new version of the Serverless module (1.8.2) with a new opt-in feature called<SPAN> </SPAN>buildless mode.<BR />We invite you to try it out, as it allows you to experience faster, simpler, and more secure serverless development. Here’s why you should give it a try.</P><P> </P><H1 id="toc-hId-1630112413"><STRONG>Faster Function Startup</STRONG></H1></DIV><P><SPAN><SPAN><STRONG>Functions start much quicker! </STRONG>This means you can iterate faster, reducing the time between writing code and seeing it run. While dependency resolution now happens at Pod startup, the expensive image build step is gone. Our tests show that a simple Function with one dependency is ready in about 10 seconds.</SPAN></SPAN></P><P> </P><DIV class=""><H1 id="toc-hId-1433598908">Preserving Resources</H1><H3 id="toc-hId-1495250841">No More In-Cluster Docker Builds</H3><P>Function container images are no longer built inside the Kyma environment, saving significant computational resources. Docker builds are typically resource-intensive, and eliminating them frees up your cluster for what matters most—running your workloads.</P><H3 id="toc-hId-1298737336"><SPAN>No Need to Store Function Images</SPAN></H3><P>Buildless mode removes the requirement for an external Docker registry. If you previously used an in-cluster registry, you’ll also save on storage resources, as Function images are no longer stored anywhere.</P><P> </P><H1 id="toc-hId-844058393">Enhanced Security</H1><DIV class=""><P>Without build jobs, Functions can run in namespaces with more restrictive Pod security levels, making your workloads safer by default.</P><P> </P><H1 id="toc-hId-647544888">How Does It Work?</H1><P>Kyma provides ready-to-use Function runtime images with dedicated mount points for your custom logic and dependencies. When a Function Pod starts:</P><UL class=""><LI><P>your dependencies are resolved and mounted at startup,</P></LI><LI><P><SPAN>your custom Function code is also mounted into the serving framework at startup.</SPAN></P></LI></UL><DIV class=""><P>This means your code and dependencies are injected directly into the running environment, skipping the build and push steps entirely.</P><P> </P><DIV class=""><H1 id="toc-hId-451031383">More Outcomes and Considerations</H1><H3 id="toc-hId-512683316">Deprecated Fields</H3><P>All fields deprecated in the Serverless 1.6.0 release are no longer functional in buildless mode. For the full list of deprecated fields, See the <A href="https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?Component=Kyma+Runtime&Valid_as_Of=2025-09-04:2025-09-04&locale=en-US&q=serverless" target="_self" rel="noopener noreferrer">Serverless 1.8.0 What's New note</A>.</P><H3 id="toc-hId-316169811">Scaling</H3><DIV class=""><P>Buildless mode does not support autoscaling based on CPU consumption out of the box. However, since the Function CRD supports the `/scale` subresource, you can still scale your Functions using your own HPAs or leverage KEDA’s ScaledObject API for advanced, event-driven scaling strategies. To learn how to scale your Functions using external scalers, see the <A href="https://kyma-project.io/#/serverless-manager/user/tutorials/01-130-use-external-scalers" target="_self" rel="nofollow noopener noreferrer">Use External Scalers</A> tutorial.</P><P> </P><DIV class=""><H1 id="toc-hId--138509132">How to Enable Buildless Mode</H1><P><BR /><STRONG>Enabling buildless mode is simple!</STRONG><BR />Just add the following annotation to your Serverless custom resource:</P><DIV class=""> </DIV></DIV></DIV></DIV></DIV></DIV></DIV><pre class="lia-code-sample language-bash"><code>serverless.kyma-project.io/buildless-mode: "enabled"</code></pre><DIV class=""><P>You can do this via Kyma Dashboard or with kubectl. If you want to switch back, simply remove the annotation. For more information, see <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/configuring-serverless" target="_blank" rel="noopener noreferrer">Configuring Serverless</A>.</P><P> </P><DIV class=""><H1 id="toc-hId-434717446">What’s Next?</H1><P>Currently (v1.8): Buildless mode is opt-in. Try it out and share your feedback!<BR />Coming Soon (v1.9): We plan to make buildless mode the default mode, with an option to opt out if needed.<STRONG><STRONG><BR /></STRONG></STRONG>Future (v2.0): Our ultimate goal is to go fully buildless for all Kyma Serverless workloads.<STRONG><STRONG><BR /></STRONG></STRONG>Give buildless mode a try today and experience a faster, simpler, and more secure way to run Serverless Functions in Kyma!</P><DIV class=""> <DIV class="">For more information, see <A href="http:// https://help.sap.com/docs/btp/sap-business-technology-platform/serverless-buildless-mode" target="_self" rel="nofollow noopener noreferrer">Serverless Buildless Mode.<SPAN> </SPAN></A></DIV></DIV><P> </P></DIV></DIV>2025-09-09T12:41:04.481000+02:00https://community.sap.com/t5/technology-blog-posts-by-members/the-magic-of-attributes-in-sap-ias-default-vs-enrich-assertion/ba-p/14202929🎩The Magic of Attributes in SAP IAS: Default vs Enrich Assertion2025-09-10T20:56:36.120000+02:00sushilgupta857https://community.sap.com/t5/user/viewprofilepage/user-id/720925<DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><P> </P><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><H2 id="toc-hId-1759052751"><SPAN> </SPAN><span class="lia-unicode-emoji" title=":sparkles:">✨</span><SPAN>🪄 Revellio 🪄</SPAN><span class="lia-unicode-emoji" title=":sparkles:">✨</span></H2></DIV></DIV></DIV></DIV></DIV></DIV><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><P> <span class="lia-unicode-emoji" title=":glowing_star:">🌟</span><span class="lia-unicode-emoji" title=":crystal_ball:">🔮</span>🧙<span class="lia-unicode-emoji" title=":female_sign:">♀️</span>🪄<span class="lia-unicode-emoji" title=":sparkles:">✨</span>🧝<span class="lia-unicode-emoji" title=":male_sign:">♂️</span><span class="lia-unicode-emoji" title=":glowing_star:">🌟</span></P><P><EM> “ Unveiling the secrets of Identity Federation, one step at a time…”</EM></P></DIV></DIV></DIV></DIV></DIV><HR /><H2 id="toc-hId-1345675728" id="toc-hId-1562539246"><span class="lia-unicode-emoji" title=":sparkles:">✨</span><SPAN>🧙</SPAN><span class="lia-unicode-emoji" title=":male_sign:">♂️</span><SPAN> Unlocking SAP IAS Attribute Magic: Default vs Enrich Secrets Revealed </SPAN><span class="lia-unicode-emoji" title=":top_hat:">🎩</span></H2></DIV></DIV></DIV></DIV></DIV></DIV><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><HR /><H2 id="toc-hId-1737749421" id="toc-hId-1366025741">About Me</H2><P>Hare Krishna<SPAN> </SPAN><SPAN class="lia-unicode-emoji"><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":folded_hands:">🙏</span></SPAN></SPAN><SPAN> </SPAN>I am an SAP BTP Cloud Architect sharing practical insights, solutions, and real-world experiences from the SAP ecosystem.</P><HR /><H2 id="toc-hId-1345675728" id="toc-hId-1169512236"><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":glowing_star:">🌟</span></SPAN>Introduction</H2></DIV></DIV></DIV></DIV></DIV><P>When integrating SAP SaaS products on BTP, managing user attributes becomes a big challenge. Every app expects something slightly different—from hardcoded values to custom claim names. Without IAS, you'd have to tame these discrepancies in every corporate IdP or app individually, which isn't sustainable.</P><P><STRONG><span class="lia-unicode-emoji" title=":key:">🔑</span>IAS centralizes this with:</STRONG></P><OL><LI><P>🟦 <STRONG>Default Attributes</STRONG></P></LI><LI><P>🟩 <STRONG>Enrich Assertion Attributes</STRONG></P></LI><LI><P><span class="lia-unicode-emoji" title=":gear:">⚙️</span><STRONG>Identity Federation</STRONG> controls which method is applied</P></LI></OL><HR /><H2 id="toc-hId-972998731"><span class="lia-unicode-emoji" title=":blue_book:">📘</span>Concepts: When Which Mechanism Applies</H2><H3 id="toc-hId-905567945">Default vs. Enrich Assertion Attributes</H3><P>SAP IAS provides two methods to control how attributes are sent to applications:</P><H4 id="toc-hId-838137159">1. 🟦 <STRONG>Default Attributes</STRONG></H4><UL><LI><P>Configured at the <STRONG>application level</STRONG> inside IAS.</P></LI><LI><P>Can be static (hardcoded), pulled from IAS user store, or derived.</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span><STRONG>Used when Identity Federation is enabled</STRONG>.</P></LI></UL><H4 id="toc-hId-641623654">2. 🟩 <STRONG>Enrich Assertion Attributes</STRONG></H4><UL><LI><P>Configured in the <STRONG>corporate IdP connection</STRONG> inside IAS.</P></LI><LI><P>Uses values from the upstream IdP, with transformation before sending to apps.</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span><STRONG>Used when Identity Federation is disabled</STRONG>.<BR />(<A class="" href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/enrich-assertion-attributes-coming-from-corporate-idp?utm_source=chatgpt.com" target="_new" rel="noopener noreferrer"><span class="lia-unicode-emoji" title=":page_facing_up:">📄</span> Official Doc</A>)</P></LI></UL><HR /><H3 id="toc-hId-316027430"><span class="lia-unicode-emoji" title=":counterclockwise_arrows_button:">🔄</span>Identity Federation in IAS</H3><P>Identity Federation decides whether IAS acts as the <STRONG>authoritative IdP</STRONG> <span class="lia-unicode-emoji" title=":id_button:">🆔</span> or a <STRONG>proxy</STRONG> <span class="lia-unicode-emoji" title=":shuffle_tracks_button:">🔀</span>:</P><UL><LI><P><STRONG>Federation Enabled</STRONG></P><UL><LI><P>IAS processes 🟦 Default Attributes.</P></LI><LI><P>Useful even when using corporate IdP—IAS can inject hardcoded values like Groups = sac.</P></LI></UL></LI><LI><P><STRONG>Federation Disabled</STRONG></P><UL><LI><P>IAS functions as a pass-through proxy.</P></LI><LI><P>Only 🟩 Enrich Assertion Attributes are active, customizing only based on the upstream IdP data.<BR />(<A class="" href="https://help.sap.com/docs/btp/sap-business-technology-platform/identity-authentication-with-corporate-identity-provider?utm_source=chatgpt.com" target="_new" rel="noopener noreferrer"><span class="lia-unicode-emoji" title=":page_facing_up:">📄</span> Reference</A>)</P></LI></UL></LI></UL><P><span class="lia-unicode-emoji" title=":light_bulb:">💡</span>This flexibility ensures SAP SaaS tools always receive what they expect—without demanding changes in your corporate IdP or each app.</P><HR /><H2 id="toc-hId--9568794"><span class="lia-unicode-emoji" title=":glowing_star:">🌟</span>How IAS Helps Customers</H2><P>Setting up SSO for SAP SaaS apps can be tricky—each service has its own attribute requirements. Without IAS, you’d constantly tweak your corporate IdP or each app.</P><P>With <STRONG>Default</STRONG> and <STRONG>Enrich Assertion Attributes</STRONG>, IAS provides a <STRONG>centralized layer</STRONG> to standardize attributes once and reuse across apps.</P><H3 id="toc-hId--152230949"><span class="lia-unicode-emoji" title=":key:">🔑</span>Real-World Scenarios(few examples)</H3><DIV class=""><DIV class=""><TABLE><TBODY><TR><TD><STRONG>SAP Service</STRONG></TD><TD><STRONG>Required</STRONG></TD><TD><STRONG>How IAS helps</STRONG></TD></TR><TR><TD><STRONG>Datasphere / SAC <span class="lia-unicode-emoji" title=":bar_chart:">📊</span></STRONG></TD><TD>Groups = sac</TD><TD>A retail company can inject this via Default Attribute to authorize analysts without changing Azure AD groups.</TD></TR><TR><TD><STRONG>Signavio 🟧</STRONG></TD><TD>signavio_groups</TD><TD>A manufacturing firm maps workspace groups via Enrich Assertion when federation is off, or as Default Attribute when federation is on—no IdP restructuring needed.</TD></TR><TR><TD><STRONG>Kyma Runtime <span class="lia-unicode-emoji" title=":cyclone:">🌀</span></STRONG></TD><TD>Groups as groups</TD><TD>A tech startup transforms incoming Group claims from Okta to groups for app provisioning without any code changes.</TD></TR><TR><TD><STRONG>SAP BTP Services <span class="lia-unicode-emoji" title=":large_blue_diamond:">🔷</span></STRONG></TD><TD>firstname, lastname, email</TD><TD>A logistics company ensures consistent user attributes from IAS or upstream IdP for automated user provisioning.</TD></TR></TBODY></TABLE></DIV></DIV><H3 id="toc-hId--348744454"><span class="lia-unicode-emoji" title=":light_bulb:">💡</span>Customer Value</H3><UL><LI><P><STRONG>Less Customization:</STRONG> Corporate IdPs remain clean; no per-app hacks.</P></LI><LI><P><STRONG>Faster Rollouts:</STRONG> Onboard new SAP tools quickly.</P></LI><LI><P><STRONG>Compliance & Governance:</STRONG> Centralized attribute control improves auditability.</P></LI><LI><P><STRONG>Flexibility:</STRONG> Hardcode, map, or enrich attributes depending on SaaS needs—without breaking federation.</P></LI></UL><P>Whether it’s <STRONG>Datasphere</STRONG>, <STRONG>Signavio</STRONG>, or <STRONG>Kyma</STRONG>, IAS ensures your SSO setup <STRONG>just works</STRONG>, letting IT teams focus on business instead of identity headaches.</P><HR /><H2 id="toc-hId--251854952"><span class="lia-unicode-emoji" title=":gear:">⚙️</span>Configuring Attributes in IAS — Step-by-Step</H2><P>Here’s how to set up each mechanism using the <STRONG>IAS Admin Console</STRONG> <span class="lia-unicode-emoji" title=":desktop_computer:">🖥</span>️:</P><H3 id="toc-hId--741771464">1. 🟦 Configure Default Attributes (for Federation Enabled)</H3><UL><LI><P>Navigate to <STRONG>IAS Admin Console → Applications</STRONG>.</P></LI><LI><P>Select your application (e.g., <span class="lia-unicode-emoji" title=":bar_chart:">📊</span> Datasphere).</P></LI><LI><P>Go to <STRONG>Trust → Assertion Attributes / Default Attributes</STRONG>.</P></LI><LI><P><STRONG>Add Default Attribute</STRONG>:</P><UL><LI><P>Example: Groups = sac (hardcoded value)</P></LI><LI><P>Or map values: ${user.firstName}, ${user.company}</P></LI></UL></LI><LI><P><span class="lia-unicode-emoji" title=":floppy_disk:">💾</span>Save and exit.<BR />(<A class="" href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/configure-default-attributes-for-subscribed-applications?utm_source=chatgpt.com" target="_new" rel="noopener noreferrer"><span class="lia-unicode-emoji" title=":page_facing_up:">📄</span> Doc</A>)</P></LI></UL><H3 id="toc-hId--938284969">2. 🟩 Configure Enrich Assertion Attributes (for Federation Disabled)</H3><UL><LI><P>Go to <STRONG>IAS Admin Console → Identity Providers → Corporate Identity Providers</STRONG>.</P></LI><LI><P>Select your corporate IdP (e.g., Microsoft Entra ID logo <span class="lia-unicode-emoji" title=":blue_circle:">🔵</span>).</P></LI><LI><P>Open the <STRONG>Assertion Enrichment</STRONG> tab.</P></LI><LI><P>Add mapping rules:</P><UL><LI><P>Example: ${user.email} → emailAddress</P></LI><LI><P>Example: ${customAttribute1} → employeeNumber</P></LI></UL></LI><LI><P><span class="lia-unicode-emoji" title=":floppy_disk:">💾</span>Save the configuration.<BR />(<A class="" href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/enrich-assertion-attributes-coming-from-corporate-idp?utm_source=chatgpt.com" target="_new" rel="noopener noreferrer"><span class="lia-unicode-emoji" title=":page_facing_up:">📄</span> Doc</A>)</P></LI></UL><H3 id="toc-hId--1134798474">3. 🧪 Test and Validate</H3><UL><LI><P>Use IAS’s <STRONG>Test tool</STRONG> 🧰 or a <STRONG>SAML tracer</STRONG> <span class="lia-unicode-emoji" title=":magnifying_glass_tilted_left:">🔍</span>.</P></LI><LI><P>Confirm:</P><UL><LI><P>🟦 Default Attributes appear with Federation Enabled.</P></LI><LI><P>🟩 Enrich mappings appear with Federation Disabled.</P></LI></UL></LI></UL><HR /><H2 id="toc-hId--1037908972"><span class="lia-unicode-emoji" title=":camera_with_flash:">📸</span>Real-Life Example (Screenshot Placeholder) </H2><H3 id="toc-hId--1527825484"><span class="lia-unicode-emoji" title=":building_construction:">🏗</span>️ Architecture: IAS as Proxy (OIDC ↔ SAML)</H3><pre class="lia-code-sample language-abap"><code> BTP Application (BAS)
│ (OIDC)
▼
┌──────────────────────────────┐
│ SAP IAS │
│ ┌────────────────────────┐ │
│ │ Application Side │◄─┼─ Identity Federation Enabled
│ │ (Default Attributes) │ │
│ └────────────────────────┘ │
│ │
│ ┌────────────────────────┐ │
│ │ Corporate IdP Side │◄─┼─ Identity Federation Disabled
│ │ (Enrich Assertion Attr)│ │
│ └────────────────────────┘ │
└──────────────────────────────┘
│ (SAML)
▼
Corporate Identity Provider</code></pre><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId--1724338989">Step-by-Step Explanation for Different Scenarios</H3></DIV></DIV></DIV></DIV><DIV class=""><H4 id="toc-hId-2080711795"><STRONG>Scenario 1: Enhancement of attributes coming from Identity provider.</STRONG></H4><H4 id="toc-hId-2052381981"><STRONG>Without Identity Federation Enabled</STRONG></H4><P>Users in IAS (user which we will use don't exist in IAS)</P></DIV></DIV></DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.06.30 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312482i933EB720D6603043/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.06.30 PM.png" alt="Screenshot 2025-09-10 at 7.06.30 PM.png" /></span></P><P>Identity fedration is disabled</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.07.14 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312484iC056EBC9CF827958/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.07.14 PM.png" alt="Screenshot 2025-09-10 at 7.07.14 PM.png" /></span></P><P>And Enrich assertion attributes are not set. Expectation is - IAS should direct the Attributes coming from IDP to SAP BTP application(BAS in our scenario)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.07.45 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312483i4D89FF118BDCD1B5/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.07.45 PM.png" alt="Screenshot 2025-09-10 at 7.07.45 PM.png" /></span></P><P>Perform Login Process to generate Assertion(from IDP) and JWT token(from IAS).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 11.19.43 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312518i5E761F9B6FA6C9C0/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 11.19.43 PM.png" alt="Screenshot 2025-09-10 at 11.19.43 PM.png" /></span></P><P>Enter Corporate IDP credentials - User: <STRONG>idpuser@test.com</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 11.20.13 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312519iFAB46A7DBAE44137/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 11.20.13 PM.png" alt="Screenshot 2025-09-10 at 11.20.13 PM.png" /></span></P><P>Login Successful to SAP BTP Application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 11.20.26 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312517i3B54AA656CED4B8D/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 11.20.26 PM.png" alt="Screenshot 2025-09-10 at 11.20.26 PM.png" /></span></P><P>In SAML assertion from IDP we can see - Groups are coming as part of SAML assertion.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.09.44 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312485iDCC8B02577DDDC04/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.09.44 PM.png" alt="Screenshot 2025-09-10 at 7.09.44 PM.png" /></span></P><P>When checked in Troubleshooting logs in IAS - We can see the same attributes.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.10.44 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312489i597C950F6F856EC0/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.10.44 PM.png" alt="Screenshot 2025-09-10 at 7.10.44 PM.png" /></span></P><P>Now in Corporate IDP - Enrich assertion attributes - to send Groups as Hogwarts_Groups to BTP application. In this scenario - Groups will be sent packaged as Hogwarts_Groups to Application which can be used for specific scenarios.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.12.08 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312488i8A855F84AF96B309/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.12.08 PM.png" alt="Screenshot 2025-09-10 at 7.12.08 PM.png" /></span></P><P>When we login - we can check in troubleshooting logs of IAS that expected attributes are sent.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 7.13.31 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312491i27B4B90E71BD9E76/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 7.13.31 PM.png" alt="Screenshot 2025-09-10 at 7.13.31 PM.png" /></span></P><H3 id="toc-hId--2145695813">Now when we enable Identity Fedration</H3><P>Enable identity fedration - in corporate IDP -> identity fedration.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.40.34 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312490iEDFA76BBE365F5AE/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.40.34 PM.png" alt="Screenshot 2025-09-10 at 8.40.34 PM.png" /></span></P><P>Now <U>Enrich assertion attributes in Corporate IDP don't work</U> - we will need to use another functionality called Default attributes in Applications in IAS. In below screenshot we can see that it didn't send any IDP attributes.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.44.05 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312493iE2984BF28CC1337F/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.44.05 PM.png" alt="Screenshot 2025-09-10 at 8.44.05 PM.png" /></span></P><P>Now Setup Default attributes in IAS application as shown in below screenshot - make sure you select corporate IDP in drop down menu to send the attributes from Corporate IDP</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.44.49 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312492iF4294A4294FF8CEC/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.44.49 PM.png" alt="Screenshot 2025-09-10 at 8.44.49 PM.png" /></span></P><P>Perform login to Application again</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.46.07 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312501i0BBB6642A77ED5F5/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.46.07 PM.png" alt="Screenshot 2025-09-10 at 8.46.07 PM.png" /></span></P><P>Now expected attributes are received by BTP application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.47.23 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312495i62D12CBF6CC07895/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.47.23 PM.png" alt="Screenshot 2025-09-10 at 8.47.23 PM.png" /></span></P><H3 id="toc-hId-1952757978">Scenario 2: Sending Hardcoded values to Applications using IAS</H3><H4 id="toc-hId-1462841466">When Identity Fedration is disabled</H4><P>Perform it in Corporate IDP -> Enrich assertion attributes</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.57.32 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312494iDC3C85CEFAF11EEB/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.57.32 PM.png" alt="Screenshot 2025-09-10 at 8.57.32 PM.png" /></span></P><P>Post successful login - we can check Hard coded values are sent to Application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.57.51 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312496i85BAB9D10BBA97AA/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.57.51 PM.png" alt="Screenshot 2025-09-10 at 8.57.51 PM.png" /></span></P><H4 id="toc-hId-1266327961">Identity fedration enabled</H4><P>IAS application -> Default Attributes -> Set Attrubtes</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 8.58.36 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312498iCAEF01D5E7D9DE70/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 8.58.36 PM.png" alt="Screenshot 2025-09-10 at 8.58.36 PM.png" /></span></P><P>Post successful login - we can check that Hard coded values are sent to BTP application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-10 at 9.04.55 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/312500i278A567EAF5A74A9/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-09-10 at 9.04.55 PM.png" alt="Screenshot 2025-09-10 at 9.04.55 PM.png" /></span></P><HR /><H2 id="toc-hId-1656620470"><span class="lia-unicode-emoji" title=":rocket:">🚀</span>Why It Matters</H2><UL><LI><P><STRONG><span class="lia-unicode-emoji" title=":link:">🔗</span>Centralization</STRONG>: Handle diverse SAP SaaS attribute needs from one place.</P></LI><LI><P><STRONG><span class="lia-unicode-emoji" title=":chart_increasing:">📈</span>Scalability</STRONG>: Onboard new services without remapping custom attributes everywhere.</P></LI><LI><P><STRONG><span class="lia-unicode-emoji" title=":hammer_and_wrench:">🛠</span>️ Maintainability</STRONG>: If tools change, update once in IAS—not in 5 different places.</P></LI></UL><P>Whether you’re setting up <STRONG>Datasphere <span class="lia-unicode-emoji" title=":bar_chart:">📊</span></STRONG>, <STRONG>Signavio 🟧</STRONG>, <STRONG>Kyma <span class="lia-unicode-emoji" title=":cyclone:">🌀</span></STRONG>, or other BTP tools, IAS gives you a clean, unified way to tailor attributes—without touching your corporate IdP or apps.</P><HR /><H2 id="toc-hId-1460106965"> <span class="lia-unicode-emoji" title=":sparkles:">✨</span><span class="lia-unicode-emoji" title=":deer:">🦌</span>🪄 Expecto Patronum 🪄<span class="lia-unicode-emoji" title=":deer:">🦌</span><span class="lia-unicode-emoji" title=":sparkles:">✨</span></H2><P> <span class="lia-unicode-emoji" title=":glowing_star:">🌟</span><span class="lia-unicode-emoji" title=":crystal_ball:">🔮</span>🧙<span class="lia-unicode-emoji" title=":male_sign:">♂️</span><span class="lia-unicode-emoji" title=":sparkles:">✨</span>🧝<span class="lia-unicode-emoji" title=":female_sign:">♀️</span><span class="lia-unicode-emoji" title=":glowing_star:">🌟</span><BR /><EM> — may your SAP magic always shine bright!</EM></P>2025-09-10T20:56:36.120000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/get-your-kyma-cluster-nat-gateway-ips/ba-p/14229143Get your Kyma-Cluster NAT Gateway IPs2025-09-30T13:44:29.935000+02:00marsteghttps://community.sap.com/t5/user/viewprofilepage/user-id/1630835<P>The SAP BTP, Kyma Runtime received an update that provides the NAT Gateway IP information directly in the Kyma Cluster. This makes it very easy to retrieve this information and use it for allow list and Firewall configuration. </P><P>The NAT Gateway IPs are now available in the ConfigMap "kyma-info" in the kyma-system namespace. </P><P>This makes it possible to retrieve it via the Dashboard as well as via the kubectl CLI and API: </P><P><STRONG><U>Dashboard:</U></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-26 at 15.01.19.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/321140iB1A2D87EE46E119E/image-size/medium?v=v2&px=400" role="button" title="Screenshot 2025-09-26 at 15.01.19.png" alt="Screenshot 2025-09-26 at 15.01.19.png" /></span></P><P><STRONG><U>kubectl CLI:</U></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-09-26 at 15.23.51.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/321144i247767BB1023E0D8/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="Screenshot 2025-09-26 at 15.23.51.png" alt="Screenshot 2025-09-26 at 15.23.51.png" /></span></P>2025-09-30T13:44:29.935000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/sap-build-faq-commercials-getting-started-and-more/ba-p/14233744SAP Build FAQ: Commercials, Getting Started and More2025-10-03T15:08:38.806000+02:00mark_wrighthttps://community.sap.com/t5/user/viewprofilepage/user-id/13366<P><SPAN>This FAQ provides an overview of SAP’s commercial offering of SAP Build. It covers the available commercial models for SAP Build and provides answers to questions that we most often hear regarding SAP Build commercial model, onboarding, metering and more.</SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>What is the SAP Build Unified Offering? </SPAN></STRONG><SPAN> </SPAN></P><P><SPAN>SAP Build has been designed as the optimal way to extend SAP S/4HANA Cloud and other business applications. Thousands of customers are already experiencing up to 3x faster development speeds with SAP Build according to </SPAN><A href="https://www.sap.com/documents/2025/02/5cf902d0-f37e-0010-bca6-c68f7e60039b.rc.html" target="_blank" rel="noopener noreferrer"><SPAN>recent analyst research</SPAN></A><SPAN> — and now we’ve made it even better.</SPAN><SPAN> </SPAN></P><P><SPAN>Combined with deep technical integration, SAP Builds unified offering empowers customers to quickly extend and personalize their business solutions using AI-powered application development and automation, while maintaining a clean core and eliminating additional licensing or budgeting complexity.</SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>What is included in the Unified SAP Build Offering? </SPAN></STRONG><SPAN> </SPAN></P><P><SPAN> </SPAN><SPAN>Customers can access the full range of SAP Build capabilities through just four distinct SKUs. </SPAN><SPAN> </SPAN></P><UL><LI><STRONG><SPAN>SAP Build Base User</SPAN></STRONG><SPAN> is for end users who need to access applications, gain insights for day-to-day business needs, and approve tasks.</SPAN><SPAN> </SPAN></LI></UL><UL><LI><STRONG><SPAN>SAP Build Premium User</SPAN></STRONG> <SPAN>includes all the features of the base user license, with added capabilities for end users to author content, monitor processes, customize pages and deploy attended bots.</SPAN><SPAN> </SPAN></LI></UL><UL><LI><STRONG><SPAN>SAP Build Developer </SPAN></STRONG><SPAN>includes all the features of the Premium User license, plus advanced capabilities for developers and architects who need full access to deployed assets.</SPAN><SPAN> </SPAN></LI></UL><UL><LI><STRONG><SPAN>SAP Build Runtime</SPAN></STRONG> <SPAN>Application hosting and lifecycle management services that support the creation and execution for dev/test as well as production environments</SPAN><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>How do I find out what is included in SAP Build? </SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>For a list of services that are included in SAP Build you can visit the SAP Discovery Center, for SAP Build following this </SPAN><A href="https://discovery-center.cloud.sap/serviceCatalog/sap-build?region=all&tab=service_plan" target="_blank" rel="noopener nofollow noreferrer"><SPAN>link</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>To find out what is in each SKU, Base, Premium, Developer and Runtime you can visit the SAP Build Pricing Page </SPAN><A href="https://www.sap.com/products/technology-platform/build/pricing.html" target="_blank" rel="noopener noreferrer"><SPAN>here</SPAN></A><SPAN>.</SPAN><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>What commercial models are SAP Build provided in? </SPAN></STRONG><SPAN> </SPAN></P><P>Consumption Based Model: </P><UL><LI><A href="https://discovery-center.cloud.sap/serviceCatalog/sap-build?region=all&tab=service_plan&commercialModel=btpea" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP BTP Enterprise Agreement (BTPEA)</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><A href="https://discovery-center.cloud.sap/serviceCatalog/sap-build?region=all&tab=service_plan&commercialModel=cpea" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Cloud Enterprise Agreement (CPEA)</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><A href="https://discovery-center.cloud.sap/serviceCatalog/sap-build?region=all&tab=service_plan&commercialModel=payg" target="_blank" rel="noopener nofollow noreferrer"><SPAN>Pay-As-You-Go for SAP BTP</SPAN></A><SPAN> </SPAN></LI></UL><P>Subscription Based Commercial Mode: </P><UL><LI><A href="https://discovery-center.cloud.sap/serviceCatalog/sap-build?region=all&tab=service_plan&commercialModel=subscription" target="_blank" rel="noopener nofollow noreferrer"><SPAN>Service Plan for SAP Build Subscription</SPAN></A><SPAN> <BR /></SPAN></LI></UL><P>SAP Cloud ERP Private Edition: </P><UL><LI><SPAN>SAP Build Entitlements are included in the </SPAN><A href="https://www.sap.com/products/erp/rise/how-to-buy.html" target="_blank" rel="noopener noreferrer"><SPAN>SAP Cloud ERP Edition</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Find more about SAP Cloud ERP Edition </SPAN><A href="https://news.sap.com/2025/04/sap-cloud-erp-private-package-accelerate-transformation/" target="_blank" rel="noopener noreferrer"><SPAN>here</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Find out more about the SAP Build offering in SAP Cloud ERP Private Edition </SPAN><A href="https://news.sap.com/2025/04/sap-build-sap-s4hana-cloud-simplify-development/" target="_blank" rel="noopener noreferrer"><SPAN>here</SPAN></A><SPAN> </SPAN></LI></UL><P>SAP Business Suite Packages:<SPAN> </SPAN></P><UL><LI><SPAN>Entitlements are provided in several of the </SPAN><A href="https://www.sap.com/products/business-suite/pricing.html" target="_blank" rel="noopener noreferrer"><SPAN>SAP Business Suite packages</SPAN></A><SPAN> </SPAN></LI></UL><P>Partner:<SPAN> </SPAN></P><UL><LI><SPAN>SAP Build offers partners </SPAN><A href="https://news.sap.com/2025/08/partners-free-sap-build-licenses-tdd-ai-powered-intelligent-applications/" target="_blank" rel="noopener noreferrer"><SPAN>free access to SAP Build and other BTP Services.</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><A href="https://discovery-center.cloud.sap/protected/index.html#/serviceCatalog/sap-build?commercialModel=tdd-payg&tab=service_plan&region=all" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Build Test, Demo Development</SPAN></A><SPAN> (the site requires you to be logged in as an SAP Partner)</SPAN><SPAN> <BR /></SPAN><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>How do I get started with SAP Build? </SPAN></STRONG><SPAN> </SPAN></P><P><SPAN>SAP Build uses SAP BTPs Cloud Integration Automation (CIA) to quickly get customers and partners up and going on SAP Build. Find information on how to setup SAP Build </SPAN><A href="https://help.sap.com/docs/build-service/build-service-guide/initial-setup-of-sap-build" target="_blank" rel="noopener noreferrer"><SPAN>here</SPAN></A><SPAN>. </SPAN><SPAN>For detailed instructions on the activation process, please share this </SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-activate-your-free-sap-build-entitlements-with-your-sap-s-4hana/ba-p/13736765" target="_blank"><SPAN>blog post</SPAN></A><SPAN> with your technical team</SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>Does SAP Build include Joule Studio and Joule for Developer? </SPAN></STRONG><SPAN> </SPAN></P><P><SPAN>Yes, SAP Build provides Joule for Developer and Joule Studio. Joule Studio is provided with the SAP Build Developer offering. Joule for Developer features are included, but will need to enable this through the free voucher SKUs. You can find more information on Joule for Developer </SPAN><A href="https://community.sap.com/t5/application-development-and-automation-blog-posts/sap-joule-for-developers-faq-features-access-and-more/ba-p/14045316" target="_blank"><SPAN>here</SPAN></A><SPAN> and Joule Studio </SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/unlock-sap-joule-for-developers-claim-your-free-access-today/ba-p/14183158" target="_blank"><SPAN>here</SPAN></A><SPAN>.</SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>Are there specific service plans that are exclusive to the unified SAP Build offering?</SPAN></STRONG><SPAN> </SPAN></P><P><SPAN>The Joule Studio service is only offered in the SAP Build Developer SKU. Joule for Developer needs to be enabled through the free voucher SKU's and then can only be used with the SAP Build offering, SAP Build Code and Joule for Developer, BTP ABAP Environment. Visual Cloud Functions in SAP Build Apps is not available in the SAP Build unified SKU.</SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>Can I migrate from the previous SAP Build SKU’s to the new SAP Build SKU? </SPAN></STRONG><SPAN> <BR /></SPAN><SPAN> <BR /></SPAN><SPAN>Upgrade you SAP Build licenses to access enhanced features and tools. Use build-specific plans for improved efficiently and customization in your projects. </SPAN><SPAN> </SPAN></P><P><SPAN>For migration of services please refer to this </SPAN><A href="https://help.sap.com/docs/build-service/build-service-guide/changing-service-plans" target="_blank" rel="noopener noreferrer"><SPAN>help</SPAN></A><SPAN> </SPAN></P><P><SPAN> </SPAN><STRONG><SPAN>Can I use both the Old and New Service plans within the same subaccount?</SPAN></STRONG><SPAN> </SPAN></P><P><SPAN> </SPAN><SPAN>The old services cannot be enabled in the same subaccount as the new Build services. You will need to do a migration per the above migration guide.</SPAN><SPAN> </SPAN></P><P><SPAN> </SPAN><STRONG><SPAN>How does metering work, for example if I use both SAP Build Base User and SAP Build Developer capabilities?</SPAN></STRONG><SPAN> </SPAN></P><P><SPAN>SAP Build operates on a metering model that relies on specific user roles to determine access and functionality within the platform, which include developer, base user, and premium user. Each user must have a global user ID created by an administrator, who also assigns the appropriate role collection to ensure that the correct authorization is granted.</SPAN><SPAN> </SPAN></P><P><SPAN>This role assignment is critical; for instance, an SAP Build base user shouldn't be able to create new processes within SAP Build, as such permissions could lead to unintended alterations or disruptions in workflows. By understanding and correctly implementing these roles, organizations can effectively manage user capabilities while maintaining the integrity and security of their SAP Build environment.</SPAN><SPAN> </SPAN></P><P><SPAN>For more detailed information on metering and roles visit </SPAN><A href="https://help.sap.com/docs/build-service/build-service-guide/service-plans-and-metering" target="_blank" rel="noopener noreferrer"><SPAN>this</SPAN></A><SPAN> help location.</SPAN><SPAN> </SPAN></P><P><SPAN> </SPAN><STRONG><SPAN>How can I learn more about SAP Build? </SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN> </SPAN><STRONG><SPAN>SAP Build Basic Trial</SPAN></STRONG><SPAN>–Get hands-on experience with a free, 30-day trial, following a </SPAN><A href="https://www.sap.com/products/technology-platform/build/trial.html" target="_blank" rel="noopener noreferrer"><SPAN>step-by-step tutorial</SPAN></A><SPAN> on SAP Build.</SPAN> </LI><LI><STRONG><SPAN>SAP Discovery Center</SPAN></STRONG><SPAN>–Dive deeper with step-by-step guidance and best practices for implementing use cases. </SPAN><SPAN> </SPAN></LI><LI><STRONG><SPAN>SAP Learning</SPAN></STRONG><SPAN> –Develop SAP skills for free, anywhere, anytime, and at your own pace:</SPAN><SPAN> </SPAN><A href="https://learning.sap.com/products/sap-build" target="_blank" rel="noopener noreferrer"><SPAN>SAP Build</SPAN></A><SPAN> </SPAN></LI></UL><P><SPAN> </SPAN></P><P><SPAN> </SPAN></P>2025-10-03T15:08:38.806000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/bridging-your-on-prem-docker-registry-with-kyma-introducing-the-registry/ba-p/14250659Bridging Your On‑Prem Docker Registry with Kyma: Introducing the Registry Proxy Community Module2025-10-23T13:55:02.107000+02:00Grego14https://community.sap.com/t5/user/viewprofilepage/user-id/12082<DIV class="lia-align-justify" style="text-align : justify;"><SPAN>Hybrid architectures are the new normal. Yet one persistent friction point remains: securely consuming container images that live deep inside an on‑premise network without punching risky holes in the firewalls or running clumsy mirroring jobs. Today, we’re excited to introduce Registry Proxy - a Kyma community module that lets your cluster pull images from locked‑down, internal Docker/OCI registries while keeping them non‑public.</SPAN></DIV><DIV class="lia-align-justify" style="text-align : justify;"> </DIV><DIV class="lia-align-justify" style="text-align : justify;">The key benefits of this solution are:</DIV><DIV><DIV><UL class="lia-align-justify" style="text-align : justify;"><LI><SPAN>Security First: No inbound exposure of your internal registry; all traffic originates inside the cluster.</SPAN></LI><LI><SPAN>Cost Optimization: Eliminates the need to set up redundant Docker registry infrastructure.</SPAN></LI></UL><P class="lia-align-justify" style="text-align : justify;"> </P><DIV><H2 id="toc-hId-1763607984"><SPAN>Meet the Kyma Community Registry Proxy </SPAN>Module</H2><DIV><DIV class="lia-align-justify" style="text-align : justify;">The<SPAN> Registry Proxy module installs a lightweight operator and controller into your Kyma cluster. It provides a Kubernetes‑native abstraction for defining secure connections to one or more on‑prem registries. Workloads continue referencing familiar image tags; the module handles the secure retrieval path transparently.</SPAN></DIV><DIV class="lia-align-justify" style="text-align : justify;"> </DIV><DIV><DIV><H2 id="toc-hId-1567094479"><SPAN>Powered by SAP Cloud Connector</SPAN></H2><DIV><DIV class="lia-align-justify" style="text-align : justify;"><SPAN>Under the hood, the module leverages SAP Cloud Connector technology to form an outbound, secure tunnel from the cluster to the on‑prem environment.</SPAN></DIV><DIV class="lia-align-justify" style="text-align : justify;"> </DIV><DIV><DIV><H2 id="toc-hId-1370580974"><SPAN>Defining Connections with a Custom Resource</SPAN></H2><DIV><DIV class="lia-align-justify" style="text-align : justify;"><SPAN>Connections to internal registries are declared via the </SPAN><FONT face="courier new,courier"><SPAN>Connection</SPAN></FONT><SPAN> custom resource (CR): </SPAN><FONT face="courier new,courier"><SPAN>connections.registry-proxy.kyma-project.io</SPAN></FONT><SPAN>.</SPAN></DIV><DIV class="lia-align-justify" style="text-align : justify;"> </DIV><DIV class="lia-align-justify" style="text-align : justify;">See the following simple example (illustrative only):</DIV><DIV class="lia-align-justify" style="text-align : justify;"> </DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV><pre class="lia-code-sample language-yaml"><code>apiVersion: registry-proxy.kyma-project.io/v1alpha1
kind: Connection
metadata:
name: corp-registry
spec:
registry:
host: internal-registry.corp.local</code></pre><P> </P><DIV><DIV><SPAN>The operator reconciles this CR, validates reachability through Cloud Connector, and exposes status conditions reflecting readiness and Node Port value to be used when pulling the image. Your workloads then use image references pointing at </SPAN><FONT face="courier new,courier"><SPAN>localhost:{NodePort}/...</SPAN></FONT><SPAN> as if the registry were locally reachable.</SPAN></DIV><DIV> </DIV><DIV><STRONG>IMPORTANT: </STRONG>The Registry Proxy module is a community module. <SPAN>Community modules are openly developed Kyma extensions that live outside the core, officially supported module set. They e</SPAN><SPAN>ncourage experimentation and early adopter feedback, </SPAN><SPAN>iterate quickly without waiting for core release cycles, and m</SPAN><SPAN>ay graduate to fully supported modules based on adoption and stability.</SPAN><DIV><DIV><SPAN>Expect transparent docs, examples, and active feedback, but remember that community modules are not subject to any service level agreement (SLA). For more information, see </SPAN><A href="https://kyma-project.io/#/community-modules/user/README" target="_self" rel="nofollow noopener noreferrer"><SPAN>Community Modules</SPAN></A><SPAN>.</SPAN></DIV><DIV> </DIV><DIV><H2 id="toc-hId-1174067469"><SPAN>Installing the Registry Proxy Module</SPAN></H2><DIV><DIV><SPAN>Installation is streamlined via Kyma CLI, which already supports community modules. Make sure you have the </SPAN><A href="https://kyma-project.io/#/cli/user/README?id=install-kyma-cli" target="_self" rel="nofollow noopener noreferrer"><SPAN>CLI installed</SPAN></A><SPAN>.</SPAN></DIV><DIV><OL><LI><SPAN>Run the following command to prepare the module:</SPAN></LI></OL></DIV></DIV></DIV></DIV></DIV></DIV><pre class="lia-code-sample language-bash"><code>kyma module pull registry-proxy --version 0.14.0</code></pre><DIV><DIV><SPAN> 2. Add the module to your Kyma setup:</SPAN></DIV></DIV><pre class="lia-code-sample language-bash"><code>kyma module add registry-proxy --origin default/registry-proxy-0.14.0 --default-cr</code></pre><DIV><H2 id="toc-hId-977553964"> </H2><H2 id="toc-hId-781040459"><SPAN>Getting Started: Hands-On Tutorial</SPAN></H2><DIV><DIV><SPAN>Ready to try it? Follow the </SPAN><A href="https://kyma-project.io/#/registry-proxy/user/tutorials/01-10-registry-proxy-connection" target="_self" rel="nofollow noopener noreferrer"><SPAN>Create Kyma Registry Proxy Connection and a Target Deployment</SPAN></A><SPAN> tutorial.</SPAN></DIV><BR /><DIV><SPAN>You’ll learn:</SPAN></DIV><UL><LI><SPAN>How to configure SAP Cloud Connector for secure outbound registry access.</SPAN></LI><LI><SPAN>How to craft and apply a </SPAN><SPAN><FONT face="courier new,courier">Connection</FONT></SPAN><SPAN> CR.</SPAN></LI><LI><SPAN>How to deploy a sample workload pulling a private, on‑prem image.</SPAN></LI><LI><SPAN>How to inspect status conditions to confirm a healthy connection.</SPAN></LI></UL><DIV><H2 id="toc-hId-584526954"><SPAN>Call to Action</SPAN></H2><DIV><DIV><SPAN>Spin up your Kyma environment, install the Registry Proxy community module with Kyma CLI, define a connection, and pull your first internal image securely, without registry exposure. Then tell us what worked, what didn’t, and what you need next.</SPAN></DIV><BR /><DIV><SPAN>We invite you to:</SPAN></DIV><UL><LI><SPAN><A href="https://github.com/kyma-project/registry-proxy/issues" target="_self" rel="nofollow noopener noreferrer">Open issues</A> for feature requests, edge cases, or bugs.</SPAN></LI><LI>Share deployment stories, such as network topologies and performance observations.</LI><LI><SPAN>Suggest CR field improvements or status semantics.</SPAN></LI><LI><SPAN>Submit PRs for tests, docs, and example manifests.</SPAN></LI><LI><SPAN>Go through <A href="https://kyma-project.io/#/registry-proxy/user/tutorials/01-10-registry-proxy-connection" target="_self" rel="nofollow noopener noreferrer">the tutorial.</A></SPAN></LI></UL></DIV></DIV></DIV></DIV>2025-10-23T13:55:02.107000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/sap-teched2025-xp264-explore-how-to-run-cloud-native-applications-on-sap/ba-p/14255917SAP TechEd2025-XP264- Explore how to run cloud-native applications on SAP BTP, Kyma runtime2025-10-29T10:33:13.323000+01:00quovadishttps://community.sap.com/t5/user/viewprofilepage/user-id/743<DIV class=""><DIV class=""><H2 id="toc-hId-1763759696"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="TechEd_2025.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/333750iBE2279AE49FCA51E/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="TechEd_2025.jpg" alt="TechEd_2025.jpg" /></span></H2><H2 id="toc-hId-1567246191">Description</H2></DIV><P>A sneak preview of the material for the SAP TechEd 2025 session catalog number XP264 -<SPAN> </SPAN><A href="https://www.sap.com/events/teched/berlin/flow/sap/te25/catalog-inperson/page/catalog/session/1749035076180001oik0" target="_blank" rel="noopener noreferrer"><STRONG>Explore how to run cloud-native applications on SAP BTP, Kyma runtime.</STRONG></A></P><UL><LI>Day-2 Operations: Management, Maintenance, Monitoring, and Optimization</LI><LI>Technical connectivity to public and private (on-premise) systems</LI></UL><P>The <A title="teched2025-XP264" href="https://github.com/SAP-samples/teched2025-XP264" target="_blank" rel="noopener nofollow noreferrer">repository</A> with the session material has been public since Monday, November 3rd.</P><P>See you there in Bangalore!</P><H2 id="toc-hId-1370732686"> </H2><H2 id="toc-hId-1174219181">Overview</H2></DIV><P>This session introduces attendees to<SPAN> </SPAN><STRONG>Day-2</STRONG><SPAN> </SPAN>operations with SAP BTP, Kyma runtime - a managed kubernetes environment to help connect and extend enterprise applications in the cloud-native world.</P><TABLE border="1"><TBODY><TR><TD><DIV><P>In a nutshell, SAP BTP, Kyma Runtime (SKR) is a managed k8s runtime environment with a kubernetes cluster based on Gardener and a set of building blocks called<SPAN> </SPAN><STRONG>Kyma modules</STRONG>.</P><P>Each instance of SAP BTP Kyma runtime environment is a single k8s gardener cluster with its own set of kyma modules.<BR />Subsequently, all these clusters are managed by a central Kyma Control Plane (KCP) that orchestrates the lifecycle of</P><UL><LI>the underlying hyperscaler project,</LI><LI>the Gardener Cluster,</LI><LI>and the Kyma modules.</LI></UL><HR /><DIV class=""><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="quovadis_0-1761729555717.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/333757iF2BCE03DB4B0E4DD/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="quovadis_0-1761729555717.png" alt="quovadis_0-1761729555717.png" /></span><P> </P></DIV></DIV><DIV class=""> </DIV></DIV></TD></TR></TBODY></TABLE><DIV class=""><H3 id="toc-hId-1106788395">During the session you will learn</H3></DIV><UL><LI><FONT color="#008080">how to operate applications with SAP BTP, Kyma runtime and discover the power of smooth integration with cloud applications and on-premise systems using the advanced connectivity features.</FONT></LI><LI><FONT color="#008080">to explore operational best practices from mastering troubleshooting techniques and intelligent root-cause analysis to event-driven autoscaling that adapts to your business needs in real time.</FONT></LI><LI><FONT color="#008080">about BTP multitenant applications with SAP BTP, Kyma runtime.</FONT></LI></UL><DIV class=""><H2 id="toc-hId-781192171">Requirements</H2></DIV><P>The requirements to follow the exercises in this repository are...</P><DIV class=""><P class=""><STRONG>Important</STRONG></P><UL><LI><FONT color="#FF6600">You must be able to fork the repository and activate the github actions at the fork. This is mandatory for this session! </FONT></LI><LI><FONT color="#FF6600">Thus, you may need a GitHub user.</FONT><BR /><FONT color="#FF6600">If you haven't got one yet, please<SPAN> </SPAN><A href="https://github.com/SAP-samples/teched2025-XP264/blob/main/exercises/ex0#exercise-00---sign-up-for-a-new-github-account" target="_blank" rel="noopener nofollow noreferrer">sign-up</A><SPAN> </SPAN>on GitHub before the workshop or at the very beginning of the session.</FONT></LI></UL></DIV><DIV class=""><P class=""><STRONG>Important</STRONG></P><P>The session content is provided<SPAN> </SPAN><EM>exclusively</EM><SPAN> </SPAN>on the SAP-Samples github, and many excercises have been implemented as CI/CD<SPAN> </SPAN><A href="https://docs.github.com/en/actions/get-started/understand-github-actions" target="_blank" rel="noopener nofollow noreferrer">Github Actions worflows</A><SPAN> </SPAN>(GHA).</P></DIV><DIV class=""><P>Security is paramount. With the Github Action IDP-delegated flow, there is no more need to provide kubernetes and btp credentials when using<SPAN> </SPAN><A href="https://docs.github.com/en/actions/concepts/security/openid-connect#benefits-of-using-oidc" target="_blank" rel="noopener nofollow noreferrer">github actions</A>.</P></DIV><UL><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>The Github Action workflows acting as the<SPAN> </SPAN><A href="https://docs.github.com/en/actions/concepts/security/openid-connect" target="_blank" rel="noopener nofollow noreferrer">OIDC provider</A>.</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>All the kubernetets environments in the landscape are configured to trust GitHub’s token identity provider. They come with the pre-configured OIDC applications leveraging the built-in Gardener OIDC shoot extension.</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>SAP Cloud Identity Services acting as a platform IDP on the BTP side of the house has been federated with the Github actions OIDC Provider</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>As a result, the very short-lived<SPAN> </SPAN><A href="https://docs.github.com/en/actions/concepts/security/openid-connect#understanding-the-oidc-token" target="_blank" rel="noopener nofollow noreferrer">credentials</A><SPAN> </SPAN>are being fetched and rotated automatically on the behalf of the repository user for both kubernetes and btp platform operations.</P></LI><LI><P>The good news is you may run the<SPAN> </SPAN><STRONG>GHA-based exercises</STRONG><SPAN> </SPAN>directly, from your forked repository, in a browser on the<SPAN> </SPAN><STRONG>provided</STRONG><SPAN> </SPAN>teched laptop.</P></LI></UL><DIV class=""><P class=""><STRONG>Disclaimer</STRONG></P><P>Personal devices should not be used for this session. Hands-on session participants will be using Windows laptops provided by the organizers.</P><P><STRONG>What to expect from this session?</STRONG></P></DIV><UL><LI><P><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>Run and take time to inspect the results of the built-in automations. Ask questions. And if you feel like doing, go ahead and create your own variants as well.</P></LI><LI><P><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>The recommendation is, however, to go with the flow of the exercises, inspect the results, ask questions and leave the rest for the homework.</P></LI><LI><P>For all other exercises which may require a terminal use, you may use the built-in VSCode terminal window.</P></LI><LI><P>As this is a Day-2 operation brief, the entire cloud landscape has been pre-configured with a number of shared components, for instance:</P><UL><LI><span class="lia-unicode-emoji" title=":link:">🔗</span>SAP Cloud Identity Services (SAP IAS)</LI><LI><span class="lia-unicode-emoji" title=":link:">🔗</span>SAP Cloud Logging</LI><LI><span class="lia-unicode-emoji" title=":link:">🔗</span>SAP HANA Cloud</LI><LI><span class="lia-unicode-emoji" title=":link:">🔗</span>ArgoCDaaS</LI><LI><span class="lia-unicode-emoji" title=":link:">🔗</span>SAP BTP Connectivity services - Destination service, Connectivity service, Cloud Connector, Connectivity Proxy and Transparent Proxy</LI><LI><span class="lia-unicode-emoji" title=":link:">🔗</span>S4/HANA On-premise (private cloud) with the Cloud Connector in the private network.</LI></UL></LI><LI><P>All of the SAP Kyma environments have been configured to the same template (via terraform automation).</P></LI><LI><P>Last but not least, you will be able to<SPAN> </SPAN><EM>play</EM><SPAN> </SPAN>with a pre-deployed SAP Build multitenant application deployed to one of the kyma clusters.</P></LI><LI>Have fun!</LI></UL><TABLE border="1" width="100%"><TBODY><TR><TD width="100%"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Slide5.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337581i721F849FDB8982F5/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Slide5.jpg" alt="Slide5.jpg" /></span></TD></TR></TBODY></TABLE><DIV class=""><P> </P></DIV>2025-10-29T10:33:13.323000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/influence-the-next-wave-of-sap-btp-innovation-join-the-sap-customer/ba-p/14257344Influence the Next Wave of SAP BTP Innovation: Join the SAP Customer Engagement Initiative 2025-32025-10-30T17:31:53.418000+01:00nadine_phttps://community.sap.com/t5/user/viewprofilepage/user-id/762608<P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BTP.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/334440i5E6F1D6551ABBFF3/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="BTP.png" alt="BTP.png" /></span></P><P><STRONG>Transforming Enterprise Innovation with SAP Business Technology Platform (SAP BTP)</STRONG></P><P>SAP BTP is revolutionizing how businesses innovate. This integrated platform combines application development, automation, data and analytics, integration, and AI, empowering enterprises to achieve new levels of efficiency and intelligence.</P><P>Now, you can be a part of this transformation.</P><P>The third cycle of the SAP Customer Engagement Initiative for 2025 is here, offering you the opportunity to shape the future of SAP BTP. As a customer or partner, you’re invited to collaborate directly with SAP developers and product teams to influence upcoming features, tools, and innovations.</P><P>This is not just about early access; it’s a chance to steer the direction of enterprise technology.</P><P><STRONG>Don’t wait - registration is open only until November 14, 2025.</STRONG></P><P><SPAN>Check out the full list </SPAN><A href="https://influence.sap.com/sap/ino/#/campaign/880" target="_blank" rel="noopener noreferrer">here</A><SPAN> or follow the links below to discover the exciting opportunities:</SPAN></P><UL><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4036" target="_blank" rel="noopener noreferrer">Adoption of the SAP Job Scheduling service and it's new capabilities</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4066" target="_blank" rel="noopener noreferrer">AI-assisted message monitoring agent for SAP Integration Suite</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4020" target="_blank" rel="noopener noreferrer">Attachment handling made easy with SAP Document Management service CAP Plugin</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4032" target="_blank" rel="noopener noreferrer">CAP Apps and SAP BTP Kyma Runtime Environment</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4028" target="_blank" rel="noopener noreferrer">Effortlessly manage you documents using SAP Document Management service mobile application</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4027" target="_blank" rel="noopener noreferrer">Improving the Admin's and Solution Architect's Experience on SAP BTP</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4062" target="_blank" rel="noopener noreferrer">SAP Discovery Center: Long-Term User Research Initiative</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4022" target="_blank" rel="noopener noreferrer">Shape the future of job orchestration capabilities in SAP Build Process Automation</A></U></LI><LI><U><A href="https://influence.sap.com/sap/ino/#campaign/4041" target="_blank" rel="noopener noreferrer">The impact of AI on SAP BTP users</A></U></LI></UL><P>Let’s build the future together!</P><P>Innovation thrives through collaboration. By participating in the SAP Customer Engagement Initiative projects, you help SAP develop more effective and relevant solutions for businesses like yours. This is your chance to impact the future of enterprise technology.</P><P>Don’t miss out - sign up today at<SPAN> </SPAN><A href="http://influence.sap.com/" target="_blank" rel="noopener noreferrer">influence.sap.com</A><SPAN> </SPAN>and be a part of the SAP Customer Engagement Initiative Cycle 3 in 2025!</P><P>Warm regards,</P><P>Your SAP Customer Engagement Initiative Team</P><P><EM>Follow-up after registration: When you register for a project, you will be invited to an introductory call with the SAP project lead. Participation beyond this point is optional and typically governed by the <A href="https://d.dam.sap.com/a/MvteHxp/Public%20Info%20on%20FBA_09_2024.pdf?rc=10&inline=true" target="_blank" rel="noopener noreferrer">Feedback Agreement with SAP</A>.</EM></P>2025-10-30T17:31:53.418000+01:00https://community.sap.com/t5/sap-learning-blog-posts/preparing-for-sap-c-cpe-here-s-how-i-m-studying-each-section-without/ba-p/14259621Preparing for SAP C_CPE? Here’s How I’m Studying Each Section Without Feeling Overwhelmed2025-11-04T15:23:22.635000+01:00Chahathttps://community.sap.com/t5/user/viewprofilepage/user-id/1574359<P>Whenever I start learning something new, I like to have everything in order.<BR />Before I even open the first tutorial, I plan what I’ll study first, what comes next, and how I’ll track it.</P><P>Recently, I started preparing for the SAP C_CPE (SAP Certified Associate - Backend Developer - SAP Cloud Application Programming Model) certification. Since this exam covers a mix of BTP architecture, SAP BAS, CAP, Side by side extensions, Cloud Foundry & Kyma Runtime it can easily feel like too much at once. So I created a simple structure to move step by step without feeling lost.</P><P>I began with the learning about BTP, and doing hands on by following SAP Learning Journeys, creating subaccount and adding entitlements and services (It gave me a very clear understanding of BTP architecture) and then Developing appliaction using high productivity tools of SAP BAS, Cloud Application Programming Model (CAP) because it’s the foundation of most topics in this certification. I’m spending around two weeks learning about CDS models, service layers and how everything connects in a CAP project. I’m following the official SAP Learning Journey<SPAN> </SPAN><A class="" title="https://learning.sap.com/certifications/sap-certified-associate-backend-developer-sap-cloud-programming-model" href="https://learning.sap.com/certifications/sap-certified-associate-backend-developer-sap-cloud-programming-model" target="_blank" rel="noreferrer noopener">https://learning.sap.com/certifications/sap-certified-associate-backend-developer-sap-cloud-program…...</A></P><P>My next focus is Cloud Foundry. I’ll spend about a week learning how to efficiently develop, run, and manage cloud-native applications on SAP BTP, Cloud Foundry Runtime.</P><P>After that, I’ll move to Side by side extention on BTP. This will cover deploying extension and integrating the app into SAP Build Work Zone.</P><P>The next stage is Developing Appliactions in Kyma Environment. I’ll take about two weeks to explore a comprehensive understanding of Kubernetes and to orchestrate the deployment of the applications in the cloud. </P><P>Finally, I’ll study Advanced Extensions with SAP Cloud SDK for about two more weeks. These are slightly advanced topics but very useful for understanding to develop and integrate Java, JavaScript, and TypeScript extension applications for SAP solutions like SAP S/4HANA Cloud Public Edition.</P><P>So in short, this will be my roadmap-</P><P><STRONG>Recommended Study Sequence</STRONG></P><P>Here’s the order I suggest, from foundational to more advanced :</P><P><STRONG>1.</STRONG><STRONG>Exploring SAP Business Technology Platform 5hrs (link :<SPAN> </SPAN><A class="" title="https://learning.sap.com/courses/exploring-sap-business-technology-platform" href="https://learning.sap.com/courses/exploring-sap-business-technology-platform" target="_blank" rel="noreferrer noopener">https://learning.sap.com/courses/exploring-sap-business-technology-platform)</A></STRONG></P><UL><LI>This gives you a broad overview of the entire platform (services, architecture, what BTP is). Good for building your base understanding.</LI><LI>So start here.</LI></UL><P><STRONG>2.Develop Full‑Stack Applications Using Productivity Tools in SAP Business Application Studio 8hrs (<A class="" title="https://learning.sap.com/learning-journeys/develop-full-stack-applications-using-productivity-tools-in-sap-business-application-studio" href="https://learning.sap.com/learning-journeys/develop-full-stack-applications-using-productivity-tools-in-sap-business-application-studio" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/develop-full-stack-applications-using-productivity-tools-in-sap-business-application-studio)</A></STRONG></P><P><STRONG>3.Develop Applications on SAP BTP, Cloud Foundry Runtime 4hrs(<A class="" title="https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime" href="https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime)</A></STRONG></P><UL><LI>The Cloud Foundry runtime is a major runtime environment in BTP. Understanding how to build and deploy there is critical. </LI></UL><P><STRONG>4.Build Side‑by‑Side Extensions on SAP BTP 8hrs (<A class="" title="https://learning.sap.com/learning-journeys/build-side-by-side-extensions-on-sap-btp" href="https://learning.sap.com/learning-journeys/build-side-by-side-extensions-on-sap-btp" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/build-side-by-side-extensions-on-sap-btp)</A></STRONG></P><UL><LI>After tooling and platform basics, you dive into extension scenarios (for example side-by-side extensions of S/4HANA using CAP). This aligns closely with CAP certification topics.</LI></UL><P><STRONG>5.Developing Applications in SAP BTP, Kyma Runtime 8hrs(<A class="" title="https://learning.sap.com/learning-journeys/developing-applications-in-sap-btp-kyma-runtime" href="https://learning.sap.com/learning-journeys/developing-applications-in-sap-btp-kyma-runtime" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/developing-applications-in-sap-btp-kyma-runtime)</A></STRONG></P><UL><LI>Kyma Runtime is more advanced (Kubernetes, microservices, event-mesh) and often sits on top of foundational knowledge. </LI></UL><P><STRONG>6.Develop Advanced Extensions with SAP Cloud SDK 11hrs (<A class="" title="https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk" href="https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk)</A></STRONG></P><P>This is relatively specialized/advanced (SAP Cloud SDK, perhaps custom libraries, integrations). Once you’ve mastered the fundamentals above, you go here.</P><P>By the end of this plan, I’ll go through a short revision period with mock questions and quick notes from my learning.</P><P>This structured approach keeps my study plan clear and prevents me from feeling overwhelmed.<BR />I study for two to four hours a day which feels realistic, and the small milestones make it easier to stay consistent.</P><P>If you’re also preparing for C_CPE, it really helps to make your own sequence instead of jumping randomly between topics. The Learning Journeys are excellent resources, but having a personal roadmap makes a big difference.</P><P>I’d love to hear how others are preparing for this certification too.<BR />What topics are you finding most challenging so far and how are you managing the learning</P>2025-11-04T15:23:22.635000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/sal-sap-integrity-protection-format-secured-with-distributed-ledger/ba-p/14260756SAL: SAP 'Integrity Protection Format' secured with Distributed Ledger Technology on SAP BTP Kyma 🚀2025-11-04T21:48:39.476000+01:00AndySilveyhttps://community.sap.com/t5/user/viewprofilepage/user-id/1397601<P>Did you know,</P><P>the<EM> S/4HANA SAP Audit Log (SAL) </EM></P><P>has a configuration, </P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">'Integrity Protection Format',</P><P>which enables (malicious) modifications to be detected:</P><P><A href="https://me.sap.com/notes/2033317" target="_blank" rel="noopener noreferrer">2033317 - Integrity protection format for Security Audit Log - SAP for Me</A></P><P><A href="https://me.sap.com/notes/2191612#Q21" target="_blank" rel="noopener noreferrer">2191612 - FAQ | Use of Security Audit Log as of NetWeaver 7.50 - SAP for Me</A></P><P>This integrity protection is an extremely important part of your holistic Security Posture.</P><P>As <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/5736">@kevinrichardson</a> showed and stated in this excellent picture, '<EM><STRONG>You cannot solve today's challenges with yesterday's tools</STRONG></EM>',</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_0-1762287465475.png" style="width: 689px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336244iE100CA597DC718D8/image-dimensions/689x374/is-moderation-mode/true?v=v2" width="689" height="374" role="button" title="AndySilvey_0-1762287465475.png" alt="AndySilvey_0-1762287465475.png" /></span><FONT size="3">(Source: <A href="https://assets.dm.ux.sap.com/au-sap-business-unleashed-innovation-day-melbourne/pdfs/002_rise_with_sap_kr.pdf" target="_blank" rel="noopener noreferrer">002_rise_with_sap_kr.pdf</A>)</FONT></P><P>In the ERP modernisation and transformation which is happening everywhere, there is not enough being done on Security Posture Modernisation, SAL: SAP 'Integrity Protection Format', is available now included in your License and enabled with a Profile Parameter, so why not to do it ?</P><P>The OSS Notes explain that, SAL: SAP 'Integrity Protection Format', works like this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_1-1762287621076.png" style="width: 691px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336245iB59B816D17650091/image-dimensions/691x239/is-moderation-mode/true?v=v2" width="691" height="239" role="button" title="AndySilvey_1-1762287621076.png" alt="AndySilvey_1-1762287621076.png" /></span></P><P><A href="https://me.sap.com/notes/2033317" target="_blank" rel="noopener noreferrer">2033317 - Integrity protection format for Security Audit Log - SAP for Me</A></P><P>And that's all fine, but where does the, 'Distributed Ledger Technology on SAP BTP Kyma <span class="lia-unicode-emoji" title=":rocket:">🚀</span>' fit in to the equation, where's the relevance ?</P><P>Here's the answer, this Note <A href="https://me.sap.com/notes/2191612#Q21" target="_blank" rel="noopener noreferrer">2191612 - FAQ | Use of Security Audit Log as of NetWeaver 7.50 - SAP for Me</A> has a pdf attached: <EM>Explain SAL Integrity Format.pdf , </EM>and the pdf goes on to explain that,</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_2-1762287797394.png" style="width: 689px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336246i729644AA630C9586/image-dimensions/689x212/is-moderation-mode/true?v=v2" width="689" height="212" role="button" title="AndySilvey_2-1762287797394.png" alt="AndySilvey_2-1762287797394.png" /></span></P><P>'<EM>You should download the HMAC Ident as a backup, but you should save it on a secure place. The log files written with that can only be checked with that. It’s important to have this HMAC key data after a system copy or if the files should be evaluated in another system than the original. '</EM></P><P>That's where the Blockchain / Distributed Ledger Technology running on the SAP BTP Kyma comes in,</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">store the HMAC Keys in the Distributed Ledger Technology running on the SAP BTP Kyma</P><P>This will ensure that nobody can tamper with the keys, and therefore nobody can tamper with the SAL Audit Logs and you have the least chance of losing the keys thanks to the built in characteristics of the Distributed Ledger Technology running on the SAP BTP Kyma, HA&DR out of the box, distributed, immutable, etc.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_5-1762288844416.png" style="width: 676px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336249i9DF9C85AF0CB499E/image-dimensions/676x380/is-moderation-mode/true?v=v2" width="676" height="380" role="button" title="AndySilvey_5-1762288844416.png" alt="AndySilvey_5-1762288844416.png" /></span></P><P>Source: <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/bcp-business-continuity-planning-for-sap-s-4hana-made-easy-with-enterprise/ba-p/13647824" target="_blank">BCP: Business Continuity Planning for SAP S/4HANA - made easy with Enterprise Blockchain <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A></P><P>Creating digital finger prints of data is going to come in to our Security Posture whether it's protecting integrity of AI LLMs or Document Grounding, Log Files, Backups and more:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_4-1762288308473.png" style="width: 686px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336248i0BAC76B133590049/image-dimensions/686x393/is-moderation-mode/true?v=v2" width="686" height="393" role="button" title="AndySilvey_4-1762288308473.png" alt="AndySilvey_4-1762288308473.png" /></span></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-ai-security-how-to-tamperproof-ai-llm-s-with-sap-btp-kyma-and/ba-p/14099291" target="_blank">SAP AI Security - How To: Tamperproof AI LLM's with SAP BTP Kyma and Enterprise Blockchain <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A> </P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/cyber-security-protection-for-s-4hana-backups-with-enterprise-blockchain/ba-p/13872997" target="_blank">Cyber Security Protection for S/4HANA Backups with Enterprise Blockchain and SAP BTP Kyma <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A></P><P>If you want to try it out there's a blog here, <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/running-your-own-blockchain-on-the-sap-btp-kyma-trial-a-hands-on-how-to/ba-p/13724580" target="_blank">Running Your Own Blockchain on The SAP BTP Kyma Trial: A Hands On How To Guide <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A> </P><P>Have a think about, <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-enterprise-architecture-positioning-blockchain-database-as-an/ba-p/13629842" target="_blank">SAP Enterprise Architecture: Positioning Blockchain Database as an Enterprise Technology Standard <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A> and then you can <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-enterprise-architecture-let-the-use-case-find-the-blockchain/ba-p/13632458" target="_blank">SAP Enterprise Architecture: Let the Use Case find the Blockchain<span class="lia-unicode-emoji" title=":rocket:">🚀</span></A> by following SAP Enterprise Architecture Principles and the <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/enterprise-architecture-enterprise-blockchain-platform-business-capability/ba-p/13902640" target="_blank">Enterprise Architecture: Enterprise Blockchain Platform Business Capability Map <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A></P><P>And this is why, <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/why-i-love-sap-and-blockchain-databases-and-why-you-should-too/ba-p/13625869" target="_blank">Why I love SAP and Blockchain Databases and why you should too <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A></P><P>If you learn one thing from this blog, it's that you can protect the integrity of your SAL Audit Logs with SAP 'Integrity Protection Format', and that is a cool feature.</P><P>Until next time,</P><P>Andy Silvey.</P><P>Independent <EM>SAP Technical Architect and SAP Basis SME</EM> [you might also find my SAP S/4HANA RISE & BTP Toolbox interesting: <SPAN> </SPAN><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/%EF%B8%8F-the-sap-s-4hana-rise-amp-sap-btp-toolbox-%EF%B8%8F/ba-p/13944069" target="_blank">🧰👷 The SAP S/4HANA RISE & SAP BTP - Toolbox 👷🧰</A>] and CEO of atkrypto (.) io</P><P>Author Bio:</P><P>Andy Silvey is a 26 years SAP Technology veteran [26<EM> years SAP Basis and including 12 years SAP Tech Arch including Tech, Integration, Security, Data from 3.1H to S/4HANA PCE on RISE and the BTP and everything in between, and<SPAN> </SPAN><A href="https://community.sap.com/t5/welcome-corner-blog-posts/andy-silvey-scn-moderator-spotlight/ba-p/13054438" target="_self">former SCN Moderator and Mentor alumni</A>].</EM></P><P>Andy is also co-Founder of atkrypto inc, an startup whose ambition is to make Blockchain easy for Enterprise.</P><P>atkrypto (.) io's flagship product is the atkrypto Enterprise Blockchain Platform for SAP, and atkrypto (.) io is a SAP Partner Edge Open EcoSystem Partner. </P><P>The atkrypto Enterprise Blockchain Platform for SAP has been designed by SAP Independent Experts for the needs of SAP Customers and to be deployed on the SAP BTP Kyma Runtime Service and leverage native integration to SAP Products.</P><P>atkrypto Enterprise Blockchain Platform for SAP has a number of unique qualities, including being the only Blockchain software in the world which has a DataCenter version and a light mobile version which can run on Edge/IoT/Mobile devices and enables data to be written to the Blockchain at the Edge where that same Blockchain is running on a Server in the DataCenter, protecting the integrity and originality of data from the Edge to Insights. Taking Blockchain to the Data at the Edge instead of taking the Data to the Blockchain.</P><P> </P>2025-11-04T21:48:39.476000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/sap-ea-real-world-asset-tokenization-with-distributed-ledger-technology-on/ba-p/14263514SAP EA - Real World Asset Tokenization with Distributed Ledger Technology on the SAP BTP Kyma 🚀2025-11-10T06:21:30.705000+01:00AndySilveyhttps://community.sap.com/t5/user/viewprofilepage/user-id/1397601<P>I is for Innovation.... EA is about... the goal of this blog is to get us thinking and talking about tokenization before the Business turn up demanding it...</P><P>I've always wished and dreamed that us SAP EA's would know our Business so well and at the same time have Road Maps for all of our Technology Standards and including Emerging Standards so that we would know what Technical Capabilities the Business requires before they even come to us with their Demand.</P><P>In reality, in my experience 9 times out 10 it's the Business who come to EA with demands for new technologies (innovations).</P><P>How do we bring in or do "Innovation" ? Ideally with Roadmaps and Emerging Technology Standards. </P><P>SAP's next generation Customer CoE guides <A href="https://support.sap.com/en/offerings-programs/ccoe/cio-customer-coe-guides.html" target="_blank" rel="noopener noreferrer">SAP Guides for Customer COE</A> provide thought leadership on bringing in innovations, <A href="https://support.sap.com/content/dam/support/en_us/library/ssp/offerings-and-programs/customer-center-of-expertise/ccoe-document-store/ccoe_strategy_framework.pdf" target="_blank" rel="noopener noreferrer">Customer Center of Expertise - Strategy, Governance and Organization</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_0-1762682779455.png" style="width: 615px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337570i27B1E817EBC24DDA/image-dimensions/615x232/is-moderation-mode/true?v=v2" width="615" height="232" role="button" title="AndySilvey_0-1762682779455.png" alt="AndySilvey_0-1762682779455.png" /></span></P><P>and <A href="https://support.sap.com/content/dam/support/en_us/library/ssp/offerings-and-programs/customer-center-of-expertise/media-library/general-information/continuous-improvement-and-innovation-with-a-ccoe.pdf" target="_blank" rel="noopener noreferrer">continuous-improvement-and-innovation-with-a-ccoe.pdf</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_1-1762682809277.png" style="width: 666px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337571iADBDBB14302DDC90/image-dimensions/666x164/is-moderation-mode/true?v=v2" width="666" height="164" role="button" title="AndySilvey_1-1762682809277.png" alt="AndySilvey_1-1762682809277.png" /></span><FONT size="2"><EM><A href="https://support.sap.com/en/offerings-programs/ccoe.html" target="_blank" rel="noopener noreferrer">Customer Center of Expertise</A> </EM></FONT></P><P><FONT size="2"><EM><A href="https://support.sap.com/content/dam/support/en_us/library/ssp/offerings-and-programs/customer-center-of-expertise/ccoe-document-store/ccoe_continuous_success_en.pdf" target="_blank" rel="noopener noreferrer">ccoe_continuous_success_en.pdf</A></EM></FONT></P><P>In SAP's documentation, in the North Star Architecture, in the next generation SAP CCoE, innovation responsibilities come in to a number of Roles</P><P class="lia-indent-padding-left-60px" style="padding-left : 60px;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Innovation.png" style="width: 494px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337572i4B08DA86F99069D2/image-dimensions/494x66/is-moderation-mode/true?v=v2" width="494" height="66" role="button" title="Innovation.png" alt="Innovation.png" /></span></P><P>And combined with the Digital Innovation Manager <A href="https://pages.community.sap.com/topics/digital-innovation/innovation-manager" target="_blank" rel="noopener noreferrer">Digital Innovation Manager | Digital Technology and Innovation Management| SAP Community</A></P><P>And that is what this blog is about, innovation, and innovation in the area of Tokenization and RWA Real World Asset Tokenization.</P><P>There is a silent digital revolution going on, where evidence, assets, transactions are being given a digital fingerprint, a hash on a Distributed Ledger and being tokenized.</P><P>What is Tokenization and who's doing it and where is it going ?</P><P>Let's start by looking at what's happening in the space:</P><P><FONT size="2"><EM>[Disclaimer - we cannot post links outside of the Community and if you want to read these articles then just go on your favourite search engine and find them]</EM></FONT></P><P><STRONG>Pairpoint - Vodafone Sumitomo JV</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_0-1762686128517.png" style="width: 660px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337573iA002B384AABC2C17/image-dimensions/660x200/is-moderation-mode/true?v=v2" width="660" height="200" role="button" title="AndySilvey_0-1762686128517.png" alt="AndySilvey_0-1762686128517.png" /></span></P><P> </P><P><STRONG>World Economic Forum</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_1-1762686256814.png" style="width: 672px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337574i4A7807BA9CE2E38D/image-dimensions/672x247/is-moderation-mode/true?v=v2" width="672" height="247" role="button" title="AndySilvey_1-1762686256814.png" alt="AndySilvey_1-1762686256814.png" /></span></P><P> </P><P><STRONG>Fortune - Asia's quiet tokenization revolution</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_2-1762686461543.png" style="width: 664px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337575i7E66101D3ED96765/image-dimensions/664x326/is-moderation-mode/true?v=v2" width="664" height="326" role="button" title="AndySilvey_2-1762686461543.png" alt="AndySilvey_2-1762686461543.png" /></span></P><P> </P><P><STRONG>CNBC</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_3-1762686822450.png" style="width: 671px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337576i70B3831229B65900/image-dimensions/671x354/is-moderation-mode/true?v=v2" width="671" height="354" role="button" title="AndySilvey_3-1762686822450.png" alt="AndySilvey_3-1762686822450.png" /></span></P><P> </P><P><STRONG>Oracle</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_4-1762687234784.png" style="width: 664px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337577iD169BB0792B6D8FE/image-dimensions/664x312/is-moderation-mode/true?v=v2" width="664" height="312" role="button" title="AndySilvey_4-1762687234784.png" alt="AndySilvey_4-1762687234784.png" /></span></P><P>from the same article, <STRONG>this is how Oracle sees it</STRONG>:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_5-1762687423595.png" style="width: 683px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337578iCB56818D0FFD22CB/image-dimensions/683x529/is-moderation-mode/true?v=v2" width="683" height="529" role="button" title="AndySilvey_5-1762687423595.png" alt="AndySilvey_5-1762687423595.png" /></span></P><P> </P><P>If they all see Tokenization that way then maybe the EA innovation leads in our Organisations should be having a look at Tokenization too.</P><P>This older SAP article considered common use cases <A href="https://pages.community.sap.com/topics/digital-innovation/non-fungible-token-nft#nft-digital-asset-representation-on-a-blockchain" target="_blank" rel="noopener noreferrer">NFT (Non-Fungible-Tokens) | Digital Technology and Innovation Management | SAP Community</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndySilvey_6-1762688278702.png" style="width: 643px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337579iEC3BBC895BC4A3CD/image-dimensions/643x336/is-moderation-mode/true?v=v2" width="643" height="336" role="button" title="AndySilvey_6-1762688278702.png" alt="AndySilvey_6-1762688278702.png" /></span></P><P>SAP has dipped their toes into the water with the SAP Green Ledger <A href="https://help.sap.com/docs/green-ledger/introduction/introduction" target="_blank" rel="noopener noreferrer">What Is SAP Green Ledger? | SAP Help Portal</A> , in my opinion the scope is too narrow, <A href="https://www.sap.com/assetdetail/2023/05/52ec66b4-727e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">Green Ledger: Where Carbon and Financial Accounting Unite</A> <A href="https://www.sap.com/assetdetail/2024/06/428fc78f-c17e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">SAP Green Ledger and an ERP-centric approach to reinvent carbon accounting</A> and Carbon Accounting is the tip of the iceberg.</P><P>Learning.sap.com has some excellent resources including videos <A href="https://learning.sap.com/courses/helping-business-thrive-in-a-circular-economy/blockchain-_LE_2bf04a9e-f791-493b-82e3-072718564c9e" target="_blank" rel="noopener noreferrer">Blockchain</A> and this incredible Blockchain course <A href="https://learning.sap.com/courses/what-can-blockchain-do-for-you" target="_blank" rel="noopener noreferrer">What Can Blockchain Do for You</A> .</P><P>Have a think about how Tokenization and Distributed Ledger Technology capabilities fit towards your Business, your Business Processes, your Business Partners.</P><P>Have a think about drawing the <A href="https://community.sap.com/t5/technology-blog-posts-by-members/enterprise-architecture-enterprise-blockchain-platform-business-capability/ba-p/13902640" target="_self">Blockchain Capability Map</A>, <A href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-enterprise-architecture-positioning-blockchain-database-as-an/ba-p/13629842" target="_self">positioning Enterprise Blockchain as an Emerging Technology Standard</A>, and then when the Business come with the Demand... <A href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-enterprise-architecture-let-the-use-case-find-the-blockchain/ba-p/13632458" target="_self">let the use-case / Demand find the Blockchain</A>, and if you want to have a play with Enterprise Blockchain on the BTP Kyma, even the BTP Trial Edition Kyma <A href="https://community.sap.com/t5/technology-blog-posts-by-members/running-your-own-blockchain-on-the-sap-btp-kyma-trial-a-hands-on-how-to/ba-p/13724580" target="_self">then just follow this blog</A> and reach out if there are any questions.</P><P>And that's the purpose of this blog, to get Tokenization onto our EA radars.</P><P>What do you think, put your thoughts in the comments.</P><P>Ultimately this is all "<A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/why-i-love-sap-and-blockchain-databases-and-why-you-should-too/ba-p/13625869" target="_blank">Why I love SAP and Blockchain Databases and why you should too <span class="lia-unicode-emoji" title=":rocket:">🚀</span></A>".</P><P>Andy Silvey.</P><P>Independent<SPAN> </SPAN><EM>SAP Technical Architect and SAP Basis SME</EM><SPAN> </SPAN>[you might also find my SAP S/4HANA RISE & BTP Toolbox interesting: <SPAN> </SPAN><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-members/%EF%B8%8F-the-sap-s-4hana-rise-amp-sap-btp-toolbox-%EF%B8%8F/ba-p/13944069" target="_blank">🧰👷 The SAP S/4HANA RISE & SAP BTP - Toolbox 👷🧰</A>] and CEO of atkrypto (.) io</P><P>Author Bio:</P><P>Andy Silvey is a 26 years SAP Technology veteran [26<EM> years SAP Basis and including 12 years SAP Tech Arch including Tech, Integration, Security, Data from 3.1H to S/4HANA PCE on RISE and the BTP and everything in between, and<SPAN> </SPAN><A href="https://community.sap.com/t5/welcome-corner-blog-posts/andy-silvey-scn-moderator-spotlight/ba-p/13054438" target="_self">former SCN Moderator and Mentor alumni</A>].</EM></P><P>Andy is also co-Founder of atkrypto inc, an startup whose ambition is to make Blockchain easy for Enterprise.</P><P>atkrypto (.) io's flagship product is the atkrypto Enterprise Blockchain Platform for SAP, and atkrypto (.) io is a SAP Partner Edge Open EcoSystem Partner. </P><P>The atkrypto Enterprise Blockchain Platform for SAP has been designed by SAP Independent Experts for the needs of SAP Customers and to be deployed on the SAP BTP Kyma Runtime Service and leverage native integration to SAP Products.</P><P>atkrypto Enterprise Blockchain Platform for SAP has a number of unique qualities, including being the only Blockchain software in the world which has a DataCenter version and a light mobile version which can run on Edge/IoT/Mobile devices and enables data to be written to the Blockchain at the Edge where that same Blockchain is running on a Server in the DataCenter, protecting the integrity and originality of data from the Edge to Insights. Taking Blockchain to the Data at the Edge instead of taking the Data to the Blockchain.</P><P> </P><P> </P><P> </P><P> </P><P> </P>2025-11-10T06:21:30.705000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/new-kyma-telemetry-docs-simplified-task-oriented-and-user-first/ba-p/14261505New Kyma Telemetry Docs: Simplified, Task-Oriented, and User-First2025-11-11T05:13:44.605000+01:00NHingerl35https://community.sap.com/t5/user/viewprofilepage/user-id/131218<P>We're happy to announce the release of the completely restructured and rewritten documentation for the Kyma Telemetry module! We've moved from a component-centric view to a user-first, task-oriented structure, all centered around a new, unified Telemetry Pipeline API.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Telemetry Module Docs.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336634i9190AAC42FF253EC/image-size/large?v=v2&px=999" role="button" title="Telemetry Module Docs.png" alt="Telemetry Module Docs.png" /></span></P><H2 id="toc-hId-1764560176"> </H2><H2 id="toc-hId-1568046671">What's New for Our Users?</H2><UL><LI><STRONG>The Unified Telemetry Pipeline API</STRONG><SPAN> </SPAN>– At the heart of the new structure is the<SPAN> </SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/telemetry-pipeline-api?locale=en-US&version=Cloud" target="_self" rel="noopener noreferrer">Telemetry Pipeline API</A>. With the introduction of OTLP-based LogPipelines, you can now use a consistent set of CRDs to configure all your telemetry signals, which reduces complexity and makes your setup easier to maintain.</LI><LI><P><STRONG>A Clearer, Task-Based Structure</STRONG><SPAN> </SPAN>– Find what you need faster with new top-level guides for<SPAN> </SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/collecting-logs?locale=en-US&version=Cloud" target="_self" rel="noopener noreferrer">Collecting Logs</A>,<SPAN> </SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/collecting-traces?locale=en-US&version=Cloud" target="_self" rel="noopener noreferrer">Collecting Traces</A>, and<SPAN> </SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/collecting-metrics?locale=en-US&version=Cloud" target="_self" rel="noopener noreferrer">Collecting Metrics</A>. Each guide walks you through the process for a specific signal, from minimal setup to advanced configuration</P></LI><LI><P><STRONG>A Clear Migration Path</STRONG><SPAN> </SPAN>– If you're still using the legacy Fluent Bit (HTTP) log output, read<SPAN> </SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/migrate-your-logpipeline-from-http-to-otlp?locale=en-US&version=Cloud" target="_self" rel="noopener noreferrer">Migrate Your LogPipeline From HTTP to OTLP</A><SPAN>, which </SPAN>guides you step-by-step to switch to the new OTLP setup without data loss.</P></LI></UL><H2 id="toc-hId-1371533166">The 'Why' Behind the Change: A Look at the Craft</H2><P><SPAN>If you're a fellow tech writer or just curious about the <EM>why</EM></SPAN>, this wasn't just a rewrite; it was a fundamental shift in our information architecture:</P><P>Our previous documentation was<SPAN> </SPAN><STRONG>component-centric</STRONG>. It described each component (Telemetry Manager, gateways, agents, pipelines...) and its internal architecture, explaining <EM>"What does the component do?"</EM>. Based on that, the reader had to figure out how to accomplish a task.</P><P>Our new approach is<SPAN> </SPAN><STRONG>goal-oriented</STRONG>, built on principles from the DITA (Darwin Information Typing Architecture) and industry best practices. Our guiding question is "What is the user trying to <EM>achieve</EM>?" This led us to structure the content as self-contained pages, each focusing on a user goal. For readers interested in the nitty-gritty details - you still find all of those in the consolidated <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/telemetry-architecture?version=Cloud&locale=en-US" target="_self" rel="noopener noreferrer">Architecture docs</A>.</P><H2 id="toc-hId-1175019661">Why This Matters</H2><P>This new structure makes it easier to see what's common and what's different for the Telemetry pipeline types. Furthermore, we've re-centered the documentation on the actions you need to perform:</P><UL><LI><STRONG>Start with your goal:</STRONG> Task-oriented titles such as <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/monitor-pipeline-health?version=Cloud&locale=en-US" target="_self" rel="noopener noreferrer">Monitor Pipeline Health</A> help you find what you need without knowing our internal component names.</LI><LI><STRONG>Progressive disclosure of information:</STRONG><SPAN> </SPAN>Get started with a minimal configuration quickly, and then explore advanced operations like filtering or processing only when you need them.</LI><LI><STRONG>Get straight to the point:</STRONG><SPAN> With consolidated <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/troubleshooting-for-telemetry-module?version=Cloud&locale=en-US" target="_self" rel="noopener noreferrer">troubleshooting</A> instructions on the top level, you can start start fixing issues immediately without reading through unrelated details</SPAN>.</LI></UL><H2 id="toc-hId-978506156">Get Started Today</H2><P>We invite you to dive into the new<SPAN> </SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/kyma-telemetry-module?locale=en-US&version=Cloud" target="_self" rel="noopener noreferrer">Telemetry module documentation</A>. We're proud of this new structure and believe it's a clear step up for clarity and usability.</P><H2 id="toc-hId-781992651">Your Feedback Matters</H2><P>Whether you're a user of the module or a fellow writer, we'd love to hear your thoughts. Give us feedback directly on the SAP Help Portal pages. Your input is crucial as we continue to evolve our content.</P>2025-11-11T05:13:44.605000+01:00