https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/Cloud-Connector-blog-posts.xmlSAP Community - Cloud Connector2026-02-24T00:10:36.962820+00:00python-feedgenCloud Connector blog posts in SAP Communityhttps://community.sap.com/t5/application-development-and-automation-blog-posts/sap-developer-news-july-31st-2025/ba-p/14168233SAP Developer News July 31st, 20252025-07-31T21:10:00.034000+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%2F4_vluAVEY-4%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D4_vluAVEY-4&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F4_vluAVEY-4%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="400" height="225" scrolling="no" title="Integration Suite update, Terraform Provider beta, GitHub repo, Community Voice | SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><H3 id="toc-hId-1865219489"><SPAN>DESCRIPTION</SPAN><SPAN> </SPAN></H3><P><STRONG><SPAN>PODCAST</SPAN></STRONG><SPAN>: <A href="https://podcast.opensap.info/sap-developers/2025/07/31/%f0%9f%94%94sap-developer-news-july-31st-2025/" target="_blank" rel="noopener nofollow noreferrer">https://podcast.opensap.info/sap-developers/2025/07/31/%f0%9f%94%94sap-developer-news-july-31st-2025/</A></SPAN><SPAN> </SPAN></P><P><STRONG><SPAN>SAP Integration Suite updates</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>SAP Integration Suite – Update Version of an Integration Flow Component: </SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-integration-suite-update-version-of-an-integration-flow-component/ba-p/14158284" target="_blank"><SPAN>https://community.sap.com/t5/technology-blog-posts-by-sap/sap-integration-suite-update-version-of-an-integration-flow-component/ba-p/14158284</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>The E in Event-Driven Architecture: Introducing SAP’s new Event-Add for ERP: </SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/the-e-in-event-driven-architecture-introducing-sap-s-new-event-add-for-erp/ba-p/14160285" target="_blank"><SPAN>https://community.sap.com/t5/technology-blog-posts-by-sap/the-e-in-event-driven-architecture-introducing-sap-s-new-event-add-for-erp/ba-p/14160285</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Unlocking the Power of Events: A Deep Dive into the Event Add-on for ERP: </SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/unlocking-the-power-of-events-a-deep-dive-into-the-event-add-on-for-erp/ba-p/14167261" target="_blank"><SPAN>https://community.sap.com/t5/technology-blog-posts-by-sap/unlocking-the-power-of-events-a-deep-dive-into-the-event-add-on-for-erp/ba-p/14167261</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Queue Browser: Deep Message Visibility for Event Mesh in SAP Integration Suite: </SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/queue-browser-deep-message-visibility-for-event-mesh-in-sap-integration/ba-p/14159563" target="_blank"><SPAN>https://community.sap.com/t5/technology-blog-posts-by-sap/queue-browser-deep-message-visibility-for-event-mesh-in-sap-integration/ba-p/14159563</SPAN></A><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>The new Terraform Provider for SAP Cloud Connector (beta release)</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>Announcement </SPAN><A href="https://www.linkedin.com/posts/christian-lechner-inthecloud_already-automating-your-sap-btp-infrastructure-activity-7355533613737607169-sQa2?utm_source=share&utm_medium=member_desktop&rcm=ACoAAABARDEBWvk2ZWecbZaLPAQjl2eMyfc2zzE" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://www.linkedin.com/posts/christian-lechner-inthecloud_already-automating-your-sap-btp-infrastructure-activity-7355533613737607169-sQa2</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Registry entry </SPAN><A href="https://registry.terraform.io/providers/SAP/scc/latest" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://registry.terraform.io/providers/SAP/scc/latest</SPAN></A><SPAN> </SPAN></LI></UL><UL><LI><SPAN>Repository </SPAN><A href="https://github.com/SAP/terraform-provider-scc" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://github.com/SAP/terraform-provider-scc</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>Awesome-cap repository on GitHub</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><A href="https://github.com/mauriciolauffer/awesome-cap" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://github.com/mauriciolauffer/awesome-cap</SPAN></A><SPAN> </SPAN></LI></UL><P><STRONG><SPAN>Return of the SAP Community Voice newsletter</SPAN></STRONG><SPAN> </SPAN></P><UL><LI><SPAN>First edition </SPAN><A href="https://community.sap.com/t5/what-s-new/the-return-of-sap-community-voice/ba-p/14166197" target="_blank"><SPAN>https://community.sap.com/t5/what-s-new/the-return-of-sap-community-voice/ba-p/14166197</SPAN></A><SPAN> </SPAN><SPAN> </SPAN></LI></UL><P><SPAN> </SPAN></P><H3 id="toc-hId-1668705984"><SPAN>CHAPTER TITLES </SPAN><SPAN> </SPAN></H3><P><SPAN>0:00 Intro</SPAN><SPAN> </SPAN></P><P><SPAN>0:10 SAP Integration Suite updates</SPAN><SPAN> </SPAN></P><P><SPAN>1:56 </SPAN><SPAN>The new Terraform Provider for SAP Cloud Connector (beta release)</SPAN><SPAN> </SPAN></P><P><SPAN>2:49 awesome-cap repository on GitHub</SPAN><SPAN> </SPAN></P><P><SPAN>3:22 Return of the SAP Community Voice newsletter</SPAN><SPAN> </SPAN></P><P> </P><H3 id="toc-hId-1472192479"><SPAN>TRANSCRIPTION </SPAN></H3><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Intro]</STRONG> This is the SAP Developer News for July the 31st, 2025.</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Antonio]</STRONG> Hola, SAP developers. There is a new feature in the latest release of SAP Cloud Integration that I'm sure you'll be very excited about. It is now possible to easily update the version of an integration flow component. Previously, updating the version of a component was done manually. For example, you wanted to update the version of an adapter, meant reconfiguring it from scratch. This was quite painful and error-prone. The new feature enables a one-click update to update a component which is backward-compatible to the latest version without any loss of the existing properties, configurations, or externalized parameters. Cool, right? Check out Kamlesh's blog post to learn more about the new feature. In the event-driven space, have you heard about SAP's new event add-on for ERP? You can leverage the add-on to event-enable your SAP on-premise backends, for example, SAP S/4HANA or SAP ERP, and expose consume events to and from SAP Integration Suite Advanced Event Mesh. Check out Carsten's blog post series to learn more about it. Also, there is a new feature in the event mesh capability of SAP Integration Suite. It is called Queue Browser, and it will allow you to inspect and visualize messages in a queue via the web UI without consuming the messages from the queue. It is quite powerful as you can examine the message metadata, for example, headers, statuses, and errors, and troubleshoot maybe a more-formed payload in the message. Check out Arley's blog posts for more information. Ciao!</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[DJ]</STRONG> You've probably heard of the Terraform Provider for SAP BTP, which allows you to create and manage your resources on BTP declaratively using an open standard. Well, the Terraform team have just released the beta of the Terraform Provider for SAP Cloud Connector. This essential piece of connectivity software in your SAP landscapes is now able to be managed declaratively, just like your assets on BTP. What's not to like? Check it out. It's a beta, and the team would love you to try it out, kick the tires, and send them thoughts on what you think. Links in the description.</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[Kevin]</STRONG> So if you were wondering what kind of awesome tools libraries and sources for CAP are out there look no further Mauricio Lauffer got you he has this brand new repository on github which is a list of all of those things and that list is awesome and the repository is called awesome cap so check it out right now and maybe also contribute your awesome links to the repository today.</P><P class="lia-align-justify" style="text-align : justify;"><STRONG>[DJ]</STRONG> remember the SAP community voice <SPAN> </SPAN>online email based newsletter well it's back online but this time in the form of blog posts on the SAP community platform in case you don't know this newsletter highlights interesting blog posts community news events and lots more check it out the first edition in blog post form is from our Jerry, Jerry Jander link in the description.</P>2025-07-31T21:10:00.034000+02:00https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-members/build-a-web-app-and-connect-to-s-4hana-with-sap-integration-suite/ba-p/14179607Build A Web App and Connect to S/4HANA with SAP Integration Suite2025-08-13T12:45:21.973000+02:00Former Member<P>A big part of the magic behind AI, advanced analytics, and {insert tech buzzword here} is the humble API!</P><P>I remember the excitement about service-oriented architecture in the late 1990s and early 2000s. Back when most organisations had 'fat' ERPs with extensive customisation, the idea that we could split things up into different apps and connect in a standardised way was refreshing.</P><P>I recently noticed a <A href="https://community.sap.com/t5/sap-codejam/sap-codejam-connecting-systems-and-services-using-sap-integration-suite/ec-p/14110686#M848" target="_self">SAP CodeJam</A> on the SAP community events calendar that involved connecting systems to S/4HANA using SAP Integration Suite.</P><P>I thought it might be fun to build a web app and see if I could successfully connect it to S/4HANA.</P><P>A basic understanding of frontend to enterprise backend via cloud architecture is useful for everyone; business experts, technology experts, and people experts</P><P>The article is broken into three parts: an introduction, a step-by-step explanation for generalists, and my build/test notes for anyone working on something similar. The third section includes details on all the test tools, and configuration settings.</P><P>A couple of quick disclaimers:</P><UL><LI>I'm not an integration expert:<UL><LI>I don't look at integration suite vs. other solutions</LI><LI>I don't cover best practices, typical challenges, good use cases</LI></UL></LI><LI>My solution here is likely not optimal:<UL><LI>It's just a vanilla HTML, CSS, JS frontend</LI></UL></LI></UL><P>---</P><H1 id="toc-hId-1608011118">Part 1: introduction</H1><H2 id="toc-hId-1540580332">From web app to S/4HANA</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300221i6AE07F957A2E6A24/image-size/large?v=v2&px=999" role="button" title="integration-1.png" alt="integration-1.png" /></span></P><P>The plan:</P><UL><LI>The frontend is a web page to search for data from within S/4HANA</LI><LI>The web server handles communication between the frontend and SAP Cloud</LI><LI>SAP Integration Suite will route and format the message for S/4HANA</LI><LI>S/4HANA is the source of data.</LI></UL><P>Tools/technology:</P><UL><LI>Utilise the free trial account for SAP BTP and Integration Suite</LI><LI>Build the frontend and web app ourselves</LI><LI>We can't access S/4HANA. However, the CodeJam provides a S/4HANA mock server that mimics the behaviour of an API within S/4HANA.</LI><LI>If we use a mock system, we will need to run it locally. So, adjusting the architecture.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300223iF83EF9D1F958295D/image-size/large?v=v2&px=999" role="button" title="integration-2.png" alt="integration-2.png" /></span></P><P>This adds SAP Cloud Connector which allows an "on-premise" application to connect with SAP Cloud.</P><H2 id="toc-hId-1344066827">The front end</H2><P>The completed app offers a summary view and a detailed view. Here's a short <A href="https://youtu.be/wNgAwEfLyX0" target="_self" rel="nofollow noopener noreferrer">screen recording</A></P><H3 id="toc-hId-1276636041">Summary view</H3><P>This is a screenshot from the web browser (firefox).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-3.png" style="width: 986px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300227i15B2BBB969C15471/image-size/large?v=v2&px=999" role="button" title="integration-3.png" alt="integration-3.png" /></span></P><P>The top part of the page has a search form that allows you to search for a business partner. The bottom part of the page shows the results with a selection of key fields in a card style layout.</P><P>The mock system we are using allows for four different search possibilities:</P><UL><LI>Search for a single business partner by number</LI><LI>Search for all business partners</LI><LI>Search for a single business partner by number, including address details</LI><LI>Search for all business partners, including address details.</LI></UL><H3 id="toc-hId-1080122536">Detail view</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300230iFE51F5F8AD6D02A5/image-size/large?v=v2&px=999" role="button" title="integration-4.png" alt="integration-4.png" /></span></P><P>The detail view shows the results in a table. This table has a horizontal scroll bar, which can be adjusted to view all the fields. The table includes 'raw' results, so there are some 'technical' entries like `[object Object]` and some blanks, which I think is fine for this mock up stage.</P><H3 id="toc-hId-883609031">Responsive view</H3><P>For tablets and mobile, the card view resizes with the browser window.</P><P></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-5.png" style="width: 364px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300231i01B740227C1E13DC/image-size/large?v=v2&px=999" role="button" title="Integration-5.png" alt="Integration-5.png" /></span></P><P>I'll come back to how this front end was built after running through the integration flow.</P><H2 id="toc-hId-558012807">S/4HANA</H2><P>The value of this flow is being able to design and build a frontend to access real-time, trusted business data from S/4HANA in a standardised way. In a real-world example, our frontend could be an employee portal or supplier portal.</P><P>S/4HANA is:</P><UL><LI>SAP's enterprise software for large organisations. It handles processes such as purchasing, manufacturing, sales, shipping, finance, etc.</LI><LI>An evolution from their earlier ERP products (R/1, R/2, R/3, ECC).</LI><LI>A complex platform comprising thousands of programs, tables, and customisations used by many large enterprises.</LI></UL><P>S/4HANA already comes with a web frontend called Fiori, which includes thousands of apps. However, in this example imagine we are building something for a casual user that does not require the full capability of Fiori. Or, just consider it's for fun.</P><P>Further reading on S/4HANA:</P><P>[SAP help - S/4HANA](<A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE?locale=en-US" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE?locale=en-US</A>)</P><H2 id="toc-hId-361499302">Business partner</H2><P>The mock server simulates one of the business partner APIs for S/4HANA.</P><P>A business partner is a reference or master data record that represents a third party that an organisation works with. This includes customers, suppliers, and employees.</P><P>Business partner master data is organised by key fields such as "category" and "role".</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300232iDF2DB3D934F8EECC/image-size/large?v=v2&px=999" role="button" title="Integration-6.png" alt="Integration-6.png" /></span></P><P>All business partners have general data such as name, address, etc., then they have role-specific data, which may include, but are not limited to:</P><UL><LI>Purchasing data</LI><LI>Sales data</LI><LI>Accounting data</LI><LI>And so on.</LI></UL><P>To understand how business partner data is used, consider a typical ERP process like order-to-cash:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-7.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300233i882EADCDD4912385/image-size/large?v=v2&px=999" role="button" title="Integration-7.png" alt="Integration-7.png" /></span></P><P>This is a summary of the order to cash process. During sales, deliveries, and billing, information from the business partner master record is utilised.</P><P>The business partner master stores long-term stable information about the customer. It's used for both reference and validation during transaction entry.</P><P>This ensures there is consistency across transactions over time in terms of how they reference business partners. This is critical for reporting. Consider comparability, aggregation, etc.</P><P>Further reading on business partners:</P><P><A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/74b0b157c81944ffaac6ebc07245b9dc/45653b5856de0846e10000000a441470.html?locale=en-US&version=LATEST" target="_self" rel="noopener noreferrer">Help - Business Partner</A></P><H2 id="toc-hId-164985797">S/4HANA Architecture</H2><P>The mock server simulates an S/4HANA API. Let's look inside S/4HANA.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-8.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300236i8B0B2CC5994D164A/image-size/large?v=v2&px=999" role="button" title="Integration-8.png" alt="Integration-8.png" /></span></P><P>Starting from the top right, S/4HANA has two primary ways for users to interact. The traditional SAP graphical user interface (GUI) and the modern Fiori web-based user interface.</P><P>I've drawn APIs to the left of these. The APIs allow applications to interact with S/4HANA.</P><P>Consider the data model in S/4HANA in two separate parts. The first is the traditional HANA database. This is where master data and transactional data are stored. On top of this is the virtual data model. This consists of core data services views. This is a way to define different sets of data to meet the needs of APIs and Fiori Apps.</P><P>In this example, we are using a business partner data API. Behind the scenes, the API sources data from CDS views, which in turn connect to the HANA DB tables.</P><P>---</P><H1 id="toc-hId--160610427">Part 2: step by step walkthrough (for everyone)</H1><P>In this section, I'll summarise the process and technology involved at each step.</P><H2 id="toc-hId-119213144">Point 1: Web communication</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-map-1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300239i27A3BC33FE94D8D7/image-size/large?v=v2&px=999" role="button" title="integration-map-1.png" alt="integration-map-1.png" /></span></P><P>Building an integration flow between web connected applications relies on protocols and standards for web communication. Let's run through the main concepts.</P><H3 id="toc-hId--370703368">Client/server</H3><P>The terms client and server are used to describe the requester and receiver. For example, the web browser on a computer is a client, and google search is a server.</P><P>Internet communications use the HTTP protocol.</P><P></P><P>Hypertext Transfer Protocol (HTTP) is a standard protocol for communication between clients and web servers. Web pages are written in Hypertext Markup Language (HTML).</P><P>The term Uniform Resource Locator (URL) is used to describe an address.</P><H3 id="toc-hId--567216873">The structure of a URL</H3><P>URLs have five key parts:</P><UL><LI>Protocol: `http://`</LI><LI>Domain: `<A href="http://www.example.com" target="_blank" rel="noopener nofollow noreferrer">www.example.com</A>`</LI><LI>Path: `/pages/`</LI><LI>Query string: `?id=1&cat=test`</LI><LI>Fragment: `#article` (an internal page reference, often not present)</LI></UL><P>When it comes to APIs, the query string provides the ability to specify parameters for search and filter. In this case, the query string could include a business partner number.</P><H3 id="toc-hId--763730378">HTTPS</H3><P>HTTPS uses the HTTP protocol, but it adds a secure transport layer. HTTPS means the HTTP message is encrypted before transmission.</P><P>The only part that isn't encrypted is the domain name.</P><H3 id="toc-hId--960243883">Internet protocol (IP) address</H3><P>While URLs are designed to be human-readable. An IP is a numerical label like "192.0.2.1" that identifies a computer or network.</P><P>URLs are used for navigation. IPs are used for routing and communication. They identify a specific device on a network (laptop, server, etc.).</P><P>An IP address can be used in place of a domain name with HTTP and HTTPS</P><P>"<A href="http://192.0.2.1" target="_blank" rel="noopener nofollow noreferrer">http://192.0.2.1</A>"</P><P>While an IP address represents a computer. The term "port" is used to specific a specific input/output location.</P><P>Ports are identified using 4 digits.</P><P>"http://{server}:{port}"<BR />"<A href="http://192.0.2.1:1000" target="_blank" rel="noopener nofollow noreferrer">http://192.0.2.1:1000</A>"</P><P>A server is often referred to by 'host'</P><P>"http://{host}:{port}"</P><P>You can access ports on your own computer by using its IP or "localhost"</P><P>"<A href="http://localhost:1000" target="_blank" rel="noopener nofollow noreferrer">http://localhost:1000</A>"</P><H3 id="toc-hId--1156757388">From domain to IP</H3><P>The web browser uses a domain lookup service to translate a URL into an IP address.</P><P>"<A href="http://www.example.com" target="_blank" rel="noopener nofollow noreferrer">http://www.example.com</A>" becomes "<A href="http://192.0.2.1" target="_blank" rel="noopener nofollow noreferrer">http://192.0.2.1</A>"</P><P>This is called the Domain Name System (DNS). Popular look up services include: Cloudflare, Google DNS, and OpenDNS.</P><H3 id="toc-hId--1353270893">Messages</H3><P>The communications themselves can be thought of as messages. They contain a header and a body.</P><P>The header includes:</P><UL><LI>The URL</LI><LI>The method, most commonly GET and POST</LI><LI>GET sends a request without a body</LI><LI>POST sends a request with a body</LI><LI>Additional information on the content type and authorisation</LI></UL><P>The body includes detailed content. For example:</P><UL><LI>If you fill in a form on a web page, it would include the form data</LI><LI>If a server returns a web page, it would include the web page.</LI></UL><H3 id="toc-hId--1549784398">Server Responses</H3><P>When a server receives a request, it responds with a status code and a body. Status codes include '200' representing "ok" and '404' representing 'Not Found'.</P><P>(404 has definitely reached meme levels of fame!).</P><P>The body that's returned depends on the status and the server's purpose.</P><H3 id="toc-hId--1746297903">Real life examples</H3><P>Consider visiting the BBC website from a web browser, a simple GET request would return the home page.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-10-1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300240i98D1E11DB146673D/image-size/large?v=v2&px=999" role="button" title="Integration-10-1.png" alt="Integration-10-1.png" /></span></P><P>On the other hand, consider logging into the BBC website. In this case, the browser sends the login name and password. Therefore, a POST request is used, and the request includes a body.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-10-2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300241i9C9D28EC27350605/image-size/large?v=v2&px=999" role="button" title="Integration-10-2.png" alt="Integration-10-2.png" /></span></P><H3 id="toc-hId--1942811408">Web connectivity and SAP</H3><P>Most SAP applications can use HTTPS communication. This is possibly one of the simplest ways we could define "Cloud" strategy.</P><UL><LI>S/4HANA Cloud Public and S/4HANA Cloud Private can both utilise HTTPS</LI><LI>SAP BTP which includes SAP Integration Suite can utilise HTTPS</LI></UL><P>Outside the SAP Cloud, we have systems like S/4HANA On-Premise. This is usually at an SAP customer's data centre or their 3rd party hosting service provider's data centre. On premise systems are usually not directly connected to the public internet. This is where SAP provide Cloud Connector to create a secure tunnel between on-premise and SAP Cloud.</P><H3 id="toc-hId--1971141222">HTTP data transfer standards</H3><P>There are further standards as to how data is transferred using HTTP.</P><P>There are multiple standards for data transfer with HTTP. One of the earlier and more common standards is REST (Representational State Transfer).</P><P>Many SAP APIs utilise OData (Open data transfer protocol).</P><H2 id="toc-hId--1874251720">Point 2: S/4HANA business partner API mock server</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300244i0C0E251EDEC4B8A1/image-size/large?v=v2&px=999" role="button" title="Integration-map-2.png" alt="Integration-map-2.png" /></span></P><P><STRONG>Purpose:</STRONG> Mimic the business partner API of an S/4HANA system.</P><P><STRONG>What is it:</STRONG> A simple JavaScript server that can be run locally.</P><P>The mock server provided by the SAP community provides a simple way to simulate the design and test of an S/4HANA API.</P><UL><LI>The mock server mimics the business partner (A2X) API</LI><LI>This is one of the S/4HANA APIs (programmed inside S/4HANA)</LI><LI>In the case of the mock server, it's a JavaScript server</LI><LI>The mock server has limited functionality, it supports:<UL><LI>Sample data for a few business partners</LI><LI>Retrieve all business partners</LI><LI>Retrieve a single business partner</LI><LI>Include additional address data in the response.</LI></UL></LI></UL><P>Installing and running the mock server is simple. The instructions are in part 3. When we run it our computer a local address is returned.</P><P>On my computer, it runs on "<A href="http://localhost:3005/" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/</A>"</P><P>This is the address for the Business Partner API. Entering this address in the web browser gives the following response:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-10-3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300247i85F8DBD3A3C0907C/image-size/large?v=v2&px=999" role="button" title="Integration-10-3.png" alt="Integration-10-3.png" /></span></P><P>The first item refers to the business partner API. This is the first point in the exercise where we can see the path for the Business Partner API:</P><P>"/sap/opu/odata/sap/API_BUSINESS_PARTNER"</P><P>The API path is just appended to the host, so:</P><P>"<A href="http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER</A>"</P><P>Clicking on the link in the browser shows additional information about the API. Note that the only services listed are A_BusinessPartner and A_BusinessPartnerAddress.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-10-4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300248iD5D9B28D88C78E83/image-size/large?v=v2&px=999" role="button" title="Integration-10-4.png" alt="Integration-10-4.png" /></span></P><P>When building an integration flow, the mix of host names, port names, and paths can quickly become confusing. It's useful to track these as we go.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-10-5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300249i78F4EB26BF7E6792/image-size/large?v=v2&px=999" role="button" title="Integration-10-5.png" alt="Integration-10-5.png" /></span></P><P>Further reading on the mock server:</P><P>- <A href="https://github.com/SAP-samples/connecting-systems-services-integration-suite-codejam" target="_self" rel="nofollow noopener noreferrer">The CodeJam repo</A><BR />- <A href="https://github.com/SAP-archive/cloud-s4-sdk-book/tree/mock-server" target="_self" rel="nofollow noopener noreferrer">GitHub</A><BR />- <A href="https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk/exercise-setting-up-the-mock-server_c734679d-9ce9-4905-82c3-ed13603a671d" target="_self" rel="noopener noreferrer">SAP Learning</A></P><H2 id="toc-hId--2070765225">Point 3: Application programming interface (API</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300253i7FD22496BC81C5DF/image-size/large?v=v2&px=999" role="button" title="Integration-map-3.png" alt="Integration-map-3.png" /></span></P><P><STRONG>Purpose:</STRONG> Provide a standard way to define and operate services for an application that can be consumed by other applications.</P><P><STRONG>What is it:</STRONG> SAP have a large catalogue of standard APIs that come with S/4HANA.</P><H3 id="toc-hId-1734285559">The Business partner API</H3><P>The API that was introduced under the S/4HANA business partner mock server is called 'business partner (A2X)'. It is a SAP standard API that uses the OData V2 standard.</P><P>While HTTP is the communication protocol. OData is an open standard related to the data.</P><P>When viewing the API details in the web browser, the display was JSON. This is JavaScript Object Notation, which is used in Odata. Point 5. in the flow will show more detail on this API.</P><P>Further reading on APIs and Odata:</P><P>- <A href="https://spec.openapis.org/oas/latest.html" target="_self" rel="nofollow noopener noreferrer">Open API spec</A><BR />- <A href="https://www.odata.org/" target="_self" rel="nofollow noopener noreferrer">OData</A></P><H2 id="toc-hId-1831175061">Point 4: Business technology platform (BTP)</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300256iC627FB8F7F6F5B78/image-size/large?v=v2&px=999" role="button" title="Integration-map-4.png" alt="Integration-map-4.png" /></span></P><P>Skipping Cloud Connector for now, brings us to BTP. Details from BTP are needed to set up Cloud Connector.</P><P><STRONG>Purpose:</STRONG> Enable customers to manage and build on SAP applications.</P><P><STRONG>What is it:</STRONG> A set of tools encompassing various capabilities and environments.</P><P>SAP offer a free trial for BTP, which can be used to build and test integration flows. Instructions on how to register and set up BTP are included in part 3.</P><P>The BTP cockpit is where we can search for and set up different services.</P><P>It supports multiple infrastructures and runtimes so you can manage/build various types of applications from traditional SAP ABAP to web apps.</P><UL><LI>Supports multiple infrastructures/runtimes & languages, including:<UL><LI>Cloud Foundry: develop new apps/services, multiple languages, runtimes</LI><LI>ABAP: extend ABAP based products (S/4HANA)</LI><LI>Kyma: Kubernetes to develop/run cloud-native apps</LI><LI>Neo: HTML5, Java, and HANA extended apps</LI></UL></LI></UL><P>BTP has multiple regions and infrastructure providers</P><UL><LI>Regional deployment<UL><LI>Provided by SAP or Infrastructure-as-a-Provider (IaaS)</LI><LI>AWS, Azure, Google Cloud, Alibaba Cloud</LI></UL></LI><LI>The key features of BTP include managing and building:<UL><LI>Compose business processes</LI><LI>Application development and automation</LI><LI>Build and extend SAP applications</LI><LI>Integrate data</LI><LI>Analytics</LI><LI>Intelligent technologies</LI></UL></LI></UL><P>SAP Integration Suite utilises the Cloud Foundry environment. After we set up Business Technology Suite and SAP Intelligent Suite, a Cloud Foundry API endpoint will be provided in BTP.</P><P>In my case, this is "<A href="https://api.cf.ap21.hana.ondemand.com" target="_blank" rel="noopener nofollow noreferrer">https://api.cf.ap21.hana.ondemand.com</A>"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-11.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300258i04DE1404995C9368/image-size/large?v=v2&px=999" role="button" title="integration-11.png" alt="integration-11.png" /></span></P><H2 id="toc-hId-1634661556">Point 5. Business Accelerator Hub</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300259iB0C161A99F8D04C2/image-size/large?v=v2&px=999" role="button" title="Integration-map-5.png" alt="Integration-map-5.png" /></span></P><P><STRONG>Purpose:</STRONG> Provides a central source of information on SAP's APIs</P><P><STRONG>What is it:</STRONG> A web page with API details. Highly integrated with BTP.</P><P>Business Accelerator hub is a web resource from SAP. I've drawn it inside BTP as it closely relates to BTP content. It's a central repository for APIs from SAP & selected partners.</P><P><A href="https://api.sap.com/" target="_self" rel="noopener noreferrer">api.sap.com</A></P><P>Main features</P><UL><LI>Discover, explore, and test APIs</LI><LI>Consume integration and workflow content</LI></UL><P>The Business Partner (A2X) API that is tested here can be viewed on Business Accelerator Hub.</P><OL><LI>Login to business accelerator hub</LI><LI>Search 'business partner (A2X)'</LI><LI>Click on the entry in the results</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-12.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300265iA01898E1E22775A1/image-size/large?v=v2&px=999" role="button" title="integration-12.png" alt="integration-12.png" /></span></P><P>Some features of business accelerator hub:</P><UL><LI>Try out the APIs (sandbox environment)<UL><LI>Useful to view a sample of the response</LI></UL></LI><LI>View the API capabilities:<UL><LI>'API Reference' tab, scroll down to 'Business Partner' and click on it</LI><LI>This shows the list of capabilities of the API</LI></UL></LI><LI>View the API specification<UL><LI>'Overview' tab, scroll down to 'API Specification' and click on it</LI><LI>Download OpenAPI JSON</LI><LI>View in web browser, text editor to see extensive details</LI></UL></LI></UL><P>The API hub is a useful resource in terms of discovering and designing potential API use.</P><P>From the mock server specification, we know it's limited to only a few capabilities. We can find the path names for each of these on API hub:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-12-1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300267iB9991B6EA91D1FC9/image-size/large?v=v2&px=999" role="button" title="Integration-12-1.png" alt="Integration-12-1.png" /></span></P><P>This confirms the mock server only has a small fraction of the full business partner (A2X) capabilities. This makes sense given how extensive business partner data is in SAP. It's noteworthy that the mock server only supports 'read' activities. We can't test creating or changing a business partner.</P><P>The details of each of these requests can be viewed by clicking into them.</P><P>While there are three request paths. The address path can be added to the "all business partners" or "single business partner", so there are four possibilities:</P><UL><LI>All business partners<UL><LI>"/A_BusinessPartner"</LI></UL></LI><LI>All business partners with address<UL><LI>"/A_BusinessPartner/to_BusinessPartnerAddress"</LI></UL></LI><LI>Single business partner<UL><LI>"/A_BusinessPartner('{BusinessPartner}')"</LI></UL></LI><LI>Single business partner with address<UL><LI>"/A_BusinessPartner('{BusinessPartner}')/to_BusinessPartnerAddress"</LI></UL></LI></UL><P>These paths describe services of the API and are appended to the base URL.For example:</P><P>"<A href="http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('{BusinessPartner}')/to_BusinessPartnerAddress" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('{BusinessPartner}')/to_BusinessPartnerAddress</A>"</P><P>The correct terminology for these URLs:</P><UL><LI>Base URL/host: <A href="http://localhost:3005" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005</A></LI><LI>Base path: /sap/opu/odata/sap/API_BUSINESS_PARTNER</LI><LI>Entity set: /A_BusinessPartner</LI><LI>Key Access: ('1234567')</LI><LI>Navigation property: /to_BusinessPartnerAddress</LI></UL><P>"('{business partner}')" in the example is a placeholder for a business partner number.</P><P>Updating the flow diagram with these details:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-12-2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300270i7171352709F09CC3/image-size/large?v=v2&px=999" role="button" title="Integration-12-2.png" alt="Integration-12-2.png" /></span></P><H2 id="toc-hId-1438148051">Point 6: SAP Integration Suite</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300271i8FBBDE02F7A3CF64/image-size/large?v=v2&px=999" role="button" title="Integration-map-6.png" alt="Integration-map-6.png" /></span></P><P><STRONG>Purpose:</STRONG> Design and manage communications between applications.</P><P><STRONG>What is it:</STRONG> A service of SAP BTP.</P><P>SAP Integration Suite is one of the services available in Business Technology Platform. Therefore, a prerequisite is to register for the BTP free trial.</P><P>SAP Integration Suite can then be found under 'Services Marketplace'.</P><P>SAP Intelligent suite can be used for Cloud, on-premise, and hybrid scenarios. It includes pre-built, best-practice integration packs</P><P>Technically, it's a Java based app, and utilises the Apache Camel framework.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-13.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300274iC625747A413A6229/image-size/large?v=v2&px=999" role="button" title="Integration-13.png" alt="Integration-13.png" /></span></P><P> </P><P>The steps to install and set up are covered in part 3. After the initial set up you can navigate to the application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-14.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300276i32A7F841634A21EB/image-size/large?v=v2&px=999" role="button" title="Integration-14.png" alt="Integration-14.png" /></span></P><P> </P><P>For this demo/test, the two key menus within Integration Suite are:</P><UL><LI>Design > Integrations and APIs</LI><LI>Monitor > Integrations and APIs</LI></UL><P>The design area allows us to create an integration flow which involves:</P><UL><LI>Specifying source or 'sender' system</LI><LI>Specifying target or 'receiver' system</LI><LI>Adding flow steps</LI><LI>Modify message header</LI><LI>Modify message contents</LI><LI>Route steps between sender and receiver.</LI></UL><P>Within design, there is a graphical editor to build the integration flow.</P><H3 id="toc-hId-948231539"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-15.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300279iBAFE6B3B4B1AE952/image-size/large?v=v2&px=999" role="button" title="Integration-15.png" alt="Integration-15.png" /></span></H3><P> </P><H3 id="toc-hId-751718034">Business Partner Integration Flow</H3><P>Creating the integration flow involves setting the sender details and designing the required transformations to meet the receiver (API) requirements.</P><P>As we work through this keep in mind the API expects one of four paths depending on the search scenario:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-15-A.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300281i7F82A0BD6569F827/image-size/large?v=v2&px=999" role="button" title="Integration-15-A.png" alt="Integration-15-A.png" /></span></P><H3 id="toc-hId-555204529">The sender</H3><P>The sender represents the address that SAP Integration Suite will listen on. This is the address we send a message to from our upstream app. In this case a web app.</P><P>This address is built up in three parts:</P><OL><LI>A base which is provided when we deploy the integration flow</LI><LI>An 'Address' that we specify in the integration flow</LI><LI>Further path details from the web app.</LI></OL><P>The base of the endpoint is something along the lines of:</P><P>https://{trial-account-specific-details}-rt.cfapps.ap21.hana.ondemand.com/http/</P><P>For the address name, this demo/test uses the path `/request-business-partners/*` The "`*`" at the end allow us to send requests with additional details that can be utilised in the flow logic.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-15-2.png" style="width: 813px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300287iEFB652F16F584247/image-size/large?v=v2&px=999" role="button" title="Integration-15-2.png" alt="Integration-15-2.png" /></span></P><P>The web app will send four different types of message to match the four API scenarios, for the demo/test I will use:</P><UL><LI>"/api/bp/single"</LI><LI>"/api/bp/all"</LI><LI>"/api/bp/single/add"</LI><LI>"/api/bp/single/all"</LI></UL><P>The web app will also include the BP number in the message body.</P><P>We don't need to specify these in the Integration Flow as the `*` will allow them all to pass as long as they are preceded by "request-business-partners/"</P><P>Adding this information to the mapping table.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-15-B.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300290i5293141B171F7138/image-size/large?v=v2&px=999" role="button" title="Integration-15-B.png" alt="Integration-15-B.png" /></span></P><H3 id="toc-hId-526874715">Routing and Transformations</H3><P>The integration flow routes and transforms the received messages to meet the API requirements at the receiver. This involves:</P><UL><LI>Routing of messages from receiver to sender based on their content</LI><LI>1:1 relationship for each of the four scenarios</LI><LI>Transform the URLs</LI><LI>A part of the transformation is extraction of the business partner number from the received message and the placement of it into the API format URL.</LI></UL><H3 id="toc-hId-330361210">The receiver</H3><P>The receiver is set up to match the S/4HANA business partner mock server.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-15-3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300292i4EB268C6A7AECB21/image-size/large?v=v2&px=999" role="button" title="Integration-15-3.png" alt="Integration-15-3.png" /></span></P><P>More detail on the settings of each step are in part 3.</P><P>At this point, the integration flow is:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-15-4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300293i3A47FABC1963733D/image-size/large?v=v2&px=999" role="button" title="Integration-15-4.png" alt="Integration-15-4.png" /></span></P><P> </P><P>As an alternative, the web app could have been programmed to send messages that already fit the API requirements. However, in some scenarios sender systems may be inflexible or difficult to develop on, making these transformation capabilities in Integration Suite important.</P><P>Further reading on SAP Integration Suite:</P><P>- <A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/what-is-sap-integration-suite?locale=en-US" target="_self" rel="noopener noreferrer">Help - What is integration suite</A><BR />- <A href="https://camel.apache.org/" target="_self" rel="nofollow noopener noreferrer">Apache Camel</A></P><H2 id="toc-hId-427250712">Point 7. Cloud Connector</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-7.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300294iE46B3CEEA68DFE85/image-size/large?v=v2&px=999" role="button" title="Integration-map-7.png" alt="Integration-map-7.png" /></span></P><P><STRONG>Purpose:</STRONG> Allow SAP BTP to communicate to On-Premise SAP.</P><P><STRONG>What is it:</STRONG> An application that can provide a secure connection between SAP Cloud and On-Premise applications.</P><P>In the previous part, we defined the address details of the S/4HANA business partner mock server as:</P><UL><LI>Base URL/host: <A href="http://localhost:3005" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005</A></LI><LI>Base path: /sap/opu/odata/sap/API_BUSINESS_PARTNER</LI><LI>Entity set: /A_BusinessPartner</LI><LI>Key Access: ('1234567')</LI><LI>Navigation property: /to_BusinessPartnerAddress</LI></UL><P>If you paid attention to the screenshot of the receiver configuration in Intelligent Suite, you will note that it was set to</P><P>`<A href="http://s4-mock:3006/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('${property.employee_id" target="_blank" rel="noopener nofollow noreferrer">http://s4-mock:3006/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('${property.employee_id</A>}')`</P><P>The domain was "s4-mock:3006" not "localhost:3005".</P><P>This is because we can't connect SAP Cloud directly to an on-premise system. The S/4HANA business partner mock server is a JavaScript server that runs locally on desktop/laptop and is hence considered 'on-premise' or outside the SAP Cloud.</P><P>SAP provides "SAP Cloud Connector" to connect on-premise applications to the SAP Cloud.</P><P>It's a JavaScript application that can be installed and run locally. Part of the set-up involves entering authentication details from BTP.</P><P>After it's set-up, Cloud Connector will accept messages from Integration Suite and forward them to the S/4HANA business partner mock server.</P><P>The detailed set-up is covered in part 3.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-16.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300295i06526E809FBCA319/image-size/large?v=v2&px=999" role="button" title="Integration-16.png" alt="Integration-16.png" /></span></P><P>The screenshot above shows the "Cloud to On-Premise" mapping. A virtual host "s4-mock:3006" is mapped to the S4/HANA business partner mock server running locally on "localhost:3005".</P><P>Updating the integration flow:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-16-2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300296i574EC1489A20E013/image-size/large?v=v2&px=999" role="button" title="Integration-16-2.png" alt="Integration-16-2.png" /></span></P><H2 id="toc-hId-230737207">Point 8: Web app</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-8.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300297i052F2A545DBA8042/image-size/large?v=v2&px=999" role="button" title="Integration-map-8.png" alt="Integration-map-8.png" /></span></P><P>The web app is an application that uses JavaScript as a programming language. Web browsers have JavaScript engines and can run JavaScript code.</P><P>There are two parts to the web app. The frontend and the backend.</P><P>Think of JavaScript in two categories. frontend JavaScript and server (backend) JavaScript.</P><H3 id="toc-hId--259179305">Frontend JavaScript</H3><UL><LI>Runs in the web browser, utilising the browsers JavaScript engine</LI><LI>Is oriented towards manipulating web documents (HTML documents), for example:</LI><LI>Retrieve fields from HTML (e.g. sign up form)</LI><LI>Update HTML (e.g. show results, dynamically add a new page)</LI><LI>The JavaScript engine in the browser has limitations.</LI></UL><H3 id="toc-hId--455692810">Server JavaScript</H3><UL><LI>Installed on a server (can also be run on a desktop/laptop)</LI><LI>A popular engine is Node.js</LI><LI>Is oriented towards messaging, connectivity, security, authentication</LI><LI>Has a lot less limitations than the web browser.</LI></UL><P>We could try to send a request from the frontend to SAP Integration Suite, but because it comes from a browser, it will likely result in errors.</P><P>I did try sending a message to Integration Suite from the browser, but received various CORS errors. CORS, or Cross-Origin Resource Sharing, is a browser security feature that controls whether a web page on one domain can access resources from a different domain.</P><P>Therefore, the frontend will send a request to the backend, which will then prepare the message and send it as a request to SAP Integration Suite.</P><P>Let's look at the frontend first, then the backend.</P><H2 id="toc-hId--358803308">Point 8.1 Web app: frontend</H2><P><STRONG>Purpose:</STRONG> Search for and display business partner details on a web page.</P><P><STRONG>What is it:</STRONG> A simple web app based on HTML, CSS and JavaScript.</P><P>The frontend can be built with plain HTML, CSS and JavaScript.</P><UL><LI>HTML: Used to define the content of the web page</LI><LI>CSS: Used to apply styles to the web page (layout, colours, font, etc.)</LI><LI>Javascript&colon; Use for programming logic, for example:<UL><LI>Get input field values from HTML</LI><LI>Fetch data from the server</LI><LI>Restructure data for display</LI></UL></LI></UL><P>HTML, CSS, and JavaScript are written in their own files. They are typically in the same folder.</P><P>```<BR />frontend/<BR />├── index.html<BR />├── styles.css<BR />└── script.js<BR />```</P><P>The HTML file includes references to the 'styles.css' and 'script.js' documents. These can all be written in simple text editors, but applications like 'visual studio code' help with syntax highlighting and formatting.</P><P>For demo/test these files can simply be kept on a computers hard drive. Or they could be hosted on a static web server like Netlify or GitHub pages.</P><H2 id="toc-hId--555316813">Point 8.2: Web app - HTML</H2><P>Web pages are written with HTML, they are hierarchically structured documents where 'tags' are used to denote different types of element which contain content.</P><P>As a simple illustration, the following would create a web page with a title, a text input field, a submit button and a space for results.</P><pre class="lia-code-sample language-markup"><code><header>
<p>This is the page title</p>
<body>
<article>
<form>
<label>Enter business partner number
<input type="text" />
</label>
<button type="submit">Submit</button>
</form>
<div id="js-results">
// Results go here
</div>
</body></code></pre><P>This would display:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-17.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300300i9BF0AF4B0E0552B9/image-size/large?v=v2&px=999" role="button" title="Integration-17.png" alt="Integration-17.png" /></span></P><UL><LI>A simple element such as paragraph is denoted by<UL><LI>`<p>enter paragraph</p>`</LI></UL></LI><LI>A more complex element, an input field is denoted by<UL><LI>`<input type="text" />`</LI><LI>In this case, `type` is an attribute set to `text` for text field</LI></UL></LI></UL><H3 id="toc-hId--1045233325">Getting HTML to talk to CSS and JavaScript**</H3><P>There are two attributes that allow them to work together:</P><UL><LI>"id": for example id="bp-input" (where bp-input is a variable name)</LI><LI>"class": for example class="bp-input" (where bp-input is a variable name)</LI></UL><P>These attributes can be added to HTML elements to allow us to access those elements with CSS and JavaScript. The difference between the two is a single "id" value is unique and should only be used once in an HTML document, while a class can be applied to multiple HTML elements.</P><P>The body of the web app frontend is:</P><pre class="lia-code-sample language-markup"><code><body>
<header class="header">
<div class="header-title">
<img class="logo" src="assets/team.png">
<p class="title">Employee portal: business partner search</p>
</div>
<nav class="nav">
<a href="/index.html">Home</a>
</nav>
</header>
<article class="bp-article flow">
<h2>Search</h2>
<div class="divider"></div>
<form id="bp-form" class="bp-search">
<label for="bp-inp-number">Business partner number:</label>
<p class="text-small">(Enter 7 digit number or leave blank to return all)</p>
<input id="bp-inp-number" class="bp-inp-number" name="bp" type="text" />
<p id="bp-error" class="bp-error"></p>
<p class="options">Options:</p>
<div>
<input id="bp-inp-address" value="add" type="checkbox" />
<label class="text-small" for="bp-inp-address" name="bp-input-address">Include address details</label>
</div>
<div>
<input id="bp-inp-tab" value="tab" type="checkbox" />
<label class="text-small" for="bp-inp-tabulate" name="bp-inp-tabulate">Show results in table</label>
</div>
<button id="js-inp-sub" type="submit">Submit</button>
</form>
<h2>Results</h2>
<div class="divider"></div>
<div id="js-bp-results" class="bp-results">
</div>
</article>
</body></code></pre><P>It's not very complex. Most of the complexity is in the CSS styling and the JavaScript programming to return the results.</P><P>This segregation of content (HTML), styles (CSS), and programming logic (JS) makes working with frontend well structured.</P><P>The web app initial HTML includes:</P><UL><LI>A header bar with the logo, page name and home link</LI><LI>A search section with search field options<UL><LI>BP number</LI><LI>Checkbox to get address</LI><LI>Checkbox to show results in detail view</LI></UL></LI></UL><P>This is how this looks without styling.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-18.png" style="width: 824px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300306i6242F0F51B915194/image-size/large?v=v2&px=999" role="button" title="integration-18.png" alt="integration-18.png" /></span></P><P> </P><P>The version with styling was shown at the start of the article.</P><P>Here is the <A href="https://alexroan.com/assets/documents/integration/frontend-html" target="_self" rel="nofollow noopener noreferrer">HTML file</A></P><H2 id="toc-hId--948343823">Point 8.3: Web app - CSS</H2><P>Cascading style sheets (CSS) are used to apply styles to HTML documents. Consider an HTML document with three lines of text:</P><pre class="lia-code-sample language-markup"><code><p id="line-one">This is text line one</p>
<p class="other-lines">This is text line two</p>
<p class="other-lines">This is text line three</p></code></pre><P>These can be styled with CSS as follows:</P><pre class="lia-code-sample language-css"><code>#line-one {
color: red;
font-size: 1.2rem;
}
.other-lines {
color: blue;
text-decoration: underline;
}</code></pre><P>This would show:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-19.png" style="width: 472px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300316iF0420D2F7368485B/image-size/large?v=v2&px=999" role="button" title="Integration-19.png" alt="Integration-19.png" /></span></P><P>The complete CSS for the demo/test web app is lengthy. Around 200 lines. Here is a snippet to get an idea of what it looks like:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="integration-20.png" style="width: 822px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300317i8B8CC471FF9421E6/image-size/large?v=v2&px=999" role="button" title="integration-20.png" alt="integration-20.png" /></span></P><P>CSS is easy to pick up, but challenging to master!</P><P>Looking at the class "bp-search". This applies to the area of the HTML document where the search fields are collected. The CSS here does things like orient those search fields in a column "flex-direction:column" and apply a border and a shadow.</P><P>This is how our page looks with styling.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-21.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300318i0AF0854FE34C5F34/image-size/large?v=v2&px=999" role="button" title="Integration-21.png" alt="Integration-21.png" /></span></P><P> Here is the full <A href="https://alexroan.com/asssets/documents/integration/frontend-css.css" target="_self" rel="nofollow noopener noreferrer">CSS file</A></P><H2 id="toc-hId--976673637">Point 8.4: Web app - JavaScript</H2><P>Frontend JavaScript is able to retrieve, edit and add elements to the HTML document. Writing the JavaScript is possibly the most challenging part of this demo/test, so I'll just summarise what the code does:</P><UL><LI>Listen for a click of the 'submit' button</LI><LI>Get the value of the form input elements<UL><LI>The Business partner number</LI><LI>The status of the 'include address details' checkbox</LI><LI>The status of the 'show results in table' checkbox</LI></UL></LI><LI>Check the business partner value is valid<UL><LI>It has to be blank or a 7-digit number</LI></UL></LI><LI>Create a variable object called 'request' to track the request type</LI><LI>The variable includes:<UL><LI>request URL</LI><LI>request method</LI><LI>request body</LI><LI>(The ability to track multiple values in an Object is a key JS feature)</LI></UL></LI><LI>Based on the input fields, identify the request type & update the 'request' object.<UL><LI>The combinations are:<UL><LI>If bp number is blank and get address isn't checked</LI><LI>If bp number is blank and get address is checked</LI><LI>If bp number is entered and get address isn't checked</LI><LI>If bp number is entered and get address is checked.</LI></UL></LI></UL></LI></UL><P>At this point, the request object will store a set of values based on the input selections. The values will be one of the four options listed in the earlier tables.</P><P>The JavaScript now has what it needs to send a request to SAP Integration Suite. The rest of the JavaScript handles various things:</P><UL><LI>Use the JavaScript method 'fetch()' to send requests to the server</LI><LI>Handle security and authorisation</LI><LI>Getting a token if needed</LI><LI>Sending a token with requests</LI><LI>Handling errors</LI><LI>If successful, capturing the returned data</LI><LI>Working through the returned data and updating the HTML</LI><LI>Creating cards for the summary view</LI><LI>Creating a table for the detailed view</LI></UL><P>Here is the <A href="https://alexroan.com/assets/documents/integration/frontend-javascript.js" target="_self" rel="nofollow noopener noreferrer">JavaScript.</A></P><H2 id="toc-hId--1173187142">Point 9. Web app: backend server</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-map-9.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300319i957338C0D7C637CE/image-size/large?v=v2&px=999" role="button" title="Integration-map-9.png" alt="Integration-map-9.png" /></span></P><P><STRONG>Purpose:</STRONG> Allow a web frontend to communicate with SAP BTP.</P><P><STRONG>What is it:</STRONG> A JavaScript web backend server for message formatting and routing.</P><P>The backend server is locally hosted on our computer for this test/demo, but in reality would be on a web server somewhere.</P><P>It's written in express, which is a framework on Node.js. It's quite different from frontend JavaScript.</P><P>The logic of the backend is:</P><UL><LI>Listen for communication from the frontend</LI><LI>If a message is received:<UL><LI>Do some manipulation of the message related to authorisations</LI><LI>Using fetch() try sending a request to SAP Integration Suite</LI><LI>More authorisation/security handling</LI><LI>If successful, return the response back to the browser</LI><LI>If unsuccessful, log and return the error.</LI></UL></LI></UL><P>Here is the backend <A href="https://alexroan.com/assets/documents/integration/backend-javascript.js" target="_self" rel="nofollow noopener noreferrer">JavaScript code</A>. This needs to be set up as part of a Node.js server.</P><P>The JavaScript server is a bit more complex than the frontend. The server folder contains:</P><P>```<BR />web-app-server/<BR />├── node_modules/ # created by npm install<BR />├── package-lock.json # created/updated by npm install<BR />├── package.json # you write this (or generate with `npm init`)<BR />└── server.js # your server code<BR />```</P><UL><LI>server.js contains the actual JavaScript code for the server.</LI><LI>package.json defines project settings, dependencies, and scripts.</LI><LI>node_modules/ and package-lock.json are automatically generated when dependencies are installed using npm install.</LI></UL><P>The port can be specified in 'server.js'. I choose port 5000.</P><P>This means the server will run on '<A href="http://localhost:5000" target="_blank" rel="noopener nofollow noreferrer">http://localhost:5000</A>'.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-24.png" style="width: 650px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300322i6AC5E5AE7259389E/image-size/large?v=v2&px=999" role="button" title="Integration-24.png" alt="Integration-24.png" /></span></P><P>After writing package.json and server.js, the following steps are required in terminal to initialise the server, install express, and then start the server.</P><UL><LI>cd web-app-server</LI><LI>npm init -y</LI><LI>npm install express</LI><LI>node server.js</LI></UL><P>We can now update the flow diagram with the details for the frontend.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Integration-25.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/300323iD986EC04D7C226DD/image-size/large?v=v2&px=999" role="button" title="Integration-25.png" alt="Integration-25.png" /></span></P><H2 id="toc-hId--1369700647">One flow, many messages</H2><P>Looking at the diagram, a click on the search button triggers a message that passes through four stages:</P><OL><LI>From the frontend (browser) to the backend web server</LI><LI>From the web server to SAP Integration Suite</LI><LI>From Integration Suite to Cloud Connector</LI><LI>From Cloud Connector to the S/4HANA system</LI></OL><P>JavaScript doesn’t normally “wait” for things to happen — it’s designed to keep running while other operations (like network requests) complete in the background.</P><P>However, the fetch() function is asynchronous, which means it starts a request and immediately returns a kind of “promise” — a placeholder that will eventually be resolved when the response comes back (or if it fails).</P><P>When testing this flow, there are multiple layers where errors can occur:</P><UL><LI>The browser console (frontend logs)</LI><LI>The backend server console (Node.js logs)</LI><LI>Integration Suite’s monitoring tools</LI></UL><P>The message can fail at any step, and it sometimes takes a bit of detective work to figure out where it failed and why.</P><P>If everything works, and S/4HANA returns a successful response (status code 200), that response flows automatically back through the same chain — each layer staying in a “waiting” state until the result is passed back to the frontend and displayed to the user.</P><P>Don't worry if it's not 100% clear, it took me a while to figure this out.</P><H2 id="toc-hId--1566214152">Conclusions to the walkthrough</H2><P>It's really fun to build your own frontend and connect it to a real enterprise grade system.</P><P>A few important considerations:</P><UL><LI>Precision is needed with the integration configuration:<UL><LI>Host names, types, routing, transformation are all sensitive to mistakes</LI></UL></LI><LI>The JavaScript is a little complex, but it is all well established</LI><LI>A JavaScript and Node.js course and some googling could enable anyone to create this.</LI><LI>Using the S/4HANA business partner mock server is a quick and fun way to test out a potential integration with S/4HANA. However, it is just a mock server with limited features and a build and test with a real S/4HANA system would be required.</LI></UL><P>However, it's easily achievable with a little study and practice and it opens the possibility to develop a wide range of things.</P><P>The APIs brings together:</P><UL><LI>Real-time fast access to a wide range of business data thanks to S/4HANA.<BR />Extreme flexibility on the frontend side thanks to modern HTML, CSS and JS.</LI></UL><P>This integration could have been much simpler by just having the frontend deliver a URL in the format required for the API. We don't really need the complexity of Integration Suite for this.</P><P>---</P><H1 id="toc-hId--1469324650">Part 3: building the integration flow (for IT people)</H1><P>In this section I'll share my rough notes from the process of building this front end and integration flow. This is a copy and paste of my original notes in markdown so I apologise for the lack of formatting. I do list all the required tools which may be helpful for people trying this out.</P><P>Before starting, I'd recommend working through the CodeJam: </P><UL><LI><A href="https://community.sap.com/t5/sap-codejam/sap-codejam-connecting-systems-and-services-using-sap-integration-suite/ec-p/14110686#M848" target="_self">SAP CodeJam</A></LI><LI>The instructions are on a <A href="https://github.com/SAP-samples/connecting-systems-services-integration-suite-codejam" target="_self" rel="nofollow noopener noreferrer">GitHub repository.</A></LI></UL><H2 id="toc-hId--1959241162">Information sources & tools</H2><H3 id="toc-hId-1845809622">SAP Accounts: BTP and Integration Suite</H3><P>A trial account for business technology platform is required.</P><P>[BTP trial](<A href="https://developers.sap.com/tutorials/hcp-create-trial-account.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/hcp-create-trial-account.html</A>)</P><P>And a a trial for Integration Suite</P><P>[Integration Suite trial](<A href="https://developers.sap.com/tutorials/cp-starter-isuite-onboard-subscribe.html#f55ec71c-2853-4b83-8092-4e3031f8d6e6" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/cp-starter-isuite-onboard-subscribe.html#f55ec71c-2853-4b83-8092-4e3031f8d6e6</A>)</P><P>See the pre-requisites [pre-requisites](<A href="https://github.com/SAP-samples/connecting-systems-services-integration-suite-codejam/blob/main/prerequisites.md" target="_blank" rel="noopener nofollow noreferrer">https://github.com/SAP-samples/connecting-systems-services-integration-suite-codejam/blob/main/prerequisites.md</A>) document in the CodeJam repository.</P><H3 id="toc-hId-1649296117">Containerisation & Docker</H3><P>When running the S/4HANA business partner mock server locally, one option is to install the necessary JavaScript runtime environment and run it manually. Another option is to run it inside a container.</P><P>Containers are a key concept in Cloud architecture.</P><P>A container packages an app and all it's dependencies together so that it can run independently of the underlying computer (server, laptop, etc.).</P><P>This is a key concept for Cloud as it allows applications to run on different hardware and operating systems with minimal set up effort.</P><P>Docker is a platform to build and manage containers.</P><P>Docker and container features:</P><P>- Package an app and all it's dependencies<BR />- A container is like a lightweight virtual machine<BR />- Key terms<BR />- image: blueprint (.zip) containing app, dependencies, and OS<BR />- container: running instance of an image<BR />- dockerfile: instructions to build image<BR />- volume: how to persist data outside the container<BR />- port mapping: expose internal port to machine (e.g. 8080 to 3001).</P><P>I'll come back to this in the section on running the BP mock server.</P><H3 id="toc-hId-1452782612">Data basics</H3><P>The following data standards/formats are used in this exercise:</P><P><STRONG>JSON (JavaScript Object Notation)</STRONG></P><P>- A lightweight, human-readable format for storing and sharing structured data<BR />- Looks like nested key-value pairs (like a shopping list with categories)<BR />- Commonly used in web apps and APIs for sending data between systems.</P><P>For example:</P><P>```JSON<BR />{<BR />"employee_id": "1234567",<BR />"employee_name": "Alexander"<BR />}<BR />```</P><P><STRONG>XPATH</STRONG></P><P>- A query language used to navigate and extract data from XML or HTML documents<BR />- Lets you point to specific elements using a path-like syntax<BR />- Example: find the third paragraph inside a section<BR />- Used in tools like web scrapers and automation scripts.</P><P>For example:</P><P>```XPATH<BR />//title[contains(text(), 'Programming')]<BR />```</P><P><STRONG>XML (eXtensible Markup Language)</STRONG></P><P>- A flexible, tag-based format for representing structured data<BR />- Similar to HTML in appearance<BR />- But used for data storage and exchange, not page display.</P><P>For example:</P><P>```XML<BR /><book id="bk01"><BR /><author>Roan, Alexander</author><BR /><title>Front end to S/4HANA</title><BR />```</P><P><STRONG>HTML (HyperText Markup Language)</STRONG></P><P>- The standard language for building web pages and displaying content in browsers<BR />- Uses tags to define elements like headings, paragraphs, links, and images<BR />- Focused on structure and layout, not data exchange.</P><H3 id="toc-hId-1256269107">Terminal</H3><P>I worked through this demo/test on Mac so I used Terminal, which is the Mac default command line interface (CLI).</P><P>The CLI is necessary for activities such as setting up and starting servers or working with docker containers.</P><P>Terminal basics</P><P>- Open a folder `cd <folder name>` (change directory)<BR />- `cd` on it's own will go to the home directory<BR />- (Note that `~` represents home directory in terminal)<BR />- `cd ..` will go up a folder<BR />- List folders `ls` (list files in the current directory)<BR />- Open a file `open <file name>` (open a file)<BR />- Quit sub-screen and return to terminal `q`<BR />- Stop a running process hold control and c<BR />- Clear terminal `clear`</P><P>To run JavaScript servers, JavaScript runtime is required. It's easier to install and manage things like this using a package manager in Terminal. Homebrew is a popular package manager for Mac.</P><P>Homebrew</P><P>- A package manager for Mac<BR />- To install homebrew homebrew:<BR />- Launch terminal (launchpad > other > terminal)<BR />- Visit [Homebrew](<A href="https://brew.sh/" target="_blank" rel="noopener nofollow noreferrer">https://brew.sh/</A>) in your web browser<BR />- Copy the installation command<BR />- Paste it into terminal press enter.</P><H3 id="toc-hId-1227939293">Java/JavaScript</H3><P>To complete the demo/test a few different JavaScript things are needed.</P><P>Node.js</P><P>- This is a JavaScript that can be installed locally to create and run web-servers and web applications<BR />- Install using Homebrew<BR />- In terminal, enter: `brew install node`<BR />- Test the installation of Node.js<BR />- In terminal, enter: `node -v`, it should return the node version number.</P><P>NPM</P><P>- NPM is the node package manager<BR />- It's installed with Node.js<BR />- It's used to run a server<BR />- Install it in any directory a Node.js server sits in<BR />- To check the installation of NPM<BR />- In terminal, enter: `npm -v`, it should return the npm version number</P><P>Java development kit (JDK)</P><P>- Cloud Connector is a more complex application and requires JDK<BR />- More notes in the Cloud Connector section.</P><H3 id="toc-hId-1031425788">API client (Bruno/Postman)</H3><P>The CodeJam utilised [Bruno](<A href="https://www.usebruno.com/" target="_blank" rel="noopener nofollow noreferrer">https://www.usebruno.com/</A>) for API testing.</P><P>For the CodeJam a folder of pre-configured settings for Bruno is provided. However I'd suggest to start experimenting without the pre-configuration to build a solid understanding of the basics.</P><P>I'll include more notes in later sections.</P><H2 id="toc-hId-1128315290">Building and testing an integration flow</H2><P> </P><H3 id="toc-hId-638398778">Set up the S/4HANA business partner mock server</H3><P>Start by setting up the S/4HANA business partner mock server</P><P>- Download the mock server from [GitHub](<A href="https://github.com/SAP-archive/cloud-s4-sdk-book/tree/mock-server" target="_blank" rel="noopener nofollow noreferrer">https://github.com/SAP-archive/cloud-s4-sdk-book/tree/mock-server</A>)<BR />- Scroll down to the readme<BR />- Either download the archive linked under 'How to run this server'<BR />- Or if using GitHub clone the repository and checked the branch 'mock-server'<BR />- Move it to a convenient folder of your choice<BR />- I set it a `users/<username>/projects/integration/cloud-s4-sdk-book`</P><P> </P><H3 id="toc-hId-441885273">Run the server: option 1: use NPM</H3><P>Node.js and the node package manager (NPM) can be used to run the server directly on a computer.</P><P>- Open terminal<BR />- Navigate to `users/<username>/projects/integration/cloud-s4-sdk-book`<BR />- (or wherever you saved the folder)<BR />- Enter: `npm install` (install node package manager in the folder)<BR />- Enter: `npm start` (start the server)<BR />- This should return something like:</P><P>```shell<BR />> bupa-mock-odata@1.0.0 start<BR />> node server.js<BR />Mock server started on port 3000 after 1 ms, running - stop with CTRL+C (or CMD+C)...<BR />```</P><P>Terminal tells us which port the server is running on. Port "3000" is accesible in the browser or an API client via "<A href="http://localhost:3000" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3000</A>".</P><P>To stop the server in terminal use `ctrl+c`.</P><P>For the curious, you can look at the files that make up the mock server in the above folder. Check out:</P><P>- server.js<BR />- This includes the JavaScript code for the server<BR />- The code references other files such as app.js<BR />- package.json<BR />- This is like a configuration file for a node.js server<BR />- business partner > business-partner-data.json<BR />- This contains the demo test business partner data.</P><P>Theoretically you could use this Node.js server as a template to simulate other SAP Odata APIs with some adjustments to these files.</P><P> </P><H3 id="toc-hId-245371768">Run the server: option 2: use Docker</H3><P>The mock server can also be run as a Docker container. This is a little more convenient as after the first run we can stop and start it from the Docker desktop app.</P><P>Note the server already has a Dockerfile, so it's already set up to run as a container.</P><P>If we run something inside a docker container we need to interact with it via ports on the container. The application is really running contained inside a container. When we run a docker container we provide a mapping between a local port on the computer and the container port. We can then access the docker application via this mapping.</P><P>To run as a Docker container:</P><P>- Launch the docker app<BR />- Open terminal<BR />- Enter `docker run -p 3005:8080 bp-mock-server`<BR />- 3005 is the local port<BR />- 8080 is the docker container port<BR />- Local port can be any free port on your computer. I choose 3005<BR />- The container port is 8080<BR />- View the status of the container in the Docker app<BR />- Use the browser to check `http//localhost:3005`</P><P>Note if there wasn't already a dockerfile we would need to create one and build the app before running it.</P><P>**A simple docker demo**</P><P>This was my first time using docker, so I experimented by creating a simple "Hello, World!" style server from scratch. Here it is if you want to try:</P><P>- Create a JS file "index.js"<BR />- Add `console.log("hello from docker");`<BR />- This just prints text to the console (Terminal)<BR />- Create a package file "package.json"<BR />- Add the following JSON to "package.json"</P><P>```json<BR />{<BR />"name": "hello-docker",<BR />"version": "1.0.0",<BR />"main": "index.js",<BR />"scripts": {<BR />"start": "node index.js"<BR />}<BR />```</P><P>- Create a dockerfile "dockerfile"<BR />- Add the following to "dockerfile"</P><P>```Dockerfile<BR />FROM node:18</P><P>WORKDIR /usr/src/app</P><P>COPY package*.json ./<BR />RUN npm install</P><P>COPY . .</P><P>CMD ["npm", "start"]<BR />```</P><P>You can see Docker uses NPM, in the same way we would with a manual run, but it's installing and running NPM inside the container, not on the computer.</P><P>To build and run:</P><P>- Build docker container `docker build -t hello-docker .`<BR />- Run docker container `docker run hello-docker`</P><P> </P><H2 id="toc-hId-342261270">Testing with the web browser</H2><P>The simplest way to test the API is running locally is to put the local address in the web browser.</P><P>- For NPM it was "http//localhost:3000"<BR />- For docker image it was "http//localhost:3005"</P><P>The main domain should return the API details including the links such as:</P><P>"<A href="http://localhost:3000/sap/opu/odata/sap/API_BUSINESS_PARTNER" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3000/sap/opu/odata/sap/API_BUSINESS_PARTNER</A>"<BR />"<A href="http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER</A>"</P><P>To access the service to return the general data of all business partners we add A_BusinessPartner</P><P>"<A href="http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner</A>"</P><P>In the browser, this should return a JSON document containing the list of business partners.</P><P>We can pick a business partner number from the list and use it with the path to select a specific business partner:</P><P>"<A href="http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('1003764" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner('1003764</A>')"</P><P> </P><H2 id="toc-hId-145747765">Testing with an API client (Bruno)</H2><P>Rather than just using the web browser to check the API an API client can be used, this has a few benefits:</P><P>- We can build the URLs through a selection of 'input fields'<BR />- We can save different requests for easy and quick re-testing<BR />- We can pass data in the request body</P><P>To test with Bruno:</P><P>- Launch Bruno<BR />- Use the '...' menu to create a collection<BR />- Name it 'bp-mock'<BR />- Specify a location. I used "users/{username}/projects/integration"</P><P>Create a request for all business partners</P><P>- Use the '...' menu next to bp-mock and select 'new request'<BR />- Enter request name 'All business partners'<BR />- Under URL select 'GET' and enter the URL that returns all business partners<BR />- `<A href="http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner" target="_blank" rel="noopener nofollow noreferrer">http://localhost:3005/sap/opu/odata/sap/API_BUSINESS_PARTNER/A_BusinessPartner</A>`</P><P>Run a request</P><P>- Look to the right of the 'GET' line on the main page and click the '->' to run<BR />- The right panel will show the JSON response<BR />- The same response as shown earlier in the web browser.</P><P>Create a request for a single business partner (1003765)</P><P>- Use the '...' menu next to bp-mock and select 'new request'<BR />- Enter request name 'Specific business partners'<BR />- Enter the same URL details as above.<BR />- In the 'params' tab click '+ param' and enter<BR />- Name: `&filter`<BR />- Path: 'BusinessPartner eq '1003766'<BR />- Run the request. A single business partner should be returned.</P><P>Note as the params are entered the URL dynamically updates.</P><P><STRONG>Basics on OData API URLs</STRONG></P><P>- The base for the API is "/API_Business_Partner"<BR />- A service of the API is then appended "/A_BusinessPartner"<BR />- Queries can then by added, OData queries include:<BR />- Filtering: `/A_BusinessPartner?$filter=Name eq 'Max'`<BR />- Selecting fields: `/A_BusinessPartner?$select=Name,City`<BR />- Pagination: `/A_BusinessPartner?$top=5&$skip=10`<BR />- Accessing nested data: `/A_BusinessPartner?$expand=Address`<BR />- When working with OData:<BR />- Field names are case sensitive<BR />- String values in single quotes</P><P>Keep in mind the S/4HANA mock business partner server only includes limited functionality. The above filters and selects won't work.</P><H3 id="toc-hId--344168747">Java SDK for SAP Cloud Connector</H3><P>The next step is to set up SAP Cloud Connector</P><P>Recall Cloud Connector will provide a secure tunnel allowing SAP Cloud to talk to the S/4HANA business partner mock server.</P><P>Cloud Connector requires a full Java Development Kit (JDK).</P><P>- You can use "javac -version" in terminal to check if you already have JDK<BR />- There is a SAP Help page for [Cloud Connector](<A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector?locale=en-US" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector?locale=en-US</A>)<BR />- Check the [prerequisites](<A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/prerequisites?locale=en-US#jdks" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/prerequisites?locale=en-US#jdks</A>) section, it lists the JDK options<BR />- I choose SAP machine 21 JDK<BR />- You can download this from [GitHub](<A href="https://sap.github.io/SapMachine/" target="_blank" rel="noopener nofollow noreferrer">https://sap.github.io/SapMachine/</A>)<BR />- I have a dev folder for items like this in my home folder<BR />- "Users/{username}/dev"<BR />- Use Homebrew to install<BR />- Open terminal and enter "brew install openjdk@21"</P><P>It's likely you may run into version, compatibility, authorisation issues. These are all very common and a web search should help.</P><H3 id="toc-hId--540682252">Install Cloud Connect</H3><P>Next install Cloud Connector.</P><P>Cloud connector is listed under the SAP development tools page under [Cloud](<A href="https://tools.hana.ondemand.com/#cloud" target="_blank" rel="noopener nofollow noreferrer">https://tools.hana.ondemand.com/#cloud</A>).</P><P>- Download the cloud connector file for your OS<BR />- My Mac is Apple Silicon so I chose 'sapcc-2.18.1.2-macosx-aarch64.tar.gz'<BR />- Unzip and move it to a folder of your choice<BR />- Navigate inside the downloaded folder in terminal<BR />- Check contents with 'ls', you should see a 'go.sh' file<BR />- Enter: './go.sh' this will run Cloud Connector<BR />- Cloud connector should now be running, note the address in the terminal log<BR />- Login with default account: 'Administrator' and password: 'manage'<BR />- Change password<BR />- Keep a note of the account and password.</P><P>I received authorisation issues on the first attempt to run it:</P><P>- Click through them, then goto apple > settings > privacy&security<BR />- Scroll down to security and click 'allow anyway'<BR />- Try: './go.sh' again.</P><H3 id="toc-hId--569012066">Install and set up SAP Integration Suite</H3><P>To continue from here SAP Integration has to be installed and active as per the earlier instructions.</P><H3 id="toc-hId--765525571">Connect SAP Cloud Connector to SAP Integration Suite</H3><P>As Cloud Connector bridges between SAP Cloud and the S/4HANA business partner mock server we need to set it up to connect to SAP Cloud. We get the security/authentication data to do this from our SAP BTP trial account.</P><P>- After logging into Cloud Connector click '+Add Subaccount'<BR />- Hit 'next' to skip the HTTPS settings<BR />- Select 'Configure using authentication data'<BR />- Select 'Add subaccount authentication data from file '<BR />- In your browser got to your SAP BTP trial homepage<BR />- Click on your subaccount<BR />- On the left menu expand Connectivity and select Cloud Connectors<BR />- Click on 'download authentication data'<BR />- Return to Cloud Connector<BR />- Click browse and select the downloaded file 'authentication.data'<BR />- Click next<BR />- Leave location ID blank<BR />- (This would be relevant if there were multiple Cloud Connectors)<BR />- Click finish.</P><P>Double check the settings in the subaccount overview:</P><P>- BTP trial region = Cloud Connector region<BR />- BTP Subaccount ID = Cloud Connector Subaccount<BR />- The region host in Cloud Connector = Cloud Foundry API Endpoint in BTP.</P><H3 id="toc-hId--962039076">Cloud Connector to Mock BP Server</H3><P>There's no security on S/4HANA business partner mock server so it is simply a matter of adding the address.</P><P>- In Cloud Connector, on the left sidebar click 'Cloud to On-Premise'<BR />- To the right of 'Mapping Virtual to Internal Systems' click `+`<BR />- Select back-end, enter: "Non-SAP system", click 'next'<BR />- Select protocol: "HTTP", click 'next'<BR />- For internal host enter "localhost"<BR />- For internal port enter: "3005"<BR />- For virtual host: "s4-mock"<BR />- For virtual Port: "3006"<BR />- Uncheck allow principal propagation<BR />- Click through to finish.</P><P>Replace the internal port name with the one your mock server is running on locally. You are free to choose the virtual host and port.</P><P>It's critical to select "Non-SAP system" and HTTP, not HTTPS.</P><P>A new entry will appear under 'Mapping Virtual to Internal Systems'</P><P>- Make sure your mock bp server is still running on the host and IP you entered<BR />- From the icons on the right, click on 'check availability..'<BR />- You should see status 'reachable'</P><P>At this stage `<A href="https://localhost:3005" target="_blank" rel="noopener nofollow noreferrer">https://localhost:3005</A>` is now mapped to `<A href="https://s4-mock:3005" target="_blank" rel="noopener nofollow noreferrer">https://s4-mock:3005</A>` in the SAP Cloud.</P><P>You can also check in integration suite to see if Cloud Connector is connected.</P><P>- In the left hand menu select connectivity > cloud connectors.</P><P>Errors at this stage are likely related to</P><P>- Mistakes in the host name, port name, or system type<BR />- The mock server or cloud connector is not running.</P><H3 id="toc-hId--1158552581">Design integration flow</H3><H4 id="toc-hId--1648469093">Create an integration flow</H4><P>- Login to BTP trial home<BR />- From the left hand menu expand Services and select Instances and subscriptions<BR />- Under 'Subscriptions' click on 'Integration Suite'<BR />- On the left menu select expand 'Design' and select 'Integrations and APIs'<BR />- Choose 'Create' on the top right to create a new package.<BR />- Give it a name<BR />- Shift to the 'Artifacts' tab<BR />- Select 'Add' and choose 'Integration Flow' from the list<BR />- Give it a name<BR />- Click add<BR />- Click on the newly created integration flow</P><P>The integration flow screen is read-only by default, click edit.</P><P><STRONG>Set up the sender</STRONG></P><P>Define an 'address' for the SAP Integration Suite endpoint.</P><P>- Click on sender<BR />- Click connector arrow<BR />- Drag to start event<BR />- In adapter type pop-up select HTTPS<BR />- To configure the adapter click on the drawn line (if not selected)<BR />- The settings are in the bottom panel, drag it up to expand it<BR />- Navigate to 'connection' tab, enter the following:<BR />- Address: `/request-business-partners`<BR />- Authorisation: `User Role`<BR />- User Role: `ESBMessaging.send`<BR />- CSRF Protected: `Unchecked` (Cross-site request forgery).</P><P><STRONG>Add flow elements</STRONG></P><P>The CodeJam has excellent instructions for walking through different flow steps as per their exercises.</P><P>I will summarise a few elements I used in my design.</P><P><STRONG>Router</STRONG></P><P></P><P>- The router allows you to split the flow based on a condition.<BR />- This example splits the flow into 4 based on the incoming URL<BR />- For example where the incoming URL ends in "single/add"<BR />- Re-call our integration flow address was "request-business-partners"<BR />- In this case a message arrives to "request-business-partners/single/add"<BR />- Intelligent Suite assigns the last part to the variable CamelHttpPath<BR />- Which is part of the message header hence: header.CamelHttpPath.</P><P>The route path we are looking at in this example is the one that returns a single business partner with address data.</P><P><STRONG>Content modifier - case 1</STRONG></P><P>Case 1:</P><P>- The content modifier allows us to modify the message header or body.<BR />- In the above screenshot a content modifier is added directly after the routing.<BR />- This deletes the CamelHttpPath, in this case "single/add"<BR />- After routing we no longer need this part of the URL in the message header.</P><P><STRONG>JSON to XML converter</STRONG></P><P>- This converts the JSON in the message body to XML.<BR />- In the case of searching for a single BP the message body includes JSON:</P><P>```JSON<BR />{<BR />"employee_id": "1234567"<BR />}<BR />```</P><P>- This will be converted to XML</P><P>```XML<BR /><root><BR /><employee_id>1234567</employee_id><BR /></root><BR />```</P><P><STRONG>Content modifier - case 2</STRONG></P><P></P><P>- In this case the content modifier gets "employee_id" from the message body<BR />- And assigns it to a new variable<BR />- XPath can be used to access the XML value<BR />- "/root/employee_id"<BR />- The variable name is set as employee_id<BR />- The data type is set as a Java string.<BR /><BR /><STRONG>Request Reply</STRONG></P><P>Request reply let's us send a request to a server.</P><P>- Click on the Set employee_id<BR />- Click add flow step on the canvas<BR />- Select 'Request Reply' under call > external call<BR />- Click on 'Request Reply'<BR />- Click on 'connector' and drag to the receiver<BR />- Select adapter type 'HTTP'<BR />- Under 'HTTP' in the connector properties, select 'Connection'<BR />- Enter the address of the cloud connector:<BR />- The path for a single business partner with address data involves updating:<BR />- Address: "<A href="http://s4-mock:3006/sap/opu/odata/sap/API_Business_Partner/A_BusinessPartner('${property.employee_id" target="_blank" rel="noopener nofollow noreferrer">http://s4-mock:3006/sap/opu/odata/sap/API_Business_Partner/A_BusinessPartner('${property.employee_id</A>}')"<BR />- Query: "$expand=to_BusinessPartnerAddress"<BR />- Proxy Type: `On-premise`<BR />- Method: `GET`<BR />- Authentication: `None`<BR />- Save<BR />- Deploy</P><P>To check deployment status go to Monitor > Integration and APIs. On this page the endpoint to access the service is shown:</P><P>"https://{your trial}-cpitrial03-rt.cfapps.ap21.hana.ondemand.com/http/request-business-partners"</P><H4 id="toc-hId--1844982598">Test Cloud Integration with API client</H4><P>At this point we can test consuming the API through SAP Integration Suite.</P><P>Unlike testing the local mock server, we need to deal with authentication and security. The way this works is:</P><P>- We pass a "client id" and "secret" to a "token URL"<BR />- BTP passes back a "token" which is valid for a certain period of time<BR />- This "token" has to be attached to any requests to the API in Intelligent Suite.</P><P><STRONG>Accessing security details</STRONG></P><P>- Navigate to your BTP trial account<BR />- Expand services and click on 'instances and subscriptions'<BR />- Scroll down to instances and look for your integration flow instance<BR />- Integration Suite uses Cloud Foundry so the runtime will be cloud foundry<BR />- It will likely be named 'default_it-rt_integration-flow'<BR />- Scroll down to service keys and click on the service key, note the values for:<BR />- "clientid"<BR />- "clientsecret"<BR />- "url"<BR />- "tokenurl"</P><P>For local testing we can hardcode these values in our test tools, but be careful not to upload or share these anywhere.</P><P>In production, never hardcode secrets or tokens. Use environment variables or a secure credential store.</P><P>**Request a token with Bruno**</P><P>In Bruno create a new request:</P><P>- Name: `TOKEN`<BR />- Method: `POST`<BR />- URL: enter the "tokenurl" from above<BR />- Navigate to the Params tab:<BR />- Select 'Add Param'<BR />- Enter name: `grant_type` path: `client_credentials`<BR />- Navigate to Auth<BR />- Switch 'Inherit' to 'Basic Auth' and enter:<BR />- Username: `client_id`<BR />- Password: `client_secret`<BR />- Save</P><P>Send the request. This should return a JSON document with a long value in "access_token". There should also be a expiry time e.g. 4199 seconds.</P><P>When sending a request, if the token is not valid Integration Suite will return a 401 error code. This means we need to request a new token.</P><P>Within Bruno we can save this token value to a variable. This saves us from copying and pasting it into other requests.</P><P>- Goto Environments > Configure > Create Environment<BR />- Name: 'integration-flow'<BR />- Click '+ Add Variable'<BR />- Enter name: 'access_token'<BR />- For value, leave it blank<BR />- Save and close</P><P>Navigate to 'scripts' under the TOKEN request. Under Post Request enter:</P><P>```JS<BR />if (res.status == 200) {<BR />const token = res.body.access_token;<BR />bru.setEnvVar("access_token",token);<BR />}<BR />```</P><P>- If the request receives a response (status 200)<BR />- Get the access_token value from the response<BR />- Assign to environment variable "access_token".</P><P>Save and run the TOKEN request.<BR />Goto the environment and click 'configure'. You should see the access_token variable updated with the value from the response.</P><P>**Test the API with a request with for a single BP**</P><P>- In Bruno create a new request<BR />- Name: "BP via integration suite"<BR />- URL: "https://{your-trial}.it-cpitrial03-rt.cfapps.ap21.hana.ondemand.com/http/request-business-partners"<BR />- Replace the above with your actual endpoint from Intelligent Suite.<BR />- Navigate to the 'Auth' tab<BR />- Click on 'Inherit' and change to 'Bearer Token'<BR />- In Token enter: `{{access_token}}`<BR />- This eferences an environment variable in Bruno<BR />- Add the request body<BR />- The JSON with our employee ID</P><P>```JSON<BR />{<BR />"employee_id": "1003764"<BR />}<BR />```</P><H2 id="toc-hId--1454690089">Building and testing a frontend</H2><P>At this point a request to SAP Integration Suite should be successfully routed and transformed to the S/4HANA business partner mock server.</P><P>The next part would be building and testing the web app. However, there is too much to cover in building and testing the frontend to cover in this post. I may produce a video on this if anyone is interested.</P><H2 id="toc-hId--1651203594">Final thoughts</H2><P>This technology stack is definitely a bit overkill for a simple 'search' portal, but it is fairly easy to put together as long as you are careful when specifying paths, hosts and port names. </P><P>If you'd like to discuss further please feel free to connect on <A href="https://www.linkedin.com/in/alexanderroan/" target="_self" rel="nofollow noopener noreferrer">LinkedIn - Alexander Roan</A></P>2025-08-13T12:45:21.973000+02:00https://community.sap.com/t5/technology-blog-posts-by-members/strengthening-sap-btp-security-sso-with-cloud-connector-using-token-based/ba-p/14186995🔐 Strengthening SAP BTP Security: SSO with Cloud Connector Using Token-Based Auth (Replacing SUSER)2025-08-22T11:13:39.813000+02:00sushilgupta857https://community.sap.com/t5/user/viewprofilepage/user-id/720925<H2 id="toc-hId-1737749421" id="toc-hId-1737931145">About Me</H2><P>Hare Krishna<SPAN> </SPAN><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":folded_hands:">🙏</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-1541235916" id="toc-hId-1541417640"><span class="lia-unicode-emoji" title=":globe_showing_europe_africa:">🌍</span>Introduction</H2><P>Security is at the heart of SAP BTP (Business Technology Platform) administration. Traditionally, basic authentication with <STRONG>SUSER credentials</STRONG> was required when connecting SAP Cloud Connector (SCC) with a BTP subaccount. While functional, this approach has critical drawbacks:</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Static credentials stored in config<BR /><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Weak auditability<BR /><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Complex user/password management</P><P>With the adoption of <STRONG>token-based authentication and Single Sign-On (SSO)</STRONG> using a <STRONG>Custom Identity Provider (IdP)</STRONG>, SAP now offers a smarter and more secure way of handling access. This blog explains how the shift strengthens security, simplifies user management, and eliminates the dependency on SUSER credentials.</P><HR /><H2 id="toc-hId-1344904135"><span class="lia-unicode-emoji" title=":rocket:">🚀</span>What’s New: Token-Based Authentication for the SCC ↔ Subaccount Link</H2><P>Instead of sending an S-user + password when adding/maintaining the subaccount in SCC, you trigger an <STRONG>SSO flow</STRONG>: the subaccount’s <STRONG>trust configuration</STRONG> redirects to your <STRONG>Custom IdP</STRONG>, issues a <STRONG>short-lived token</STRONG>, and <STRONG>BTP validates</STRONG> it to complete the SCC connection.</P><P><STRONG>Why it matters</STRONG></P><UL><LI><P><span class="lia-unicode-emoji" title=":cross_mark:">❌</span>No static S-user secrets in SCC</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Short-lived tokens + centralized IdP policies/MFA</P></LI><LI><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Clean audit trail and easy revocation</P></LI></UL><HR /><H2 id="toc-hId-1148390630"><span class="lia-unicode-emoji" title=":gear:">⚙️</span>Step-by-Step Configuration (Corrected)</H2><P><STRONG>Step 1 — Configure Custom IdP in the BTP Subaccount</STRONG></P><UL><LI><P>BTP Cockpit → <STRONG>Subaccount → Security → Trust Configuration</STRONG></P></LI><LI><P>Add/enable your <STRONG>Custom IdP</STRONG> (SAP IAS / Azure AD / Okta, etc.) for user logon</P></LI><LI><P>Ensure metadata/trust is correct (SAML/OIDC per your org standard)</P></LI></UL><P><STRONG>Step 2 — Provision the Admin & Map Roles (in Subaccount)</STRONG></P><UL><LI><P>Ensure the <STRONG>admin user exists in the subaccount</STRONG> and is mapped to the Custom IdP</P></LI><LI><P>Assign the <STRONG>Cloud Connector Administrator</STRONG> role collection (name may vary by tenant)</P></LI><LI><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Without this mapping, the token flow will fail when SCC tries to connect</P></LI></UL><P><STRONG>Step 3 — Connect SCC to the Subaccount via Token-Based SSO</STRONG></P><UL><LI><P>In <STRONG>SCC Admin UI</STRONG> → <STRONG>Subaccounts</STRONG> → <EM>Add / Maintain Subaccount</EM></P></LI><LI><P>Choose <STRONG>token-based/SSO</STRONG> (not username/password)</P></LI><LI><P>The flow opens the <STRONG>BTP subaccount trust</STRONG> → <STRONG>redirects to your Custom IdP</STRONG></P></LI><LI><P>Authenticate as the mapped admin; on success, <STRONG>BTP validates the token</STRONG> and <STRONG>SCC shows the subaccount as connected</STRONG></P></LI></UL><P><STRONG>Step 4 — Validate the Connection</STRONG></P><UL><LI><P>Confirm SCC shows <STRONG>Connected</STRONG> (region, Subaccount ID, location ID as applicable)</P></LI><LI><P>Optionally verify in <STRONG>BTP cockpit</STRONG> (Connectivity / Cloud Connector view) that the subaccount link is healthy</P></LI></UL><P><STRONG>Step 5 — Existing Subaccounts (Legacy) – Do It at Certificate Renewal</STRONG></P><BLOCKQUOTE><P><span class="lia-unicode-emoji" title=":counterclockwise_arrows_button:">🔄</span>For old subaccounts already connected with S-user: <STRONG>switch to token-based SSO during the certificate renewal window</STRONG>.</P><UL><LI><P>Keep the same subaccount; update trust to Custom IdP (if not already)</P></LI><LI><P>Re-establish the SCC ↔ subaccount link using <STRONG>token-based SSO</STRONG> (no S-user)</P></LI><LI><P>This upgrades security without spinning up a new subaccount</P></LI></UL></BLOCKQUOTE><HR /><H2 id="toc-hId-951877125"><span class="lia-unicode-emoji" title=":shield:">🛡</span>️ Key Benefits</H2><UL><LI><P><STRONG>No S-user secrets</STRONG> stored in SCC</P></LI><LI><P><STRONG>MFA & policies</STRONG> enforced centrally at your IdP</P></LI><LI><P><STRONG>Auditable</STRONG> (IdP + BTP logs)</P></LI><LI><P><STRONG>Lower ops overhead</STRONG> (no password rotations, fewer incidents)</P></LI></UL><HR /><H2 id="toc-hId-755363620"><span class="lia-unicode-emoji" title=":building_construction:">🏗</span>️ Architecture Flow — SCC ↔ Subaccount Token-Based SSO</H2><P>[Cloud Connector]<BR />│ (1. Connect/renew request to subaccount)<BR />▼<BR />[SAP BTP Subaccount – Trust Configuration]<BR />│ (2. Redirects to Custom IdP for auth)<BR />▼<BR />[Custom Identity Provider (IdP)]<BR />│ (3. User/admin authenticates → token issued)<BR />▼<BR />[SAP BTP Subaccount]<BR />│ (4. Validates token & completes trust)<BR />▼<BR />[Secure Connection Established: SCC ↔ Subaccount]</P><P><STRONG>Step notes</STRONG></P><OL><LI><P>SCC initiates the subaccount connection (add/renew).</P></LI><LI><P>Subaccount trust hands off to your IdP.</P></LI><LI><P>IdP authenticates the <STRONG>mapped</STRONG> admin and issues a token.</P></LI><LI><P>BTP validates token; the SCC ↔ subaccount link is finalized—<STRONG>no S-user</STRONG>.</P></LI></OL><P> </P><H2 id="toc-hId-558850115"><span class="lia-unicode-emoji" title=":camera_with_flash:">📸</span>Real-Life Example (With Screenshots)</H2><P>Here’s how this setup looks in actual environment( BTP trial account is used for performing this setup)</P><P>Create user in SAP BTP Subaccount, Provide Cloud Connector administrator privileges.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_27_04-Users - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" style="width: 742px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303812i0AB7EF84A7E7495C/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_27_04-Users - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" alt="2025-08-22 13_27_04-Users - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" /></span></P><P>We will. be using IAS as custom identity provider. Create User in IAS as shown below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_34_28-Administration Console for Cloud Identity Services.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303813i591A5E92DD806DFC/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_34_28-Administration Console for Cloud Identity Services.png" alt="2025-08-22 13_34_28-Administration Console for Cloud Identity Services.png" /></span></P><P>Login to Cloud connector, Provide required details and update <SPAN>$SAP-CP-SSO-PASSCODE$ in Login E-mail section</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_37_02-Cloud Connector.png" style="width: 766px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303811iA4F2636DC499F1FA/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_37_02-Cloud Connector.png" alt="2025-08-22 13_37_02-Cloud Connector.png" /></span></P><P>Make sure Subaccount is connected to IAS using OIDC or SAML Protocols In trust configuration.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_38_23-Trust Configuration - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303810i80955FD0049AE33B/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_38_23-Trust Configuration - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" alt="2025-08-22 13_38_23-Trust Configuration - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" /></span></P><P>Now Create URL like shown below: <SPAN>The URL pattern is </SPAN>https://<subdomain>.authentication.<btp-XSUAA-host>/passcode<SPAN>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_39_15-New Tab.png" style="width: 810px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303814i28B9EDF884BF5DAD/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_39_15-New Tab.png" alt="2025-08-22 13_39_15-New Tab.png" /></span></P><P>When you access the URl, It will redirect to IAS for authentication</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_40_29-SAP BTP subaccount BTP tools_ Sign In.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303815i0274D7EC1A2C9661/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_40_29-SAP BTP subaccount BTP tools_ Sign In.png" alt="2025-08-22 13_40_29-SAP BTP subaccount BTP tools_ Sign In.png" /></span></P><P>Post successful User authentication, Temporary authentication code is generated. Use it in Cloud connector</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_41_06-Welcome.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303816i46386913D51508E5/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_41_06-Welcome.png" alt="2025-08-22 13_41_06-Welcome.png" /></span></P><P>Update the token in cloud connector configurations shown below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_41_21-Cloud Connector.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303817i5C143094F396086B/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_41_21-Cloud Connector.png" alt="2025-08-22 13_41_21-Cloud Connector.png" /></span></P><P>Cloud connector is successfully connected to Subaccount.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_42_05-Cloud Connector.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303818i02A582D851E80B5E/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_42_05-Cloud Connector.png" alt="2025-08-22 13_42_05-Cloud Connector.png" /></span></P><P>Now for Legacy systems, where users are already using SUSERID and password, while cert renewal, we can use the SSO mechanism to generate token and renew the certificate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_42_35-Cloud Connector.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303819i847584176DD008ED/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_42_35-Cloud Connector.png" alt="2025-08-22 13_42_35-Cloud Connector.png" /></span></P><P>click on enter user and password</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_42_43-Cloud Connector.png" style="width: 780px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303820i55F0D2138127BF53/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_42_43-Cloud Connector.png" alt="2025-08-22 13_42_43-Cloud Connector.png" /></span></P><P>Enter Username , and generate the token using<SPAN> URL pattern is </SPAN>https://<subdomain>.authentication.<btp-XSUAA-host>/passcode<SPAN>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_42_59-Cloud Connector.png" style="width: 771px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303821i68FD2D46CF9FE638/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_42_59-Cloud Connector.png" alt="2025-08-22 13_42_59-Cloud Connector.png" /></span></P><P>Token is successfully generated</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_43_18-Welcome.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303822i038CC8210552859A/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_43_18-Welcome.png" alt="2025-08-22 13_43_18-Welcome.png" /></span></P><P>Certificate is renewed successfully</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 13_43_53-.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303823iDC7F4B85A0B8E618/image-size/large?v=v2&px=999" role="button" title="2025-08-22 13_43_53-.png" alt="2025-08-22 13_43_53-.png" /></span></P><P>Cloud connector is successfully connected in Subaccount:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-22 14_05_13-Cloud Connectors - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/303824iBF9BD567953660F4/image-size/large?v=v2&px=999" role="button" title="2025-08-22 14_05_13-Cloud Connectors - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" alt="2025-08-22 14_05_13-Cloud Connectors - BTP tools _ 93e6ed2etrial _ Trial Home - SAP BTP Cockpit.png" /></span></P><HR /><H2 id="toc-hId-362336610"><span class="lia-unicode-emoji" title=":pushpin:">📌</span>Lessons Learned</H2><UL><LI><P>The <STRONG>security move</STRONG> is about the <STRONG>SCC ↔ subaccount link</STRONG>, not just SCC UI logon</P></LI><LI><P>Provisioning & role mapping in the <STRONG>subaccount</STRONG> is critical for the token flow</P></LI><LI><P>Use the <STRONG>certificate renewal</STRONG> window to modernize legacy S-user connections with minimal disruption</P></LI></UL><HR /><H2 id="toc-hId-165823105"><span class="lia-unicode-emoji" title=":question_mark:">❓</span>FAQs</H2><P><STRONG>Q1. Do we still need S-user anywhere for this connection?</STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>No. After token-based SSO is configured, the SCC ↔ subaccount link does <STRONG>not</STRONG> use S-user.</P><P><STRONG>Q2. Which IdPs are supported?</STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span><STRONG>SAP IAS, Azure AD, Okta, Ping</STRONG>, etc., via SAML/OIDC per enterprise policy.</P><P><STRONG>Q3. Extra cost?</STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>No new SAP license; enterprise IdP subscriptions/policies apply as usual.</P><P><STRONG>Q4. Is this mandatory for all subaccounts now?</STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>Not mandated, but it’s the <STRONG>recommended</STRONG> security posture going forward.</P><P><STRONG>Q5. Must the admin user exist in the subaccount?</STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Yes. The user must be <STRONG>provisioned in the subaccount</STRONG>, mapped to the <STRONG>Custom IdP</STRONG>, and assigned <STRONG>Cloud Connector Administrator</STRONG>. Otherwise, the SSO/token step fails.</P><P><STRONG>Q6. How do old subaccounts switch from S-user to token-based SSO?</STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Use the <STRONG>certificate renewal</STRONG> process to re-establish the link with token-based SSO—no new subaccount needed.</P><HR /><H2 id="toc-hId--30690400"><span class="lia-unicode-emoji" title=":direct_hit:">🎯</span>Key Takeaway</H2><P>Modernize the <STRONG>SCC ↔ subaccount</STRONG> connection with <STRONG>token-based SSO</STRONG>. You’ll remove S-user secrets, enforce corporate IdP controls (MFA, policies), gain clean auditability, and cut down operational toil. For legacy links, plan the switch at the <STRONG>next certificate renewal</STRONG>.</P><HR /><H2 id="toc-hId-120050452"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span>Bonus Update – What’s New in Cloud Connector</H2><P>Although this blog is about <STRONG>SSO in Cloud Connector</STRONG>, here’s a quick surprise update:</P><P>SAP introduced a <STRONG>new option to upload authentication data</STRONG> starting with <STRONG>Cloud Connector 2.17.0</STRONG> (released in <STRONG>May 2024</STRONG>).</P><UL><LI><P>Instead of manually entering region, subaccount ID, and other details, you can now simply upload the authentication.data file.</P></LI><LI><P>This file is generated using the <STRONG>credentials of the user you log in with to the BTP cockpit</STRONG>.</P></LI><LI><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>That user must have the <STRONG>necessary authorizations to perform Cloud Connector administrator tasks</STRONG> in order for the upload to succeed.</P></LI><LI><P>This makes subaccount onboarding and certificate renewal much easier and less error-prone.</P></LI></UL><P>So if you’re running <STRONG>Cloud Connector 2.17.0 or newer</STRONG>, you can take advantage of this simplified workflow.</P><H3 id="toc-hId--369866060">Below are the steps with screenshots:</H3><P>Login to BTP cockpit, Select Cloud Connectors. Now Click on <STRONG>Download authorisation Data</STRONG> Option as highlighted below</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-23 00_36_25-Photos.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/304104i19E44A9DD0FE9208/image-size/large?v=v2&px=999" role="button" title="2025-08-23 00_36_25-Photos.png" alt="2025-08-23 00_36_25-Photos.png" /></span></P><P>In Cloud connector when we add Subaccount, Select option "Configure using authentication data from File"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-23 00_37_40-Cloud Connector.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/304106i368C969B4F6DC9B3/image-size/large?v=v2&px=999" role="button" title="2025-08-23 00_37_40-Cloud Connector.png" alt="2025-08-23 00_37_40-Cloud Connector.png" /></span></P><P>It will successfully connect the Cloud connector with Subaccount using the UserID of user which you used to login to BTP cockpit.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2025-08-23 00_38_43-Photos.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/304105iF002D4C2FEDBDC66/image-size/large?v=v2&px=999" role="button" title="2025-08-23 00_38_43-Photos.png" alt="2025-08-23 00_38_43-Photos.png" /></span></P><P>Same process can be followed for renewal of certificates as well !</P>2025-08-22T11:13:39.813000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/how-to-guide-provisioning-users-from-ldap-docker-based-into-sap-cloud/ba-p/14197562How-to Guide: Provisioning Users from LDAP (Docker-based) into SAP Cloud Identity Services (IPS)2025-08-28T18:44:06.372000+02:00bpasynkovhttps://community.sap.com/t5/user/viewprofilepage/user-id/1847<P>Setting up user provisioning from a corporate LDAP into SAP Cloud Identity Service (CIS) — Identity Provisioning (IPS) is not the most common task — most customers today rely on Microsoft Entra ID (in sync with AD FS, for example).</P><P>But sometimes LDAP is still needed. I decided to reproduce this scenario and, at the same time, get my first hands-on with Docker: run OpenLDAP, connect User Interface, wire it through SAP Cloud Connector, and test provisioning into CIS → Identity Directory (IdDS).</P><P><STRONG>Goal</STRONG></P><UL><LI>Spin up OpenLDAP in Docker with a GUI (phpLDAPadmin).</LI><LI>Configure Docker networking and port mapping.</LI><LI>Connect LDAP to SAP Cloud Connector (SCC).</LI><LI>Set up Identity Provisioning (IPS) to write into CIS.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LDAP2.drawio.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/306063i011FE59E8DB5CF2A/image-size/large?v=v2&px=999" role="button" title="LDAP2.drawio.png" alt="LDAP2.drawio.png" /></span><SPAN>The beauty of containers is their lightweight nature and the ability to spin up everything with a single script.</SPAN></P><P>For this setup I used:</P><UL><LI><A href="https://hub.docker.com/r/bitnami/openldap" target="_self" rel="nofollow noopener noreferrer">bitnami/openldap</A> → the LDAP server holding user entries.</LI><LI><A href="https://github.com/osixia/docker-phpLDAPadmin" target="_self" rel="nofollow noopener noreferrer">osixia/phpldapadmin</A> → the GUI for user administration, so I don’t have to manage everything via CLI.</LI></UL><P>By exposing ports from the internal Docker network (via docker-compose), you can:</P><UL><LI>access phpLDAPadmin locally in the browser to create test users,</LI><LI>connect a local SAP Cloud Connector instance to the same LDAP through the mapped port, and then expose it into your BTP Subaccount.</LI></UL><P>Next step: solving a few practical issues.</P><P><STRONG>Step 1. Running OpenLDAP in a container</STRONG></P><UL><LI>Problem: OpenLDAP by default only listens inside the container (389) and is not accessible from the host.</LI><LI>Solution: map a host port, e.g. 13890:389.</LI></UL><P><STRONG>Step 2. Docker Networking (docker-compose)</STRONG></P><UL><LI>Problem: containers may not see each other by hostname if not attached to the same user-defined network. Basic networking tools (nc, telnet) are also missing inside the images.</LI><LI>Solution: create a custom <A href="https://docs.docker.com/reference/compose-file/networks/" target="_self" rel="nofollow noopener noreferrer">Docker network</A> in <A href="https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-docker-compose/" target="_self" rel="nofollow noopener noreferrer">docker-compose</A> and connect both openldap and phpldapadmin to it. Inside the network use port 389; for external access, use the mapped port.</LI></UL><P><STRONG>Step 3. phpLDAPadmin Integration</STRONG></P><UL><LI>Problem: phpLDAPadmin expects to connect to localhost:389 by default.</LI><LI>Solution: configure environment variables in docker-compose.</LI></UL><P><STRONG>Intermediate Result</STRONG></P><UL><LI>OpenLDAP and phpLDAPadmin are up and running in Docker. </LI><LI>Internal networking and port mapping are configured.</LI><LI>You can now add test users via GUI and prepare LDAP for SCC → IPS integration.</LI></UL><P><STRONG>Connecting SAP Cloud Connector (SCC)</STRONG></P><P>In SCC, create a new connection for your BTP Subaccount using LDAP protocol, pointing to localhost:13890.</P><TABLE border="1" width="100%"><TBODY><TR><TD width="20%" height="30px">Back-end Type</TD><TD width="20%" height="30px">Protocol</TD><TD width="20%" height="30px">Internal Host</TD><TD width="20%" height="30px">Virtual Host</TD><TD width="20%" height="30px"><SPAN class="">Principal Type</SPAN></TD></TR><TR><TD width="20%" height="30px">Non-ABAP System</TD><TD width="20%" height="30px">LDAP</TD><TD width="20%" height="30px">localhost:13890</TD><TD width="20%" height="30px">ldap:389</TD><TD width="20%" height="30px">None</TD></TR></TBODY></TABLE><P>Important: your Subaccount must have the <EM>Connectivity service plan</EM> enabled in SAP Cloud Identity Services. This allows IPS <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/connect-to-on-premise-systems-in-sap-cloud-identity-infrastructure" target="_self" rel="noopener noreferrer">to reach on-prem systems via SCC</A>.</P><P>After successful setup, BTP Cockpit shows something like:</P><P><EM>Exposed Back-End Systems (SCC Location ID)</EM></P><TABLE border="1" width="100%"><TBODY><TR><TD width="25%">ldap:389</TD><TD width="25%">LDAP</TD><TD width="25%">Non-SAP System</TD><TD width="25%">Available</TD></TR></TBODY></TABLE><P><STRONG>Configuring Identity Provisioning (IPS)</STRONG></P><P>In IPS, create an LDAP source according to the usual <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/ldap-server" target="_self" rel="noopener noreferrer">SAP Help documentation</A>. You can use default Transformations here. <EM>Key detail</EM>: the LDAP user object <STRONG>must contain the mail attribute</STRONG>. If not present, IPS will skip the entry. Even the two default users shipped with the OpenLDAP container are enough to test the provisioning chain.</P><P><STRONG>End-to-end check:</STRONG></P><UL><LI><STRONG>LDAP → SCC → BTP → IPS → Identity Directory</STRONG></LI></UL><P><STRONG>Conclusion</STRONG></P><P>Using containers makes it extremely fast to spin up a fully working LDAP provisioning scenario for SAP BTP. This approach is safe and easily reproducible also for testing transformations and mapping without touching a production corporate directory.</P><P><STRONG>P.S.</STRONG> Below you can find my <EM>docker-compose.yml</EM> file <STRONG>as a reference for your own setup</STRONG>:</P><pre class="lia-code-sample language-yaml"><code>services:
openldap:
image: bitnami/openldap:latest
container_name: openldap
environment:
LDAP_ADMIN_USERNAME: admin
LDAP_ADMIN_PASSWORD: password
LDAP_PORT_NUMBER: 389
networks:
ldap-net:
aliases:
- openldap
ports:
- "13890:389"
- "16360:1636"
phpldapadmin:
image: osixia/phpldapadmin:latest
container_name: phpldapadmin
environment:
PHPLDAPADMIN_LDAP_HOSTS: openldap
PHPLDAPADMIN_HTTPS: "false" # deactivate HTTPS
networks:
- ldap-net
ports:
- "8080:80"
depends_on:
- openldap
networks:
ldap-net:</code></pre><P> </P>2025-08-28T18:44:06.372000+02:00https://community.sap.com/t5/technology-blog-posts-by-members/sap-build-work-zone-security/ba-p/14142813SAP Build Work Zone Security2025-09-02T08:56:52.779000+02:00AkumaryafirAkhttps://community.sap.com/t5/user/viewprofilepage/user-id/1430983<P>I've been spending quite some time recently diving deep into SAP Build Work Zone security, and let me tell you, it's a journey. Terms like <STRONG>#IAS</STRONG>, <STRONG>#BTP</STRONG> Subaccount <STRONG>#trusts</STRONG>, and <STRONG>#ShadowUsers</STRONG> can sometimes feel like a maze.</P><P>But then, an analogy clicked for me - the <STRONG>#DigitalMall</STRONG> and suddenly, the whole complex architecture started making perfect sense. I wanted to share this breakdown with all of you, hoping it helps.</P><P>Let's imagine SAP Build Work Zone as a bustling, modern Digital Mall, where users (you, the <STRONG>#shoppers</STRONG>) come to access various <STRONG>#stores</STRONG> (business applications) and "services" (collaboration features). Every security layer has a purpose, just like every part of a well run mall</P><P><STRONG>#TheGrandOpening</STRONG>: Understanding this Digital Mall's Foundation</P><P>Before anyone even walks in, the mall has a master plan and a way to organize its offerings:</P><P>>>> <STRONG>SAP BTP Subaccount</STRONG>: Think of this as the Mall's Main Entrance & Security Gate. It's the primary gateway, controlling who can even step foot inside your digital space. It's where core permissions are managed.</P><P>>>> <STRONG>SAP Build Work Zone Tenant</STRONG>: This is your specific, unique instance of the Mall itself - your personalized shopping experience!</P><P>>>> #<STRONG>ContentManager</STRONG>: This acts like the Mall's Central Directory or Information Kiosk. It lists all the "stores" (your business applications) available within the mall, helping shoppers find what they need</P><P>>>> <STRONG>Content Providers</STRONG>: These are the "Department Stores" (like SAP S/4HANA<BR />SuccessFactors) or even smaller "Boutiques" (your custom applications). They reside outside your immediate mall structure but integrate seamlessly, making their offerings available inside your Work Zone.</P><P><STRONG>>>>>Stepping Inside: Your Identity & Basic Mall Access<<<<</STRONG></P><P>Now, for the really crucial part: how does a "shopper" (your user) actually get into the Digital Mall, and how is their identity validated at the main entrance?</P><P>>>> <STRONG>#SAPCloudIdentityServices</STRONG> - Identity Authentication (IAS): The Mall's Central Security System / ID Proxy</P><P>This is the mandatory first stop for any user trying to enter your Work Zone mall. <STRONG>#IAS</STRONG> is your primary <STRONG>#IdentityProvider</STRONG> [IDP]</P><P>>>> <STRONG>#Proxy</STRONG> Mode: If your organization uses its own Corporate IdP (like Azure AD, Okta), IAS acts as a clever proxy. You authenticate against your corporate system, and IAS then receives that verified identity, federating it onward in a way Work Zone understands. It's seamless, you just show your corporate ID.</P><P>>>> <STRONG>#TheDigitalIdCard</STRONG> (SAML Assertion / OIDC Token): Once authenticated, IAS issues a secure token. This token is packed with vital information, essentially your digital "ID Card" that gets you past the main gate:</P><P>>>> <STRONG>#SubjectNameIdentifier</STRONG> (SNI): This is your main identifier (e.g., your Login Name or Employee ID). It's what the BTP Subaccount primarily uses.</P><P>#<STRONG>Assertion Attribute (often IAS UUID)</STRONG>: This is a unique, stable, and persistent ID assigned by IAS. It's super important for internal Work Zone component communication later on, especially with the DWS (our "Community Center," which I'll cover in Part 2!)</P><P>---> Other standard user attributes like email, first name, last name.</P><P><STRONG>SAP BTP Subaccount Trust Configuration: The Main Gate's Agreement with IAS</STRONG></P><P>Your BTP Subaccount (the main gate) has a "trust agreement" with IAS. This allows it to confidently accept those digital ID cards (tokens) from IAS.</P><P>>>> #<STRONG>The XSUAA Shadow User</STRONG>: Your Mall Access Card. This is one of the most critical concepts</P><P>When a user successfully authenticates via IAS for the first time, a "Shadow User" record is either created or identified in the BTP Subaccount's internal user list. Think of this as your personal "<STRONG>Mall Access Card</STRONG>" record.</P><P> </P><P>Why is it needed? Even if IAS knows who you are, the BTP Subaccount needs its own local record (the shadow user) to attach BTP Role Collections to it. These <STRONG>role</STRONG> <STRONG>collections</STRONG> are your "<STRONG>Mall-wide Privileges</STRONG>" (e.g., WorkZone_User, WorkZone_Admin) that determine what you can do across the whole Work Zone platform.</P><P> </P><P>>>>> Crucial Point: If a shadow user doesn't exist (and automatic creation isn't enabled), login to Work Zone will fail because there is no local identity to attach permissions to.</P><P><STRONG>Principal Propagation: Seamless Access to Department Stores!</STRONG></P><P>Once you're in the mall and launch an app from an On-Premise Backend System (like an S/4HANA Fiori app via SAP Cloud Connector), you don't want to log in again, right?</P><P>This is where ##<STRONG>Principal Propagation</STRONG> comes in! Your identity (using the IAS SNI from the BTP trust) is seamlessly passed through the BTP Destination Service and SAP Cloud Connector directly to the backend system. The S/ 4HANA system then recognizes you and authorizes your access based on your roles within S/4HANA. It's like your Mall Access Card automatically opening the staff-only doors in a department store.</P><P><EM>This is just the exciting first step of understanding Work Zone security. In Part 2, coming next.</EM></P><P><EM>The Digital Workplace Service (DWS) (the Mall's Community Center).</EM></P><P><EM>User and User List Provisioning (how the Community Center gets its member lists).</EM></P><P><EM>The critical differences between Internal vs. External Users (different types of Community Center members).</EM></P><P><EM>And how SCIM APIs are the "automated delivery trucks" for all this data!</EM></P><P><EM>Stay tuned for more insights, and in the meantime, I'd love to hear your thoughts or questions on this first part in the comments below!</EM></P><P><EM>Happy Work Zone-ing!</EM></P><P><EM>Lets connect and learn together <span class="lia-unicode-emoji" title=":victory_hand:">✌️</span></EM></P>2025-09-02T08:56:52.779000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/sap-business-data-cloud-series-part-3-customer-managed-or-custom-data/ba-p/14195545SAP Business Data Cloud Series – Part 3: Customer-Managed or Custom Data Products2025-09-10T04:27:11.039000+02:00jeet_kapasehttps://community.sap.com/t5/user/viewprofilepage/user-id/16635<H3 id="toc-hId-1866021921" id="toc-hId-1867903595">Introduction:</H3><P>In Part 1(<A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-business-data-cloud-series-part-1-introduction-to-data-products/ba-p/14142919" target="_self">SAP Business Data Cloud Series – Part 1: Introduction to Data Products</A>) of this blog series, we explored the fundamentals of Data Products in SAP Business Data Cloud (BDC). In Part 2(<A class="" href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-business-data-cloud-series-part-2-extend-sap-s-4hana-managed-data/ba-p/14174030" target="_blank">SAP Business Data Cloud Series – Part 2: Extend SAP S/4HANA Managed Data Products</A>) we explored on how to extend SAP S/4HANA Data Products. Now, in Part 3, we dive into the practical aspect of creating custom data products for the source SAP S/4HANA Cloud Private Edition and Share it with SAP databricks.</P><P>In this article, we’ll explore a common scenario where a customer has a custom CDS entity in SAP S/4HANA and wants to harmonize its data with SAP-managed data products. We’ll demonstrate how to create a custom data product based on that custom CDS entity, for example, ZCDS_CAMPAIGN and how to delta-share with SAP databricks. </P><H3 id="toc-hId-291092332" id="toc-hId-1671390090">High-level Workflow for the SAP S/4HANA, Customer Managed Data Product:</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757470973135.png" style="width: 687px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311976i51D2FC53385CC525/image-dimensions/687x623?v=v2" width="687" height="623" role="button" title="jeetendrakapase_0-1757470973135.png" alt="jeetendrakapase_0-1757470973135.png" /></span></P><H3 id="toc-hId-1669508416" id="toc-hId-1474876585"><STRONG>Steps to create a SAP S/4HANA Customer Managed Data Product.</STRONG></H3><P><STRONG>1. Identify, create, or extend a CDS entity: </STRONG>To build a customer-managed data product in an SAP S/4HANA system, the recommended approach is to leverage CDS views/entities. In this example, we’ll create a custom CDS entity as shown below.</P><P>Note: <EM>As a best practice, customers should <STRONG>leverage SAP-released CDS views first</STRONG>, extend them where needed, and only create <STRONG>custom CDS views</STRONG> when business requirements demand it. This is fully permissible under the <STRONG>clean core paradigm</STRONG>, as business requirements ultimately take priority.</EM></P><pre class="lia-code-sample language-abap"><code>@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #A
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.representativeKey: 'CampaignID'
@ObjectModel.modelingPattern: #ANALYTICAL_DIMENSION
@ObjectModel.supportedCapabilities: [ #ANALYTICAL_DIMENSION,
#CDS_MODELING_DATA_SOURCE,
#CDS_MODELING_ASSOCIATION_TARGET,
#SQL_DATA_SOURCE,
#EXTRACTION_DATA_SOURCE ]
@ObjectModel.sapObjectNodeType.name: 'CampaignID'
@EndUserText.label: 'CDS View for Campaigning Data'
@Analytics.dataCategory: #DIMENSION
@Analytics.internalName: #LOCAL
@Analytics: {
dataExtraction: {
enabled: true,
delta.changeDataCapture: {
mapping:[
{
table: 'zcampaign', role: #MAIN,
viewElement: ['CampaignID'],
tableElement: ['campaign_id']
}
]
}
}
}
@VDM.viewType: #BASIC
@Metadata.allowExtensions: true
@Metadata.ignorePropagatedAnnotations: true
define view entity ZCDS_campaign as select from zcampaign
{
@EndUserText.label: 'Campaign_ID'
key zcampaign.campaign_id as CampaignId,
@EndUserText.label: 'Campaign_Name'
zcampaign.campaign_name as CampaignName,
@EndUserText.label: 'Channel'
zcampaign.channel as Channel,
zcampaign.type as Type,
zcampaign.start_date as StartDate,
zcampaign.end_date as EndDate,
zcampaign.status as Status,
@Semantics.amount.currencyCode: 'BudgetCurrency'
zcampaign.budget as Budget,
zcampaign.budget_currency as BudgetCurrency,
@Semantics.amount.currencyCode: 'ActualSpendCurrency'
zcampaign.actual_spend as ActualSpend,
zcampaign.actual_spend_currency as ActualSpendCurrency,
zcampaign.created_by as CreatedBy,
zcampaign.created_on as CreatedOn
}</code></pre><P><STRONG>2. SAP S/4HANA Private Cloud or On-Premise Edition requires a Cloud Connector:</STRONG> Configure the Cloud Connector to enable communication between your on-premise/private cloud system and SAP Datasphere (public cloud). This setup is a prerequisite for creating an <A href="https://help.sap.com/docs/SAP_DATASPHERE/be5967d099974c69b77f4549425ca4c0/a49a1e3cc50f4af89711d8306bdd8f26.html" target="_self" rel="noopener noreferrer">SAP S/4HANA</A> or <A href="https://help.sap.com/docs/SAP_DATASPHERE/be5967d099974c69b77f4549425ca4c0/a75c1aacf951449ba3b740c7e46da3a9.html" target="_self" rel="noopener noreferrer">ABAP connection</A> in SAP Datasphere for using the replication flow feature.</P><P><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-datasphere-integration-with-sap-s-4hana-sap-cloud-connector-setup-guide/ba-p/14224459" target="_self"><STRONG>SAP Datasphere Integration with SAP S/4HANA: SAP Cloud Connector Setup Guide</STRONG></A></P><P><STRONG>3. Create a Datasphere Space of Type HANA Data Lake Files: </STRONG>An administrator can create a space backed by SAP HANA Data Lake Files in the object store. File spaces are designed for cost-efficient staging, loading, and preparing large volumes of data.</P><P>For detailed instructions, refer to the help guide:<A href="https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/2a6bc3f6d79b4c39a01b6d58d043fbaf.html" target="_self" rel="noopener noreferrer"> Create a File Space in the Object Store</A>.</P><P>Additional <A href="https://help.sap.com/docs/SAP_DATASPHERE/9f804b8efa8043539289f42f372c4862/33f8ef4ec359409fb75925a68c23ebc3.html" target="_self" rel="noopener noreferrer">configuration</A> is required while configuring the SAP Datasphere tenant. e.g. Memory must be 128GB or more. Check via <A href="https://bdc-pricing-estimator-sac-sacus10.cfapps.us10.hana.ondemand.com/" target="_self" rel="nofollow noopener noreferrer">SAP BDC Estimator.</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757439837802.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311855iA7495682F7F23C0D/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757439837802.png" alt="jeetendrakapase_0-1757439837802.png" /></span></P><P>If you have configured correctly then you should also see the same under the SAP Datasphere, Tenant configuration. Please note this view is only available to the SAP Datasphere system owner.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757440104618.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311864iF914184CBC78AAD6/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757440104618.png" alt="jeetendrakapase_1-1757440104618.png" /></span></P><P>SAP Datasphere object store: Storage type will be SAP HANA Data Lake Files. In our scenario we have created a space with a name <EM>Workshop: OBJECT STORE</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757440332599.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311867i7504212940BDE227/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757440332599.png" alt="jeetendrakapase_0-1757440332599.png" /></span></P><P><STRONG>4. Create a SAP S/4HANA Connection in the SAP Datasphere Object Store Space, <EM>Workshop: OBJECT STORE</EM> :</STRONG></P><P>4.1 Create a new connection or use the existing connection of type SAP S/4HANA on-premise or ABAP:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757440527188.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311871i16ECD11B0E98F5D0/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757440527188.png" alt="jeetendrakapase_1-1757440527188.png" /></span></P><P> </P><P>4.2 Fill in the connection configuration details as show below and important step is select the cloud connector which was setup and configured in the step 2.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757438559949.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311850i6882A41FD5E3A64A/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757438559949.png" alt="jeetendrakapase_1-1757438559949.png" /></span></P><P>4.3 Provide the connection name and description:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757438613408.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311851iA917C257FAB136F4/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757438613408.png" alt="jeetendrakapase_2-1757438613408.png" /></span></P><P>4.4 Validate and test the connection making sure replication flows are enabled:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757440616171.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311872i04C3455F48788529/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757440616171.png" alt="jeetendrakapase_2-1757440616171.png" /></span></P><P>You can also use or create the SAP ABAP connection type for this use case.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757441448676.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311875i1AFB931F73F0E1B1/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757441448676.png" alt="jeetendrakapase_0-1757441448676.png" /></span></P><P><STRONG>5. Create a Replication Flow to Load Data from CDS Entity into SAP Datasphere Object Store (HDLF):</STRONG><BR />Set up a replication flow with the source system <EM>SAP_S4H_RI4</EM> and CDS entity <EM>ZCDS_CAMPAIGN</EM>. Define the target as a Datasphere local table <EM>ZCDS_CAMPAIGN_BRONZE</EM>. This table, serving as the Bronze layer, will store source records and structures in their original form.</P><P>5.1 Create a new replication flow</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757442253861.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311882i22BE01D7A3E62F58/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757442253861.png" alt="jeetendrakapase_0-1757442253861.png" /></span></P><P>5.2 Select the Source <EM>SAP_S4H_RI4</EM> and Container (Source Objects) ZCDS_CAMPAIGN</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757442337508.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311884iB79B05D7E1455643/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757442337508.png" alt="jeetendrakapase_1-1757442337508.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757442489540.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311885i8B6566C82A3C61BA/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757442489540.png" alt="jeetendrakapase_2-1757442489540.png" /></span></P><P>5.3 Select the target as connection as a SAP Datasphere</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757446943694.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311914i5AD49CD8722AA758/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757446943694.png" alt="jeetendrakapase_0-1757446943694.png" /></span></P><P>5.4 Provide the target object local table name ZCDS_CAMPAIGN_BRONZE and Deploy the replication flow.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757447070646.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311916iF5362528603943A3/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757447070646.png" alt="jeetendrakapase_2-1757447070646.png" /></span></P><P>5.5 Execute the replication flow and check the run details.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_3-1757447133249.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311917i8ABFB87011D5AED2/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_3-1757447133249.png" alt="jeetendrakapase_3-1757447133249.png" /></span></P><P>5.6 Perform the merge table activity:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_4-1757447196060.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311919iE277FCCC7ABA8494/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_4-1757447196060.png" alt="jeetendrakapase_4-1757447196060.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_5-1757447342809.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311923i19D2D2ECD5551A08/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_5-1757447342809.png" alt="jeetendrakapase_5-1757447342809.png" /></span></P><P>5.7 Post merge table activity, data will be available to preview and Test it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_6-1757447404478.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311924i91AE7B2D4C360242/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_6-1757447404478.png" alt="jeetendrakapase_6-1757447404478.png" /></span></P><P><STRONG>6. Bronze to Silver layer medallion transformation using a Transformation Flow: </STRONG>In many cases, data from the Bronze layer needs to be refined into a Silver layer through transformations such as splitting, merging, adding/removing columns, joins, or unions.</P><P>In our scenario, we will split the values in the <EM>Channel</EM> column into two columns <EM>Channel, Allocated Percentage</EM> (multiple rows) and apply necessary calculations.</P><P>6.1 Create a new Transformation Flow</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757453446185.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311928i097F8952F5432C2C/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757453446185.png" alt="jeetendrakapase_0-1757453446185.png" /></span></P><P>6.2 Define the transformation steps:</P><P>Source table:<EM>HDLFT_CAMPAIGN_BRONZE</EM> and Target table: <EM>HDLFT_CAMPAIGN_SILVER . P</EM>ython script operator for performing the transformation logic.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757453655211.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311929iDA9097649549272C/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757453655211.png" alt="jeetendrakapase_1-1757453655211.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757453734167.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311930iF2F8275C260BDF8C/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757453734167.png" alt="jeetendrakapase_2-1757453734167.png" /></span></P><pre class="lia-code-sample language-python"><code>def transform(data):
"""
This function body should contain all the desired transformations on incoming data of Pandas DataFrame.
Permitted builtin functions as well as permitted NumPy and Pandas objects and functions are available inside this function.
Permitted NumPy and Pandas objects and functions can be used with aliases 'np' and 'pd' respectively.
Python standard libraries like 'time', 'datetime', 're', 'random', 'math', 'calendar' and 'dateutil.parser' can be used without any alias.
This function executes in a sandbox mode. Please refer the documentation for permitted objects and functions.
Using any restricted functions or objects would cause an internal exception and result in a run failure.
Any code outside this function body will not be executed and inclusion of such code is discouraged.
:param data: Pandas DataFrame
:return: Pandas DataFrame
"""
#####################################################
# Provide the function body for data transformation #
#####################################################
rows = []
for _, row in data.iterrows():
channel_str = row['Channel']
if pd.isnull(channel_str) or not str(channel_str).strip():
continue
entries = str(channel_str).split(';')
channel_map = {} # To store channel_name -> summed Decimal %
for entry in entries:
entry = entry.strip()
if not entry:
continue
if '(' in entry and '%' in entry:
channel_name = entry.split('(')[0].strip()
percent_str = entry.split('(')[1].replace(')', '').replace('%', '').strip()
try:
percent_val = Decimal(percent_str)
except:
percent_val = Decimal('0')
if channel_name in channel_map:
channel_map[channel_name] += percent_val
else:
channel_map[channel_name] = percent_val
for channel_name, total_percent in channel_map.items():
new_row = row.copy()
new_row['Channel'] = channel_name
new_row['AllocatedPercentage'] = total_percent
if total_percent > 0:
new_row['ActualSpend'] = (new_row['ActualSpend'] * (total_percent/100) )
rows.append(new_row)
data = pd.DataFrame(rows)
return data</code></pre><P>6.3 Execute the transformation flow and test the output from the local table <EM>HDLFT_CAMPAIGN_SILVER</EM>:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757466839017.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311956iD7489194BC0140CA/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757466839017.png" alt="jeetendrakapase_1-1757466839017.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757466699277.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311952i25B52F491F73205D/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757466699277.png" alt="jeetendrakapase_0-1757466699277.png" /></span></P><P><EM><STRONG>Wonderful our silver layer of the data is ready and transformed as per the business requirement. Now let us create the customer managed data product and share with the SAP databricks. You can also share the local table from HANA Data Lake File space to HANA cloud DB space and build the models on top of it, e.g. Building a report that provides access to 5 years of worth where most recent 2 years are persisted on the storage type in-memory/disk while rest 3 years are persisted on the storage type file and union model is build to combine this data.</STRONG></EM></P><P><STRONG>7. <A href="https://help.sap.com/docs/SAP_DATASPHERE/e4059f908d16406492956e5dbcf142dc/b07e95d07a1e4569b87d9bb57b732bcf.html" target="_self" rel="noopener noreferrer">Creating Custom Delta Share Data Products</A>: </STRONG>Create a Formations Profile with Data Product visibility option as <STRONG><EM>Formations</EM></STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757467550978.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311958i6D00AC8A9FC574C0/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757467550978.png" alt="jeetendrakapase_0-1757467550978.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757467495757.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311957i847F2827DE17D1C9/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757467495757.png" alt="jeetendrakapase_0-1757467495757.png" /></span></P><P><STRONG>8. Context is automatically created.</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757467607998.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311959iDEA2E0477BF42366/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757467607998.png" alt="jeetendrakapase_1-1757467607998.png" /></span></P><P> </P><P><STRONG>9. After creating your Unified Customer Landscape Formations profile, you can proceed to create a Delta Share data product:</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757467878540.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311960iA3E6FF3326DA730C/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757467878540.png" alt="jeetendrakapase_2-1757467878540.png" /></span></P><P><STRONG>10. List the Custom Data Product, so that It will be discoverable in the SAP BDC Catalog & Marketplace:</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_3-1757467991597.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311961iFA8FB7C6DE1DF317/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_3-1757467991597.png" alt="jeetendrakapase_3-1757467991597.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_4-1757468025227.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311962i9758E90A2FC0BA1A/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_4-1757468025227.png" alt="jeetendrakapase_4-1757468025227.png" /></span></P><P><STRONG>11. Search and Discover the Data Product <EM>"Sales Campaign Gold Data"</EM> in SAP BDC Catalog & Marketplace:</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_5-1757468149233.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311964i7AA4850F976F0DA5/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_5-1757468149233.png" alt="jeetendrakapase_5-1757468149233.png" /></span></P><P> </P><P><STRONG>12. Share the Data Product <EM>"Sales Campaign Gold Data"</EM> with supported BDC target systems in our scenario it is SAP databricks: </STRONG>We are sharing the data product with SAP databricks workspace WS_IT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_6-1757468242453.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311965i4446E1CE8CB489D1/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_6-1757468242453.png" alt="jeetendrakapase_6-1757468242453.png" /></span></P><P>Note: SAP databricks is part of our SAP BDC formation, hence it is available under the target system options.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_7-1757468350476.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311966iF0257F6EF076FD5C/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_7-1757468350476.png" alt="jeetendrakapase_7-1757468350476.png" /></span></P><P><STRONG>13. Validate the sharing is enabled and correct target system: </STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_0-1757470106343.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311972iDCD1C1DDA28F6865/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_0-1757470106343.png" alt="jeetendrakapase_0-1757470106343.png" /></span></P><P><STRONG>14. Validate the Delta-Shared <EM>Sales Campaign Gold Data</EM> product in SAP Databricks by checking the WS_IT workspace with verifying its presence and data preview in the Unity Catalog.</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_2-1757470388857.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311974i3A71F42FE2C566B9/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_2-1757470388857.png" alt="jeetendrakapase_2-1757470388857.png" /></span></P><P> </P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeetendrakapase_1-1757470227392.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/311973iD4B34ABEFDDE84C0/image-size/large?v=v2&px=999" role="button" title="jeetendrakapase_1-1757470227392.png" alt="jeetendrakapase_1-1757470227392.png" /></span></P><P> </P><H3 id="toc-hId-1278363080">Summary: </H3><P>In this part of the SAP Business Data Cloud (BDC) series focusing on the data products, we explored how to build a <STRONG>custom data product</STRONG> in SAP S/4HANA Cloud Private Edition using a custom CDS entity (e.g., <EM>ZCDS_CAMPAIGN</EM>). We walked through setting up prerequisites like the Cloud Connector, creating a Datasphere file space, and configuring connections. Using the <STRONG>bronze–silver transformation approach</STRONG>, we replicated and refined campaign data for harmonization. Finally, we created and published a <STRONG>custom Delta Share data product</STRONG>, making it discoverable in the BDC Catalog and consumable in SAP Databricks for advanced analytics and ML scenarios.</P>2025-09-10T04:27:11.039000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/sap-datasphere-integration-with-sap-s-4hana-sap-cloud-connector-setup-guide/ba-p/14224459SAP Datasphere Integration with SAP S/4HANA: SAP Cloud Connector Setup Guide2025-09-23T23:36:19.259000+02:00jeet_kapasehttps://community.sap.com/t5/user/viewprofilepage/user-id/16635<H2 id="toc-hId-1760954663">Introduction: </H2><P>In this article, we will explore SAP Cloud Connector what it is, its purpose, and the scenarios where it becomes essential. Whether you are working with <STRONG>SAP S/4HANA Private Cloud or connecting SAP S/4HANA on-premise systems to the cloud</STRONG>, the SAP Cloud Connector plays a critical role. We will also provide a step-by-step guide on its configuration and setup, helping you seamlessly bridge your on-premise and SAP Datasphere cloud environments.</P><HR /><H2 id="toc-hId-1564441158">What is SAP Cloud Connector?</H2><P data-unlink="true">The <STRONG><A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector" target="_self" rel="noopener noreferrer">SAP Cloud Connector</A> acts as a</STRONG> <STRONG>secure link between SAP Datasphere and on-premises systems</STRONG>, enabling seamless integration without exposing your entire internal network (behind the firewall). It runs as an on-premises agent or middleware in a secured environment and functions as a reverse invoke proxy, providing controlled access to selected systems and resources. </P><P><STRONG>Key benefits</STRONG> include fine-grained control over which on-premises systems cloud applications can access, automatic recovery of broken connections, and audit logging of inbound traffic and configuration changes. It also supports high-availability setups for enterprise scenarios.</P><P>Compared to opening firewall ports or using DMZ reverse proxies, the Cloud Connector is easier and safer to deploy. It supports multiple protocols, including HTTP and RFC for native ABAP system access, and allows secure propagation of cloud user identities to on-premises systems. With simple installation, low TCO, and standard SAP support, it’s an efficient solution for connecting cloud and on-premises landscapes.</P><HR /><H2 id="toc-hId-1367927653">Does it support data encryption ?</H2><P>Yes, TLS encryption is used for the tunnel</P><HR /><H2 id="toc-hId-1171414148">What are the SAP Datasphere <A href="https://help.sap.com/docs/SAP_DATASPHERE/9f804b8efa8043539289f42f372c4862/8de01dd25c1e443e8e2de7d2fbe1364d.html" target="_self" rel="noopener noreferrer">data integration features, and in which scenarios is the SAP Cloud Connector required?</A></H2><UL><LI>Replication Flows – For example, connecting to SAP ABAP CDS views and replicating data to the cloud.</LI><LI>Data Flows – For scenarios like extracting, transforming, and loading data from on-premises sources, including SAP ABAP CDS views.</LI><LI>Model Import – Importing existing ABAP CDS data models from on-premises systems into SAP Datasphere for further analytics and integration.</LI></UL><HR /><H2 id="toc-hId-974900643">SAP Cloud Connector <A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector-faq" target="_self" rel="noopener noreferrer">FAQs</A></H2><HR /><H2 id="toc-hId-778387138">Where can I find information about SAP Cloud Connector licensing, downloading, and installation ?</H2><UL><LI><A href="https://me.sap.com/notes/2827108/E" target="_self" rel="noopener noreferrer">2827108 - SAP Cloud Connector licensing, download and installation information.</A></LI><LI>It does not required separate license and it is free to use.</LI><LI><A href="https://tools.hana.ondemand.com/#cloud" target="_self" rel="nofollow noopener noreferrer">Download: SAP Cloud Connector.</A></LI><LI><A href="https://help.sap.com/docs/SAP_DATASPHERE/9f804b8efa8043539289f42f372c4862/35141e7668774958b5e59495f7a7828e.html" target="_self" rel="noopener noreferrer">Installation and Setup.</A></LI></UL><HR /><H2 id="toc-hId-581873633">What are the Sizing Recommendations? </H2><UL><LI><A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/sizing-for-master-instance" target="_self" rel="noopener noreferrer">Sizing for the Master Instance</A></LI><LI><A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/sizing-for-shadow-instance" target="_self" rel="noopener noreferrer">Sizing for the Shadow Instance</A></LI></UL><HR /><H2 id="toc-hId-385360128">What are the best practices and recommendations for setting up SAP Cloud Connector?</H2><UL><LI><STRONG>Always Use the Latest Version: </STRONG>Install or update to the latest Cloud Connector release to take advantage of new features and security improvements.</LI><LI><STRONG>Dedicated Server Setup:</STRONG> Install on a dedicated server within your corporate network that has direct, unblocked access to the source system. <U>Ideally, this server should be physically close to the source systems it connects to.</U></LI><LI><STRONG>High Availability Setup:</STRONG><UL><LI>Master (Primary Installation): Main Cloud Connector instance for normal or HA setups.</LI><LI>Shadow (Backup Installation): Secondary instance for HA, providing failover support.</LI></UL></LI><LI><STRONG>Environment-Specific Installations:</STRONG> recommended to have a separate Cloud Connector for each environment (development, testing, production) to ensure stability and isolation.</LI><LI><STRONG>User Configuration</STRONG>: Use an email ID linked to the subaccount or global account instead of an S-User for easier management.</LI><LI><STRONG>Proper Sizing:</STRONG> Ensure the server has sufficient resources (CPU, memory, network bandwidth) to handle the expected load.</LI><LI><STRONG>Regular Log Review:</STRONG><SPAN> Continuously monitor logs and metrics to detect performance issues or connectivity problems and resolve them promptly.</SPAN></LI></UL><HR /><H2 id="toc-hId-188846623">SAP Cloud Connector Troubleshooting Guides:</H2><UL><LI><A href="https://ga.support.sap.com/index.html#/tree/2183/actions/27936" target="_self" rel="noopener noreferrer">Common Issues and Guided Answers.</A></LI><LI><A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector-troubleshooting" target="_self" rel="noopener noreferrer">Logs and Troubleshooting.</A></LI><LI><A href="https://me.sap.com/notes/3369433/E" target="_self" rel="noopener noreferrer">3369433 - How to troubleshoot Cloud Connector related issues when creating connection in SAP Datasphere</A></LI></UL><HR /><H2 id="toc-hId--7666882">Steps to Install, Configure and Setup the SAP Cloud Connector:</H2><H3 id="toc-hId--150329037">Step 1: Download, Prerequisites, and Install the Cloud Connector</H3><P>Before you begin configuration, make sure the following prerequisites are in place:</P><UL><LI><A href="https://tools.hana.ondemand.com/#cloud" target="_self" rel="nofollow noopener noreferrer">Download: SAP Cloud Connector.</A></LI><LI>The <STRONG>Cloud Connector</STRONG> is installed in your on-premise network. (See <EM>Cloud Connector Installation</EM> in the SAP BTP Connectivity documentation.)</LI><LI>If you’re using egress firewalling, add these domains to the firewall/proxy allowlist:<UL><LI> *.hanacloud.ondemand.com</LI><LI>*.k8s-hana.ondemand.com</LI></UL></LI><LI>You need an <STRONG>SAP BTP account</STRONG>. If you don’t already have one, create it by registering in the SAP BTP cockpit.</LI></UL><HR /><H3 id="toc-hId--346842542">Step 2: Launch and Login</H3><UL><LI><P>After installation, an user:<EM><STRONG>Administrator</STRONG> </EM>account is created with the initial password: <EM><STRONG>manage</STRONG> </EM>(case-sensitive). You’ll be prompted to change it on first login. Default/Initial login details <EM><STRONG>Administrator</STRONG> / <STRONG>manage</STRONG> </EM></P></LI><LI><P>Access the Cloud Connector Administration at:<BR />https://<hostname>:8443 (replace <hostname> with the machine name, or use localhost if installed locally).</P></LI><LI><A href="https://me.sap.com/notes/0002388242" target="_self" rel="noopener noreferrer">2388242</A> - KBA: How to reset SAP Cloud Connector built-in user's password</LI></UL><HR /><H3 id="toc-hId--543356047">Step 3: Add Your SAP BTP Subaccount</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_1-1758649489986.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319090i07D501A7B4C0B530/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_1-1758649489986.png" alt="jeet_kapase_1-1758649489986.png" /></span></P><P>You’ll need details from your <STRONG>SAP Datasphere subaccount</STRONG>:</P><UL><LI><P>Subaccount</P></LI><LI><P>Region Host ( <A href="https://help.sap.com/docs/SAP_ASSET_STRATEGY_AND_PERFORMANCE_MANAGEMENT/2eaa87093ab54ddb81f54bb56316e844/7063598cfb88425e81358925fa8df38c.html?locale=en-US" target="_blank" rel="noopener noreferrer">Data Center - Providers and Regions</A>)</P></LI><LI><P>Sub Account User (usually the email ID tied to your BTP account)</P></LI></UL><P>If account info is missing, enter your SAP BTP user ID manually. For troubleshooting, see KBA: <A href="https://me.sap.com/notes/2397165/E" target="_self" rel="noopener noreferrer">2397165</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_0-1758649323624.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319089i4D28B611DCE5C91A/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_0-1758649323624.png" alt="jeet_kapase_0-1758649323624.png" /></span></P><P><A href="https://me.sap.com/notes/0002571763" target="_blank" rel="noopener noreferrer">2571763 - Authorization problem in SAP Cloud Connector when adding Cloud Foundry subaccount</A></P><P>For auth errors refer Log and Trace Files: scc_core.trc</P><P><EM>Note: Initially SAP BTP Core account details in SAP Datasphere will not be available, you must provide the SAP BTP account email and save. SAP Datasphere tenant owner can perform this.</EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_2-1758649555429.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319091iF72130E28A6F837A/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_2-1758649555429.png" alt="jeet_kapase_2-1758649555429.png" /></span></P><P> </P><P> </P><HR /><H3 id="toc-hId--739869552">Step 4: Verify Connection</H3><P>Once the subaccount is added, the status should display <STRONG>Connected</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_0-1758653018442.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319094iDE0A62043B6CC3CE/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_0-1758653018442.png" alt="jeet_kapase_0-1758653018442.png" /></span></P><P> </P><HR /><H3 id="toc-hId--936383057">Step 5: Configure the Cloud Connector</H3><P>For this guide, we’ll focus on <STRONG>Replication Flow</STRONG> scenarios using <A href="https://help.sap.com/docs/SAP_DATASPHERE/9f804b8efa8043539289f42f372c4862/f289920243a34127b0c8b13012a1a4b5.html?locale=en-US" target="_self" rel="noopener noreferrer"><STRONG>RFC and HTTPS protocols</STRONG></A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_1-1758653066019.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319095iAACE3425BFE1D509/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_1-1758653066019.png" alt="jeet_kapase_1-1758653066019.png" /></span></P><P> </P><HR /><H3 id="toc-hId--1132896562">Step 6: Add the SAP S/4HANA (ABAP) System</H3><OL><LI><P>Select <STRONG>Cloud to On-Premise</STRONG> scenario and Back-end Type: <STRONG>ABAP System</STRONG>.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_4-1758653299629.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319099i0C634C6EFD6ACEAC/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_4-1758653299629.png" alt="jeet_kapase_4-1758653299629.png" /></span><P> </P></LI><LI><P>Choose <STRONG>HTTPS protocol</STRONG>.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_5-1758653403344.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319100iC773C80223E39232/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_5-1758653403344.png" alt="jeet_kapase_5-1758653403344.png" /></span><P> </P></LI><LI><P>Use <STRONG>without load balancing</STRONG> (application server + instance number).</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_0-1758653563213.png" style="width: 556px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319101i49A59FBD66F56495/image-dimensions/556x257?v=v2" width="556" height="257" role="button" title="jeet_kapase_0-1758653563213.png" alt="jeet_kapase_0-1758653563213.png" /></span><P> </P></LI><LI><P>Enter your <STRONG>SAP S/4HANA internal host and port.</STRONG></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_1-1758653620477.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319102i76B856934CD9E88F/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_1-1758653620477.png" alt="jeet_kapase_1-1758653620477.png" /></span><P><EM><STRONG>How to find internal host and port from SAP S/4HANA ?</STRONG></EM> (Run T-Code SMICM → <EM>Services</EM>).</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_2-1758653842741.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319105i8ADD817E04AA52B7/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_2-1758653842741.png" alt="jeet_kapase_2-1758653842741.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_1-1758654112250.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319114i860D53C7DC6154D9/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_1-1758654112250.png" alt="jeet_kapase_1-1758654112250.png" /></span><P> </P></LI><LI><P>Leaving defaults for principal propagation and system certificate. (check your requirement and change)</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_3-1758653874534.png" style="width: 509px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319107iD917795B743154DF/image-dimensions/509x239?v=v2" width="509" height="239" role="button" title="jeet_kapase_3-1758653874534.png" alt="jeet_kapase_3-1758653874534.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_4-1758653882033.png" style="width: 513px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319108iF08B78213BBC00AF/image-dimensions/513x233?v=v2" width="513" height="233" role="button" title="jeet_kapase_4-1758653882033.png" alt="jeet_kapase_4-1758653882033.png" /></span><P> </P></LI><LI><P>Define a <STRONG>virtual host name</STRONG> (recommended: different from the internal name).</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_0-1758654015402.png" style="width: 552px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319112i55E33102136C1A2B/image-dimensions/552x254?v=v2" width="552" height="254" role="button" title="jeet_kapase_0-1758654015402.png" alt="jeet_kapase_0-1758654015402.png" /></span><P> </P><P> </P></LI><LI><P>Provide a <STRONG>System ID</STRONG> (e.g., RI4) and description, then finish setup.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_3-1758654183395.png" style="width: 538px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319116iF20E14199090FBE7/image-dimensions/538x246?v=v2" width="538" height="246" role="button" title="jeet_kapase_3-1758654183395.png" alt="jeet_kapase_3-1758654183395.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_4-1758654192047.png" style="width: 536px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319117iCCB845720DD69340/image-dimensions/536x251?v=v2" width="536" height="251" role="button" title="jeet_kapase_4-1758654192047.png" alt="jeet_kapase_4-1758654192047.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_5-1758654231463.png" style="width: 540px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319119iE207080482130B07/image-dimensions/540x247?v=v2" width="540" height="247" role="button" title="jeet_kapase_5-1758654231463.png" alt="jeet_kapase_5-1758654231463.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_6-1758654258007.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319120i12A0861CC6D474E4/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_6-1758654258007.png" alt="jeet_kapase_6-1758654258007.png" /></span><P> </P></LI><LI><P>Test connectivity – status should show <STRONG>Reachable</STRONG>.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_7-1758654298645.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319121i1E559116FB0702F7/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_7-1758654298645.png" alt="jeet_kapase_7-1758654298645.png" /></span><P> </P></LI><LI><P>Add resources – in this scenario, we added all resources under /.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_8-1758654342880.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319122iF0786CE5F6BB6CED/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_8-1758654342880.png" alt="jeet_kapase_8-1758654342880.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_0-1758654456958.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319123iE2A1BC72C4E153BA/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_0-1758654456958.png" alt="jeet_kapase_0-1758654456958.png" /></span><P> </P></LI></OL><HR /><H3 id="toc-hId--1329410067">Step 7: Add RFC Protocol Resources</H3><OL><LI><P>Select <STRONG>RFC protocol</STRONG>.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_1-1758654477019.png" style="width: 560px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319124iCDEE1D96A196DC3C/image-dimensions/560x264?v=v2" width="560" height="264" role="button" title="jeet_kapase_1-1758654477019.png" alt="jeet_kapase_1-1758654477019.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_2-1758654505382.png" style="width: 564px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319125i2187506DA5660D9E/image-dimensions/564x261?v=v2" width="564" height="261" role="button" title="jeet_kapase_2-1758654505382.png" alt="jeet_kapase_2-1758654505382.png" /></span><P> </P></LI><LI><P>Enter system mapping details (System ID + description).</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_3-1758654540707.png" style="width: 568px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319126i81462D066986D21C/image-dimensions/568x261?v=v2" width="568" height="261" role="button" title="jeet_kapase_3-1758654540707.png" alt="jeet_kapase_3-1758654540707.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_4-1758654667483.png" style="width: 566px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319127iAC623298B8A67A9C/image-dimensions/566x264?v=v2" width="566" height="264" role="button" title="jeet_kapase_4-1758654667483.png" alt="jeet_kapase_4-1758654667483.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_5-1758654692013.png" style="width: 572px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319128iF9438F04F8405103/image-dimensions/572x266?v=v2" width="572" height="266" role="button" title="jeet_kapase_5-1758654692013.png" alt="jeet_kapase_5-1758654692013.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_6-1758654712766.png" style="width: 577px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319129iDD612D5A38FA19F9/image-dimensions/577x263?v=v2" width="577" height="263" role="button" title="jeet_kapase_6-1758654712766.png" alt="jeet_kapase_6-1758654712766.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_7-1758654744856.png" style="width: 593px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319130iD37FB812B9563825/image-dimensions/593x272?v=v2" width="593" height="272" role="button" title="jeet_kapase_7-1758654744856.png" alt="jeet_kapase_7-1758654744856.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_8-1758654881605.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319131iDC4173A5DC92631F/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_8-1758654881605.png" alt="jeet_kapase_8-1758654881605.png" /></span><P> </P></LI><LI><P>Finish setup and test connectivity.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_14-1758655109390.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319138i76477CC5001A449C/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_14-1758655109390.png" alt="jeet_kapase_14-1758655109390.png" /></span><P> </P><P> </P></LI><LI><P>Map required resources:</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_10-1758654952322.png" style="width: 641px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319133i4155062464F749A0/image-dimensions/641x175?v=v2" width="641" height="175" role="button" title="jeet_kapase_10-1758654952322.png" alt="jeet_kapase_10-1758654952322.png" /></span><P> </P><UL><LI><P>With <STRONG>Prefix</STRONG> (e.g., DHAMB_)</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_12-1758655045260.png" style="width: 702px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319136i5CAEE106ADDE014A/image-dimensions/702x285?v=v2" width="702" height="285" role="button" title="jeet_kapase_12-1758655045260.png" alt="jeet_kapase_12-1758655045260.png" /></span><P> </P></LI><LI><P>With <STRONG>Exact Name</STRONG> (e.g., RFC_FUNCTION_SEARCH)</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_15-1758655166140.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319141i2F6A143AC59339DC/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_15-1758655166140.png" alt="jeet_kapase_15-1758655166140.png" /></span><P> </P></LI></UL></LI><LI><P>Ensure the status turns <STRONG>Green</STRONG> for all resources.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_16-1758655216140.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319143i4F1B630F1979AA10/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_16-1758655216140.png" alt="jeet_kapase_16-1758655216140.png" /></span><P> </P></LI></OL><HR /><H3 id="toc-hId--1525923572">Step 8: Maintain IP Allow list in SAP Datasphere</H3><OL><LI><P>Identify the <STRONG>public IP address</STRONG> of the host where Cloud Connector is installed (e.g., via whatismyip.com or ip.me or whatever way you are aware of).</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_17-1758655253115.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319144iD5ED9A868223641F/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_17-1758655253115.png" alt="jeet_kapase_17-1758655253115.png" /></span><P> </P></LI><LI><P>Add this IP under <STRONG>Trusted Cloud Connector IPs</STRONG> in SAP Datasphere:<BR /><EM>System → Configuration → IP Allowlist</EM>.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_18-1758655285574.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319145i49BB8D93CF80AB07/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_18-1758655285574.png" alt="jeet_kapase_18-1758655285574.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_19-1758655332002.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319146i740B619B305995C5/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_19-1758655332002.png" alt="jeet_kapase_19-1758655332002.png" /></span><P> </P></LI></OL><HR /><H3 id="toc-hId--1722437077">Step 9: Maintain the Cloud Connector Location ID in SAP Datasphere</H3><P>Go to:<BR /><EM>SAP Datasphere →System → Administration → Data Source Configuration</EM> and maintain the <STRONG>Cloud Connector Location ID</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_21-1758655470742.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319148i085BF9BA7E146364/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_21-1758655470742.png" alt="jeet_kapase_21-1758655470742.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jeet_kapase_20-1758655408255.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/319147i5DA7B968FD7C2B45/image-size/large?v=v2&px=999" role="button" title="jeet_kapase_20-1758655408255.png" alt="jeet_kapase_20-1758655408255.png" /></span></P><P> </P><HR /><P><EM>With these steps completed, your <STRONG>SAP Cloud Connector</STRONG> is successfully installed, connected, and configured to integrate and create a native connection type of SAP S/4HANA on-premise with SAP Datasphere.</EM></P><H2 id="toc-hId--1625547575">Summary: </H2><P>In this blog, we saw how the SAP Cloud Connector helps connect SAP Datasphere with on-premise systems in a secure and easy way. It supports features like Replication Flows, Data Flows, and Model Import for smooth data integration. We also looked at the benefits such as simple setup, better security, high availability, and low cost. With best practices like keeping it updated, using a dedicated server, and regular monitoring, you can ensure reliable performance. Finally, we walked through the step-by-step setup to successfully link SAP S/4HANA with SAP Datasphere.</P><P> </P>2025-09-23T23:36:19.259000+02:00https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-iii-successfactors/ba-p/14233747Identity and Access Management with Microsoft Entra, Part III: SuccessFactors and Role Provisioning2025-10-20T10:05:47.788000+02:00MartinRaepplehttps://community.sap.com/t5/user/viewprofilepage/user-id/171519<P><A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">Part II</A> of this blog series took a technical deep-dive into a hybrid scenario for managing identities and their access across SAP Business Technology Platform (BTP) and S/4HANA on-premise. Part III enhances the scenario by introducing SAP SuccessFactors (SF) as the source for employee and user data, and leverages the new capabilities in Entra for SCIM-based provisioning to SAP Cloud Identity Service (CIS) supporting <EM>groups</EM> to streamline end-to-end role assignments in the connected SAP ABAP backend.</P><H2 id="toc-hId-1761851243">Scenario Overview</H2><P>Part III introduces substantial changes and enhancements to the scenario in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>:</P><UL><LI>Microsoft Entra and Active Directory (AD) were the primary and authoritative systems (aka "source of authority", SOA) for identity data in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>. For many organizations, however, the trusted SOA for identities is a <A href="https://www.sap.com/products/hcm/employee-central-hris/what-is-hris.html" target="_blank" rel="noopener noreferrer">Human Resource Information System (HRIS)</A> such as SAP SuccessFactors (SF), which will be added to the scenario in this part, and where new employees are now onboarded<SPAN>.</SPAN></LI><LI>Identity creation, updates, and deprovisioning are now driven by HR events (e.g., hiring, role changes, terminations) from SF. AD and Entra become downstream provisioning targets in this scenario. Because users require access to SAP from SAP GUI on their corporate AD domain-joined workstation using Kerberos/<A href="https://help.sap.com/doc/saphelp_nw75/7.5.5/en-US/e6/56f466e99a11d1a5b00000e835363f/frameset.htm" target="_blank" rel="noopener noreferrer">SNC</A>-based single sign-on (SSO, see <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>), the solution architecture in this scenario integrates SF with the <A href="https://learn.microsoft.com/en-us/entra/identity/saas-apps/sap-successfactors-inbound-provisioning-tutorial" target="_blank" rel="noopener nofollow noreferrer">SAP SuccessFactors to Active Directory user provisioning connector</A> from the <A href="https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-integrated-apps" target="_blank" rel="noopener nofollow noreferrer">Microsoft Entra App Gallery.</A> This p<SPAN>re-built, cloud-based solution </SPAN>supports <EM>inbound-</EM> or <EM><A href="https://learn.microsoft.com/en-us/entra/identity/app-provisioning/what-is-hr-driven-provisioning" target="_blank" rel="noopener nofollow noreferrer">HR-driven</A></EM> provisioning of new employees from SF to AD <SPAN>through Entra.</SPAN> New users provisioned to AD by this connector will be synchronized to Entra with the existing setup of t<SPAN>he </SPAN><A href="https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/concept-how-it-works" target="_blank" rel="noopener nofollow noreferrer">Microsoft Entra Cloud Sync Provisioning Agent</A><SPAN> from <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A> of this blog series that runs on the Domain Controller (DC) in our fictitious company BestRun's corporate network</SPAN>.</LI><LI><A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">Part II</A> focused on the automation of provisioning the user's identity data. The user's authorization in the SAP backend (we used role<SPAN> </SPAN><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/c238d694b825421f940829321ffa326a/4ec2c02e6e391014adc9fffe4e204223.html?q=SAP_BC_ABAP_DEVELOPER_5&locale=en-US" target="_blank" rel="noopener noreferrer">SAP_BC_ABAP_DEVELOPER_5</A> <SPAN>as an example) </SPAN>was still managed manually by assigning the user to the equally named group "SAP_BC_ABAP_DEVELOPER_5" in the CIS tenant (see step 10.20 in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>). Also the group in CIS had to be created manually in the previous part of the scenario (see steps 9.17-9.19). This approach may work for a few backend authorizations, but won't scale for a larger number of connected systems and applications with complex authorization models. A key objective in this scenario is to fully automate end-to-end provisioning and deprovisioning of the user's authorizations, which includes the synchronization of backend roles and their corresponding groups in CIS and Entra, as well as the memberships of users to these groups, that ultimately assigns them to the backend roles. The updated version of the <A href="https://learn.microsoft.com/en-us/entra/identity/saas-apps/sap-cloud-platform-identity-authentication-provisioning-tutorial" target="_blank" rel="noopener nofollow noreferrer">SAP CIS connector</A> from the <A href="https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-integrated-apps" target="_blank" rel="noopener nofollow noreferrer">Microsoft Entra App Galley</A> now enables automated provisioning of <EM>groups</EM> and their <EM>entitlements</EM> as <EM>memberships</EM> from Entra to CIS. This new feature in the SCIM (System for Cross-domain Identity Management, IETF RFCs <A href="https://tools.ietf.org/html/rfc7642" target="_blank" rel="nofollow noopener noreferrer">7642</A>, <A href="https://tools.ietf.org/html/rfc7643" target="_blank" rel="nofollow noopener noreferrer">7643</A> and <A href="https://tools.ietf.org/html/rfc7644" target="_blank" rel="nofollow noopener noreferrer">7644</A>)-compliant outbound provisioning connector in Entra streamlines the end-to-end lifecycle management for authorizations in the scenario. By assigning the new user to a group representing the <A href="https://learning.sap.com/learning-journeys/exploring-the-authorization-concept-for-sap-s-4hana-and-sap-business-suite/creating-standard-roles" target="_blank" rel="noopener noreferrer">PFCG role</A> in the SAP ABAP system, this group and the user's membership are now also automatically provisioned to CIS, and from there to the backend system. Similar to <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>, the group in Entra and CIS is mapped to the PFCG role by using the same name.</LI></UL><P>Figure 1 illustrates the SOA for the IAM entities in the scenario:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 1" style="width: 282px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329689i917D242B40ECE381/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="figure1.png" alt="Figure 1" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 1</span></span></P><P> </P><P>Although SOA for identity data moves to SF, the connected SAP system remains the authority for the <EM>definition</EM> of the roles that can be assigned in the scenario. Managing the actual <EM>assignment</EM> of users to these roles through access packages and approval workflows remains the responsibility of Entra ID Governance. With no single SOA for users, groups and roles centralized at one place in the system landscape, figure 2 shows the updated and newly introduced system components based on the existing setup from <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>, and illustrates the steps of the provisioning flow for a new onboarded employee requesting access to a role in the corporate SAP system:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Figure 2" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329690iC40448471EB1C535/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="figure2.png" alt="Figure 2" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 2</span></span></P><P> </P><P> </P><P> </P><OL><LI>CIS is responsible to integrate the connected SAP systems following this <A href="https://architecture.learning.sap.com/docs/ref-arch/20c6b29b1e/2" target="_blank" rel="noopener noreferrer">reference architecture</A>. It synchronizes the role from the backend (SAP_BC_EPM_DEMO in this scenario) with the <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/sap-application-server-abap" target="_blank" rel="noopener noreferrer">SAP Application Server ABAP connector configured as a Source System</A> in BestRun's CIS tenant Identity Provisioning Service (IPS) which results in creating a group with the same name in the tenant's local directory. Connectivity from CIS to the SAP system on-premises remains unchanged from <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A> and is established via the <A href="https://discovery-center.cloud.sap/serviceCatalog/connectivity-service?region=all" target="_blank" rel="noopener nofollow noreferrer">connectivity service in BTP</A> and the <A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector" target="_blank" rel="noopener noreferrer">SAP Cloud Connector</A> deployed in the corporate network.</LI><LI>CIS also takes care for creating the group in Entra by provisioning it with the <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/target-microsoft-entra-id" target="_blank" rel="noopener noreferrer">Entra ID connector configured as a target system</A> in the CIS tenant. This connector uses the <A href="https://learn.microsoft.com/en-us/graph/api/resources/groups-overview?view=graph-rest-1.0&tabs=http" target="_blank" rel="noopener nofollow noreferrer">Microsoft Graph API</A> to manage groups in Entra.</LI><LI>The HR admin adds a new employee record in SF for the user in the sceanrio, Linda Larson. </LI><LI>The <A href="https://learn.microsoft.com/en-us/entra/identity/saas-apps/sap-successfactors-inbound-provisioning-tutorial" target="_blank" rel="noopener nofollow noreferrer">SAP SuccessFactors to Active Directory user provisioning connector</A> picks up the new employee record <SPAN>by calling the <A href="https://learn.microsoft.com/en-us/entra/identity/app-provisioning/sap-successfactors-integration-reference" target="_blank" rel="noopener nofollow noreferrer">SF Employee Central OData API endpoints</A> </SPAN>to query for new or updated data.</LI><LI>The connector then provisions a user account for the new employee Linda in BestRun's corporate AD via <A href="https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/concept-how-it-works" target="_blank" rel="noopener nofollow noreferrer">Entra Cloud Sync and the Entra Provisioning Agent</A> on the DC.</LI><LI>With Entra Cloud Sync configured in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A> to <A href="https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-configure" target="_blank" rel="noopener nofollow noreferrer">synchronize AD with the Entra</A> tenant, the new account in the corporate AD is also provisioned to BestRun's Entra ID tenant.</LI><LI>Linda starts a request for the <EM>SAP EPM</EM> access package with the <A href="https://docs.azure.cn/en-us/entra/id-governance/my-access-portal-overview" target="_blank" rel="noopener nofollow noreferrer">MyAccess portal</A>. For this initial login to Entra, Linda can use the <SPAN>self-service password reset (SSPR) feature in Entra to set her new Entra user account's password. With <A href="https://learn.microsoft.com/en-us/entra/identity/authentication/concept-sspr-writeback" target="_blank" rel="noopener nofollow noreferrer">password writeback enabled in Entra Cloud Sync</A> and SSPR to use password writeback, Linda's initial password reset or any future changes of her password are synchronized back to BestRun's on-premises AD as well. </SPAN><SPAN>By completing the request, Linda is assigned to the access package resources, and becomes a member in the SAP_BC_EPM_DEMO group in Entra. To keep things simple, the access package policy requires no approval steps in this scenario.</SPAN></LI><LI>The <A href="https://learn.microsoft.com/en-us/entra/identity/saas-apps/sap-cloud-platform-identity-authentication-provisioning-tutorial" target="_blank" rel="noopener nofollow noreferrer">SAP CIS connector enterprise app</A> is configured to perform all operations (create/update/delete) on new or existing user objects, but to skip creation on groups. Otherwise, Entra would try to create the same group again in CIS that has already been created in step 1, which would result in a naming conflict. Instead, it creates a new user account for Linda in CIS, but only updates her membership to the <SPAN>SAP_BC_EPM_DEMO group in </SPAN>BestRun's CIS tenant.<BR />In addition to the new support for groups in the new version of the SAP CIS connector, authentication to CIS no longer uses basic authentication that sends static credentials with every request. Instead, short‑lived tokens with scoped, limited privileges using the <A href="https://datatracker.ietf.org/doc/html/rfc6749#section-4.4" target="_blank" rel="noopener nofollow noreferrer">OAuth 2.0 client credentials grant flow</A> enhance security over basic authentication.</LI><LI>Provisioning to the SAP backend with the already existing <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/target-sap-application-server-abap" target="_blank" rel="noopener noreferrer">SAP Application Server ABAP connector configured as a Target System</A> in IPS starts by reading the new user and her group membership from the CIS tenant's local directory, and creating the new user in SAP as well as assigning this user to the corresponding <SPAN>SAP_BC_EPM_DEMO role.</SPAN></LI><LI>Finally, Linda can login to BestRun's corporate AD from her workstation, obtains a Kerberos token from the DC, and uses it to securely single sign-on to the backend from SAP GUI and the SAP Secure Login Client. This requires mapping of her user principal name (UPN) in AD to her SAP user, which has already been configured in the mappings of the SAP CIS connector in Entra (see step 6.18 in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>) and the transformation of the SAP Application Server ABAP target system in IPS (see step 9.12 in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_self">part II</A>).</LI></OL><P>If you want to see the scenario in action, tune into <A href="https://eu01web.zoom.us/rec/share/GhPI3WX8f78T47EuMtsFrT3P5ADDEyyUuqj_vEGlMN3Dtvu6e_wpPrqYKnX7TPVt.T_4kNxoeY4L8rkut" target="_blank" rel="noopener nofollow noreferrer">the recording</A> from our latest online session (in german language) with the <A href="https://dsagnet.de/gremium/sap-iam-strategie-mit-microsoft" target="_blank" rel="noopener nofollow noreferrer">DSAG TG "SAP IAM Strategie mit Microsoft" </A> from October 7th, or check out <A href="https://www.youtube.com/watch?v=MKZb0b2tXIU&feature=youtu.be" target="_blank" rel="noopener nofollow noreferrer">episode 263</A> from <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/3494">@Holger-Bruchelt</a> <A href="https://www.saponazurepodcast.de/" target="_blank" rel="noopener nofollow noreferrer">SAP on Azure video podcast</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%2FMKZb0b2tXIU%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DMKZb0b2tXIU&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FMKZb0b2tXIU%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="200" height="112" scrolling="no" title="#263 - ToW SuccessFactors integration & Role provisioning (Martin Raepple) | SAP on Azure Video" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><H2 id="toc-hId-883691727" id="toc-hId-1565337738"><SPAN>Prerequisites and lab setup</SPAN></H2><P><SPAN>You can continue to use all subscriptions, systems and tenants from your lab in <A href="https://community.sap.com/t5/technology-blogs-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">part II</A>, because all prerequisites also apply for this scenario. In addition, make sure that you meet the following prerequisites to successfully implement the enhanced scope of this scenario:</SPAN></P><UL><LI><SPAN>Administrative access to an <STRONG>SF instance</STRONG> with permissions to setup provisioning credentials and onboard new employees.</SPAN></LI><LI><SPAN>An SCI tenant in a <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/connect-to-on-premise-systems-in-sap-cloud-identity-infrastructure" target="_blank" rel="noopener noreferrer">matching region</A> of your BTP subaccount for on-premise connectivity that has <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/target-microsoft-entra-id" target="_blank" rel="noopener noreferrer"><STRONG>Microsoft Entra ID</STRONG> as a target system</A> enabled.</SPAN></LI><LI><SPAN>An <A href="https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr" target="_blank" rel="noopener nofollow noreferrer">Entra ID tenant with self-service password reset (SSPR) enabled</A> and <A href="https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-cloud-sync-sspr-writeback" target="_blank" rel="noopener nofollow noreferrer">Entra Connect cloud sync configured for SSPR writeback</A> to the AD in the scenario.</SPAN></LI><LI><SPAN>Re-run steps 9.1 to 9.10 of <A href="https://community.sap.com/t5/technology-blogs-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">part II</A></SPAN><SPAN> in your CIS tenatn with the updated file <A href="https://github.com/raepple/iam-with-entra/blob/0a73239a81c596811d0e704eb715045c2fdddde0/part3/LocalDirectory.json" target="_blank" rel="noopener nofollow noreferrer">LocalDirectory.json</A> for the LocalDirectory source system, and the updated file <A href="https://github.com/raepple/iam-with-entra/blob/0a73239a81c596811d0e704eb715045c2fdddde0/part3/SAPA4H_IPS.json" target="_blank" rel="noopener nofollow noreferrer">SAPA4H_IPS.json</A> for the SAPA4H target system. The updated files apply minor changes to the transformations of both systems based on <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/bc-p/14021715/highlight/true#M171937" target="_blank">valuable feedback in the comments to part II</A>. The customAttributes are no longer used to carry over the values for the SAP user name and SNC mapping from Entra to CIS. Instead, the extension attribute sapUserName is used, and construction of the SNC mapping has moved from Entra to the transformation of the SAPA4H target systems (lines 13 to 28).</SPAN></LI></UL><TABLE border="1" width="100%"><TBODY><TR><TD width="100%"><SPAN><STRONG>Note </STRONG><span class="lia-unicode-emoji" title=":loudspeaker:">📢</span><span class="lia-unicode-emoji" title=":loudspeaker:">📢</span><span class="lia-unicode-emoji" title=":loudspeaker:">📢</span></SPAN></TD></TR><TR><TD width="100%"><P><SPAN>This tutorial extends and updates the scenario </SPAN><SPAN>from <A href="https://community.sap.com/t5/technology-blogs-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">part II</A>. Any components and their configurations that are not added or changed in this scenario, such as the SAP Cloud Connector or Active Directory, are not covered in this tutorial. If you arrived here and have not completed <A href="https://community.sap.com/t5/technology-blogs-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">part II</A>, please do so first, and then come back again.</SPAN></P></TD></TR></TBODY></TABLE><P><SPAN>As before, supporting files for this tutorial can be found in the blog series <A href="https://github.com/raepple/iam-with-entra" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>. Now l</SPAN>et's get started with setting up the provisioning of new employees from SAP SuccessFactors to Entra.</P><H2 id="toc-hId-1368824233">Create API User in SuccessFactors for provisioning to Entra</H2><P>Calling the SF OData APIs from both SF connector apps (Entra & AD) requires an API User in your SF instance who has the appropriate permissions to <A href="https://learn.microsoft.com/en-us/entra/identity/app-provisioning/sap-successfactors-attribute-reference" target="_blank" rel="noopener nofollow noreferrer">retrieve the required entities and their attributes</A>.</P><TABLE border="1"><TBODY><TR><TD width="46.2879px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46.2879px" height="375px">1.1</TD><TD width="350px" height="375px"><STRONG>Login</STRONG> to your SF instance as a system administrator who has access to the <EM>Admin Center</EM>.</TD><TD width="350px" height="375px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323059i1B59BBDBCDDD4A33/image-size/medium?v=v2&px=400" role="button" title="1-1.jpg" alt="1-1.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="110px">1.2</TD><TD width="350px" height="110px">Enter <EM>Import Employee Data</EM> in the <STRONG>search bar</STRONG> and select the action from the search results.</TD><TD width="350px" height="110px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323060i7964CEF9C7817A56/image-size/medium?v=v2&px=400" role="button" title="1-2.jpg" alt="1-2.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="199px">1.3</TD><TD width="350px" height="199px"><P>Select <EM>Basic Import</EM> from the <STRONG>entity</STRONG> drop-down list.</P><P>Click <STRONG>Browse...</STRONG></P></TD><TD width="350px" height="199px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323061iB05B9AC607ED2276/image-size/medium?v=v2&px=400" role="button" title="1-3.jpg" alt="1-3.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="140px">1.4</TD><TD width="350px" height="140px">Open the <A href="https://github.com/raepple/iam-with-entra/blob/39542db929093ab4a974db4b3bb37b763532762b/part3/entra_api_user_import.csv" target="_blank" rel="noopener nofollow noreferrer">CSV file</A> to import the API user from the <A href="https://github.com/raepple/iam-with-entra/tree/main/part3" target="_blank" rel="noopener nofollow noreferrer">GitHub repo</A>.</TD><TD width="350px" height="140px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323058i6D52F83BE01AD00E/image-size/medium?v=v2&px=400" role="button" title="1-4.jpg" alt="1-4.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="162px">1.5</TD><TD width="350px" height="162px">Click <STRONG>Validate Import File Data</STRONG>.</TD><TD width="350px" height="162px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323062i5B8E010A05CC894E/image-size/medium?v=v2&px=400" role="button" title="1-5.jpg" alt="1-5.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="199px">1.6</TD><TD width="350px" height="199px"><P>Check for the <STRONG>Validation Successful</STRONG> message.</P><P>Click <STRONG>Import</STRONG>.</P></TD><TD width="350px" height="199px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323064i1B97BE0FBD73B4E5/image-size/medium?v=v2&px=400" role="button" title="1-6.jpg" alt="1-6.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="79px">1.7</TD><TD width="350px" height="79px">Wait for the <STRONG>confirmation message</STRONG> that the file has been uploaded and is being processed.</TD><TD width="350px" height="79px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323063i849299EB0199276B/image-size/medium?v=v2&px=400" role="button" title="1-7.jpg" alt="1-7.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="67px">1.8</TD><TD width="350px" height="67px">Enter <STRONG>Manage Permission Roles</STRONG> in the search bar and select the action from the search results.</TD><TD width="350px" height="67px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323065iC50F0C2EBE2B30B9/image-size/medium?v=v2&px=400" role="button" title="1-8.jpg" alt="1-8.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="83px">1.9</TD><TD width="350px" height="83px">Click <STRONG>Create</STRONG>.</TD><TD width="350px" height="83px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323066i85790CC25D33DC75/image-size/medium?v=v2&px=400" role="button" title="1-9.jpg" alt="1-9.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="234px">1.10</TD><TD width="350px" height="234px"><P>Enter <EM>Entra Provisioning Role</EM> as the <STRONG>Name</STRONG> for the new Permission Role that will be assigned to the imported API user.</P><P>Keep the default value <EM>Employee</EM> for <STRONG>User Type</STRONG>, and click <STRONG>Next</STRONG>.</P></TD><TD width="350px" height="234px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323067i2E19DC6F9C23F8AC/image-size/medium?v=v2&px=400" role="button" title="1-10.jpg" alt="1-10.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="241px">1.11</TD><TD width="350px" height="241px"><P>On the Add Permissions step in the Create Role wizard, enter <EM>Manage Integration Tools</EM> in the <STRONG>search bar</STRONG> and click the lens icon.</P><P><STRONG>Activate</STRONG> the checkbox for <EM>Allow Admin to Access OData API throuch Basic Authentication</EM>.</P></TD><TD width="350px" height="241px"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1-11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323069i8E60C758B303334E/image-size/medium?v=v2&px=400" role="button" title="1-11.jpg" alt="1-11.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="217px">1.12</TD><TD width="350px" height="217px"><P>Enter <EM>Employee Central API</EM> in the <STRONG>search bar</STRONG> and click the lens icon.</P><P><STRONG>Activate</STRONG> the following checkboxes:</P><UL><LI>Employee Central Foundation OData API (read-only)</LI><LI>Employee Central HRIS OData API (read-only)</LI><LI>Employee Central Foundation OData API (editable)</LI><LI>Employee Central HRIS OData API (editable)</LI></UL></TD><TD width="350px" height="217px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-12.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323169i9E0F15E15CBFFC08/image-size/medium?v=v2&px=400" role="button" title="1-12.jpg" alt="1-12.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="315px">1.13</TD><TD width="350px" height="315px"><P>Enter <EM>Employee Data</EM> in the <STRONG>search bar</STRONG> and click the lens icon.</P><P>Scroll to the <STRONG>User Information</STRONG> section and <STRONG>activate</STRONG> the <STRONG>View</STRONG> checkbox for all attributes.</P></TD><TD width="350px" height="315px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-13.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323071iDECEDA2DBAFB8480/image-size/medium?v=v2&px=400" role="button" title="1-13.jpg" alt="1-13.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="402px">1.14</TD><TD width="350px" height="402px">Scroll down to the <STRONG>HR Information</STRONG> section and <STRONG>active</STRONG> the <STRONG>View</STRONG> checkbox for all attributes.</TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-14.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323077i26DF741821B67369/image-size/medium?v=v2&px=400" role="button" title="1-14.jpg" alt="1-14.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="277px">1.15</TD><TD width="350px" height="277px"><P>Scroll down to the <STRONG>Employment Details</STRONG> section and <STRONG>activate</STRONG> the <STRONG>View</STRONG> checkbox for all attributes.</P><P>Click <STRONG>Next</STRONG>.</P></TD><TD width="350px" height="277px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-15.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323078i6EEC00AD606F0ACC/image-size/medium?v=v2&px=400" role="button" title="1-15.jpg" alt="1-15.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="284px">1.16</TD><TD width="350px" height="284px">Click <STRONG>Save</STRONG>.</TD><TD width="350px" height="284px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-16.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323079i195554F8B410E08C/image-size/medium?v=v2&px=400" role="button" title="1-16.jpg" alt="1-16.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="188px">1.17</TD><TD width="350px" height="188px">Click <STRONG>Not Now</STRONG>.</TD><TD width="350px" height="188px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-17.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323080i06829747256F7A39/image-size/medium?v=v2&px=400" role="button" title="1-17.jpg" alt="1-17.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="48px">1.18</TD><TD width="350px" height="48px">In the <STRONG>search bar</STRONG>, enter <EM>Manage Permission Groups</EM> and select the action from the search results.</TD><TD width="350px" height="48px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-18.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323081iF0404AAD332EA294/image-size/medium?v=v2&px=400" role="button" title="1-18.jpg" alt="1-18.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="114px">1.19</TD><TD width="350px" height="114px">Click <STRONG>Create New</STRONG>.</TD><TD width="350px" height="114px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-19.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323082i39E502F0AC2012DF/image-size/medium?v=v2&px=400" role="button" title="1-19.jpg" alt="1-19.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.20</TD><TD width="350px" height="30px"><P>Enter <EM>Entra Provisioning Group</EM> for the <STRONG>Group Name</STRONG> of the new permission group.</P><P>Add the imported API user to the new group by selecting <STRONG>User Type</STRONG> <EM>Employee</EM>.</P><P>Select <STRONG>User</STRONG> from the <STRONG>People Pool</STRONG> drop down list.</P><P>Select <EM>= (equal to)</EM> as the <STRONG>search operation</STRONG>, and enter <EM>Entra</EM> as the value. </P><P>Select the imported API user record <EM>entra entra provisioning</EM> from the value help.</P><P>Click <STRONG>Done</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-20.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323083iBA322FC45977BA2B/image-size/medium?v=v2&px=400" role="button" title="1-20.jpg" alt="1-20.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.21</TD><TD width="350px" height="30px">Click <STRONG>Done</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-21.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323084iD34A7779A1D22864/image-size/medium?v=v2&px=400" role="button" title="1-21.jpg" alt="1-21.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.22</TD><TD width="350px" height="30px">In the <STRONG>search bar</STRONG>, enter <EM>Manage Permission Roles </EM>and select the action from the search results.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-22.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323085i9E4D04F57C144FC2/image-size/medium?v=v2&px=400" role="button" title="1-22.jpg" alt="1-22.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.23</TD><TD width="350px" height="30px">From the list of permission roles, click on the <STRONG>Add Role Assignment</STRONG> action for the new <STRONG>Entra Permission Role</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-23.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323087iD936181505CD5BF0/image-size/medium?v=v2&px=400" role="button" title="1-23.jpg" alt="1-23.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.24</TD><TD width="350px" height="30px"><P>Keep the default values on the <STRONG>Basic information</STRONG> tab.</P><P>Click <STRONG>Next</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-24.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323088iE23F2CF4D41C8D1D/image-size/medium?v=v2&px=400" role="button" title="1-24.jpg" alt="1-24.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.25</TD><TD width="350px" height="30px"><P>Select the <STRONG>From groups</STRONG> option.</P><P>Click <STRONG>Select Groups</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-25.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323089i30E7B9BC40B1AD62/image-size/medium?v=v2&px=400" role="button" title="1-25.jpg" alt="1-25.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.26</TD><TD width="350px" height="30px"><P><STRONG>Activate</STRONG> the checkbox for the new<STRONG> Entra Provisioning Group</STRONG>.</P><P>Click <STRONG>Select</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-26.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323090i4D12FD48E1882E0C/image-size/medium?v=v2&px=400" role="button" title="1-26.jpg" alt="1-26.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.27</TD><TD width="350px" height="30px">Click <STRONG>Next</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-27.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323091i82ED31522003DA7D/image-size/medium?v=v2&px=400" role="button" title="1-27.jpg" alt="1-27.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.28</TD><TD width="350px" height="30px"><P>Keep the default values on the <STRONG>Define a Target Population</STRONG> step and click <STRONG>Next</STRONG>.</P><P>Keep the default values on the <STRONG>Define Data Blocking</STRONG> step and click <STRONG>Next</STRONG>.</P><P>On the <STRONG>Preview</STRONG> step, click <STRONG>Save</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-28.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323092iC9BBDF41415911E5/image-size/medium?v=v2&px=400" role="button" title="1-28.jpg" alt="1-28.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.29</TD><TD width="350px" height="30px">Enter <EM>Reset User Passwords</EM> in the <STRONG>search bar</STRONG> and select the action from the results list.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-29.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323093iDD8EF62B93BEB298/image-size/medium?v=v2&px=400" role="button" title="1-29.jpg" alt="1-29.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.30</TD><TD width="350px" height="30px"><P>In the <STRONG>Username</STRONG> field, enter <EM>entra_provisioning_user</EM>.</P><P>Select the imported API user <STRONG>entra_provisioning_user (entra entra provisioning)</STRONG> from the value help.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-30.jpg" style="width: 332px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323094i60A7CE0AFF45FB56/image-size/medium?v=v2&px=400" role="button" title="1-30.jpg" alt="1-30.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.31</TD><TD width="350px" height="30px"><P>Select the user in the result list.</P><P>Enter the same value for the password in the <STRONG>New Password</STRONG> and <STRONG>Confirm Password</STRONG> field.</P><P>Click <STRONG>Reset User Password</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-31.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323095i0713465BAAE3F153/image-size/medium?v=v2&px=400" role="button" title="1-31.jpg" alt="1-31.jpg" /></span></TD></TR><TR><TD width="46.2879px" height="30px">1.32</TD><TD width="350px" height="30px">The <STRONG>confirmation</STRONG> that the password has been resetted is shown.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="1-32.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323096i5B5B1CB0A4D66DAE/image-size/medium?v=v2&px=400" role="button" title="1-32.jpg" alt="1-32.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId-1172310728">Setup provisioning from SuccessFactors to Active Directory</H2><P><SPAN>The new API user's credentials are now being used to setup the SAP SuccessFactors connector for provisioning new employees to BestRun's corporate AD. This </SPAN>ensures that every employee managed in SF also gets a user account in AD which is required for SSO via SNC and Kerberos when accessing BestRun's SAP system(s) from a corporate AD domain-joined workstation.</P><TABLE border="1" width="744px"><TBODY><TR><TD width="46px" height="30px"><STRONG>Step</STRONG></TD><TD width="417px" height="30px"><STRONG>Description</STRONG></TD><TD width="281px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46px" height="124px">2.1</TD><TD width="417px" height="124px"><P><STRONG>Login</STRONG><SPAN> with your Microsoft Entra tenant administrator to the </SPAN><A href="https://entra.microsoft.com/?Microsoft_AAD_Connect_Provisioning_forceSchemaEditorEnabled=true" target="_blank" rel="noopener nofollow noreferrer">Entra admin center</A><SPAN> with an </SPAN><STRONG>additional URL query parameter</STRONG><SPAN> </SPAN><EM>Microsoft_AAD_Connect_Provisioning_<BR />forceSchemaEditorEnabled</EM><SPAN> set to </SPAN><EM>true</EM><SPAN>: </SPAN><A href="https://entra.microsoft.com/?Microsoft_AAD_Connect_Provisioning_forceSchemaEditorEnabled=true" target="_blank" rel="nofollow noopener noreferrer">https://entra.microsoft.com/?Microsoft_AAD_Connect_Provisioning_forceSchemaEditorEnabled=true</A><SPAN>.</SPAN></P><P>Select <STRONG>Enterprise apps</STRONG> from the Entra tenant's main navigation menu.</P><P>Click <STRONG>New application</STRONG>.</P></TD><TD width="281px" height="124px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324672i56AFF37762D75ADB/image-size/medium?v=v2&px=400" role="button" title="5-1.jpg" alt="5-1.jpg" /></span></TD></TR><TR><TD width="46px" height="226px">2.2</TD><TD width="417px" height="226px"><P>Enter SuccessFactors to in the search bar.</P><P>Click the tile with label <STRONG>SuccessFactors to Active Directory User Provisioning</STRONG>.</P></TD><TD width="281px" height="226px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324673i59171A3BBEC8679C/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-2.jpg" alt="5-2.jpg" /></span></TD></TR><TR><TD width="46px" height="277px">2.3</TD><TD width="417px" height="277px"><P>Enter a name for the new enteprise app (for example <EM>SuccessFactors to Active Directory User Provisioning <your SF instance company ID></EM>)<STRONG>.</STRONG></P><P>Click <STRONG>Create</STRONG>.</P></TD><TD width="281px" height="277px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-3.jpg" style="width: 394px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324675i88765EAFE9C08493/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-3.jpg" alt="5-3.jpg" /></span></TD></TR><TR><TD width="46px" height="262px">2.4</TD><TD width="417px" height="262px">Select <STRONG>Provisioning</STRONG> from the navigation menu of the newly created enterprise app.</TD><TD width="281px" height="262px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324676i7AE754A575B97BDD/image-size/medium?v=v2&px=400" role="button" title="5-4.jpg" alt="5-4.jpg" /></span></TD></TR><TR><TD width="46px" height="446px">2.5</TD><TD width="417px" height="446px"><P>For the configuration settings in the next step, the distinguished name (DN) of the path in AD where new users should be created is required. </P><P>You can either create a new container in AD for the onboarded employees from SF, or use an existing one.</P><P>The screenshot shows the <STRONG>Active Directory Users and Computers</STRONG> tool with the default <STRONG>Users</STRONG> container selected and its properties dialog opened. From the tab <STRONG>Attribute Editor</STRONG>, the attribute <STRONG>distinguishedName</STRONG> is selected, and its value <EM>CN=Users,DC=corp,DC=bestrun,DC=com</EM> copied for the configuration of the following step (note that the <EM>DC</EM> (domain) components in your lab setup may be different.).</P></TD><TD width="281px" height="446px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324677iDFB51F0AF8E0FB5A/image-size/medium?v=v2&px=400" role="button" title="5-5.jpg" alt="5-5.jpg" /></span></TD></TR><TR><TD width="46px" height="476px">2.6</TD><TD width="417px" height="476px"><P>Select <STRONG>Provisioning</STRONG> from the navigation menu and expand the <STRONG>Admin Credentials</STRONG> section.</P><P> </P><P>Enter the following values:</P><UL><LI><STRONG>Tenant URL</STRONG>: Provide the tenant URL of your SF instance's API server which can be <A href="https://help.sap.com/docs/successfactors-platform/sap-successfactors-api-reference-guide-odata-v2/list-of-sap-successfactors-api-servers" target="_blank" rel="noopener noreferrer">looked-up here</A>. <STRONG>Note</STRONG>: Do <EM>not</EM> add the URL scheme (<EM>https://</EM>) to the value, but only the hostname.</LI><LI><STRONG>Default OU for New Users</STRONG>: Paste the value from the previous step, or enter any path in your corporate AD where you want new users to be created.</LI><LI><STRONG>Active Directory Domain</STRONG>: Select the domain from the drop-down box that your Entra Connect Sync agent is configured for.</LI><LI><STRONG>Admin Password</STRONG>: The vlaue you entered when resetting the new API user's password in step 1.31</LI><LI><STRONG>Admin Username</STRONG>: The name of the imported user in step 1.4 (<EM>entra_provisioning_user</EM>), followed by the <EM>@-</EM>sign and the company <SPAN>ID of your SF instance.</SPAN></LI></UL><P><SPAN>Click <STRONG>Test Connection</STRONG>.</SPAN></P></TD><TD width="281px" height="476px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324688i03D4877882494EFD/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-6.jpg" alt="5-6.jpg" /></span></TD></TR><TR><TD width="46px" height="179px">2.7</TD><TD width="417px" height="179px"><P><SPAN>Wait for the </SPAN><STRONG>confirmation</STRONG><SPAN> that the values could be successfully verified. Testing the connection also checks that the permissions of the provided API user are correctly set in the SF instance.</SPAN></P><P>Click<SPAN> </SPAN><STRONG>Save</STRONG>.</P></TD><TD width="281px" height="179px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324690iAB199D9C8B709667/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-7.jpg" alt="5-7.jpg" /></span></TD></TR><TR><TD width="46px" height="103px">2.8</TD><TD width="417px" height="103px"><P>Expand the<SPAN> </SPAN><STRONG>Mappings</STRONG><SPAN> </SPAN>section.</P><P>Click<SPAN> </SPAN><STRONG>Provision SuccessFactors Users</STRONG>.</P></TD><TD width="281px" height="103px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324691iE85923BF359F961E/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-8.jpg" alt="5-8.jpg" /></span></TD></TR><TR><TD width="46px" height="341px">2.9</TD><TD width="417px" height="341px"><P>By default, all employee records in the connected SF instance will be synchronized to Entra once provisioning is started.</P><P>For testing purposes of this scenario you will restrict provisioning to the test user only.</P><P>Click<SPAN> </SPAN><STRONG>All records</STRONG>.</P></TD><TD width="281px" height="341px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324692i73A9FF0C45F84FE7/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-9.jpg" alt="5-9.jpg" /></span></TD></TR><TR><TD width="46px" height="199px">2.10</TD><TD width="417px" height="199px">Click<SPAN> </SPAN><STRONG>Add new filter group</STRONG>.</TD><TD width="281px" height="199px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324693i2BAE8DA353E0FC92/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-10.jpg" alt="5-10.jpg" /></span></TD></TR><TR><TD width="46px" height="237px">2.11</TD><TD width="417px" height="237px"><P>Enter the following value for the new filter group:</P><UL><LI><STRONG>Source attribute</STRONG>: personIdExternal</LI><LI><STRONG>Operator</STRONG>: EQUALS</LI><LI><STRONG>Clause value</STRONG>:<SPAN> </SPAN><EM>llarson</EM></LI></UL><P>For the new<SPAN> </SPAN><STRONG>Scoping Filter Title</STRONG>, enter<SPAN> </SPAN><EM>Filter for llarson</EM>.</P><P>Click<SPAN> </SPAN><STRONG>Apply</STRONG>.</P></TD><TD width="281px" height="237px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324694i50E597A361BA319E/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-11.jpg" alt="5-11.jpg" /></span></TD></TR><TR><TD width="46px" height="286px">2.12</TD><TD width="417px" height="286px">Click<SPAN> </SPAN><STRONG>Apply</STRONG>.</TD><TD width="281px" height="286px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-12.jpg" style="width: 382px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324695iBA005EED2452341F/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-12.jpg" alt="5-12.jpg" /></span></TD></TR><TR><TD width="46px" height="222px">2.13</TD><TD width="417px" height="222px">For the <STRONG>userPrincipalName</STRONG> attribute mapping, click <STRONG>Edit</STRONG>.</TD><TD width="281px" height="222px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-13.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/326811i486719FD86D2A9CC/image-size/medium?v=v2&px=400" role="button" title="5-13.jpg" alt="5-13.jpg" /></span></TD></TR><TR><TD width="46px" height="251px">2.14</TD><TD width="417px" height="251px"><P>Change the <STRONG>expression</STRONG> from</P><PRE>[personIdExternal] </PRE><P>to</P><PRE>Join("@", [personIdExternal], "corp.bestrun.com")</PRE><P><STRONG>Replace</STRONG> "<EM>corp.bestrun.com</EM>" with your AD domain name.</P><P>Click <STRONG>Ok</STRONG>.</P></TD><TD width="281px" height="251px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="2-14.jpg" style="width: 376px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329624i0D3CD6B1B1A35025/image-size/medium?v=v2&px=400" role="button" title="2-14.jpg" alt="2-14.jpg" /></span></TD></TR><TR><TD width="46px" height="176px">2.15</TD><TD width="417px" height="176px"><SPAN>Click </SPAN><STRONG>Save</STRONG><SPAN> and confirm with </SPAN><STRONG>Yes</STRONG><SPAN>.</SPAN></TD><TD width="281px" height="176px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-15.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324746iDD3D0A40B06F915D/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-15.jpg" alt="5-15.jpg" /></span></TD></TR><TR><TD width="46px" height="56px">2.16</TD><TD width="417px" height="56px"><STRONG>Close</STRONG> the <STRONG>Attribute Mapping</STRONG> dialog box.</TD><TD width="281px" height="56px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-16.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/324747i38249571B6D687FE/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-16.jpg" alt="5-16.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId-975797223">Setup users and groups provisioning to SAP CIS in Entra</H2><P>To use the new features for <EM>groups provisioning</EM> and <EM>OAuth-based authentication</EM> in the SCIM-based SAP CIS provisioning connector, a new enterprise application will be created. You may want to remove the CIS enterprise app created in steps 6.1 to 6.23 of part II.</P><TABLE border="1"><TBODY><TR><TD width="46.3542px" height="30px"><STRONG>Step</STRONG></TD><TD width="364.875px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46.3542px" height="136px">3.1</TD><TD width="364.875px" height="136px"><P>Select <STRONG>Enterprise apps</STRONG> from the Entra tenant's main navigation menu.</P><P>Click <STRONG>New application</STRONG>.</P></TD><TD width="350px" height="136px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="4-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323133i8F1A63EF538DD48D/image-size/medium?v=v2&px=400" role="button" title="4-1.jpg" alt="4-1.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="402px">3.2</TD><TD width="364.875px" height="402px"><P>Enter <EM>SAP Cloud Identity</EM> in the <STRONG>search bar</STRONG>.</P><P>Click on the tile with the label <STRONG>SAP Cloud Identity Services</STRONG>.</P></TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="4-2.jpg" style="width: 337px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323134iE0A282BDAEC80CF2/image-size/medium?v=v2&px=400" role="button" title="4-2.jpg" alt="4-2.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="402px">3.3</TD><TD width="364.875px" height="402px"><P>Provide <STRONG>name</STRONG> for the new instance, for example <EM>SAP Cloud Identity Service (<your CIS tenant id>)</EM>.</P><P>Click <STRONG>Create</STRONG>.</P></TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="4-3.jpg" style="width: 297px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323135i98257ECEB527B844/image-size/medium?v=v2&px=400" role="button" title="4-3.jpg" alt="4-3.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="285px">3.4</TD><TD width="364.875px" height="285px">Back on the <STRONG>Overview</STRONG> page, click the <STRONG>Provision User Accounts</STRONG> tile.</TD><TD width="350px" height="285px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="4-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323143i947680C34D8D9AB9/image-size/medium?v=v2&px=400" role="button" title="4-8.jpg" alt="4-8.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="730px">3.5</TD><TD width="364.875px" height="730px"><P>Switch the <STRONG>Provisioning Mode</STRONG> from <STRONG>Manual</STRONG> to <STRONG>Automatic</STRONG>.</P><P><STRONG>Expand</STRONG> the <STRONG>Admin Credentials</STRONG> section and enter the following values:</P><UL><LI><STRONG>Authentication Method: </STRONG><EM>OAuth2 Client Credentials Grant</EM></LI><LI><STRONG>Tenant URL</STRONG>: Provide the SCIM endpoint URL of your CIS tenant, for example <EM>https://<your tenant id>.accounts.ondemand.com/scim</EM></LI><LI><STRONG>Token Endpoint</STRONG>: The OAuth token endpoint URL of your CIS tenant (for example <EM>https://<your tenant id>.accounts.ondemand.com/oauth2/token</EM>). You can lookup the token endpoint in your CIS tenant's admin console by navigating to <STRONG>Applications and Resource -> Tenant settings -> Single Sign-On -> OpenID Connect Configuration</STRONG>. </LI><LI><STRONG>Client Credentials</STRONG>: Enter the value for Client ID captured in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">step 4.7 of part II</A>.</LI><LI><STRONG>Client Secret</STRONG>: Enter the value for Client secret captured in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">step 4.7 of part II</A>.</LI></UL><P>Click <STRONG>Test Connection</STRONG>.</P></TD><TD width="350px" height="730px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="4-9.jpg" style="width: 348px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323144i3BCBCD4B1FA953A3/image-size/medium?v=v2&px=400" role="button" title="4-9.jpg" alt="4-9.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="181px">3.6</TD><TD width="364.875px" height="181px"><P>Wait for the <STRONG>confirmation</STRONG> that the configuration has been tested successfully.</P><P>Click <STRONG>Save</STRONG>.</P></TD><TD width="350px" height="181px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="4-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/323145i7FF8A69083A431E2/image-size/medium?v=v2&px=400" role="button" title="4-10.jpg" alt="4-10.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="218px">3.7</TD><TD width="364.875px" height="218px"><P>Next, adjust the mappings to add the user's on-premise principal name as the SAP user name.</P><P><STRONG>Expand</STRONG> the <STRONG>Mappings</STRONG> section.</P><P>Click <STRONG>Provision Microsoft Entra ID Users</STRONG>. </P></TD><TD width="350px" height="218px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329694iBDC55959E9C17580/image-size/medium?v=v2&px=400" role="button" title="3-7.jpg" alt="3-7.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="402px">3.8</TD><TD width="364.875px" height="402px"><P>Activate the checkbox<SPAN> </SPAN><STRONG>Show advanced options</STRONG>.</P><P>By accessing the Microsoft Entra Admin Center with the addition URL query parameter in step 2.1, the additional option to edit the attributes for Entra appears in the<SPAN> </SPAN><STRONG>Supported Attributes</STRONG><SPAN> </SPAN>section.</P><P>Click<SPAN> </SPAN><STRONG>Edit attribute list for Microsoft Entra ID</STRONG>.</P></TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-8.jpg" style="width: 246px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329695i2151DBD168134851/image-size/medium?v=v2&px=400" role="button" title="3-8.jpg" alt="3-8.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="403px">3.9</TD><TD width="364.875px" height="403px"><P>Scroll down to the last row in the table and enter</P><PRE>onPremisesUserPrincipalName</PRE><P>in the attribute<SPAN> </SPAN><STRONG>name</STRONG><SPAN> </SPAN>field.</P><P>Click<SPAN> </SPAN><STRONG>Save</STRONG>, and confirm with<SPAN> </SPAN><STRONG>Yes</STRONG>.</P></TD><TD width="350px" height="403px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-9.jpg" style="width: 306px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329697iD9D8C8031DB15C7F/image-size/medium?v=v2&px=400" role="button" title="3-9.jpg" alt="3-9.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="176px">3.10</TD><TD width="364.875px" height="176px">Click <STRONG>Edit attribute list for SAP Cloud Identity Services</STRONG>.</TD><TD width="350px" height="176px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329698i74703557BD30CF93/image-size/medium?v=v2&px=400" role="button" title="3-10.jpg" alt="3-10.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="195px">3.11</TD><TD width="364.875px" height="195px"><P>Scroll down to the last row in the table and enter</P><PRE>urn:ietf:params:scim:schemas:extension:sap:<BR />2.0:User:sapUserName</PRE><P>in the attribute<SPAN> </SPAN><STRONG>name</STRONG><SPAN> </SPAN>field.</P><P>Click<SPAN> </SPAN><STRONG>Save</STRONG>, and confirm with<SPAN> </SPAN><STRONG>Yes</STRONG>.</P></TD><TD width="350px" height="195px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329699iCFB95D3AB070BF76/image-size/medium?v=v2&px=400" role="button" title="3-11.jpg" alt="3-11.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="283px">3.12</TD><TD width="364.875px" height="283px">Click <STRONG>Add New Mapping</STRONG>.</TD><TD width="350px" height="283px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-12.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329700i22F97F8770DDB648/image-size/medium?v=v2&px=400" role="button" title="3-12.jpg" alt="3-12.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="358px">3.13</TD><TD width="364.875px" height="358px"><P>Select "Expression" for<SPAN> </SPAN><STRONG>Mapping type</STRONG>.</P><P>The Entra attribute "<SPAN>onPremisesUserPrincipalName"</SPAN><SPAN> </SPAN>added in step 3.9 has the format "<Windows user name>@<Kerberos realm name>". The<SPAN> </SPAN><EM>SAP login name</EM><SPAN> </SPAN>should be equal to the<SPAN> </SPAN><EM>Windows user name</EM> that can be considered unique across all users in the organization.</P><P>The following expression<SPAN> </SPAN><A href="https://learn.microsoft.com/en-us/entra/identity/app-provisioning/functions-for-customizing-application-data#split" target="_blank" rel="noopener nofollow noreferrer">extracts</A><SPAN> </SPAN>the Windows user name from the "onPremisesUserPrincipalName" and converts it<SPAN> </SPAN><SPAN><A href="https://learn.microsoft.com/en-us/entra/identity/app-provisioning/functions-for-customizing-application-data#toupper" target="_blank" rel="noopener nofollow noreferrer">to upper case</A> for the SAP login name:</SPAN></P><PRE>Item(Split([onPremisesUserPrincipalName], "@"), 1)</PRE><P><SPAN>Enter this string for the <STRONG>Expression</STRONG>.</SPAN></P><P><SPAN>As the <STRONG>Target attribute</STRONG>, select "<EM>urn:ietf:params:scim:schemas:extension:sap: 2.0:User:sapUserName</EM>" from the list.</SPAN></P><P><SPAN>Click <STRONG>Ok</STRONG>.</SPAN></P></TD><TD width="350px" height="358px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-13.jpg" style="width: 382px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329702i7C8E3B6ED1F877F9/image-size/medium?v=v2&px=400" role="button" title="3-13.jpg" alt="3-13.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">3.14</TD><TD width="364.875px" height="30px">Click <STRONG>Save</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="3-14.jpg" style="width: 296px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329703iD1118C28FD471D3D/image-size/medium?v=v2&px=400" role="button" title="3-14.jpg" alt="3-14.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId-779283718">Configure permissions in Entra for provisioning of groups from CIS</H2><P>CIS provisions the groups (representing the PFCG roles in the SAP backend) with the Graph API to Entra. The required permissions to do so are configured in this step in the application registration created as part of the enterprise app for CIS. </P><TABLE border="1"><TBODY><TR><TD width="46.3542px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46.3542px" height="282px">4.1</TD><TD width="350px" height="282px"><P>From the navigation menu, select <STRONG>App registrations</STRONG>.</P><P>On the <STRONG>All applications</STRONG> tab, search for the name of your enterprise app chosen in step 3.3, for example <EM>SAP Cloud Identity Services (<tenant id>).</EM></P><P><STRONG>Select</STRONG> the application registration for the CIS enterprise app from the search results.</P></TD><TD width="350px" height="282px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327207i03F6B4E3A6A72E7A/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-1.jpg" alt="5-1.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="300px">4.2</TD><TD width="350px" height="300px"><P>Select <STRONG>Certificates & Secrets</STRONG> from the navigation menu.</P><P>Switch to the <STRONG>Client secrets</STRONG> tab.</P><P>Click <STRONG>New client secret</STRONG>.</P></TD><TD width="350px" height="300px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327208i0586C3A913EE0848/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-2.jpg" alt="5-2.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="137px">4.3</TD><TD width="350px" height="137px"><P>Enter a <STRONG>description</STRONG> for the new secret, for example <EM>Entra Provisioning </EM>and select an <STRONG>expiration</STRONG> period.</P><P>Click <STRONG>Add</STRONG>.</P></TD><TD width="350px" height="137px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327210iB93CCD71FB992396/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-3.jpg" alt="5-3.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="103px">4.4</TD><TD width="350px" height="103px"><STRONG>Copy</STRONG> the <STRONG>value</STRONG> of the new secret to the clipboard and paste it to a temporary text file. It will be used in a later step.</TD><TD width="350px" height="103px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327212iAA9CC4EEB6CC3EC6/image-size/medium?v=v2&px=400" role="button" title="5-4.jpg" alt="5-4.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="248px">4.5</TD><TD width="350px" height="248px"><P>Select <STRONG>API permissions</STRONG> from the navigation menu.</P><P>Click <STRONG>Add a permission</STRONG>.</P></TD><TD width="350px" height="248px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327293iA7C5257E8572075F/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-5.jpg" alt="5-5.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="209px">4.6</TD><TD width="350px" height="209px">From the <STRONG>Microsoft APIs</STRONG>, click on the <STRONG>Microsoft Graph</STRONG> tile.</TD><TD width="350px" height="209px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327294iDAD21873B05014AA/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-6.jpg" alt="5-6.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="404px">4.7</TD><TD width="350px" height="404px"><P>CIS calls the Graph APIs on its own behalf, and not on-behalf-of a signed-in user. Therefore, select <STRONG>Application permissions</STRONG>.</P><P>In the <STRONG>search</STRONG> bar, start typing <EM>Group.ReadWrite.</EM></P><P>From the result list, activate the checkbox for the permission <STRONG>Group.ReadWrite.All</STRONG>.</P><P>Click <STRONG>Add permissions</STRONG>.</P><P><STRONG><span class="lia-unicode-emoji" title=":loudspeaker:">📢</span>Note</STRONG>: To follow the <A href="https://en.wikipedia.org/wiki/Principle_of_least_privilege" target="_blank" rel="noopener nofollow noreferrer"><EM>least privilege principle,</EM></A> only the permissions required for this scenario are added. Although CIS can also provision users to Entra, which would require an additional Graph API permission, we do not use this feature, and therefore only add the permission to manage groups.</P></TD><TD width="350px" height="404px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-7.jpg" style="width: 242px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327295iC032A3B4542BC599/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-7.jpg" alt="5-7.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="82px">4.8</TD><TD width="350px" height="82px">To approve the new permission, provide the required admin consent by clicking <STRONG>Grant admin consent for <your tenant domain></STRONG>.</TD><TD width="350px" height="82px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327296iB2D3D091D7AC8BF2/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="5-8.jpg" alt="5-8.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="166px">4.9</TD><TD width="350px" height="166px"><P>Select <STRONG>Overview</STRONG> from the navigation menu.</P><P><STRONG>Copy</STRONG> the <STRONG>Application (client) ID</STRONG> to the clipboard, and paste it to the temporary text file where you've already kept the secret value.</P></TD><TD width="350px" height="166px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327258iA977DE771BC2986E/image-size/medium?v=v2&px=400" role="button" title="5-5.jpg" alt="5-5.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="131px">4.10</TD><TD width="350px" height="131px">Click <STRONG>Endpoints</STRONG>.</TD><TD width="350px" height="131px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="5-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327259iA021C493FA89024E/image-size/medium?v=v2&px=400" role="button" title="5-6.jpg" alt="5-6.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="226px">4.11</TD><TD width="350px" height="226px"><STRONG>Copy</STRONG> the <STRONG>OAuth 2.0 token endpoint (v1)</STRONG> to the clipboard and paste it to the temporary text file where you've already kept the other configuration values.</TD><TD width="350px" height="226px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="MartinRaepple_0-1760555633386.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328060iE6CF4E321AAF7DA9/image-size/medium?v=v2&px=400" role="button" title="MartinRaepple_0-1760555633386.jpeg" alt="MartinRaepple_0-1760555633386.jpeg" /></span><P> </P></TD></TR></TBODY></TABLE><H2 id="toc-hId-582770213">Add SAP as source system in IPS</H2><P>Now it is time to configure the additional <EM>source system</EM> in IPS for <EM>reading</EM> roles from the backend and create the groups from them in the tenant's local directory.</P><TABLE border="1"><TBODY><TR><TD width="46.2879px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD>5.1</TD><TD><P><STRONG>Login</STRONG> as the CIS administrator to your <STRONG>CIS tenant's admin console</STRONG> at https://<tenantID>.accounts.ondemand.com/admin.</P><P>From the <STRONG>Identity Provisioning</STRONG> menu, select <STRONG>Source Systems</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="6-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327298i1ACEE3B172FF52EB/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="6-1.jpg" alt="6-1.jpg" /></span></TD></TR><TR><TD>5.2</TD><TD>Click <STRONG>Add</STRONG>.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="6-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327302i34B464E2D8AE2999/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="6-2.jpg" alt="6-2.jpg" /></span></TD></TR><TR><TD>5.3</TD><TD><P>You will create the new source system from a file, which can be found in the tutorial series <A href="https://github.com/raepple/iam-with-entra/tree/main/part3" target="_blank" rel="nofollow noopener noreferrer">GitHub repository. </A></P><P>Click <STRONG>Browse...</STRONG> and open the file <A href="https://github.com/raepple/iam-with-entra/blob/bcb4b9e7bf94904c5d675b28e800a679b5c86352/part3/SAP%20A4H%20Source%20System.json" target="_blank" rel="noopener nofollow noreferrer">SAP A4H Source System.json</A> from the file dialog.</P><P>Click <STRONG>Save</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="6-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327445i1165420C499BB759/image-size/medium?v=v2&px=400" role="button" title="6-3.jpg" alt="6-3.jpg" /></span></TD></TR><TR><TD>5.4</TD><TD><P>Switch to the <STRONG>Transformations</STRONG> tab to review the configuration.</P><P>Only roles are read from the SAP Application Server ABAP and created as groups in CIS. Reading users from ABAP has been removed from the transformation settings, because Entra is the SOA for them in this scenario.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="6-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327446i03CCECBD78497658/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="6-4.jpg" alt="6-4.jpg" /></span></TD></TR><TR><TD>5.5</TD><TD>Switch to the <STRONG>Properties</STRONG> tab. For testing purposes, the <EM>abap.role.name.filter</EM> property is set on the source system to only read roles starting with the string SAP_BC_EPM.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="6-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327447i19F6190E240FF571/image-size/medium?v=v2&px=400" role="button" title="6-5.jpg" alt="6-5.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId-386256708">Add Entra tenant as target system in IPS</H2><TABLE border="1"><TBODY><TR><TD width="46.2879px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD>6.1</TD><TD>Select <STRONG>Target Systems</STRONG> from the <STRONG>Identity Provisioning</STRONG> menu.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327454i2F9769038007B985/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="7-1.jpg" alt="7-1.jpg" /></span></TD></TR><TR><TD>6.2</TD><TD>Click <STRONG>Add</STRONG>.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327455i96684903D4D04867/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="7-2.jpg" alt="7-2.jpg" /></span></TD></TR><TR><TD>6.3</TD><TD><P>Click <STRONG>Browse...</STRONG> and select the file <SPAN><A href="https://github.com/raepple/iam-with-entra/blob/bcb4b9e7bf94904c5d675b28e800a679b5c86352/part3/Entra%20ID%20Target%20System.json" target="_blank" rel="noopener nofollow noreferrer">Entra ID Target System.json</A> from the <A href="https://github.com/raepple/iam-with-entra/tree/main/part3" target="_blank" rel="nofollow noopener noreferrer">GitHub repository</A>.</SPAN></P><P><SPAN>Switch to the <STRONG>Properties</STRONG> tab.</SPAN></P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327466iEC04E4830B9B0D86/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="7-3.jpg" alt="7-3.jpg" /></span></TD></TR><TR><TD>6.4</TD><TD><P>Paste the values from your temporary text file into the following properties:</P><UL><LI><STRONG>OAuth2TokenServiceURL</STRONG>: Value for the <STRONG>OAuth 2.0 token endpoint (v1)</STRONG> copied in step 4.11</LI><LI><STRONG>Password</STRONG>: Value for the <STRONG>secret</STRONG> copied in step 4.4</LI><LI><STRONG>User</STRONG>: Value for the <STRONG>Application (client) ID</STRONG> copied in step 4.9</LI></UL><P>Click <STRONG>Save</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327472iAF5AEF0A3C848041/image-size/medium?v=v2&px=400" role="button" title="7-4.jpg" alt="7-4.jpg" /></span></TD></TR><TR><TD>6.5</TD><TD><P>Switch to the <STRONG>Transformations</STRONG> tab to review the imported configuration.</P><P>Similar to the new source system, the target systems also only provisions groups to Entra. Users have been removed from the default transformation.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327474iAA9A0B6E9D67C804/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="7-5.jpg" alt="7-5.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId-189743203">Provision the PFCG roles as groups to Entra</H2><P>To continue with the configuration in Entra ID Governance for the <EM>SAP EPM</EM> access package which includes the <EM>SAP_BC_EPM_DEMO, </EM>this group must be provisioned first from the SAP system via CIS to Entra. With the configuration of the new source and target system in CIS, you can start this initial provisioning.</P><TABLE border="1"><TBODY><TR><TD width="46.3542px" height="30px"><STRONG>Step</STRONG></TD><TD width="315.292px" height="30px"><STRONG>Description</STRONG></TD><TD width="315px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46.3542px" height="200px">7.1</TD><TD width="315.292px" height="200px"><P>Select <STRONG>Source Systems</STRONG> from the <STRONG>Identity Provisioning</STRONG> menu.</P><P>From the list of <STRONG>Customer Managed</STRONG> source systems, select the <STRONG>SAP A4H</STRONG> source system.</P><P>Switch to the <STRONG>Jobs</STRONG> tab.</P></TD><TD width="315px" height="200px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328077iB5B0BB5584EF9636/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="7-1.jpg" alt="7-1.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">7.2</TD><TD width="315.292px" height="30px">Click <STRONG>Run Now</STRONG> for the <STRONG>Read Job</STRONG> type.</TD><TD width="315px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328079i5C498752E1408D68/image-size/medium?v=v2&px=400" role="button" title="7-2.jpg" alt="7-2.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">7.3</TD><TD width="315.292px" height="30px">Select <STRONG>Provisioning Logs</STRONG> from the <STRONG>Identity Provisioning</STRONG> menu.</TD><TD width="315px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328080i4FE62ADE19D4102B/image-size/medium?v=v2&px=400" role="button" title="7-3.jpg" alt="7-3.jpg" /></span></TD></TR><TR><TD>7.4</TD><TD><STRONG>Select</STRONG> the first job for the <STRONG>SAP A4H</STRONG> source system from the list to view the execution logs.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328081i34F02D28746F2E5D/image-size/medium?v=v2&px=400" role="button" title="7-4.jpg" alt="7-4.jpg" /></span></TD></TR><TR><TD>7.5</TD><TD><P>After the job has finished, check the <STRONG>job log statistics</STRONG>.</P><P>You can see the number of <EM>roles</EM> read from the source system SAP A4H and the same number of <STRONG>groups</STRONG> written to (created in) Entra ID.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="7-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328082iD6C6B9AB295D76DA/image-size/medium?v=v2&px=400" role="button" title="7-5.jpg" alt="7-5.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId--6770302">Create the SAP EPM Access Package</H2><P>The following steps guide you through the process of creating the SAP EPM access package that will contain the previously provisioned SAP_BC_EPM_DEMO group.</P><TABLE border="1"><TBODY><TR><TD width="46.3542px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46.3542px" height="246px">8.1</TD><TD width="350px" height="246px"><P>Go back to the <A href="https://entra.microsoft.com/#home" target="_blank" rel="noopener nofollow noreferrer">Entra admin center</A>.</P><P>Expand the <STRONG>ID Governance</STRONG> section and select <STRONG>Entitlement management</STRONG> from the navigation menu.</P><P>Select <STRONG>Access packages</STRONG> from the submenu.</P></TD><TD width="350px" height="246px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328083i88EDB06BFBF8CDB3/image-size/medium?v=v2&px=400" role="button" title="8-1.jpg" alt="8-1.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">8.2</TD><TD width="350px" height="30px">Click <STRONG>New access package</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328084iD3C98BBA1EB47555/image-size/medium?v=v2&px=400" role="button" title="8-2.jpg" alt="8-2.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">8.3</TD><TD width="350px" height="30px"><P>Enter <EM>SAP EPM</EM> for the <STRONG>name</STRONG>, and provide a <STRONG>description</STRONG>, for example <EM>Access to SAP Enterprise Procurement Model demo app</EM>.</P><P>Click <STRONG>Next: Resource roles</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328085iB30800C1BF3ABEA9/image-size/medium?v=v2&px=400" role="button" title="8-3.jpg" alt="8-3.jpg" /></span></TD></TR><TR><TD>8.4</TD><TD>Click <STRONG>Groups and Teams</STRONG>.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328086i7711BC4C90662FC6/image-size/medium?v=v2&px=400" role="button" title="8-4.jpg" alt="8-4.jpg" /></span></TD></TR><TR><TD>8.5</TD><TD><P><STRONG>Activate</STRONG> the checkbox <STRONG>See all Group and Team(s) not in the 'General' catalog</STRONG>.</P><P>Enter <EM>SAP_BC_EPM</EM> in the search field and <STRONG>activate</STRONG> the checkbox for the <EM>SAP_BC_EPM_DEMO</EM> group.</P><P>Click <STRONG>Select</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328087iD7468679AF2ED012/image-size/medium?v=v2&px=400" role="button" title="8-5.jpg" alt="8-5.jpg" /></span></TD></TR><TR><TD>8.6</TD><TD><P>From the <STRONG>Role</STRONG> drop-down box, select <STRONG>Member</STRONG>.</P><P>Click <STRONG>Next: Requests</STRONG></P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328088i8B895A00364C4CC7/image-size/medium?v=v2&px=400" role="button" title="8-6.jpg" alt="8-6.jpg" /></span></TD></TR><TR><TD>8.7</TD><TD><P>Select <STRONG>For users in your directory</STRONG> from the <STRONG>Users who can request access</STRONG> options.</P><P>Select <STRONG>All members (excluding guests)</STRONG>.</P><P>Set <STRONG>Require approval</STRONG> to <STRONG>No</STRONG>.</P><P>Click <STRONG>Next: Requestor information</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-7.jpg" style="width: 336px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328089i7A74A7E5FF328FF0/image-size/medium?v=v2&px=400" role="button" title="8-7.jpg" alt="8-7.jpg" /></span></TD></TR><TR><TD>8.8</TD><TD><P>Click <STRONG>Next: Lifecycle</STRONG>.</P><P>Choose <STRONG>Never</STRONG> from the <STRONG>Access package assignments expire</STRONG> options.</P><P>Set <STRONG>User can request specific timeline</STRONG> to <STRONG>No</STRONG>.</P><P>Click <STRONG>Next: Rules</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328090i37DC2BC1EA38C54C/image-size/medium?v=v2&px=400" role="button" title="8-8.jpg" alt="8-8.jpg" /></span></TD></TR><TR><TD>8.9</TD><TD><P>Click <STRONG>Next: Review + Create</STRONG>.</P><P>Click <STRONG>Create</STRONG>.</P></TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328091iB7281A6583E93E06/image-size/medium?v=v2&px=400" role="button" title="8-9.jpg" alt="8-9.jpg" /></span></TD></TR><TR><TD>8.10</TD><TD><STRONG>Copy</STRONG> from the newly created access package the <STRONG>link to the My Access portal</STRONG> and paste it to a temporary text file.</TD><TD><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="8-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328092i2F930C666A3F33AD/image-size/medium?v=v2&px=400" role="button" title="8-10.jpg" alt="8-10.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId-143970550">Onboard the new employee in SuccessFactors</H2><P>As the HR admin, go back to SuccessFactors and onboard the new employee Linda Larson. </P><TABLE border="1"><TBODY><TR><TD width="46.3542px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="46.3542px" height="30px">9.1</TD><TD width="350px" height="30px">In the <STRONG>search bar</STRONG>, start typing <STRONG>Add new employee</STRONG> and select the action from the search results.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="9-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328097i6B5143B6DF5230A9/image-size/medium?v=v2&px=400" role="button" title="9-1.jpg" alt="9-1.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">9.2</TD><TD width="350px" height="30px"><P>In the <STRONG>Identity</STRONG> section, leave the default <STRONG>Hire Date (today)</STRONG>, select a <STRONG>Company</STRONG> and <STRONG>Event Reason</STRONG> (for example <STRONG>New Hire</STRONG>) from the list.</P><P>Enter the following <STRONG>Name information</STRONG>:</P><UL><LI><STRONG>First Name</STRONG>: Linda</LI><LI><STRONG>Last Name</STRONG>: Larson</LI><LI><STRONG>Display Name</STRONG>: Linda Larson</LI></UL><P>In <STRONG>Employee Information</STRONG>, enter <EM>llarson</EM> for the <STRONG>Person Id</STRONG>.</P><P>Click <STRONG>Continue</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MartinRaepple_0-1760568541179.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328105iDE2201F872428532/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="MartinRaepple_0-1760568541179.jpeg" alt="MartinRaepple_0-1760568541179.jpeg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">9.3</TD><TD width="350px" height="30px">Keep the default settings in <STRONG>Personal information</STRONG> and click <STRONG>Continue</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="9-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328099i6725EC450B584143/image-size/medium?v=v2&px=400" role="button" title="9-3.jpg" alt="9-3.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">9.4</TD><TD width="350px" height="30px"><P>In Job information, select a <STRONG>Job Classification</STRONG> from the list.</P><P>Click <STRONG>Continue</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="9-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328100i5B93C0516C94A3F5/image-size/medium?v=v2&px=400" role="button" title="9-4.jpg" alt="9-4.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">9.5</TD><TD width="350px" height="30px">Click <STRONG>Submit</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="9-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328102i39875625BB9732FA/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="9-5.jpg" alt="9-5.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">9.6</TD><TD width="350px" height="30px">Click <STRONG>View Profile of Linda Larson</STRONG>.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="9-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328103i167F14F1B1F5A95F/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="9-6.jpg" alt="9-6.jpg" /></span></TD></TR><TR><TD width="46.3542px" height="30px">9.7</TD><TD width="350px" height="30px">The profile of the new onboarded employee is shown.</TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="9-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328104i78245570FFF99425/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="9-7.jpg" alt="9-7.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId--52542955">Provision the new employee to AD and Entra</H2><P>Next, you will provision the new employee to AD with the enterprise app configured for SuccessFactors in steps 1 ff. From there, an account in Entra gets created with Cloud Sync, and an alternative e-mail address is set by the administrator. This is required for the self-service password reset when the new onboarded user logs-in for the first time in the next section. We'll explore more sophisticated mechanisms for the employee onboarding process and initial login experience with <A href="https://learn.microsoft.com/en-us/entra/id-governance/what-are-lifecycle-workflows" target="_blank" rel="noopener nofollow noreferrer">Entra ID Governance lifecycle workflows</A> in one of the next parts of this blog series.</P><TABLE border="1"><TBODY><TR><TD width="49.1771px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="49.1771px" height="171px">10.1</TD><TD width="350px" height="171px"><P>Select <STRONG>Enterprise apps</STRONG> from the navigation menu.</P><P>In the search field, enter the name of your SuccessFactors app created in step 2.3.</P><P><STRONG>Select</STRONG> the app from the search results list.</P></TD><TD width="350px" height="171px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329325iFF03CC73D2740FE1/image-size/medium?v=v2&px=400" role="button" title="10-1.jpg" alt="10-1.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="402px">10.2</TD><TD width="350px" height="402px">Select <STRONG>Provisioning</STRONG> from the app's menu.</TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-2.jpg" style="width: 272px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329326i5842A751E6121ADC/image-size/medium?v=v2&px=400" role="button" title="10-2.jpg" alt="10-2.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="284px">10.3</TD><TD width="350px" height="284px"><P>Select <STRONG>Provisioning on demand</STRONG> from the menu.</P><P>Enter the new employees <STRONG>personId</STRONG> from step 9.2 in the <STRONG>Select a user</STRONG> field.</P><P>Click <STRONG>Provision</STRONG>.</P></TD><TD width="350px" height="284px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329327i351448A4BDB6043E/image-size/medium?v=v2&px=400" role="button" title="10-3.jpg" alt="10-3.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="140px">10.4</TD><TD width="350px" height="140px"><P>The new employee's user account gets created in AD and the results are shown.</P><P>Click <STRONG>Close</STRONG>.</P></TD><TD width="350px" height="140px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329328iAE55D35C536C6C07/image-size/medium?v=v2&px=400" role="button" title="10-4.jpg" alt="10-4.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="402px">10.5</TD><TD width="350px" height="402px"><P>On your DC, open the <STRONG>Active Directory Users and Computers (ADUC)</STRONG> tool. </P><P>Navigate to the path where you provision new users from SF to (as configured in step 2.6).</P><P>Search for the new user and open the <STRONG>Properties</STRONG> for it.</P></TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-5.jpg" style="width: 306px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329329i4B491D2A0B3690A2/image-size/medium?v=v2&px=400" role="button" title="10-5.jpg" alt="10-5.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="402px">10.6</TD><TD width="350px" height="402px"><P>Switch to the <STRONG>Attribute Editor</STRONG> tab.</P><P>Search for the <STRONG>distinguishedName</STRONG> attribute.</P><P>Click <STRONG>View</STRONG>.</P></TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-6.jpg" style="width: 325px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329330iCE96C3120BB2FFDF/image-size/medium?v=v2&px=400" role="button" title="10-6.jpg" alt="10-6.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="206px">10.7</TD><TD width="350px" height="206px"><STRONG>Copy</STRONG> the value of the attribute to the clipboard.</TD><TD width="350px" height="206px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329331iF675B782CF94CF62/image-size/medium?v=v2&px=400" role="button" title="10-7.jpg" alt="10-7.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="230px">10.8</TD><TD width="350px" height="230px">Go back to the Entra admin center and select <STRONG>Entra Connect</STRONG> from the top navigation menu.</TD><TD width="350px" height="230px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329332i40EA820540EDB96D/image-size/medium?v=v2&px=400" role="button" title="10-8.jpg" alt="10-8.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="231px">10.9</TD><TD width="350px" height="231px">Select <STRONG>Cloud Sync</STRONG>.</TD><TD width="350px" height="231px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329333iB6A46B7A2390CB2E/image-size/medium?v=v2&px=400" role="button" title="10-9.jpg" alt="10-9.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="125px">10.10</TD><TD width="350px" height="125px"><STRONG>Click</STRONG> on your <STRONG>AD to Microsoft Entra ID</STRONG> configuration from the list.</TD><TD width="350px" height="125px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329334i7F87EDDD836386EF/image-size/medium?v=v2&px=400" role="button" title="10-10.jpg" alt="10-10.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="245px">10.11</TD><TD width="350px" height="245px"><P>Select <STRONG>Provision on demand</STRONG> from the menu.</P><P><STRONG>Paste</STRONG> the new AD user's distinguished name attribute value from the clipboard into the <STRONG>Enter a user </STRONG>field.</P><P>Click <STRONG>Provison</STRONG>.</P></TD><TD width="350px" height="245px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329335i53D1AF01F77EBB1C/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="10-11.jpg" alt="10-11.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">10.12</TD><TD width="350px" height="30px"><P>Entra will search for the user in AD, create the new account, and display the results.</P><P>Click <STRONG>Close</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-12.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329336i1ED486213BCBE2B5/image-size/medium?v=v2&px=400" role="button" title="10-12.jpg" alt="10-12.jpg" /></span></TD></TR><TR><TD width="49.1771px">10.13</TD><TD width="350px"><P>From the top navigation menu, select <STRONG>Users</STRONG>.</P><P>Search for the new user by entering its user name.</P><P><STRONG>Select</STRONG> the new user from the list.</P></TD><TD width="350px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-13.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329427i60F18FBB9A5BACEC/image-size/medium?v=v2&px=400" role="button" title="10-13.jpg" alt="10-13.jpg" /></span></TD></TR><TR><TD width="49.1771px">10.14</TD><TD width="350px">Click <STRONG>Edit properties</STRONG>.</TD><TD width="350px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-14.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329429iAB76A1BE2698A02C/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="10-14.jpg" alt="10-14.jpg" /></span></TD></TR><TR><TD width="49.1771px">10.15</TD><TD width="350px"><P>Switch to the <STRONG>Contact Information</STRONG> tab.</P><P>Click <STRONG>Add or edit other emails</STRONG>.</P></TD><TD width="350px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-15.jpg" style="width: 330px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329430i261721AE76D879EE/image-size/medium?v=v2&px=400" role="button" title="10-15.jpg" alt="10-15.jpg" /></span></TD></TR><TR><TD width="49.1771px">10.16</TD><TD width="350px"><P>Enter an email address in the field that you have access to for testing purposes. This <EM>must not be</EM> the new users primary email address.</P><P>Click <STRONG>Save</STRONG>.</P></TD><TD width="350px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-16.jpg" style="width: 232px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329431i155E5613F5EE6C73/image-size/medium?v=v2&px=400" role="button" title="10-16.jpg" alt="10-16.jpg" /></span></TD></TR><TR><TD width="49.1771px">10.17</TD><TD width="350px">Click <STRONG>Save</STRONG>.</TD><TD width="350px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="10-17.jpg" style="width: 284px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329432i65FD0EABB5BFE861/image-size/medium?v=v2&px=400" role="button" title="10-17.jpg" alt="10-17.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId--249056460">Request the SAP EPM access package</H2><P>Before making the request for the SAP EPM access package, the new employee Linda Larson has to (re)set her password in Entra using the <A href="https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr" target="_blank" rel="noopener nofollow noreferrer">self-service password reset in Entra ID</A>. and subsequentely also for her user account in AD with the <A href="https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-cloud-sync-sspr-writeback" target="_blank" rel="noopener nofollow noreferrer">SSPR password writeback option enabled</A> as listed in the prerequisites section of this tutorial.</P><TABLE border="1" width="743px"><TBODY><TR><TD width="49.1771px" height="30px"><STRONG>Step</STRONG></TD><TD width="346.573px" height="30px"><STRONG>Description</STRONG></TD><TD width="346.583px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="49.1771px" height="263px">11.1</TD><TD width="346.573px" height="263px"><P>Open a new <STRONG>private browser</STRONG> window.</P><P>Open the <STRONG>URL to the My Access portal</STRONG> copied in step 8.10.</P><P>On the login page, enter your new employees login name or primary email address.</P><P>Click <STRONG>Next</STRONG>.</P><P>Select the <STRONG>Forgot my password</STRONG> link.</P></TD><TD width="346.583px" height="263px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329436i44B7C66CB22EF224/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="11-1.jpg" alt="11-1.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="244px">11.2</TD><TD width="346.573px" height="244px"><P>Enter the character and numbers as shown in <A href="https://en.wikipedia.org/wiki/CAPTCHA" target="_blank" rel="noopener nofollow noreferrer">CAPTCHA</A>.</P><P>Click <STRONG>Next</STRONG>.</P></TD><TD width="346.583px" height="244px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329437i2212FDE7A0F3A476/image-size/medium?v=v2&px=400" role="button" title="11-2.jpg" alt="11-2.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="159px">11.3</TD><TD width="346.573px" height="159px"><P>Select the <STRONG>I forgot my password</STRONG> option.</P><P>Click <STRONG>Next</STRONG>.</P></TD><TD width="346.583px" height="159px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329438iC851099DDCBC8132/image-size/medium?v=v2&px=400" role="button" title="11-3.jpg" alt="11-3.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="173px">11.4</TD><TD width="346.573px" height="173px">Click <STRONG>Email</STRONG> to send a verification code to your alternative email address provided in step 10.16.</TD><TD width="346.583px" height="173px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329439i1D46748491E026CC/image-size/medium?v=v2&px=400" role="button" title="11-4.jpg" alt="11-4.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="147px">11.5</TD><TD width="346.573px" height="147px"><P>Open the inbox of your alternative email address. You should have received an <STRONG>email</STRONG> with the verification code.</P><P><STRONG>Copy</STRONG> the code to the clipboard.</P></TD><TD width="346.583px" height="147px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329440i16182B39C5EFA581/image-size/medium?v=v2&px=400" role="button" title="11-5.jpg" alt="11-5.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="181px">11.6</TD><TD width="346.573px" height="181px"><P><STRONG>Paste</STRONG> the code in the entry field.</P><P>Click <STRONG>Next</STRONG>.</P></TD><TD width="346.583px" height="181px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329442i93367936E49B86A7/image-size/medium?v=v2&px=400" role="button" title="11-6.jpg" alt="11-6.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="241px">11.7</TD><TD width="346.573px" height="241px"><P>Enter your new (initial) password.</P><P>Click <STRONG>Finish</STRONG>.</P></TD><TD width="346.583px" height="241px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329443i533A39881F46EECF/image-size/medium?v=v2&px=400" role="button" title="11-7.jpg" alt="11-7.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="130px">11.8</TD><TD width="346.573px" height="130px"><P><STRONG>Wait</STRONG> for the password reset confirmation.</P><P>Select the <STRONG>click here</STRONG> link.</P></TD><TD width="346.583px" height="130px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329444iFE5D8BD055AB3B91/image-size/medium?v=v2&px=400" role="button" title="11-8.jpg" alt="11-8.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="263px">11.9</TD><TD width="346.573px" height="263px"><STRONG>Enter</STRONG> your username and click <STRONG>Next</STRONG>.</TD><TD width="346.583px" height="263px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329445iF113E306F921C07C/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="11-9.jpg" alt="11-9.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="264px">11.10</TD><TD width="346.573px" height="264px"><P><STRONG>Enter</STRONG> your new password.</P><P>Click <STRONG>Sign in</STRONG>.</P></TD><TD width="346.583px" height="264px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329446i7B2F196530836ED2/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="11-10.jpg" alt="11-10.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="293px">11.11</TD><TD width="346.573px" height="293px">Click <STRONG>Next</STRONG>.</TD><TD width="346.583px" height="293px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329447iB2C9DC2FC04182A3/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="11-11.jpg" alt="11-11.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="164px">11.12</TD><TD width="346.573px" height="164px">For testing purposes, click <STRONG>Skip setup</STRONG> for now.</TD><TD width="346.583px" height="164px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-12.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329448iCA79442028712950/image-size/medium?v=v2&px=400" role="button" title="11-12.jpg" alt="11-12.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="232px">11.13</TD><TD width="346.573px" height="232px"><P>The request for the SAP EPM access package is started.</P><P>Click <STRONG>Continue</STRONG>.</P></TD><TD width="346.583px" height="232px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-13.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329449iC08E8FC116EBF9ED/image-size/medium?v=v2&px=400" role="button" title="11-13.jpg" alt="11-13.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">11.14</TD><TD width="346.573px" height="30px"><P>Optionally provide a business justification for the new request.</P><P>Click <STRONG>Submit request</STRONG>.</P></TD><TD width="346.583px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-14.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329450i3527B4166A8A90CF/image-size/medium?v=v2&px=400" role="button" title="11-14.jpg" alt="11-14.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">11.15</TD><TD width="346.573px" height="30px"><P>In the <A href="https://entra.microsoft.com/" target="_blank" rel="noopener nofollow noreferrer">Entra admin center</A>, select <STRONG>Groups</STRONG> from the top navigation menu.</P><P>On the <STRONG>Overview</STRONG> page, enter the test group's name SAP_BC_EPM_DEMO in the <STRONG>search</STRONG> field.</P><P><STRONG>Select</STRONG> the group from the search results list.</P></TD><TD width="346.583px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-15.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329451iD5974891B82B5682/image-size/medium?v=v2&px=400" role="button" title="11-15.jpg" alt="11-15.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">11.16</TD><TD width="346.573px" height="30px"><P>Select <STRONG>Members</STRONG> from the group navigation menu.</P><P>By requesting the access package and auto-approving it, Linda Larson became now a member of this group.</P></TD><TD width="346.583px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="11-16.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329452i374EA6E212A308ED/image-size/medium?v=v2&px=400" role="button" title="11-16.jpg" alt="11-16.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId--445569965">Provision the group membership to CIS</H2><P>Let's see the updated SCIM connector with support for groups in action, and provision Linda's new user account and her membership to the SAP_BC_EPM_DEMO to your CIS tenant's local directory. Since the group hasn't been created in CIS when your ran the initial load of the PFCG roles to Entra in steps 7.1 ff, the group will be provisioned as well. </P><TABLE border="1"><TBODY><TR><TD width="49.1771px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="49.1771px" height="185px">12.1</TD><TD width="350px" height="185px"><P>Select <STRONG>Enterprise apps</STRONG> from the top navigation menu.</P><P><STRONG>Search</STRONG> for your CIS tenant's enterprise app and select if from the search results.</P></TD><TD width="350px" height="185px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329705i096B2BD17DA5DEA7/image-size/medium?v=v2&px=400" role="button" title="12-1.jpg" alt="12-1.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="300px">12.2</TD><TD width="350px" height="300px">Select <STRONG>Provisioning</STRONG> from the app's menu.</TD><TD width="350px" height="300px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329706i0B5AC7D8A17A6107/image-size/medium?v=v2&px=400" role="button" title="12-2.jpg" alt="12-2.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="240px">12.3</TD><TD width="350px" height="240px"><P>Before provisioning the group and its members to CIS, it must be assigned to the app.</P><P>Select <STRONG>Users and groups</STRONG>.</P></TD><TD width="350px" height="240px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329707iA36F2202E5DA01B1/image-size/medium?v=v2&px=400" role="button" title="12-3.jpg" alt="12-3.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="258px">12.4</TD><TD width="350px" height="258px">Click <STRONG>None Selected</STRONG>.</TD><TD width="350px" height="258px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329708i1AAA87E3D42A370C/image-size/medium?v=v2&px=400" role="button" title="12-4.jpg" alt="12-4.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="402px">12.5</TD><TD width="350px" height="402px"><P>In the <STRONG>Search</STRONG> field, enter the group's name SAP_BC_EPM_DEMO.</P><P><STRONG>Activate</STRONG> the checkbox for the group in the search results and click <STRONG>Select</STRONG>.</P></TD><TD width="350px" height="402px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-5.jpg" style="width: 287px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329709iDC8F9817AA7ECEC2/image-size/medium?v=v2&px=400" role="button" title="12-5.jpg" alt="12-5.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="348px">12.6</TD><TD width="350px" height="348px">Click <STRONG>Assign</STRONG>.</TD><TD width="350px" height="348px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-6.jpg" style="width: 393px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329710iD934BD6F17D0C06E/image-size/medium?v=v2&px=400" role="button" title="12-6.jpg" alt="12-6.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="184px">12.7</TD><TD width="350px" height="184px"><P>Select <STRONG>Provision on demand</STRONG> from the menu.</P><P>In the <STRONG>Selected group</STRONG> field, enter the group's name SAP_BC_EPM_DEMO.</P><P>Keep the default choice <STRONG>View members only</STRONG>, select the user from the members <STRONG>drop-down list</STRONG> by <STRONG>activating</STRONG> the checkbox for Linda Larson.</P><P>Click <STRONG>Provision</STRONG>.</P></TD><TD width="350px" height="184px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329711i5059B5F5638E35AA/image-size/medium?v=v2&px=400" role="button" title="12-7.jpg" alt="12-7.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">12.8</TD><TD width="350px" height="30px"><P>The results of the provisioning action are shown.</P><P>On the <STRONG>Group details</STRONG> tab, you can see that the group SAP_BC_EPM_DEMO was created in your CIS tenant.</P><P>Switch to the <STRONG>Group membership operations</STRONG> tab.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329712iBFB15DB750F12BBC/image-size/medium?v=v2&px=400" role="button" title="12-8.jpg" alt="12-8.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">12.9</TD><TD width="350px" height="30px"><P>Linda's membership was also added successfully to the new group in CIS.</P><P>Switch to the <STRONG>User operations</STRONG> tab.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329713i965DC0C49743CF34/image-size/medium?v=v2&px=400" role="button" title="12-9.jpg" alt="12-9.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">12.10</TD><TD width="350px" height="30px"><P>A new user account for Linda was also created in the CIS tenant. </P><P>Click <STRONG>View details</STRONG>.</P></TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329714iAB91CF2E9AA11F7C/image-size/medium?v=v2&px=400" role="button" title="12-10.jpg" alt="12-10.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="30px">12.11</TD><TD width="350px" height="30px">Linda's new user account in CIS has been created with the attribute values according to the mapping configuration customized in steps 3.7 to 3.13. The last line shows the new <STRONG>sapUserName</STRONG> attribute set with Linda's on-premise user name in AD. </TD><TD width="350px" height="30px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="12-11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329715i3E8001B0B038004C/image-size/medium?v=v2&px=400" role="button" title="12-11.jpg" alt="12-11.jpg" /></span></TD></TR></TBODY></TABLE><H2 id="toc-hId--642083470">Provision the role assignment to SAP</H2><P>Final step: Let's provision Linda's new user and her group membership in CIS to the SAP backend system. </P><TABLE border="1"><TBODY><TR><TD width="49.1771px" height="30px"><STRONG>Step</STRONG></TD><TD width="350px" height="30px"><STRONG>Description</STRONG></TD><TD width="350px" height="30px"><STRONG>Screenshot</STRONG></TD></TR><TR><TD width="49.1771px" height="356px">13.1</TD><TD width="350px" height="356px"><P>Go back to your CIS tenant's administration console.</P><P>Select <STRONG>Groups</STRONG> from the <STRONG>Users & Authorizations</STRONG> menu.</P><P>Select the newly created group SAP_BC_EPM_DEMO from the list and check that Linda's user has been added successfully as a member.</P><P>Next, select <STRONG>Source Systems</STRONG> from the <STRONG>Identity Provisioning</STRONG> menu.</P></TD><TD width="350px" height="356px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-1.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329773iB71C403C61DCA8F0/image-size/medium?v=v2&px=400" role="button" title="13-1.jpg" alt="13-1.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="302px">13.2</TD><TD width="350px" height="302px"><P>Select the <STRONG>LocalDirectory</STRONG> source system from the list.</P><P>Make sure that you've recreated this source system with the <A href="https://github.com/raepple/iam-with-entra/blob/0a73239a81c596811d0e704eb715045c2fdddde0/part3/LocalDirectory.json" target="_blank" rel="noopener nofollow noreferrer">new import file</A> from this tutorials GitHub repository path as mentioned in the prerequisites section.</P><P>Switch to the <STRONG>Jobs</STRONG> tab.</P><P>Click <STRONG>Run Now</STRONG>.</P></TD><TD width="350px" height="302px"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="13-2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329774iE770630D94B1C01E/image-size/medium?v=v2&px=400" role="button" title="13-2.jpg" alt="13-2.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="179px">13.3</TD><TD width="350px" height="179px"><P>Select <STRONG>Provisioning Logs</STRONG> from the <STRONG>Identity Provisioning</STRONG> menu.</P><P>Wait for the <STRONG>Status</STRONG> to <EM>Finish Successfully</EM> and then select the top log entry for your <STRONG>LocalDirectory</STRONG> source system.</P></TD><TD width="350px" height="179px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-3.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329775iAD96514EEE45C105/image-size/large?v=v2&px=999" role="button" title="13-3.jpg" alt="13-3.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="139px">13-4</TD><TD width="350px" height="139px">In the <STRONG>Statistics</STRONG> of the provisioning action you can see that a new user was created in the SAP system, and that the equally named role for the group has been updated with Linda's membership.</TD><TD width="350px" height="139px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329776i0FFB03122943C668/image-size/medium?v=v2&px=400" role="button" title="13-4.jpg" alt="13-4.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="358px">13.5</TD><TD width="350px" height="358px"><P>Check the new role assignment in the SAP system and Linda's correct SNC mapping for Kerberos-based SSO by <STRONG>logging</STRONG> into the domain-joined workstation.</P><P>To login, use the <STRONG>password</STRONG> that you've (re)set in step 11.7 and that has been written back to AD.</P></TD><TD width="350px" height="358px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-5.jpg" style="width: 382px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329777iDDBBEFE38C7E7B6E/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="13-5.jpg" alt="13-5.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="227px">13.6</TD><TD width="350px" height="227px"><P>Start SAP GUI.</P><P>You may need to add the connection to the SAP backend as described in step 10.29 and 10.30 in <A href="https://community.sap.com/t5/technology-blog-posts-by-members/identity-and-access-management-with-microsoft-entra-part-ii-provisioning-to/ba-p/13990927" target="_blank">part II</A>.</P><P><STRONG>Right-click</STRONG> on the connection and select <STRONG>SNC Login with Single Sign-On</STRONG>. </P></TD><TD width="350px" height="227px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329778iF55C4EA712D44840/image-size/medium?v=v2&px=400" role="button" title="13-6.jpg" alt="13-6.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="196px">13.7</TD><TD width="350px" height="196px"><P>Because this is the first login for the new user you are prompted to either reset the initial password, or deactivate it.</P><P>Click on<SPAN> </SPAN><STRONG>Delete</STRONG><SPAN> </SPAN>to use SNC and Kerberos-based SSO. </P></TD><TD width="350px" height="196px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329779iC55520BE054A544A/image-size/medium?v=v2&px=400" role="button" title="13-7.jpg" alt="13-7.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="248px">13.8</TD><TD width="350px" height="248px"><SPAN>You are single signed-on to the SAP system using SNC and Kerberos SSO, and Linda's user menu shows the entries for the <STRONG>EPM Demo Applications</STRONG> as a result of the successful assignment to the SAP_BC_EPM_DEMO role.</SPAN></TD><TD width="350px" height="248px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329780iB0D42DB422D73CBA/image-size/medium?v=v2&px=400" role="button" title="13-8.jpg" alt="13-8.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="172px">13.9</TD><TD width="350px" height="172px"><P>As an administrator in the SAP system, start transaction <STRONG>PFCG</STRONG>.</P><P>In the <STRONG>Role</STRONG> field, enter SAP_BC_EPM_DEMO.</P><P>Click <STRONG>Display</STRONG>.</P></TD><TD width="350px" height="172px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329781iBD7D9D704465F547/image-size/medium?v=v2&px=400" role="button" title="13-9.jpg" alt="13-9.jpg" /></span></TD></TR><TR><TD width="49.1771px" height="218px">13.10</TD><TD width="350px" height="218px"><P>Swith to the <STRONG>User</STRONG> tab.</P><P>You can see Linda's SAP user account LLARSON assinged to the role.</P></TD><TD width="350px" height="218px"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="13-10.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/329782iA2789539EF6C50FF/image-size/medium?v=v2&px=400" role="button" title="13-10.jpg" alt="13-10.jpg" /></span></TD></TR></TBODY></TABLE><P><STRONG>Done</STRONG>! Once again, thank you for following this tutorial and the blog series, and looking forward to your comments & feedback.</P>2025-10-20T10:05:47.788000+02:00https://community.sap.com/t5/technology-blog-posts-by-sap/accessing-on-premises-http-apis-with-sap-joule-studio-and-sap-cloud/ba-p/14246127Accessing On-Premises HTTP APIs with SAP Joule Studio and SAP Cloud Connector2025-10-28T08:19:03.590000+01:00felixbartlerhttps://community.sap.com/t5/user/viewprofilepage/user-id/4997<P><STRONG>SAP Joule Studio</STRONG> enables you to design and build intelligent AI agents and skills that automate and optimize your business processes. To ensure these agents can operate effectively, it is essential to allow them to read from and write data to third-party systems using APIs. In a typical SAP landscape, some of these systems may reside on-premises. To securely access such on-premises systems, the <STRONG>SAP Cloud Connector</STRONG> is the recommended approach. This blog post will guide you through the process of setting up and connecting a <STRONG>Joule skill or agent project</STRONG> in <STRONG>SAP Joule Studio</STRONG> to integrate securely through the Cloud Connector.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_0-1760648362581.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328663iA44394740F60AEDA/image-size/large?v=v2&px=999" role="button" title="felixbartler_0-1760648362581.png" alt="felixbartler_0-1760648362581.png" /></span></P><P>The scenario is as follows: We have <STRONG>SAP Joule Studio</STRONG> running on the <STRONG>SAP Business Technology Platform (BTP)</STRONG>, while the On-Premises systems exposes its endpoints. To establish a secure connection, we will configure the <STRONG>Cloud Connector</STRONG>, create a <STRONG>destination</STRONG>, set up a SAP Build Actions Project and use that Action in a <STRONG>Joule skill.</STRONG></P><P>Let's dive into the steps required to set up this integration and leverage the power of <STRONG>SAP Joule Studio</STRONG> in conjunction with the <STRONG>SAP Cloud Connector</STRONG>.</P><H2 id="toc-hId-765686752" id="toc-hId-1762858309">Prerequisite</H2><P><BR /><SPAN>Before proceeding with the steps outlined in this guide, it is essential to have an instance of the SAP Cloud Connector installed. While it is possible to install the Cloud Connector on a server, for the purposes of this demonstration, we will be using a Windows machine. We recommend following the instructions provided in this blog (</SPAN><A href="https://blogs.sap.com/2021/09/05/installation-and-configuration-of-sap-cloud-connector/" target="_new" rel="noopener noreferrer">https://blogs.sap.com/2021/09/05/installation-and-configuration-of-sap-cloud-connector/</A><SPAN>) to install and configure the Cloud Connector until the Subaccount is connected.</SPAN><BR /><BR /><SPAN>Second requirement is a BTP subaccount with a SAP Build Process Automation (Joule Studio) instance. To this subaccount we will connect the Cloud Connector.</SPAN></P><H2 id="toc-hId-569173247" id="toc-hId-1566344804">1. Cloud Connector Configuration</H2><P><BR /><SPAN>The first step is to create a configuration in the Cloud Connector that connects to our subaccount and exposes the HTTP resource. For the purpose of this demonstration, I ran a small Node.js server on my Windows machine that outputs “Hello World”.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_0-1760619519814.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328391i75A42C894DFECDF2/image-size/large?v=v2&px=999" role="button" title="felixbartler_0-1760619519814.png" alt="felixbartler_0-1760619519814.png" /></span></P><P><SPAN>To create the configuration, navigate to the admin interface of the Cloud Connector. In here you need to select your registered Subaccount where your SAP Build Process Automation instance resides. Then create a “Cloud to On-Premise” configuration.</SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_2-1760619720960.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328393i3A70C8D7D394CD2D/image-size/large?v=v2&px=999" role="button" title="felixbartler_2-1760619720960.png" alt="felixbartler_2-1760619720960.png" /></span></P><P><SPAN>In the provided screenshot, you will notice that I have exposed the internal host "localhost" with port 3333 using a virtual host named "virtualhost". This virtual host will be used for making requests from the BTP side. Currently, I have configured an unrestricted access policy, allowing access to all paths. However, in production scenarios, it is recommended to define access policies with more granular control.</SPAN><BR /><BR /><SPAN>Please note that it is crucial to ensure that you have </SPAN><STRONG>exposed the necessary resources</STRONG><SPAN> in your configuration. This ensures that the required endpoints are accessible and allows for successful communication between the cloud and on-premises environments.</SPAN></P><P>In this example, the system type is a <STRONG>Non-SAP System</STRONG> using the <STRONG>HTTP</STRONG> protocol. To confirm that the connection works, you can use the <STRONG>“Check availability of internal host”</STRONG> button. This step is essential, as it verifies the accuracy of your configuration and ensures successful connectivity between the cloud and your on-premises environment.</P><P><STRONG>Note:</STRONG> It’s important to understand the difference between the <EM>internal</EM> and <EM>virtual</EM> host. The <STRONG>internal host</STRONG> refers to the hostname accessible within your on-premises network — in this case, it’s the localhost on my laptop. Later, within <STRONG>SAP BTP</STRONG>, we’ll reference the <STRONG>virtual host</STRONG> instead.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_4-1760620059643.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328396i3DEDC767B7B9CC23/image-size/large?v=v2&px=999" role="button" title="felixbartler_4-1760620059643.png" alt="felixbartler_4-1760620059643.png" /></span></P><P><SPAN>On the BTP Cockpit end, we can check the connected Cloud Connectors in the respective menu tab. If you cannot see this tab, you may be missing some roles. In the image, you see my registered Cloud Connector and the backend system with its virtualhost available.</SPAN></P><H2 id="toc-hId-372659742" id="toc-hId-1369831299">2. Create Destination</H2><P><SPAN><BR />After successfully registering the Cloud Connector, the next step is to create a destination. A destination serves as a means for services to access an API by handling the authentication and networking aspects.<BR /><BR />By configuring a destination, you can simplify the process of accessing APIs by abstracting the underlying technical details. The destination takes care of handling authentication, network communication, and other necessary configurations, allowing services to focus on consuming the API and performing business logic without worrying about the underlying implementation.<BR /><BR />Creating a destination provides a convenient way to encapsulate the necessary information, such as the API endpoint URL, authentication credentials, and other relevant settings. This abstraction helps streamline the integration process and facilitates secure and reliable communication between your services and the targeted API.</SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_5-1760620335449.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328400i38C89787295CAEF0/image-size/large?v=v2&px=999" role="button" title="felixbartler_5-1760620335449.png" alt="felixbartler_5-1760620335449.png" /></span></P><P><SPAN>When creating the destination, there are several important details to specify. These include the name of the destination, the URL you want to access, and the type of destination. In this case, we will specify the URL as the virtual host "</SPAN><A href="http://internalhost:3333/" target="_blank" rel="nofollow noopener noreferrer">http://virtualhost:3333</A><SPAN>". To utilize the Cloud Connector, we set the <STRONG>Proxy Type to On-Premise</STRONG>.</SPAN></P><P><SPAN>Optionally one can also maintain the Authentication detail - my service does not require these.</SPAN></P><P><SPAN>Once the destination configuration is complete, it is crucial to use the<STRONG> "Check Connection"</STRONG> button to verify that everything is configured correctly and the connection can be established successfully. This step ensures that the destination is functioning as expected and is ready to be utilized in your automation processes. </SPAN></P><P><STRONG>Note:</STRONG> Did you know? The <STRONG>Destination Service’s “Check Connection”</STRONG> behaves slightly differently when the destination is configured with the <STRONG>proxy type “OnPremise.”</STRONG></P><P>For public APIs on the internet, the connection check typically validates both the authentication credentials and the specific path — in other words, it performs a real <STRONG>GET request</STRONG> on that endpoint.</P><P>In contrast, for <STRONG>on-premise HTTP destinations</STRONG>, the check is much simpler. It only performs an HTTP “ping” on the host to verify that <EM>some</EM> response is received. Even if the target system returns a <STRONG>5xx error</STRONG>, the check will still show as successful as long as the <STRONG>Cloud Connector tunnel</STRONG> is reachable and the HTTP server responds.</P><P>Be aware that this behavior can have <STRONG>downstream effects</STRONG> when troubleshooting connectivity issues.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_1-1760648392234.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328664iFF2F5B8B7DFC5ACF/image-size/large?v=v2&px=999" role="button" title="felixbartler_1-1760648392234.png" alt="felixbartler_1-1760648392234.png" /></span></P><P> </P><P><SPAN>In the ideal case you get the green checkmark! But there are some common errors we need to discuss:</SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_2-1760649224321.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328665i0F0A628A26914AAB/image-size/large?v=v2&px=999" role="button" title="felixbartler_2-1760649224321.png" alt="felixbartler_2-1760649224321.png" /></span></P><P> </P><P><SPAN>The "Backend not available" error occurs when the connectivity service is unable to locate the host you are trying to access. This could be due to the host not being exposed in the Cloud Connector configuration or a potential misspelling in the URL. To resolve this issue, it is important to revisit the URL and ensure that you are using the correct virtual host specified in the Cloud Connector configuration. Verify that the URL is accurate and matches the virtual host configuration to establish the necessary connectivity.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_3-1760649242123.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328666i4C2290F7040E410C/image-size/large?v=v2&px=999" role="button" title="felixbartler_3-1760649242123.png" alt="felixbartler_3-1760649242123.png" /></span></P><P> </P><P><SPAN>The second common issue that may arise is the "Resource not accessible" error. This occurs when the connectivity service successfully locates the backend you intend to connect to, but the specific resource (such as the subpath "/hello") either does not exist or is not allowed to be accessed based on the rules defined in the configuration. To resolve this, ensure that you have included the correct path in the Cloud Connector's resource configuration.</SPAN></P><P><SPAN>For the usage in SAP Build - there is one additional step to make the Destination available to be used inside the Build tool. We need to <STRONG>register the Destination in the Control Tower of SAP Build</STRONG>:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_6-1760620477785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328401iA48DE5A7D02C0269/image-size/large?v=v2&px=999" role="button" title="felixbartler_6-1760620477785.png" alt="felixbartler_6-1760620477785.png" /></span></P><P>We can do so by navigating to <STRONG>SAP Build Control Tower > Destinations</STRONG> and then choose <STRONG>Add</STRONG> to add the Destination to our environments.</P><H2 id="toc-hId-176146237" id="toc-hId-1173317794">3. Create Actions Project</H2><P><SPAN>Now, let's dive into SAP Build Process Automation and create an Actions project. In this case, since my API is not a standard one, I will create a custom API Specification. However, if you are working with a target system like S/4HANA, you can leverage the pre-defined API Specifications available in the SAP Business Accelerator Hub.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_4-1760649542808.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328667i64B2A99D72D5E95A/image-size/large?v=v2&px=999" role="button" title="felixbartler_4-1760649542808.png" alt="felixbartler_4-1760649542808.png" /></span></P><P>Let's give the Project a name of our choice and choose the option to "Upload API Specification".</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_5-1760649915113.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328671iAB18995BAA338E3B/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="felixbartler_5-1760649915113.png" alt="felixbartler_5-1760649915113.png" /></span></P><P>SAP Build Actions allow us to upload OpenAPI Specifications in JSON format.</P><P> </P><pre class="lia-code-sample language-json"><code>{
"openapi": "3.0.0",
"info": {
"description": "Demonstration Hello World",
"title": "helloworld",
"version": "1.0.0"
},
"servers": [
{
"url": "empty"
}
],
"paths": {
"/hello": {
"get": {
"summary": "get hello",
"description": "get a hello world message",
"operationId": "get.hello",
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"title": "Message Object",
"properties": {
"message": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
}</code></pre><P><SPAN>The provided code snippet represents the API Specification, where I define the necessary details. In this case, the servers section is left empty as the URL will be retrieved from the destination configuration at a later stage. Additionally, I specify the available path as "/hello".</SPAN></P><P><SPAN>It's important to note that the path mentioned in the API specification will be <STRONG>preceded</STRONG> by the destination's URL. Therefore, in our scenario, the complete URL for the request will be "<A href="http://internalhost:3333/hello" target="_blank" rel="nofollow noopener noreferrer">http://virtualhost:3333/hello</A>".<BR /><BR />Another crucial aspect for the functionality within the low-code environment is defining the expected response structure. In this case, the response payload will consist of a plain object with the key "message". To build and test specifications, you can utilize the website <A href="https://editor.swagger.io/" target="_new" rel="noopener nofollow noreferrer">https://editor.swagger.io/</A>. <STRONG>Be aware</STRONG>, that the response structure must match the specification; if, for example, fields are missing, you will be prompted with a schema error.<BR /><BR />Once you have finalized the specification, save the file as a .json format and proceed to upload it to the Actions project.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_6-1760649929583.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328672iE89E2EADCEB0C45B/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="felixbartler_6-1760649929583.png" alt="felixbartler_6-1760649929583.png" /></span></P><P><SPAN>Within the Actions Project, you will be prompted to add the desired actions, which you can proceed to do. Now, let's move on to testing:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_7-1760649980345.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328674i8C6402C403F791F8/image-size/large?v=v2&px=999" role="button" title="felixbartler_7-1760649980345.png" alt="felixbartler_7-1760649980345.png" /></span></P><P><SPAN>Within the selected Action, navigate to the<STRONG> "Test" tab</STRONG>. Here, you have the option to select the destination that serves as the basis for the request. For this demonstration, I will choose the "sap-sample-api-via-cloud-connector" destination that I created earlier. Once the test is executed, you will find the response payload displayed at the bottom. In this particular case, the test is successful, and I receive the expected message from my On-Premises server.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_8-1760650011042.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328675i812CF309EA7D8977/image-size/large?v=v2&px=999" role="button" title="felixbartler_8-1760650011042.png" alt="felixbartler_8-1760650011042.png" /></span></P><P><SPAN>If you encounter an error during the process, make sure to check the "View API" Section for any response body that might provide insights into the cause of the issue.<BR /><BR />In the final step, we need to release and publish the Action to ensure its availability for consumption in an Project. To accomplish this, locate the buttons located at the top right-hand side of the Actions editor. Click on these buttons and ensure that the status indicates "released" and then "published."</SPAN></P><H2 id="toc-hId--20367268" id="toc-hId-976804289">4. Add Action to Joule Skill</H2><P><SPAN>Lets create a Project and include the Action in a Joule Skill. Do so by adding a step in the Skill with the + symbol.</SPAN></P><P><SPAN>First we need to add the Action Project in our dependencies:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_4-1760651276548.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328689i9D341C98DA182D9C/image-size/large?v=v2&px=999" role="button" title="felixbartler_4-1760651276548.png" alt="felixbartler_4-1760651276548.png" /></span></P><P><SPAN>We add a Action to the Skill, configure its Destination field by creating a new Destination Variable we give an arbitrary name. </SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_0-1760650682079.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328685i56087164E47665B0/image-size/large?v=v2&px=999" role="button" title="felixbartler_0-1760650682079.png" alt="felixbartler_0-1760650682079.png" /></span></P><P>We can see that the Action has the message variable in its output.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_1-1760650704787.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328686i4191D6969EE3DB44/image-size/large?v=v2&px=999" role="button" title="felixbartler_1-1760650704787.png" alt="felixbartler_1-1760650704787.png" /></span></P><P><SPAN>To prove that we can now also use the data from the API, I added an additional step to Send a Message with the API's result "message" variable in its content.</SPAN></P><P>With the message editor - we can send a custom message to the user. In this case I keep it simple and just output the response from the message field of the API response.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_2-1760650713011.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328687iDD0E7B9325FCECFD/image-size/large?v=v2&px=999" role="button" title="felixbartler_2-1760650713011.png" alt="felixbartler_2-1760650713011.png" /></span></P><P> </P><P><SPAN>After going through the standard deployment process in SAP Build Joule Studio - we can test our newly deployed skill directly in Joule.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="felixbartler_3-1760650726650.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/328688iC65E3F0E37ED330E/image-size/large?v=v2&px=999" role="button" title="felixbartler_3-1760650726650.png" alt="felixbartler_3-1760650726650.png" /></span></P><P>And in this case <SPAN>we are successful and can retrieve the actual answer from the On-Premises HTTP System.</SPAN></P><P><SPAN>In the following posts we aim to provide further guidance on how to connect to a SAP On-Premises System - as this is the most common scenario for the extension of Joule. Take this blog post as the basis for understanding the concept and flow.</SPAN></P><P><SPAN>Hope you find this blog insightful, if you have any questions feel free to leave a comment.</SPAN></P>2025-10-28T08:19:03.590000+01:00https://community.sap.com/t5/supply-chain-management-blog-posts-by-sap/ibp-file-based-integration-with-sftp-server-via-integration-suite-cloud/ba-p/14264099IBP file-based integration with SFTP server via Integration Suite - Cloud Integration (part 1)2025-11-10T10:33:26.034000+01:00SofianePebrehttps://community.sap.com/t5/user/viewprofilepage/user-id/1476236<P>Hello Community</P><P>The following blog entry will detail how to</P><UL><LI>Configure Integration Suite to use a Secure File Transfer Protocol (SFTP) server in CI’s SFTP adapter,</LI><LI>Build an integration flow extracting data from IBP, transforming it within CI and storing it into a file on a server.</LI></UL><P>Unlike when using CI-DS and especially its on-premise agent for file-based integration, the Cloud Connect cannot store data. Hence the SFTP server is the way to go for an IBP to file (and file to IBP) integration.</P><P><STRONG> </STRONG></P><P><STRONG>Prerequisites</STRONG></P><UL><LI>An SFTP server was created and made available,</LI><LI>The <A href="https://community.sap.com/t5/supply-chain-management-blog-posts-by-sap/sap-ibp-new-integration-option-introducing-sap-cloud-integration-from-btp-s/ba-p/14169516" target="_blank">BTP/IBP Technical setup</A> was executed,</LI><LI>As well as the <A href="https://community.sap.com/t5/supply-chain-management-blog-posts-by-sap/configuring-sap-cloud-integration-for-an-ibp-to-s-4hana-on-prem-private/ba-p/14194922" target="_blank">Integration Suite Initial Configuration</A> to start building your integration flows.</LI></UL><P> </P><P><STRONG>Configure the usage of an SFTP server via CI’s SFTP adapter</STRONG></P><P>There are multiple steps that needs to be done in order to use an SFTP server for file-based integration using CI.</P><P>Required steps at a glance:</P><UL><LI>Get an SFTP server</LI><UL><LI>Gather your Host, Port, User and Password</LI></UL><LI>Configure the SAP Cloud Connector (SCC)</LI><UL><LI>To reach the SFTP server you will most likely need to use SAP Cloud Connector if the server is located on your internal network and not exposed to the internet.</LI></UL></UL><P>On Cloud Connector you have to create a new Cloud to On-Premise connection. When creating a new connection, you need to provide the host and port data. Optionally, you can specify a virtual host to use in CI - it is advised to use this option to keep a short, easy to use host name. E.g. settings:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_0-1762766206751.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337851iF2CCDC07C74CA6F9/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_0-1762766206751.png" alt="SofianePebre_0-1762766206751.png" /></span></P><P>Once the SCC is configured, the SFTP server must be reachable, which can be checked using the <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_1-1762766206752.png" style="width: 24px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337849i4511A046FEEA3034/image-dimensions/24x25/is-moderation-mode/true?v=v2" width="24" height="25" role="button" title="SofianePebre_1-1762766206752.png" alt="SofianePebre_1-1762766206752.png" /></span>button.</P><P>If the check is successful, you can continue with the CI side settings. To do so, you first need to get the hostkey data. Navigate to <STRONG>Monitor -» Integrations and APIs -» Manage Security -» Connectivity tests</STRONG>.</P><P>On the connectivity test screen select SSH and provide the required information:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_2-1762766206767.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337850i58B70866F105BD07/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_2-1762766206767.png" alt="SofianePebre_2-1762766206767.png" /></span></P><UL><LI>Host = Virtual Host configured on SCC</LI><LI>Port = Virtual Port configured on SCC</LI><LI>Proxy-Type = On-Premise</LI><LI>Location ID = location ID of the SCC</LI></UL><P>As there are no credentials yet, select no authentication and Send the request. If successful, the hostkey information will be shown on the same screen:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_3-1762766206776.png" style="width: 613px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337853i19BFE8AC3255B542/image-dimensions/613x195?v=v2" width="613" height="195" role="button" title="SofianePebre_3-1762766206776.png" alt="SofianePebre_3-1762766206776.png" /></span></P><P>Use the Copy Host Key button to copy the data to your clipboard, and create a new text file by pasting it in. Name the file as knownhost for practical reasons.</P><P>The next step is to provide the security material, navigate to <STRONG>Monitor -» Integrations and APIs -» Manage Security -» Security Material.</STRONG></P><P>In this step we have to trust the host key just copied, and we have to provide the authentication data.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_4-1762766206783.png" style="width: 637px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337854iDB86861D7DECB425/image-dimensions/637x121?v=v2" width="637" height="121" role="button" title="SofianePebre_4-1762766206783.png" alt="SofianePebre_4-1762766206783.png" /></span></P><P>First, choose <STRONG>Upload -» Known Hosts</STRONG>, and upload the file that have just been created with the host key information.</P><P>Next, create new user credentials:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_5-1762766206788.png" style="width: 329px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337852iD09D37CEB9A96137/image-dimensions/329x192?v=v2" width="329" height="192" role="button" title="SofianePebre_5-1762766206788.png" alt="SofianePebre_5-1762766206788.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_6-1762766206792.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337855i415AD7C8D3877B2E/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_6-1762766206792.png" alt="SofianePebre_6-1762766206792.png" /></span></P><P>After completing these steps, the SFTP server can be used in SFTP adapters.</P><P> </P><P> </P><P><STRONG>Configuring the iFlow for an IBP to SFTP server integration </STRONG></P><P>The idea of this flow will be to read Product master data from IBP, transform the data by populating an IBP attribute based on the values of multiple input attributes and save this in a file stored on your SFTP server.</P><P>You can start by creating your iflow from scratch (<STRONG>1</STRONG>) within your own working package or by copying/uploading from the “IBP Read – Example” iflow delivered by SAP from you “SAP IBP – Reusable Integration Flows Example” package (<STRONG>2</STRONG>).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_7-1762766206800.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337857i8E00CFBB091439CF/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_7-1762766206800.png" alt="SofianePebre_7-1762766206800.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_8-1762766206807.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337856iAE945DD3CE5519AC/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_8-1762766206807.png" alt="SofianePebre_8-1762766206807.png" /></span></P><P>Other option is to copy the reusable iflow delivered by SAP for IBP Read (limitation: you will not be able to change its ID) or download it and upload it in your own package.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_9-1762766206820.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337859i65E4CA5AE6611EFC/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_9-1762766206820.png" alt="SofianePebre_9-1762766206820.png" /></span></P><P> </P><P> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_10-1762766206827.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337858i2AACF30720EE60B4/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_10-1762766206827.png" alt="SofianePebre_10-1762766206827.png" /></span></P><P>------------------------------------------------------------------------------------</P><P>These are the steps that you need to keep in your iflow to extract data from IBP and write it in a csv file format that will be stored on your SFTP server:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_11-1762766206836.png" style="width: 814px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337860iF82AED028065B193/image-dimensions/814x350?v=v2" width="814" height="350" role="button" title="SofianePebre_11-1762766206836.png" alt="SofianePebre_11-1762766206836.png" /></span></P><P> </P><UL><LI>Content Modifier function to set your iflow’s IBP data extraction related parameters,</LI><LI>External Call of type Request Reply to call the IBP destination by invoking SAP reusable iflow “SAP_IBP_Read_-_Initialize” via ProcessDirect,</LI><LI>Content Modifier function to fetch the initialization call to IBP output for the iflow log,</LI><LI>External Call of type Request Reply to extract the data from the IBP destination by invoking SAP reusable iflow “SAP_IBP_Read_-_Fetch_Data<U>”</U> via ProcessDirect,</LI><LI>Message Mapping function to detail how field mappings and data transformations should happen based on IBP xml format output,</LI><LI>Converter function of type XML to CSV Converter in order to save your output file in a csv format with separators as IBP output will be in XML,</LI><LI>External Call of type Send to push extracted and transformed data into a file on the identified SFTP server via the ad hoc SFTP receiving adapter,</LI><LI>Content Modifier function to set your iflow’s IBP closing parameters,</LI><LI>External Call of type Request Reply to close the IBP destination connection by invoking SAP reusable iflow “SAP_IBP_Read_-_Close” via ProcessDirect.</LI></UL><P>This example will focus on extracting and storing Product master data type data from IBP.</P><P> </P><P><U>Content Modifier to pass IBP parameters</U></P><P>Set all relevant parameters needed to connect to IBP and extract the right data in the message Body section (check my <A href="https://community.sap.com/t5/supply-chain-management-blog-posts-by-sap/creating-your-first-iflow-in-cloud-integration-for-an-ibp-s-4hana-on-prem/ba-p/14205240" target="_blank">previous blog entry with the list of mandatory parameters</A>).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_12-1762766206844.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337861iCAAC8BC51CA2CAEA/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_12-1762766206844.png" alt="SofianePebre_12-1762766206844.png" /></span></P><P> </P><P><U>Process Direct to SAP_IBP_Read_-_Initialize</U></P><P>This step initializes the call to the IBP system.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_13-1762766206849.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337862i7C602960A663E56D/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_13-1762766206849.png" alt="SofianePebre_13-1762766206849.png" /></span></P><P> </P><P><U>Content Modifier Save Initialize Parameter</U></P><P>This step saves initialization parameters for IBP in order to feed them for the closing step.</P><P>See details in “IBP Read – Example” iflow delivered by SAP from you “SAP IBP – Reusable Integration Flows Example” package.</P><P> </P><P><U>Process Direct to SAP_IBP_Read_-_Fetch_Data</U></P><P>This step extracts the required data from the IBP system.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_14-1762766206851.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337863i5E6DD233303C7B89/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_14-1762766206851.png" alt="SofianePebre_14-1762766206851.png" /></span></P><P> </P><P><U>Message Mapping function</U></P><P>Once you’ve added this function to your flow, you need to click on it and select Create. Then, set a name for the mapping step.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_15-1762766206854.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337867iBB7EC4FA558D93D2/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_15-1762766206854.png" alt="SofianePebre_15-1762766206854.png" /></span></P><P>Next, you need to specify your data structure for the source and target message.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_16-1762766206858.png" style="width: 749px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337864iFE06F99A871F67B4/image-dimensions/749x176?v=v2" width="749" height="176" role="button" title="SofianePebre_16-1762766206858.png" alt="SofianePebre_16-1762766206858.png" /></span></P><P>You need to specify the XSD schema here for you output IBP XML data. There are multiple ways to build this including by running an example IBP data read iflow and fetching the payloads from logs. In this example the data read is the Product master data and it should look like this:</P><P><FONT color="#0000FF"><EM><?xml version="1.0" encoding="UTF-8"?></EM></FONT></P><P><FONT color="#0000FF"><EM><xsd:schema xmlns:xsd="<A href="http://www.w3.org/2001/XMLSchema" target="_blank" rel="nofollow noopener noreferrer">http://www.w3.org/2001/XMLSchema</A>"</EM></FONT></P><P><FONT color="#0000FF"><EM> elementFormDefault="qualified"></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="IBPReadMasterDataPRODUCT"></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:complexType></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:sequence></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="item" maxOccurs="unbounded" minOccurs="0"></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:complexType></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:sequence></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="PRDID" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="ABCID" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="PRDDESCR" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="MATTYPEID" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="UOMID" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="PRDFAMILY" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> <xsd:element name="PRDSERIES" type="xsd:string"/></EM></FONT></P><P><FONT color="#0000FF"><EM> </xsd:sequence></EM></FONT></P><P><FONT color="#0000FF"><EM> </xsd:complexType></EM></FONT></P><P><FONT color="#0000FF"><EM> </xsd:element></EM></FONT></P><P><FONT color="#0000FF"><EM> </xsd:sequence></EM></FONT></P><P><FONT color="#0000FF"><EM> </xsd:complexType></EM></FONT></P><P><FONT color="#0000FF"><EM> </xsd:element></EM></FONT></P><P><FONT color="#0000FF"><EM></xsd:schema></EM></FONT></P><P> </P><P><FONT color="#993366"><U><STRONG>Note that the XSD schema can be easily built using LLM.</STRONG></U></FONT></P><P>You can save this and adjust the elements to your needs, as a .xsd file. The source and target don’t necessarily have to be the same, in my example I have more attributes in the output (file as target) rather than input (IBP extracted data) because I will use transformation logics to fill out the extra attributes.</P><P>Message Mapping is a graphical tool that lets you create mappings without any coding. Unlike the other mapping options, it is natively integrated into the CI interface. You can build a message mapping by simply dragging and dropping connections between source and target fields, and optionally adding functions between them to transform the data.</P><P>Note : You MUST link not only the individual attributes but also the structure headers like in our case “IBPReadMasterDataPRODUCT” and “item”.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_17-1762766206864.png" style="width: 732px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337865i583995C58506D575/image-dimensions/732x200?v=v2" width="732" height="200" role="button" title="SofianePebre_17-1762766206864.png" alt="SofianePebre_17-1762766206864.png" /></span></P><P>Next for any data transformation or more complex mappings, you can leverage the standard CI functions.</P><P>In this example, I wanted to set a Product Family value as file output only based on the values of two input attribute values for ABC ID and Material Type ID.</P><P>If Material Type ID = FERT and ABC ID = A, then Product Family = Valuable. Else Product Family = Standard.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_18-1762766206880.png" style="width: 753px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337870i583B000ABB9A4110/image-dimensions/753x354?v=v2" width="753" height="354" role="button" title="SofianePebre_18-1762766206880.png" alt="SofianePebre_18-1762766206880.png" /></span></P><P> </P><P>Another example set here is to use another extra target attribute to set a counter for the output file.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_19-1762766206884.png" style="width: 743px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337868i8F4FF038CDEBB89C/image-dimensions/743x234?v=v2" width="743" height="234" role="button" title="SofianePebre_19-1762766206884.png" alt="SofianePebre_19-1762766206884.png" /></span></P><P>Once you are satisfied with your mapping configuration, you can simulate its execution without having to run the entire iflow.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_20-1762766206890.png" style="width: 739px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337869i6A9C230A49961330/image-dimensions/739x176?v=v2" width="739" height="176" role="button" title="SofianePebre_20-1762766206890.png" alt="SofianePebre_20-1762766206890.png" /></span></P><P> </P><P>For this you’ll need an input file with testing data, in XML format which you can build from scratch, LLM or fetch from the iflow payloads (only available if you activate the trace for the logs).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_21-1762766206909.png" style="width: 719px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337873i297D5AF026B8F693/image-dimensions/719x355?v=v2" width="719" height="355" role="button" title="SofianePebre_21-1762766206909.png" alt="SofianePebre_21-1762766206909.png" /></span></P><P>If your simulation runs smoothly, you can proceed with the rest of your iflow steps.</P><P> </P><P><U>Converter function of type XML to CSV</U></P><P>If your goal is to store the data in a csv file, you need to convert the extracted IBP data (XML format) using this ad hoc function.</P><P>In the processing tab of the function’s properties, identify the XML element that must be read to fill the file’s fields, the one that holds the IBP attribute values in other words, in this case : “/IBPReadMasterDataPRODUCT/item”. This was already visible in your XSD structure and XML testing file previously in the mapping step.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_22-1762766206917.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337872iED97C7F91192F4BD/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_22-1762766206917.png" alt="SofianePebre_22-1762766206917.png" /></span></P><P> </P><P><U>Send to server via SFTP adapter</U></P><P>This step will connect to the SFTP server via the previously configured information. At this stage, provide the following information in the Target tab</P><UL><LI>Directory = SFTP server folder name</LI><LI>File Name = the file name with extension (.csv) to be created, you can also use the append timestamp to add automatically a suffix with date/time</LI><LI>Address = Virtual Host : Port, as configured on SCC</LI><LI>Proxy-Type = On-Premise</LI><LI>Location ID = location ID of the SCC</LI><LI>Credential Name = Name from the user credentials created earlier in CI.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_26-1762766774711.png" style="width: 285px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337878i6391334D21AF6D7A/image-dimensions/285x244?v=v2" width="285" height="244" role="button" title="SofianePebre_26-1762766774711.png" alt="SofianePebre_26-1762766774711.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_24-1762766206926.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337874i7E97679DA7CC2301/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_24-1762766206926.png" alt="SofianePebre_24-1762766206926.png" /></span></P><P> </P><P><U>Content Modifier Set Close Parameters</U></P><P>This step leverages the previously saved initialization parameters for IBP for the closing step.</P><P>See details in “IBP Read – Example” iflow delivered by SAP from you “SAP IBP – Reusable Integration Flows Example” package.</P><P> </P><P><U>Process Direct to SAP_IBP_Read_-_Close</U></P><P>This step closes the IBP connection.</P><P>------------------------------------------------------------------------------------</P><P><STRONG><FONT color="#993366">Once this is full iflow is configured, you can deploy it and follow the execution in the Monitor section.</FONT></STRONG></P><P>With a successful execution, you should be able to find your output file in the SFTP directory and verify the content: Product master data extracted attribute values (Product Id, Description, ABC code, Material Type and UoM) and extra attributes that I only added in the target mapping structure like the Product Family string (Valuable / Standard) and Product Series counter.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SofianePebre_25-1762766206933.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337875i9EF708A4ED61B435/image-size/medium?v=v2&px=400" role="button" title="SofianePebre_25-1762766206933.png" alt="SofianePebre_25-1762766206933.png" /></span></P><P> </P><P><STRONG>Next blog entry</STRONG></P><P>Next blog entry will cover the back integration: from file-based csv to IBP.</P><P> </P><P><STRONG>Sources</STRONG></P><UL><LI><A href="https://help.sap.com/doc/d9ca0a5b35214b2a9470b8e6c748c7b3/2402/en-US/b6fe07784e154bb7aa76ac71997dbce2.pdf" target="_blank" rel="noopener noreferrer">IBP Reusable integration flows - list and details</A></LI><LI><A href="https://help.sap.com/docs/cloud-integration/sap-cloud-integration/configure-sftp-receiver-adapter" target="_blank" rel="noopener noreferrer">Configure-sftp-receiver-adapter</A></LI></UL><P> </P><P> </P>2025-11-10T10:33:26.034000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/simplifying-aws-ec2-with-cloud-connector-installation-amp-sap-dp-agent/ba-p/14269868Simplifying AWS EC2 with Cloud Connector installation & SAP DP Agent Integration with BTP2025-11-14T17:00:31.213000+01:00Utkarsh_7https://community.sap.com/t5/user/viewprofilepage/user-id/1527333<P>Hi Folks,</P><P>This blog demonstrates how to create an AWS EC2 instance, configure storage using LVM, install SAP Cloud Connector and Data Provisioning (DP) Agent, and integrate DP agent with SAP Business Technology Platform (BTP) trial account. This setup is ideal for learning and proof-of-concept scenarios.</P><H5 id="toc-hId--2142921477" id="toc-hId--2142917563">1. Overview</H5><P>We are planning to show you end to end AWS server creation along with mount point creation, and installation of SAP DP & Cloud connector installation, and after that we have configured these systems with BTP free trial account.</P><P>Aws trial account --<SPAN> </SPAN><A href="https://aws.amazon.com/free/" target="_blank" rel="noopener nofollow noreferrer">https://aws.amazon.com/free/</A></P><P>BTP trial account --<SPAN> </SPAN><A href="https://account.hanatrial.ondemand.com/trial/#/home/trial" target="_blank" rel="noopener nofollow noreferrer">SAP BTP Cockpit</A></P><H5 id="toc-hId-1955532314" id="toc-hId-1955536228">2. AWS EC2 instance creation</H5><P>As per SAP standard we can only choose SUSE & RHEL image.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_0-1763135313716.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341306iFBE4C710ABF5BD1A/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_0-1763135313716.png" alt="Utkarsh_7_0-1763135313716.png" /></span></P><P>Key pair is necessary to generate if you want to access EC2 instance via public ip, other wise server will not authenticate you.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_1-1763135313717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341307iF9604F87699861E1/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_1-1763135313717.png" alt="Utkarsh_7_1-1763135313717.png" /></span></P><P>Either you can select existing security group or create new SG</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_2-1763135313717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341308i34B4F72F6B058FB9/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_2-1763135313717.png" alt="Utkarsh_7_2-1763135313717.png" /></span></P><P>Attach disk as per your requirements</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_3-1763135313717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341309iA000245A6AA974CC/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_3-1763135313717.png" alt="Utkarsh_7_3-1763135313717.png" /></span></P><P>EC2 instance created</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_4-1763135313717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341310i41567EF29B46D7E8/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_4-1763135313717.png" alt="Utkarsh_7_4-1763135313717.png" /></span></P><P>To download media and upload into the server we have configure S3 bucket.</P><H5 id="toc-hId-1759018809" id="toc-hId-1759022723">3. S3 bucket Creation</H5><P>Simply goto S3 and create by selecting create button and enter bucket name and leave all the filled as it is.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_5-1763135313717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341311iF4B8BD8FB4FC65F8/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_5-1763135313717.png" alt="Utkarsh_7_5-1763135313717.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_6-1763135313717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341314iC7DAEF47DF718EF0/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_6-1763135313717.png" alt="Utkarsh_7_6-1763135313717.png" /></span></P><H5 id="toc-hId-1562505304" id="toc-hId-1562509218">4. Attach IAM role to EC2 instance</H5><P>To connect S3 bucket with EC2 instance we must attached IAM role to EC2 instance.</P><P>Role:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_7-1763135313721.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341312i37684446093CA535/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_7-1763135313721.png" alt="Utkarsh_7_7-1763135313721.png" /></span></P><P>Via Attaching this role we are enabling Connection of S3 bucket with EC2 instance.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_8-1763135313728.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341313i188F9585250D1FEB/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_8-1763135313728.png" alt="Utkarsh_7_8-1763135313728.png" /></span></P><H5 id="toc-hId-1365991799" id="toc-hId-1365995713">5. Creation of file system</H5><P>We have used LVM for file system creation, LVM (Logical Volume Manager<STRONG>)</STRONG><SPAN> </SPAN>is a disk management system in Linux that provides a flexible way to manage storage compared to traditional partitions.</P><H6 id="toc-hId-1298561013" id="toc-hId-1298564927"> 5.1 validate that separate disk is attach or not via lsblk cmd</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_9-1763135313729.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341316i8F13BE06851907D1/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_9-1763135313729.png" alt="Utkarsh_7_9-1763135313729.png" /></span></P><P><STRONG>PV</STRONG><SPAN> </SPAN>= Bricks</P><P><STRONG>VG</STRONG><SPAN> </SPAN>= A big wall built with those bricks</P><P><STRONG>LV</STRONG><SPAN> </SPAN>= Windows or doors cut out of the wall</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_10-1763135313730.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341317i6B0C66812D9C9051/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="Utkarsh_7_10-1763135313730.png" alt="Utkarsh_7_10-1763135313730.png" /></span></P><H6 id="toc-hId-1102047508" id="toc-hId-1102051422">5.2 created physical volume pvcreate</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_11-1763135313750.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341315i9D4ED907FA828C1C/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_11-1763135313750.png" alt="Utkarsh_7_11-1763135313750.png" /></span></P><H6 id="toc-hId-905534003" id="toc-hId-905537917">5.3 Create Volume group VG</H6><OL><LI>Now we created vg (volume group) from the above pv and validated from vgs command.</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_12-1763135313755.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341319i236A36AB2EBEE485/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_12-1763135313755.png" alt="Utkarsh_7_12-1763135313755.png" /></span></P><H6 id="toc-hId-709020498" id="toc-hId-709024412">5.4 Create LV, Logical Volume</H6><OL><LI>Now we have created lv volume as per our filesystem need</LI><LI>Usrsap - /usr/sap – sap filesystem</LI><LI>Optsapscc - /opt/sap/scc – cloud connector installation</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_13-1763135313761.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341318iE42916129AE5B26D/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_13-1763135313761.png" alt="Utkarsh_7_13-1763135313761.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_14-1763135313761.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341320i8AD23B5BF0416CE7/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_14-1763135313761.png" alt="Utkarsh_7_14-1763135313761.png" /></span></P><H6 id="toc-hId-512506993" id="toc-hId-512510907">5.5 Disk Formating by mkfs command</H6><OL><LI>Run mkfs command as per below screenshots for all the logical volumes that we need to create</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_15-1763135313764.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341323i02DCF60C1E3C3799/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_15-1763135313764.png" alt="Utkarsh_7_15-1763135313764.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_16-1763135313770.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341322iF4937C4856E429C8/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_16-1763135313770.png" alt="Utkarsh_7_16-1763135313770.png" /></span></P><P>Blkid – to check disk formatting</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_17-1763135313772.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341321i261DED04EC3F436B/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_17-1763135313772.png" alt="Utkarsh_7_17-1763135313772.png" /></span></P><H6 id="toc-hId--1026695059" id="toc-hId--1026691145">5.6 Maintain entry in Fstab to get the mount permanent</H6><OL><LI>Now maintain fstab entry as per blkid</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_18-1763135313777.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341326i38269F8BBC8866FB/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_18-1763135313777.png" alt="Utkarsh_7_18-1763135313777.png" /></span></P><H6 id="toc-hId--1223208564" id="toc-hId--1223204650">5.6 Creation folder creation and mount point creation</H6><P> Mkidr -p /foldername</P><P> Mount -a</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_19-1763135313777.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341324i0EBF96330B8581F7/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_19-1763135313777.png" alt="Utkarsh_7_19-1763135313777.png" /></span></P><H5 id="toc-hId--1126319062" id="toc-hId--1126315148">6. Cloud Connector installation</H5><H6 id="toc-hId--1616235574" id="toc-hId--1616231660"> 6.1 Download media from S3:</H6><P>We have already downloaded media and uploaded in S3 that we have created earlier.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_20-1763135313780.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341325i23AAE6A593738E6F/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_20-1763135313780.png" alt="Utkarsh_7_20-1763135313780.png" /></span></P><H6 id="toc-hId--1812749079" id="toc-hId--1812745165"> 6.2 Installation of jvm</H6><P>(before installing cloud connector we have to install jvm)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_21-1763135313781.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341328i4B76B7F74C07B4A7/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_21-1763135313781.png" alt="Utkarsh_7_21-1763135313781.png" /></span></P><H6 id="toc-hId--2009262584" id="toc-hId--2009258670"> 6.3 Installation of Cloud connector</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_22-1763135313788.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341330i45A772D2E0878269/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_22-1763135313788.png" alt="Utkarsh_7_22-1763135313788.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_23-1763135313794.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341329i9D45AA9508B96359/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_23-1763135313794.png" alt="Utkarsh_7_23-1763135313794.png" /></span></P><H5 id="toc-hId--1912373082" id="toc-hId--1912369168">7. Installation of DP agent</H5><OL><LI>Creating logical volume and disk formatting</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_24-1763135313794.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341333iD329D4F09CE8E3DE/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_24-1763135313794.png" alt="Utkarsh_7_24-1763135313794.png" /></span></P><OL><LI>Maintaing in fstab</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_25-1763135313795.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341331i65A33F3CABBEF12B/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_25-1763135313795.png" alt="Utkarsh_7_25-1763135313795.png" /></span></P><H6 id="toc-hId-1892677702" id="toc-hId-1892681616">7.1 Creating filesystem for DP agent</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_26-1763135313795.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341332i6531A942849D0379/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_26-1763135313795.png" alt="Utkarsh_7_26-1763135313795.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_27-1763135313798.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341335iD25A6C5B82B4D3F5/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_27-1763135313798.png" alt="Utkarsh_7_27-1763135313798.png" /></span></P><H6 id="toc-hId-1696164197" id="toc-hId-1696168111">7.2 Copying media from S3 to local mount point</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_28-1763135313799.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341334i9F13E639C8960ED7/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_28-1763135313799.png" alt="Utkarsh_7_28-1763135313799.png" /></span></P><H6 id="toc-hId-1499650692" id="toc-hId-1499654606">7.3 Creating os user for the installation</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_29-1763135313799.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341336i07490AFF21D1C011/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_29-1763135313799.png" alt="Utkarsh_7_29-1763135313799.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_30-1763135313802.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341338iA84A44E8BEC49A5C/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_30-1763135313802.png" alt="Utkarsh_7_30-1763135313802.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_31-1763135313804.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341337i36F430F2350186BF/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_31-1763135313804.png" alt="Utkarsh_7_31-1763135313804.png" /></span></P><H6 id="toc-hId-1471320878" id="toc-hId-1471324792">7.4 Installing libraries</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_32-1763135313806.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341339i4E8D285E32C5FE72/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_32-1763135313806.png" alt="Utkarsh_7_32-1763135313806.png" /></span></P><P>Once required libraries are installed you can start DP agent installation.</P><H5 id="toc-hId-1568210380" id="toc-hId-1568214294">8. BTP trial account</H5><P><A href="https://account.hanatrial.ondemand.com/trial/#/home/trial" target="_blank" rel="noopener nofollow noreferrer">https://account.hanatrial.ondemand.com/trial/#/home/trial</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_33-1763135313811.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341340iB8CF70642B8633D2/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_33-1763135313811.png" alt="Utkarsh_7_33-1763135313811.png" /></span></P><H6 id="toc-hId-1078293868" id="toc-hId-1078297782">8.1 Assign role in your BTP user</H6><P>This is the first thing we have to complete when we are trying to configure CC or DP agent from BTP.</P><P>Cloud Connector Admin role for CC configuration with BTP subaccount.</P><P>To install SAP hana cloud admin we need SAP HANA Cloud Admin.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_34-1763135313811.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341342iA82A82F63FC6CF77/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_34-1763135313811.png" alt="Utkarsh_7_34-1763135313811.png" /></span></P><H6 id="toc-hId-881780363" id="toc-hId-881784277">8.2 Create hana cloud instance service</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_35-1763135313812.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341341iBE48FF95E2748821/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_35-1763135313812.png" alt="Utkarsh_7_35-1763135313812.png" /></span></P><P>Click on the hana cloud</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_36-1763135313812.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341343i15EBAB152CC2F7BC/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_36-1763135313812.png" alt="Utkarsh_7_36-1763135313812.png" /></span></P><P>From there you can create an instance</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_37-1763135313814.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341345i4E9BD3AB2BF1378F/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_37-1763135313814.png" alt="Utkarsh_7_37-1763135313814.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_38-1763135313815.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341344iD27F7BCE7FC766E0/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_38-1763135313815.png" alt="Utkarsh_7_38-1763135313815.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_39-1763135313819.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341347iEF72E72EAE30C1A0/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_39-1763135313819.png" alt="Utkarsh_7_39-1763135313819.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_40-1763135313820.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341348iDA7E5C40DC70380C/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_40-1763135313820.png" alt="Utkarsh_7_40-1763135313820.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_41-1763135313822.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341346iAB55260E4014F1CB/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_41-1763135313822.png" alt="Utkarsh_7_41-1763135313822.png" /></span></P><H6 id="toc-hId-685266858" id="toc-hId-685270772">8.3 Enable DP agent & cloud connector</H6><P>To configure DP agent, you should enable DP agent, you can do this either during the instance creation or you can also enable after instance creation as well by manage configuration.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_42-1763135313828.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341349iC4F61DC034C0F18E/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_42-1763135313828.png" alt="Utkarsh_7_42-1763135313828.png" /></span></P><P>And all IP addresses for better connectivity</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_43-1763135313828.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341350iCF626C5E8F05A56F/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_43-1763135313828.png" alt="Utkarsh_7_43-1763135313828.png" /></span></P><P>BTP hana instance created</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_44-1763135313829.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341351i98AA4F5124F388ED/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_44-1763135313829.png" alt="Utkarsh_7_44-1763135313829.png" /></span></P><H6 id="toc-hId-488753353" id="toc-hId-488757267">8.4 Create Technical user for DP agent registration</H6><P>HANA User Name for Agent Messaging - Technical user as per your requirements, refer to SAP help guide for user creation, roles, and privileges.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_45-1763135313830.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341352i43C26BBCB4FB5539/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_45-1763135313830.png" alt="Utkarsh_7_45-1763135313830.png" /></span></P><P><A href="https://help.sap.com/docs/HANA_SMART_DATA_INTEGRATION/018757bb7f5c4700a8840976c8730f34/1e648c93d82f4a9cb776fcdc8c771a79.html?locale=en-US" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/HANA_SMART_DATA_INTEGRATION/018757bb7f5c4700a8840976c8730f34/1e648c93d82f4...</A></P><H6 id="toc-hId-292239848" id="toc-hId-292243762">8.5 Allow all inbound ips from DP agent server.</H6><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_46-1763135313833.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341353i0CFC4DE680B40D95/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_46-1763135313833.png" alt="Utkarsh_7_46-1763135313833.png" /></span></P><H6 id="toc-hId-95726343" id="toc-hId-95730257"><SPAN>8.6 DP agent configuration with BTP Hana cloud instance</SPAN></H6><P>Purpose of DP agent:</P><P><A href="https://learning.sap.com/videos/setting-up-and-configuring-the-data-provisioning-agent-to-connect-sap-hana-on-premise-to-sap-hana-cloud" target="_blank" rel="noopener noreferrer">Setting Up and Configuring the Data Provisioning Agent to Connect</A></P><P>Start agent cli tool from DP agent server.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_47-1763135313836.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341354iDBD3DA7B25B2D1B4/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_47-1763135313836.png" alt="Utkarsh_7_47-1763135313836.png" /></span></P><P>Agent cli tool connected with the HANA cloud instance as per above screenshot, now try to register agent.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_48-1763135313839.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341357iA24DD4F4D286F79C/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_48-1763135313839.png" alt="Utkarsh_7_48-1763135313839.png" /></span></P><P>Check agent status, if everything is correct you will see green status as per below screenshot.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_49-1763135313844.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341356iEBD689D98B5D7CC8/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_49-1763135313844.png" alt="Utkarsh_7_49-1763135313844.png" /></span></P><P>Check agent info from hana cloud instance as well.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Utkarsh_7_50-1763135313844.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341355i15E1F9DCDA035CC1/image-size/medium?v=v2&px=400" role="button" title="Utkarsh_7_50-1763135313844.png" alt="Utkarsh_7_50-1763135313844.png" /></span></P><P>So till this part we have configured DP agent with hana cloud instance, now if you wants to replicate data from backend abap systems then you have to configure by creating remote source, for better understanding check this blog.</P><P><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/transferring-data-from-on-premise-sap-hana-to-sap-hana-cloud-using-sdi/ba-p/13450001" target="_blank">Transferring data from On-Premise SAP HANA to SAP ... - SAP Community</A></P><H5 id="toc-hId-192615845" id="toc-hId-192619759">9. Cloud connector configuration with BTP subaccounts.</H5><P>SAP Cloud Connector is an optional on-premise component that establishes a secure communication link between customer's on-premise network and SAP Business Technology Platform or SAP S/4HANA Cloud.</P><H3 id="toc-hId-582912268"><STRONG>Conclusion</STRONG></H3><P>You now have a fully functional setup integrating AWS infrastructure with SAP BTP trial using DP Agent. This foundation enables secure connectivity and data provisioning for SAP HANA Cloud.</P>2025-11-14T17:00:31.213000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/deploying-sap-cloud-connector-on-aws-free-tier-using-terraform-and-suse/ba-p/14270156Deploying SAP Cloud Connector on AWS Free Tier Using Terraform and SUSE Linux Enterprise Server2025-11-21T08:30:19.392000+01:00neilaspinhttps://community.sap.com/t5/user/viewprofilepage/user-id/167493<P>Setting up the SAP Cloud Connector traditionally involves several manual steps: preparing a virtual machine, installing the required runtime components, configuring system services, and opening the correct network paths. In this guide, the entire process is streamlined by using Terraform and a lightweight SUSE Linux instance on AWS. With a fully automated installer script and a small set of IaC templates, you can deploy a Cloud Connector in just a few minutes. This approach is ideal for sandboxes, learning environments, and rapid prototyping on the AWS Free Tier.</P><HR /><H2 id="toc-hId-1765450218">1. Prerequisites</H2><UL><LI>AWS account with permissions to create EC2 instances, S3 buckets, and security groups</LI><LI>Basic Linux shell usage skills (SSH, simple commands, log inspection)</LI><LI>Terraform installed locally</LI><LI>SSH client (OpenSSH, PuTTY, etc.)</LI><LI>A free-tier compatible SUSE Linux Enterprise Server AMI (x86_64) in your chosen region</LI><LI>An existing EC2 key pair (placeholder: <CODE><YOUR_KEY_PAIR_NAME></CODE>)</LI><LI>An S3 bucket containing the SCC ZIP file, for example:</LI></UL><pre class="lia-code-sample language-text"><code><YOUR_S3_BUCKET_NAME>/sapcc-2.16.2-linux-x64.zip</code></pre><P><STRONG>Note:</STRONG> Direct downloads of the SCC installer from <EM>tools.hana.ondemand.com</EM> do not work with <CODE>wget</CODE> or <CODE>curl</CODE>. These commands will return an HTML page instead of the actual ZIP file, even though the filename looks correct.</P><pre class="lia-code-sample language-bash"><code>file sapcc-2.16.2-linux-x64.zip</code></pre><P>If the output shows <EM>HTML document</EM> instead of <EM>Zip archive</EM>, the download has been redirected and is unusable. Hosting the installer in your own S3 bucket ensures the Terraform automation can download it reliably.</P><HR /><H2 id="toc-hId-1568936713">2. Terraform Configuration</H2><P>The following <CODE>main.tf</CODE> provisions:</P><UL><LI>A SUSE Linux Enterprise Server EC2 instance on AWS Free Tier</LI><LI>A security group exposing ports <CODE>22</CODE> (SSH) and <CODE>8443</CODE> (SCC UI)</LI><LI>A startup script (<CODE>install-scc.sh</CODE>) that installs and configures SAP Cloud Connector</LI></UL><H3 id="toc-hId-1501505927">Project Directory Structure</H3><P>A working directory named <CODE>terraform_scc</CODE> was created to hold the Terraform configuration and installation script:</P><pre class="lia-code-sample language-text"><code>terraform_scc/
├── main.tf # Terraform infrastructure definition
├── install-scc.sh # SCC installation and tuning script
├── outputs.tf # Terraform output definitions (optional)
├── variables.tf # Variable declarations (optional)
└── README.md # Optional notes or setup instructions</code></pre><P>Only <CODE>main.tf</CODE> and <CODE>install-scc.sh</CODE> are required. The remaining files are optional but commonly included for structure and clarity.</P><H3 id="toc-hId-1304992422">2.1 main.tf</H3><pre class="lia-code-sample language-hcl"><code>terraform {
required_version = ">= 1.5"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "us-east-2"
}
resource "aws_security_group" "sap_scc_sg" {
name = "sap-scc-sg"
description = "Allow SCC UI and SSH"
vpc_id = "<YOUR_VPC_ID>"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 8443
to_port = 8443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "sap_scc" {
ami = "ami-xxxxxxxxxxxxxxxxx" # SLES x86_64 AMI in your region
instance_type = "t2.micro" # Free tier compatible
key_name = "<YOUR_KEY_PAIR_NAME>"
subnet_id = "<YOUR_SUBNET_ID>"
associate_public_ip_address = true
vpc_security_group_ids = [
aws_security_group.sap_scc_sg.id
]
user_data = file("${path.module}/install-scc.sh")
tags = {
Name = "SAP-Cloud-Connector-SLES"
}
}
output "public_ip" {
value = aws_instance.sap_scc.public_ip
}</code></pre><H3 id="toc-hId-1108478917">2.2 Running Terraform</H3><pre class="lia-code-sample language-bash"><code># Initialize Terraform
terraform init
# Optional: preview infrastructure changes
terraform plan
# Deploy SCC VM and networking
terraform apply -auto-approve
# Retrieve public IP for SCC access
terraform output -raw public_ip
# Destroy when finished
terraform destroy -auto-approve</code></pre><HR /><H2 id="toc-hId-782882693">3. Installation Script (install-scc.sh)</H2><P>This script installs SAP Cloud Connector on SUSE Linux Enterprise Server, tunes the JVM for t2.micro memory limits, enables the systemd daemon, and waits for SCC to start listening on port <CODE>8443</CODE>.</P><P><STRONG>Note:</STRONG> Replace <CODE><YOUR_S3_BUCKET_NAME></CODE> with your own bucket name.</P><pre class="lia-code-sample language-bash"><code>#!/bin/bash
set -euxo pipefail
SCC_VERSION="2.16.2"
SCC_FILE="sapcc-${SCC_VERSION}-linux-x64.zip"
S3_BUCKET="<YOUR_S3_BUCKET_NAME>"
SCC_URL="https://${S3_BUCKET}.s3.amazonaws.com/${SCC_FILE}"
LOG_FILE="/var/log/scc-install.log"
exec > >(tee -a "${LOG_FILE}") 2>&1
echo "=== SAP Cloud Connector install on SLES ==="
echo "Version: ${SCC_VERSION}"
echo "Source: ${SCC_URL}"
echo "=== Installing prerequisites ==="
zypper -n refresh
zypper -n install curl unzip java-11-openjdk-headless || zypper -n install java-17-openjdk-headless
cd /tmp
echo "=== Downloading SCC ==="
curl -L -o "${SCC_FILE}" "${SCC_URL}"
echo "=== Verifying ==="
file "${SCC_FILE}" | grep -qi "Zip" || exit 1
echo "=== Extracting ==="
rm -rf /tmp/scc-installer
mkdir /tmp/scc-installer
unzip -o "${SCC_FILE}" -d /tmp/scc-installer
cd /tmp/scc-installer
RPM=$(ls com.sap.scc-ui-*.rpm | head -n 1)
echo "=== Installing SCC RPM ==="
zypper -n --no-gpg-checks install "./${RPM}"
echo "=== Tuning heap for t2.micro ==="
if [ -f /opt/sap/scc/props.ini ]; then
cp /opt/sap/scc/props.ini /opt/sap/scc/props.ini.bak || true
sed -i 's/-Xms1024m/-Xms256m/g; s/-Xmx1024m/-Xmx512m/g; \
s/-XX:MaxNewSize=512m/-XX:MaxNewSize=256m/g; \
s/-XX:NewSize=512m/-XX:NewSize=256m/g' /opt/sap/scc/props.ini
fi
echo "=== Starting SCC service ==="
systemctl enable scc_daemon.service
systemctl restart scc_daemon.service
echo "=== Waiting for port 8443 ==="
for i in {1..12}; do
if ss -tulpn | grep -q 8443; then
echo "SCC is up"
break
fi
echo "Attempt $i/12: 8443 not listening yet, sleeping 10s..."
sleep 10
done
echo "=== Done ==="</code></pre><HR /><H2 id="toc-hId-586369188">4. Verifying the Deployment</H2><H3 id="toc-hId-518938402">SSH Access</H3><pre class="lia-code-sample language-bash"><code>ssh -i <YOUR_KEY_PAIR_NAME> ec2-user@<public-ip></code></pre><H3 id="toc-hId-322424897">Check SCC Status</H3><pre class="lia-code-sample language-bash"><code>sudo systemctl status scc_daemon.service
ss -tulpn | grep 8443</code></pre><H2 id="toc-hId--3171327">5. Accessing the SCC UI</H2><P>Once the SAP Cloud Connector service has started on your SUSE instance, open the administration UI in your browser.</P><pre class="lia-code-sample language-bash"><code>https://<YOUR_PUBLIC_IP>:8443</code></pre><P>You will be redirected to the login page:</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2025-11-15 at 07.55.05.png" style="width: 100%px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341461i6AC0F04248C57A81/image-size/large?v=v2&px=999" width="100%" height="auto" role="button" title="Screenshot 2025-11-15 at 07.55.05.png" alt="Screenshot 2025-11-15 at 07.55.05.png" /></span></SPAN></P><P>The default credentials on first login are:</P><pre class="lia-code-sample language-text"><code>User: Administrator
Password: manage</code></pre><P>After logging in, you will be prompted to set a new password.</P><HR /><H2 id="toc-hId-147569525">6. Connect the SCC to BTP</H2><P>Once authenticated, the landing screen indicates that no subaccount is currently configured.</P><P>Navigate to <STRONG>Connector → Define Subaccount</STRONG> and enter the following details:</P><UL><LI><STRONG>Region Code</STRONG> (example: <CODE>us10</CODE>)</LI><LI><STRONG>Subaccount ID</STRONG> (GUID from BTP Cockpit)</LI><LI><STRONG>Display Name</STRONG> (any label of your choice)</LI><LI><STRONG>Subaccount User</STRONG> (your BTP email)</LI><LI><STRONG>Password</STRONG> (IAS/BTP password)</LI></UL><P>Save the configuration. The connector will establish a secure tunnel within a few seconds.</P><HR /><H2 id="toc-hId--48943980">7. Successful Connection</H2><P>Once connected, the overview section will update and display the Connection Status, Subaccount Certificate, and Tunnel ID:</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="btp.png" style="width: 100%px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341462iE0524899F93F32F6/image-size/large?v=v2&px=999" width="100%" height="auto" role="button" title="btp.png" alt="btp.png" /></span></SPAN></P><P>Your Cloud Connector is now fully operational and ready for use. You can proceed with exposing your on-premise resources to SAP BTP via <STRONG>Cloud To On-Premise → Access Control</STRONG>.</P><HR /><H2 id="toc-hId--245457485">8. Observations and Considerations</H2><UL><LI>SCC’s default heap settings exceed the memory available on t2.micro instances; tuning is required for reliable startup.</LI><LI>In production environments, restrict SSH and SCC UI access to trusted IP ranges.</LI><LI>The installation process is ideal for training, PoCs, and labs where lightweight automation is needed.</LI><LI>Using Terraform ensures fast, repeatable provisioning and clean teardown.</LI><LI>While t2.micro instances and standard gp3 storage sit within AWS’s Free Tier, using SUSE or other licensed AMIs can incur hourly charges under certain circumstances, even on t2.micro. Double-check your AMI selection to avoid unexpected billing.</LI></UL>2025-11-21T08:30:19.392000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/new-security-optimization-service-for-cloud-connector/ba-p/14259100New Security Optimization Service for Cloud Connector2025-12-03T05:56:43.092000+01:00Anisa2https://community.sap.com/t5/user/viewprofilepage/user-id/2003264<P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="285294_iStock-808157682.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/335341i8EBB9415E7AA1DFD/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="285294_iStock-808157682.jpg" alt="285294_iStock-808157682.jpg" /></span></P><P>Security and the protection of your systems have become more important than ever and play a crucial role in today’s business environment.</P><P>The SAP Security Optimization Service (SOS) is designed to analyze, verify, and improve the security of your SAP system by identifying potential security risks and providing recommendations to mitigate these risks within the assessed systems. </P><P>There are many different SAP systems that can be analyzed with an SOS and can be referred from the<SPAN> </SPAN><A href="https://support.sap.com/content/dam/support/en_us/library/ssp/offerings-and-programs/sap-enterprise-support/enterprise-support-academy/continuous-quality-check-improvement-services/cqcso.pdf" target="_blank" rel="noopener noreferrer">CQC SOS Infosheet</A></P><H3 id="toc-hId-1892953853"><STRONG><span class="lia-unicode-emoji" title=":glowing_star:">🌟</span>New in CQC SOS:</STRONG> <STRONG>Cloud Connector!</STRONG></H3><P>What is the Cloud Connector?</P><UL><LI>Serves as a link between SAP BTP applications and on-premises systems.</LI></UL><UL><LI>Runs as on-premises agent in a secured network.</LI></UL><UL><LI>Provides fine-grained control over On-premises systems and resources that can be accessed by cloud applications and Cloud applications using the Cloud Connector.</LI></UL><UL><LI>Besides the <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/new-security-optimization-service-continuous-quality-check-for-sap-business/ba-p/13544718" target="_blank">CQC SOS for SAP BTP</A> , which provides a security assessment of those security-relevant configurations and authorization assignments which are in the responsibility of the customer and focuses on reviewing the platform aspects, a new CQC SOS in the BTP realm is now available: CQC SOS for Cloud Connector. </LI></UL><P>The CQC SOS for Cloud Connector provides a security assessment structured in the following sections:</P><UL><LI><STRONG>General Security Status for Master Instance: </STRONG>security aspects related to the versions of Cloud Connector and underlying JDK, certificates, enabled encryption ciphers for HTTPS connections to the administration UI, trust configurations etc. </LI><LI><STRONG>General Security Status for Shadow Instance: </STRONG>contains a subset of the “General Security Status for Master Instance” section which is applicable for the connected shadow instance.</LI><LI><STRONG>Subaccount-Specific Security Status: </STRONG>settings for connected subaccounts like encrypted communication with backend systems, access policies for HTTP and RFC connections as well as audit log and log/trace configurations.</LI></UL><H3 id="toc-hId-1696440348"><STRONG><span class="lia-unicode-emoji" title=":inbox_tray:">📥</span>How to request a CQC service?</STRONG></H3><P>Create an incident under component <A href="https://launchpad.support.sap.com/#/notes/1296527" target="_blank" rel="noopener noreferrer">SV-BO-REQ (SAP Note 1296527)</A> or</P><P>Contact the SAP Enterprise Support Advisory team via our <A href="https://go.support.sap.com/contactus/#/email" target="_blank" rel="noopener noreferrer">Customer Interaction Center</A><A href="https://go.support.sap.com/contactus/#/email" target="_blank" rel="noopener noreferrer"> (</A><A href="https://go.support.sap.com/contactus/#/email" target="_blank" rel="noopener noreferrer">C</A><A href="https://go.support.sap.com/contactus/#/email" target="_blank" rel="noopener noreferrer">I</A><A href="https://go.support.sap.com/contactus/#/email" target="_blank" rel="noopener noreferrer">C</A><A href="https://go.support.sap.com/contactus/#/email" target="_blank" rel="noopener noreferrer">)</A></P><H3 id="toc-hId-1499926843"><STRONG><span class="lia-unicode-emoji" title=":cloud:">☁️</span>As an SAP Enterprise Support or cloud customer:</STRONG></H3><P>Make use of the security and the enablement offerings provided by the <A href="https://support.sap.com/en/offerings-programs/enterprise-support/enterprise-support-academy.html" target="_blank" rel="noopener noreferrer">SAP Enterprise Support Academy</A>.</P><P>For more information on the Cloud Connector discussed in this blog visit the corresponding <A href="https://help.sap.com/docs/btp/sap-btp-security-recommendations-c8a9bb59fe624f0981efa0eff2497d7d/sap-btp-security-recommendations?seclist-service=Cloud+Connector" target="_blank" rel="noopener noreferrer">SAP BTP Security Recommendations</A> and the <A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/cloud-connector#context" target="_blank" rel="noopener noreferrer">SAP Help Portal</A></P><H3 id="toc-hId-1303413338"><STRONG><span class="lia-unicode-emoji" title=":link:">🔗</span>Stay connected</STRONG></H3><P>Want to stay up to date on our services? Join our <A href="https://community.sap.com/t5/sap-cloud-alm-cross-solution-topics-value-map/gh-p/alm-cross-vm" target="_blank">SAP Cloud ALM & Cross-Solution Topics Value Map </A> community! </P>2025-12-03T05:56:43.092000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/a-complete-guide-to-sap-cloud-connector-concepts-system-requirements-and/ba-p/14283064A Complete Guide to SAP Cloud Connector: Concepts, System Requirements, and Deployment Approaches2025-12-03T14:12:23.347000+01:00Saikat_Roy1https://community.sap.com/t5/user/viewprofilepage/user-id/1928819<P><STRONG>What is SAP Cloud Connector?</STRONG></P><P>SAP Cloud Connector (SCC) is a lightweight, on-premise component that acts as a secure tunnel between SAP BTP (Business Technology Platform) and an organization’s on-premise systems. It enables controlled and secure access to internal backend services—such as SAP ERP, S/4HANA, BW, Gateway, RFC modules, or HTTP/S services—without exposing the entire network to the internet.<BR />SCC works as a reverse invoke proxy, meaning that the connection is always initiated from the on-premise side toward SAP BTP. Due to this architecture, no inbound traffic or port opening is required in the company’s firewall, making the integration both secure and easy to maintain. With fine-grained control over resources, administrators can expose only specific APIs, paths, or RFC destinations to BTP applications.</P><P><STRONG>Why SAP Cloud Connector is Important</STRONG></P><P>As organizations adopt SAP BTP for application development, extensions, integrations, and automation, secure connectivity becomes essential. SCC ensures encrypted communication using TLS, provides high-availability options, and allows audit-level monitoring. It plays a key role in hybrid landscapes where on-premises systems coexist with cloud solutions.<BR />Whether building CAP applications, integrating with SAP Build Apps, using SAP Integration Suite, or enabling BTP extensions for S/4HANA, the Cloud Connector acts as the central foundation for secure and reliable connectivity.</P><P><STRONG>Prerequisites</STRONG></P><P>Hardware</P><UL><LI>Memory: 1 GB RAM (min.), 4 GB recommended</LI><LI>Hard disk space: 1 GB (min.), recommended 20 GB</LI><LI>CPU: Single core 3 GHz (min.), dual core 2 GHz</LI><LI>recommended, x86-64 architecture compatible</LI></UL><P>Software</P><UL><LI>64-bit operating systems: Windows 7, Windows 8.1, Windows Server 2008 R2, Windows Server 2012, or Windows Server 2012 R2, Windows Server 2019, Linux Servers (SUSE)</LI><LI>Cloud connector installation archive from SAP Development Tools for Eclipse.</LI><LI>Microsoft Visual Studio C++ 2010 runtime libraries.</LI><LI>Supported JDKs</LI></UL><P><STRONG>How to Implement SAP Cloud Connector</STRONG></P><P>Implementing SAP Cloud Connector is straightforward and does not require complex infrastructure changes. The tool can be installed on Windows or Linux servers, and SAP recommends placing it close to the backend system for optimal performance.</P><P>Implementing Cloud Connector can be divided into two parts. 1 is <STRONG>Green Field</STRONG>, and the another is <STRONG>Brown Field</STRONG>.</P><P><STRONG><U>Green Field Implementation Approach:</U></STRONG></P><OL><LI><STRONG>Install SAP Cloud Connector</STRONG></LI></OL><UL><LI>Download the installer from <STRONG>tools.hana.ondemand.com</STRONG>. (Figure 1) <A href="https://tools.hana.ondemand.com/#cloud" target="_blank" rel="noopener nofollow noreferrer">https://tools.hana.ondemand.com/#cloud</A> </LI><LI>Choose the OS-specific version (Windows MSI or Linux RPM).</LI><LI>Follow the basic installation steps; SCC runs as a local service.</LI><LI>After installation, access the UI using:<BR /><STRONG><A href="https://localhost:8443" target="_blank" rel="noopener nofollow noreferrer">https://localhost:8443</A></STRONG><BR />Default admin user: <EM>Administrator</EM> (you will set the password on first login).</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_0-1764767161589.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348057i1CF5193CB5AD534C/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_0-1764767161589.png" alt="Saikat_Roy1_0-1764767161589.png" /></span></P><P>Figure 1:</P><P><STRONG>Launching the Administration UI</STRONG></P><P>Objectives</P><P>After completing this lesson, you will be able to:</P><UL><LI>Logon to the Cloud Connector</LI><LI>Exchange the UI certificates</LI></UL><P><STRONG>Cloud Connector Logon</STRONG></P><P>Initial Logon</P><P>The Cloud Connector is primarily configured and administered using a web interface. To access the Cloud Connector user interface, enter the following URL in a supported web browser:</P><P>https://<hostname>:<port></P><UL><LI><hostname> refers to the machine on which the Cloud Connector is installed. If installed on your machine, you can simply enter localhost.</LI><LI><port> is the Cloud Connector port (the default port is 8443).</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_1-1764767161602.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348058i100C03DAAA2A4FEB/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_1-1764767161602.png" alt="Saikat_Roy1_1-1764767161602.png" /></span></P><P>Figure: 2</P><P>On the logon screen, enter the following credentials:</P><UL><LI>Username: Administrator</LI><LI>Password: manage</LI></UL><P>When you first log in, you must change the password before you continue. The Cloud Connector does not check the strength of your new password. Select a strong password that can’t be guessed easily.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_2-1764767161613.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348056i8DA073B0A2E5EA0D/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_2-1764767161613.png" alt="Saikat_Roy1_2-1764767161613.png" /></span></P><P>Figure: 3</P><P>In the Right side of the above figure 3 you can find the Installation Type <STRONG>(Master/Shadow)</STRONG> for the 1st time implementation use the option called <STRONG>Master (Primary Installation),</STRONG> and to configure it to as HA then chose <STRONG>Shadow (Backup Installation).</STRONG></P><P><STRONG>Exchanging the UI Certificate</STRONG></P><P>By default, the Cloud Connector uses a self-signed UI certificate. It’s used to encrypt the communication between the Administration UI in the browser and the Cloud Connector. For security reasons, you should replace this certificate with your own one to let the browser accept the certificate without security warnings.</P><P>The figure describes how to exchange the UI certificate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_3-1764767161617.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348060iDF805EC27D4478DF/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_3-1764767161617.png" alt="Saikat_Roy1_3-1764767161617.png" /></span></P><P>Figure: 4</P><P>To exchange the UI certificate of a master instance, perform the following steps:</P><OL><LI>Within the Administration UI, navigate to Configuration, and then to USER INTERFACE.</LI><LI>In the UI Certificate section, start a procedure to request certificate signing by choosing the icon Generate a certificate signing request.</LI><LI>In the Generate CSR window, specify a key size and a Common Name fitting to the Cloud Connector host name. In the Subject Alternative Names section, you can add other values by pressing the Add button. You can, for example, use the DNS option to specify a virtual hostname or a wildcard name (such as *.sap.com).</LI><LI>Choose Generate.</LI><LI>You’re prompted to save the certificate signing request (CSR) in a file. The content of the file is the signing request in PEM format.</LI><LI>The certificate signing request must be provided to a Certificate Authority (CA) - either one within your company or another one you trust. The CA signs the request and the returned response should be stored in a file using the PEM format.</LI><LI>Select Browse to locate that file and then choose the Import button.</LI></OL><P>Restart the Cloud Connector to activate the new certificate</P><OL><LI><STRONG>Connect SCC to SAP BTP Subaccount</STRONG></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_4-1764767161620.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348059iA7640ED6C24A6F39/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_4-1764767161620.png" alt="Saikat_Roy1_4-1764767161620.png" /></span></P><P> Once SCC is up and running:</P><UL><LI>Login to the UI.</LI><LI>Go to <STRONG>Cloud To On-Premises</STRONG> → <STRONG>Subaccount</STRONG>.</LI><LI>Enter your SAP BTP <STRONG>Subaccount ID</STRONG>, <STRONG>Region</STRONG>, and <STRONG>Authentication</STRONG> details.</LI><LI>Save and establish the connection.<BR />If successful, the Subaccount will show as <EM>Connected</EM>.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_5-1764767161628.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348061i64CD7B56BD6DAC6D/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_5-1764767161628.png" alt="Saikat_Roy1_5-1764767161628.png" /></span></P><OL><LI><STRONG>c. Add On-Premise Backend Systems</STRONG></LI></OL><P> Now expose on-prem services to BTP:</P><UL><LI>Navigate to <STRONG>Cloud To On-Premise → Add System</STRONG>.</LI><LI>Choose the system type (ABAP, HTTP, RFC, etc.).</LI><LI>Provide host, port, and protocol details of the backend system.</LI><LI>Map virtual host/port to internal host/port.</LI><LI>Select resources (paths, RFC functions, services) you want to expose.</LI></UL><OL><LI><STRONG>d. Assign Access Control</STRONG></LI></OL><P> For each system:</P><UL><LI>Enable Access Control.</LI><LI>Specify the resources BTP apps are allowed to consume.</LI><LI>Set principal type (none, principal propagation, or basic auth).</LI></UL><P><STRONG> e.Verify the Connection from SAP BTP</STRONG></P><P> Finally:</P><UL><LI>Go to your SAP BTP Cockpit → <STRONG>Connectivity</STRONG> → <STRONG>Cloud Connectors</STRONG>.</LI><LI>Verify status, system availability, and reachable endpoints.</LI></UL><P><STRONG>Configuring Access Control</STRONG></P><P>Objective</P><P>After completing this lesson, you will be able to expose an AS ABAP-based SAP System (HTTP)</P><P><STRONG>Supported Protocols</STRONG></P><P>To allow your cloud applications to access a certain on-premise system on the intranet, you must specify this system in the Cloud Connector. The procedure is specific to the protocol that you're using for communication. The following protocols are supported:</P><P>HTTP</P><P>RFC</P><P>LDAP</P><P>TCP</P><P>Configuring Access Control (HTTP)</P><P>In the following, the widely used HTTP protocol is covered as an example in more details. The figure shows the overall workflow to securely use the HTTP protocol.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_6-1764767161637.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348064i612B017A6BC5290B/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_6-1764767161637.png" alt="Saikat_Roy1_6-1764767161637.png" /></span></P><P>Initial Configuration: Import or Generate a System Certificate</P><P>To set up a mutual authentication between the Cloud Connector and any back-end system it connects to, you can import an X.509 client certificate into the Cloud Connector. The Cloud Connector then uses the so-called system certificate for all HTTPS requests to back ends that request or require a client certificate. The CA that signed the Cloud Connector’s client certificate must be trusted by all back-end systems to which the Cloud Connector is supposed to connect.</P><P>There are three options on how to provide the system certificate:</P><UL><LI>Upload an existing X.509 certificate</LI><LI>Upload the signed UI certificate</LI><LI>Generate a self-signed system certificate (for example: for a demo scenario)</LI></UL><P>All options are offered in the Cloud Connector Administration UI at Configuration → ON PREMISE → System Certificate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_7-1764767161642.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348062i6F556B5A9B574BE2/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_7-1764767161642.png" alt="Saikat_Roy1_7-1764767161642.png" /></span></P><P>Initial Configuration: Maintain the Trust Store Using an Allowlist</P><P>By default, the Cloud Connector does not trust any on-premise system when connecting to it via HTTPS. To enable secured communication, you must add trusted certificate authorities (CAs) to the allowlist. Any server certificate that has been issued by one of those CAs will be considered trusted.</P><P>To maintain the trust store, in the Cloud Connector Administration UI navigate to Configuration → ON PREMISE → Trust Store</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_8-1764767161650.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348063i0179A555EA0B44B2/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_8-1764767161650.png" alt="Saikat_Roy1_8-1764767161650.png" /></span></P><P>Caution</P><P>If you do not want to specify explicit CAs you’re going to trust, but rather trust all back ends, you can switch off the handle. In this case, the allowlist is ignored. This option is considered less secure, since all back ends are trusted now.</P><P>Exposing an AS ABAP-Based On-Premise SAP System</P><P>To allow your cloud applications to access a certain back end system on the intranet via HTTP, you must specify this system in the Cloud Connector.</P><P>To do so, start the wizard offered in the Cloud Connector Administration UI at Cloud To On-Premise → ACCESS CONTROL.</P><P>To expose an AS ABAP-Based on-premise SAP system, provide the following:</P><OL><LI>Back-end Type: ABAP System.</LI><LI>Protocol: HTTP or HTTPS.</LI><LI>Internal Host and Internal Port: the actual host and port under which the on-premise SAP system can be reached within your intranet.</LI><LI>Virtual Host and Virtual Port: enter the host name exactly as specified in the <URL> property of the HTTP destination configuration in SAP BTP. The virtual host can be a fake name and does not need to exist. The Virtual Port allows you to distinguish between different entry points of your back end system, for example, HTTP/80 and HTTPS/443, and to have different sets of access control settings for them.</LI><LI>Allow Principal Propagation: defines if any kind of principal propagation should be allowed over this mapping. If selected, also define what kind of Principal Type is sent to the on-premise SAP system within the HTTP request.</LI><LI>System Certificate for Logon: select if the Cloud Connector's system certificate should be used for authentication at the back end.</LI><LI>Host In Request Header lets you define which host is used in the host header that is sent to the target server. By choosing Use Internal Host, the actual host name is used. When choosing Use Virtual Host, the virtual host is used.</LI><LI>Description: optional description text</LI><LI>Check Internal Host: this allows you to make sure the Cloud Connector can indeed access the on-premise SAP system.</LI></OL><P><STRONG><U>Brown Field Implementation Approach: </U></STRONG></P><P><STRONG>Back Up and Restore Your Cloud Connector Configuration</STRONG></P><P>This method is very help full for those who doesn’t want to perform all the above-mentioned steps again and again. Specifically in the RISE migration projects this method is very effective. So many of you probably wonder that Cloud Connector doesn't store any data, then how to Backup and Restore it.</P><P>Well, it holds all the configuration and customizations, which is performed to its desired state. you should take a backup of its configuration.</P><P>To back up or restore your Cloud Connector configuration:</P><P><STRONG>Step 1:</STRONG></P><UL><LI>Choose Connector in the Cloud Connector Administration UI main menu.</LI><LI>Use the buttons on the upper right to back up or restore the configuration.</LI><LI>Specify a password for the backup archive.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_9-1764767161653.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348066i1F2214563D983810/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_9-1764767161653.png" alt="Saikat_Roy1_9-1764767161653.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_10-1764767161657.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348067i9AAEEE18917D9C65/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_10-1764767161657.png" alt="Saikat_Roy1_10-1764767161657.png" /></span></P><P>Set the password and click on the ‘Backup‘ it will create a zip file.</P><P><STRONG>Step 2</STRONG>: Take a screenshot of the existing Proxy</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_11-1764767161660.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348065i0CBBCA9A05E3541F/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_11-1764767161660.png" alt="Saikat_Roy1_11-1764767161660.png" /></span></P><P><STRONG>Step 3</STRONG>: Take a backup of the OS level path:</P><P>/opt/sap/scc</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_12-1764767161664.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348070i61CC6B65E3718D90/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_12-1764767161664.png" alt="Saikat_Roy1_12-1764767161664.png" /></span></P><P><STRONG>Step 4:</STRONG> Follow all the above mentioned 3 steps and transfer the Backup Zip file to the target. Restore the backup zip file in the target.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_13-1764767161667.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348069i644140DE0E9A480F/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_13-1764767161667.png" alt="Saikat_Roy1_13-1764767161667.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_14-1764767161671.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348068i409B3FD66EAEDBEF/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_14-1764767161671.png" alt="Saikat_Roy1_14-1764767161671.png" /></span></P><P>It will ask the path for the zip file, and ask the password which was set while creating the zip file. And it will ask the Source Cloud Connector Console login password.</P><P><STRONG>Step 5:</STRONG> It will automatically restart and configure the LDAP. And then after login the Cloud Connector with the Source Console login password and set the proxy accordingly.</P><P><STRONG>Monitoring Cloud Connector</STRONG></P><P><STRONG>Monitoring Tools</STRONG></P><P>By monitoring key metrics, such as response times, resource utilization, and throughput, you can optimize your application's performance and troubleshoot problems. Alerts and thresholds for various metrics help you detect issues before they become critical problems. By continuously monitoring key components such as servers, databases, network connectivity, and application services, you can identify any failures or outages and take immediate steps to address them.</P><P>Monitoring the Cloud Connector is crucial for maintaining its performance, availability, security, and user experience. It allows you to proactively address issues, optimize resources, and ensure that your application meets the expectations of your users.</P><P>In this lesson, you will find the available monitoring tools and you will check the operational state of Cloud Connector. Also, you will learn how to work with hardware metrics, monitor cloud to on-premise connections and vice versa. Finally, you will do alerting and audit logging.</P><P>There are three primary tools for monitoring the Cloud Connector:</P><OL><LI>OS Command Line: From the host where the Cloud Connector is running, you can verify the operational state.</LI><LI>SAP BTP Cockpit:</LI><UL><LI>The SAP BTP Cockpit contains a Connectivity section, where users can check the status of the Cloud Connector(s) attached to the current subaccount.</LI><LI>This section lists the Cloud Connector ID, version, used Java runtime, high availability setup, and the exposed back-end system(s).</LI></UL><LI>The Cloud Connector UI</LI><UL><LI>The primary tool for monitoring the Cloud Connector is the Cloud Connector Administration UI. This is available in a web browser interface.</LI></UL></OL><P>There are also Cloud Connector monitoring APIs if you wish to include performance information in your own monitoring tool.</P><P>Checking the Operational State</P><P>The first thing to monitor is whether the Cloud Connector is actually running. You can do it in three ways:</P><OL><LI>From the OS Command Line</LI></OL><P>In Windows, the Cloud Connector is registered as a Windows service. It’s configured to start after installation, and restart upon host reboot. To check the state of the Cloud Connector, run the command:</P><P>sc query "SAP Cloud Connector"</P><P>The output would be:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_15-1764767161675.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348072i394344535B1D6EEE/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_15-1764767161675.png" alt="Saikat_Roy1_15-1764767161675.png" /></span></P><P>In Linux, the Cloud Connector is set up as a daemon process. It’s configured to start after installation, and restart automatically upon host reboot. To check the state of the Cloud Connector, run one of the following commands (depending on your Linux distribution):</P><UL><LI>service scc_daemon status</LI><LI>systemctl status scc_daemon</LI></UL><P>The output would be:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_16-1764767161689.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348073iF409638778557AE2/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_16-1764767161689.png" alt="Saikat_Roy1_16-1764767161689.png" /></span></P><OL><LI>From the SAP BTP Cockpit</LI></OL><P>In the Connectivity Section, choose Cloud Connectors. If the Cloud Connector is running, its information is displayed:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_17-1764767161691.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348071i3E0DBC87FDD3D7CF/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_17-1764767161691.png" alt="Saikat_Roy1_17-1764767161691.png" /></span></P><P>If the Cloud Connector isn’t running, the SAP BTP Cockpit displays the message:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_18-1764767161695.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348074i893408F83B0F81F0/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_18-1764767161695.png" alt="Saikat_Roy1_18-1764767161695.png" /></span></P><OL><LI>From the Cloud Connector Administration UI</LI></OL><P>If the Cloud Connector isn't running, the Cloud Connector Administration UI isn’t accessible and can't be started.</P><P>Hardware Metrics</P><P>The second aspect to monitor is hardware. To check the current state of critical system resources, use the Cloud Connector Administration UI. Select Hardware Metrics Monitor from the main menu.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_19-1764767161700.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348075i7E9A9B921E8EF0A8/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_19-1764767161700.png" alt="Saikat_Roy1_19-1764767161700.png" /></span></P><P>The monitor displays key hardware resource usage. The monitor also displays history graphs for various metrics.</P><P>CPU Usage:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_20-1764767161706.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348076i3D414670D06F6A36/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_20-1764767161706.png" alt="Saikat_Roy1_20-1764767161706.png" /></span></P><P>Physical Memory Usage:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_21-1764767161711.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348078i4D9C1F68498ADCF9/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_21-1764767161711.png" alt="Saikat_Roy1_21-1764767161711.png" /></span></P><P>Java Heap Usage:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_22-1764767161714.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348079i56235259C898955F/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_22-1764767161714.png" alt="Saikat_Roy1_22-1764767161714.png" /></span></P><P>Disk Usage:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Saikat_Roy1_23-1764767161718.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348077i901E9E451BA3B53B/image-size/medium?v=v2&px=400" role="button" title="Saikat_Roy1_23-1764767161718.png" alt="Saikat_Roy1_23-1764767161718.png" /></span></P>2025-12-03T14:12:23.347000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/sap-user-access-management-in-a-hybrid-landscape-architecture-and-key/ba-p/14293827SAP User Access Management in a Hybrid Landscape – Architecture and Key Concepts (Part 1)2025-12-22T18:05:01.288000+01:00SubbuIyerhttps://community.sap.com/t5/user/viewprofilepage/user-id/179044<P>This blog is Part 1 of a 3-part series on SAP User Access Management in a Hybrid Landscape.</P><P>• Part 1 – Architecture and Key Concepts (this post)<BR />• <A href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-user-access-management-in-a-hybrid-landscape-business-roles-and/ba-p/14293839" target="_self">Part 2 – Business Roles and Provisioning Models</A><BR />• <A href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-user-access-management-in-a-hybrid-landscape-challenges-and-mitigation/ba-p/14293851" target="_self">Part 3 – SAP IAG Two-Tenant Model: Challenges and Mitigation Strategies</A></P><H2 id="toc-hId-1767393268">Purpose</H2><P>As organizations continue to adopt SAP cloud solutions, hybrid SAP landscapes—combining SAP S/4HANA in on-premise or private cloud environments with SAP SaaS applications and SAP BTP—have become increasingly common. While this model enables flexibility and innovation, it also introduces new challenges in managing user access consistently across systems.</P><P>This blog focuses on the architecture and key concepts behind managing user access in a hybrid SAP landscape using SAP GRC Access Control and SAP Identity and Access Governance (IAG) via the IAG Access Control Bridge. It outlines how these components work together with SAP Cloud Identity Services to provide centralized governance, controlled provisioning, and audit-ready access management across both on-premise and cloud applications.</P><P>Rather than providing step-by-step configuration instructions, this blog shares practical architectural guidance and implementation insights based on real-world project experience, complementing SAP’s official documentation and helping practitioners understand how to design an effective hybrid access management framework.</P><H2 id="toc-hId-1570879763">Scope and Landscape Overview</H2><P><SPAN>The scope of this blog is to outline an integrated user access management approach for a hybrid SAP landscape, covering both on-premise/private cloud ERP systems and SAP public cloud and SaaS applications.</SPAN></P><H3 id="toc-hId-1503448977">In-Scope Systems</H3><UL><LI>SAP S/4HANA (On-Premise or RISE Private Cloud)</LI><LI>SAP GRC Access Control 12</LI><LI>SAP Cloud Identity Access Governance – Integration Edition (IAG AC Bridge)</LI><LI>SAP Cloud Identity Services (IAS & IPS)</LI><LI>SAP Cloud Connector</LI><LI>SAP SaaS Applications</LI><LI>SAP BTP Applications</LI></UL><H2 id="toc-hId-1177852753">Target Architecture</H2><H3 id="toc-hId-1110421967">High-Level Architecture Overview</H3><P>The target architecture defines the end-to-end user access governance and provisioning model for a hybrid SAP landscape. This model integrates on-premise and private cloud SAP systems with SAP Public Cloud and SaaS applications, ensuring cohesive and centralized oversight. The solution leverages several key SAP technologies—SAP GRC Access Control, SAP Identity and Access Governance (IAG – Integration Edition), SAP Cloud Identity Services, and SAP Cloud Connector—to deliver consistent approval workflows, centralized governance, and automated provisioning across the entire SAP environment.</P><P><SPAN>The following diagram illustrates the reference architecture for SAP user access management in a hybrid landscape, highlighting the interaction between SAP GRC Access Control, SAP IAG AC Bridge, SAP Cloud Identity Services, and SAP SaaS applications.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SubbuIyer_0-1766084227863.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353905i06048C09E85CC35B/image-size/large?v=v2&px=999" role="button" title="SubbuIyer_0-1766084227863.png" alt="SubbuIyer_0-1766084227863.png" /></span></P><H3 id="toc-hId-913908462">SAP GRC Access Control: Central Governance for Hybrid SAP Landscapes</H3><H4 id="toc-hId-846477676">Overview</H4><P>SAP GRC Access Control operates as the primary governance and control layer for user access management across the hybrid SAP landscape. It provides a unified framework supporting both on-premise/private cloud and public cloud SAP applications, enabling organizations to maintain comprehensive oversight and streamlined processes for provisioning and managing user access.</P><H4 id="toc-hId-649964171">Key Functional Capabilities</H4><UL><LI>Access Request Management (ARM): Provides a centralized platform for intake and processing of access requests. Structured approval workflows ensure that every request is systematically reviewed and authorized according to organizational policies.</LI><LI>Access Risk Analysis: Performs real-time Segregation of Duties (SoD) analysis for on-premise systems and supported cloud environments, enabling proactive identification and mitigation of user access risks.</LI><LI>Business Role Management: Facilitates the design, maintenance, and lifecycle management of business roles, supporting the evolving access requirements of the organization.</LI></UL><H3 id="toc-hId-324367947">Integration with On-Premise and Private Cloud SAP Systems</H3><P>SAP GRC Access Control is directly integrated with core on-premise and private cloud SAP systems, such as SAP S/4HANA, SAP MDG, and SAP BW/4HANA. This integration is achieved through RFC-based communication, enabling essential functions including user provisioning and management, risk analysis and reporting, and business role management. All provisioning and governance activities for these systems are managed from SAP GRC Access Control, ensuring thorough audit traceability and alignment with internal control requirements.</P><H3 id="toc-hId-127854442">Cloud Integration via SAP Cloud Connector and SAP IAG</H3><P>The SAP Cloud Connector establishes a secure communication channel between the SAP cloud environment and the on-premise SAP landscape. Within the architecture, the SAP IAG subaccount on the Cloud Connector serves as an integration bridge, connecting SAP GRC Access Control with SAP Cloud Identity and Access Governance (IAG). This configuration enables cloud-to-on-premise RFC communication with GRC Access Control, supports SoD authorization checks, and allows approved access requests in GRC to be extended to SAP SaaS applications. This approach ensures organizations can apply their established GRC processes consistently across both on-premise and cloud environments.</P><H3 id="toc-hId--143890432">SAP Cloud Identity and Access Governance (IAG) Integration for SAP SaaS Applications</H3><P>Integration with SAP SaaS applications is facilitated through SAP Cloud Identity and Access Governance (IAG), which operates on the SAP Business Technology Platform (BTP). For clarity and security, IAG is deployed in a dedicated BTP subaccount, using the integration edition known as the IAG AC Bridge. Within this subaccount, a destination is configured to connect SAP GRC Access Control to the SAP Cloud environment via the Cloud Connector, ensuring secure and efficient access management. The IAG application is accessed through a dedicated URL, allowing administrators to manage configurations as required.</P><P>During the initial setup of IAG, administrators create an application entry for each SAP SaaS application that will be managed. This ensures that every application is properly integrated and governed within the overall access management framework. IAG utilizes SAP Cloud Identity Services for user provisioning, leveraging the Identity Provisioning Service to automate and monitor user access. For SaaS applications supporting direct provisioning through SCIM, a proxy system is configured for each application in Identity Provisioning, enabling secure and seamless user provisioning across the SAP SaaS ecosystem.</P><H2 id="toc-hId--47000930"><STRONG>Summary and Next Steps</STRONG></H2><P>This first part of the series establishes the architectural foundation for SAP user access management in a hybrid landscape. By combining SAP GRC Access Control with SAP IAG AC Bridge and SAP Cloud Identity Services, organizations can extend centralized governance into SAP cloud applications while maintaining strong security and compliance controls.</P><P>In Part 2, we will focus on GRC Business Roles and provisioning models, including direct and federated access patterns across SAP S/4HANA and SAP SaaS applications.</P>2025-12-22T18:05:01.288000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/sap-user-access-management-in-a-hybrid-landscape-business-roles-and/ba-p/14293839SAP User Access Management in a Hybrid Landscape – Business Roles and Provisioning Models (Part 2)2025-12-22T18:06:45.115000+01:00SubbuIyerhttps://community.sap.com/t5/user/viewprofilepage/user-id/179044<H2 id="toc-hId-1767393301">Introduction</H2><P>In <A href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-user-access-management-in-a-hybrid-landscape-architecture-and-key/ba-p/14293827" target="_self">Part 1</A> of this series, we explored the reference architecture for managing user access in a hybrid SAP landscape using SAP GRC Access Control, SAP Identity and Access Governance (IAG) via the IAG AC Bridge, and SAP Cloud Identity Services.</P><P>With the architectural foundation in place, this second part shifts focus to how access is actually designed and provisioned across on-premise and SAP cloud applications. In particular, it highlights the role of GRC Business Roles and explains the different provisioning models used for SAP S/4HANA and SAP SaaS applications.</P><P>Understanding these concepts is essential for building scalable, auditable, and maintainable access management processes in hybrid SAP environments.</P><H2 id="toc-hId-1570879796">Access Control: Business Role Management</H2><H3 id="toc-hId-1503449010">Overview of GRC Business Roles</H3><P>In SAP GRC, a Business Role comprises a set of access rights, permissions, and authorizations that can be assigned to multiple users who perform similar functions. Unlike traditional technical roles, Business Roles are designed to be system-independent, allowing organizations to streamline access management across various SAP applications. In a typical SAP Greenfield implementation, these Business Roles are crafted to reflect users' job functions or positions, ensuring both consistency and security for access to on-premise and cloud-based SAP solutions such as SAP S/4HANA, SAP Ariba, and SAP Sales Cloud.</P><H3 id="toc-hId-1306935505">Significance of GRC Business Roles in a Hybrid Landscape</H3><P>The adoption of GRC Business Roles is especially crucial in a hybrid SAP landscape that encompasses both on-premise and cloud applications. By centralizing access provisioning and abstracting user permissions from the underlying technical roles, GRC Business Roles provide a unified structure for user access management. This approach ensures that users have consistent and appropriate access regardless of whether their work takes place in S/4HANA, Ariba, Sales Cloud, or a combination of these platforms. As organizations transition toward hybrid and cloud-centric architectures, GRC Business Roles facilitate secure, scalable, and efficient user access management—reducing complexity for administrators and minimizing risk by aligning permissions with business needs. This unified approach directly supports the document’s objectives of robust SAP User Access Management and governance across disparate systems.</P><H3 id="toc-hId-1110422000">Structure of GRC Business Roles</H3><P>A GRC Business Role aggregates one or more technical roles from different systems into a single logical unit, simplifying the assignment process and ensuring users have access to the necessary tools and applications for their roles. Each Business Role consists of Technical Roles specific to individual applications or systems. These Technical Roles grant permissions for distinct modules or applications (e.g., "Accounts Payable Manager" in S/4HANA or "Requestor" in Ariba). GRC Business Roles are mapped to Technical Roles spanning multiple systems, such as:</P><UL><LI>SAP S/4HANA: Business process roles (e.g., Accounts Payable Manager, Maintenance Technician).</LI><LI>SAP Ariba: Groups or functional roles (e.g., Procurement Manager, Requestor).</LI><LI>SAP Sales Cloud: Sales-related roles (e.g., Sales Manager, Operations</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SubbuIyer_0-1766085561593.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353906i8B3E60A5C153857F/image-size/large?v=v2&px=999" role="button" title="SubbuIyer_0-1766085561593.png" alt="SubbuIyer_0-1766085561593.png" /></span></P><H3 id="toc-hId-913908495">Key Benefits of GRC Business Roles in Project Implementation</H3><UL><LI>Unified access provisioning across SAP S/4HANA and SAP SaaS applications, reducing complexity.</LI><LI>Consistent access mapping aligned with Segregation of Duties (SoD) requirements and regulatory compliance.</LI><LI>Centralized role definition and assignment in GRC simplifies access management for administrators.</LI><LI>Automatic updates to technical roles when business roles change, ensuring accuracy.</LI><LI>Comprehensive access provisioning for users' job functions across multiple systems via a single Business Role.</LI></UL><H3 id="toc-hId-717394990"><SPAN>Business Role Design Approach</SPAN></H3><P>The design of GRC Business Roles follows a structured process to ensure alignment with organizational job roles and access requirements:</P><H4 id="toc-hId-649964204">Technical Role Design</H4><UL><LI>The Security Team develops Technical Roles for each application, guided by detailed access requirements from:<UL><LI>Process Design Documents: Identify transactions, applications, and authorizations required for each business process.</LI><LI>User Stories: Outline access needs based on end-user roles and responsibilities.</LI><LI>Workshops and Discussions: Collaborate with process teams to specify operational transactions and applications for each role.</LI></UL></LI></UL><H4 id="toc-hId-453450699">Alignment with Organizational Job Roles</H4><UL><LI>GRC Business Roles are structured according to users’ jobs and responsibilities as defined by the Organizational Change Management (OCM) Team.</LI><LI>User job roles are defined based on L3 Processes, representing detailed activities within each business process.</LI><LI>L3 Processes linked to each job role are reviewed to determine the necessary technical roles and access rights. </LI><LI>The Security Team creates GRC Business Roles based on these definitions, consolidating required technical roles across applications to ensure consistent and accurate access provisioning.</LI></UL><H2 id="toc-hId--1228244">Detailed Provisioning Flows by Application Type</H2><P>This section will provide an overview of the provisioning workflows for various applications within a hybrid environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SubbuIyer_1-1766085865271.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353907i8D76E491EB6F27D2/image-size/large?v=v2&px=999" role="button" title="SubbuIyer_1-1766085865271.png" alt="SubbuIyer_1-1766085865271.png" /></span></P><H3 id="toc-hId--143890399">SAP S/4HANA (On-Premise / Private Cloud)</H3><P>Provisioning for SAP S/4HANA, whether deployed on-premise or in a private cloud environment, is facilitated through SAP GRC Access Control. The process is initiated when a user submits an access request using the GRC Access Request Management (ARM) module. Once the access request is submitted, it progresses through an approval workflow. This workflow typically involves the user's manager, the role owner, or the security team, depending on the organization's structure and policies.</P><P>During the approval process, a Segregation of Duties (SoD) risk analysis is conducted within GRC. This analysis ensures compliance with internal control requirements and helps minimize potential risks associated with conflicting access privileges. Upon successful approval, SAP GRC automatically assigns the designated roles directly to the S/4HANA system. The user's master record is subsequently updated through standard SAP connectors, enabling seamless integration and ensuring the accuracy of user data.</P><P>All audit logs generated during these provisioning activities are maintained within GRC. This comprehensive logging supports compliance requirements and enhances traceability. Notable characteristics of this provisioning flow include real-time SoD checks and immediate role assignment.</P><H2 id="toc-hId--47000897">Direct Provisioning to SAP SaaS Applications (Ariba, SuccessFactors, SAC) via SCIM API</H2><P>Provisioning for SAP SaaS applications that support the SCIM API, including Ariba, SuccessFactors, and SAP Analytics Cloud (SAC), is managed through SAP IAG leveraging the Identity Provisioning Service (IPS). The access request process is initiated using GRC Access Request, and the subsequent approval workflow follows a structure similar to the S/4HANA scenario. Once the access request is approved, GRC communicates the request to IAG using the Access Control Bridge (AC Bridge).</P><P>A scheduled provisioning job then runs at regular intervals to grant the requested access directly within the relevant SaaS applications. This automated process helps streamline user access management for cloud-based SAP solutions and ensures timely provisioning of roles.</P><H2 id="toc-hId--243514402">Indirect Provisioning to SAP SaaS Applications (FSM, BTP)</H2><P>For applications such as SAP Business Technology Platform (BTP) or Field Service Management (FSM), provisioning is managed by SAP IAG through the assignment of IAS Groups associated with these applications. Users submit access requests for specific IAS Groups, and these requests are routed through the required approval workflow. Upon approval, SAP IAG provisions the relevant IAS groups to the users.</P><P>For BTP, the IAS groups that are set up are linked to BTP role collections. When users next log in, they receive access to these specific collections. For applications such as FSM, which can interpret the assigned FSM IAS groups and map them to user policy groups within a company’s FSM environment, a scheduled read job on IPS will assign the appropriate user policy group and company automatically.</P><P><STRONG>Please note</STRONG>: While Field Service Management (FSM) may not be explicitly included under an integration scenario for IAG, it is identified as both a source and target system within <A href="https://help.sap.com/docs/cloud-identity-services/cloud-identity-services/supported-systems?locale=en-US&version=LATEST" target="_blank" rel="noopener noreferrer">Identity Provisioning</A>. Consequently, it is appropriate to utilize a combination of provisioning processes in order to provision end user access to FSM in such circumstances.</P><H2 id="toc-hId--440027907">Summary and What’s Next</H2><P>In this part of the series, we explored how GRC Business Roles and provisioning models enable scalable and controlled user access across hybrid SAP landscapes. By abstracting technical roles into business-aligned constructs and leveraging both direct and federated provisioning models, organizations can maintain strong governance while supporting diverse SAP applications.</P><P>In Part 3, we will focus on the SAP IAG two-tenant model, examining why it presents challenges in real-world implementations and how project teams can mitigate associated risks.</P>2025-12-22T18:06:45.115000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/sap-cloud-connector-subaccount-certificate-automated-renewal-has-arrived/ba-p/14305218SAP Cloud Connector Subaccount Certificate Automated Renewal has arrived!!2026-01-11T23:00:00.036000+01:00pjcoolshttps://community.sap.com/t5/user/viewprofilepage/user-id/944<P>I wrote a Blog post some time ago (back in 2020!) in the #SAPCommunity about SAP BTP Cloud Connectivity issues due to expired certificates. The BTP Subaccount certificates needed to be regularly renewed - every 12 months in fact and it could only be carried out manually. While SAP provided information to customers about upcoming renewals (in later releases of the SAP Cloud Connector) with messages and Alerts within the SAP Cloud Connector - certificates that expired caused no end of trouble. This still causes a lot of issues for customers today. </P><P>The previous blog post has reached over 60K views so you can see a fair number of customers experienced this issue. <A href="https://community.sap.com/t5/technology-blog-posts-by-members/sap-cloud-connectivity-issues-due-to-expired-certificate/ba-p/13431648" target="_blank">https://community.sap.com/t5/technology-blog-posts-by-members/sap-cloud-connectivity-issues-due-to-expired-certificate/ba-p/13431648</A></P><P>The goods news is - SAP released an update to the SAP Cloud Connector application to automate these renewals. Yes - you have read this correctly! The update 2.18.0 was released in March 2025 and I only recently found out that this was possible. So if you have a previous version of the SAP Cloud Connector running then schedule an upgrade ASAP. I also wrote instructions for upgrading the Cloud Connector for Linux and Windows here -> <A href="https://community.sap.com/t5/technology-blog-posts-by-members/upgrading-the-sap-cloud-connector-for-linux-os/ba-p/13338502" target="_blank">https://community.sap.com/t5/technology-blog-posts-by-members/upgrading-the-sap-cloud-connector-for-linux-os/ba-p/13338502</A> and <A href="https://community.sap.com/t5/technology-blog-posts-by-members/upgrading-the-sap-cloud-connector-for-windows-os/ba-p/13314729" target="_blank">https://community.sap.com/t5/technology-blog-posts-by-members/upgrading-the-sap-cloud-connector-for-windows-os/ba-p/13314729</A></P><P>To automate the Subaccount certificate renewal process multiple steps are required. This involves the SAP Cloud Connector as well as the relevant BTP subaccount. <A href="https://me.sap.com/notes/0003632133" target="_self" rel="noopener noreferrer">SAP note 3632133</A> covers the steps required to automate the Subaccount certificate renewal but I will cover this now. Here are the steps to automate renewal of Subaccount certificates so you don't have to worry about this again! </P><OL><LI><STRONG>To enable automatic renewal in the SAP Cloud Connector. <BR /></STRONG>Make sure when setting up Subaccount connectivity within the SAP Cloud Connector to toggle the [Auto Renewal] and set to ON. For subaccounts that are already set up just Edit the connection. </LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SCC auto renewal option_.png" style="width: 515px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/360129i8FE8B5C9A59D418B/image-dimensions/515x317/is-moderation-mode/true?v=v2" width="515" height="317" role="button" title="SCC auto renewal option_.png" alt="SCC auto renewal option_.png" /></span></P><P>2. <STRONG>To enable Auto Renewal in SAP BTP Cockpit:<BR /><BR /></STRONG></P><OL><LI>Log in to the SAP BTP Cockpit;</LI><LI>Go to the respective Subaccount ><SPAN> </SPAN><STRONG>Connectivity</STRONG><SPAN> </SPAN>> "<STRONG>Cloud Connectors</STRONG>";</LI><LI>Enable the "<STRONG>Allow Automatic Subaccount Certificate Refresh</STRONG>" toggle.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="cert renewal - BTP subaccount.png" style="width: 681px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/360235i626358A26D9F09D5/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="cert renewal - BTP subaccount.png" alt="cert renewal - BTP subaccount.png" /></span><BR /><DIV class=""> </DIV><BR />As per the note, this is how the renewal works. <BR /><DIV class=""> </DIV><P><STRONG><SPAN>How Renewal Works</SPAN><BR /></STRONG></P><UL><LI>The renewal is triggered n + 7 days before certificate expiry, where n is the alert threshold (configurable in Observation Configuration -><SPAN> </SPAN><A class="" href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/alerting" target="_blank" rel="noopener noreferrer">Alerting</A>);</LI><LI>If the renewal attempt fails, it is retried every 12 hours; If not successful within 7 days, the automatic renewal is cancelled.</LI><LI>No user credentials are involved in the automatic renewal of a BTP subaccount certificate. The authentication is handled by the currently valid subaccount certificate, provided that an administrator has enabled the auto-renewal feature for the subaccount on the BTP side too.</LI></UL></LI></OL><P>So, if the above instructions are followed you should not experience issues with Cloud connectivity again! </P><P>The other good news is that this was submitted as an improvement request via the Customer influence engagement portal. In retrospect I wrote a blog post about it but did not submit a customer engagement initiative request to make an improvement but good to see others did. 54 others also voted for it. 5 years is also too long for this to be delivered given the amount of issues this caused for a lot of the customers I work with on a daily basis but glad that SAP has delivered this now. </P><P><A href="https://influence.sap.com/sap/ino/#/idea/251489/?section=sectionDetails" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#/idea/251489/?section=sectionDetails</A></P><P>Overall, I am really happy that SAP has delivered this functionality and I really hope customers plan to do upgrades to the SAP Cloud Connector to take advantage of this update ASAP. </P><P>As always, thanks for reading and hopefully this helps! </P>2026-01-11T23:00:00.036000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/systems-not-able-to-process-messages-via-sap-cloud-connector-as-of-q1-2026/ba-p/14311160Systems not able to process messages via SAP Cloud Connector as of Q1/20262026-01-21T06:56:22.658000+01:00victorggarciahttps://community.sap.com/t5/user/viewprofilepage/user-id/112964<P>Nowadays SAP Cloud Connector is a critical system for customers to process their integrations for their core business processes.<BR /><BR />SAP has communicated some months ago about <SPAN>switching to the "DigiCert TLS RSA4096 Root G5" and “DigiCert Global Root G3” Public Key Infrastructures (PKI). This is only one of the many KBAs created around this topic KBA</SPAN> "<SPAN><A href="https://me.sap.com/notes/3566727" target="_self" rel="noopener noreferrer">3566727</A> - Root Certificate Replacement in the SAP BTP, Cloud Foundry Environment" </SPAN><BR /><BR />Recently we have seen many customers reporting issues regarding Cloud Connector not processing messages.<BR /><BR />In Cloud Integration this may be presented as <SPAN>an HTTP response '<STRONG>503: Service Unavailable.' The accompanying error message states: 'org.apache.cxf.interceptor.Fault: Could not send Message., cause: org.apache.cxf.transport.http.HTTPException: HTTP response '503: Service Unavailable. There is no SAP Cloud Connector (SCC) connected to your subaccount matching the requested tunnel for subaccount</STRONG>.'"<BR /><BR />Customers get confused, because the Cloud Connector displays that the subaccount is connected.<BR /></SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="victor3_2-1768919554327.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/363399iA0F4D7D3E9D614F0/image-size/medium?v=v2&px=400" role="button" title="victor3_2-1768919554327.png" alt="victor3_2-1768919554327.png" /></span></P><P>On BTP Cockpit, they also see the Cloud Connector. <BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="victor3_3-1768919627833.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/363400iD050AE8E8DCF02CB/image-size/medium?v=v2&px=400" role="button" title="victor3_3-1768919627833.png" alt="victor3_3-1768919627833.png" /></span></P><P>However, the messages sent to be processed via this Cloud Connector still fail. <BR /><BR />How to find the cause?<BR /><BR />Set the traces as per the following:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="victor3_4-1768919776982.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/363402i40F93403E6CA7B20/image-size/medium?v=v2&px=400" role="button" title="victor3_4-1768919776982.png" alt="victor3_4-1768919776982.png" /></span><BR />Reproduce the issue and download the "<SPAN>scc_core.trc" trace file. Then revert the trace settings as before.<BR /><BR />Inside the file "scc_core.trc", look for string "<STRONG>PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target</STRONG>."<BR /><BR />For example:<BR /></SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="victor3_5-1768919959952.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/363405iF5D5CD9540D18534/image-size/medium?v=v2&px=400" role="button" title="victor3_5-1768919959952.png" alt="victor3_5-1768919959952.png" /></span></P><P>Your issue is likely caused because of a missing certificate. Check this KBA "<SPAN><A href="https://me.sap.com/notes/3583377" target="_self" rel="noopener noreferrer">3583377</A> - Cloud Connector will fail to connect to subaccount"<BR /><BR />The certificates come with the JVM, review and ensure you have at least the versions below:<BR /></SPAN></P><UL><LI>SAP JVM 8.1.097</LI><LI>SapMachine 11.0.22 (SapMachine 11 is out of maintenance, though)</LI><LI>SapMachine 17.0.10</LI><LI>SapMachine 21.0.2</LI><LI>Oracle JDK 8u401</LI></UL><P><SPAN>If your version is under the ones mentioned above, update as per this documentation <A class="" href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/update-java-vm" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/update-java-vm</A>.<BR /><BR />In case you have <STRONG>previously imported an own CA root certificate into the JVM keystore</STRONG> (for example a special certificate needed by their local LDAP system). Then review this approach mentioned by <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/15899">@Ulrich_Schmidt1</a>. <BR /><BR /></SPAN>"What is interesting to know: there are even further problems, complicating this issue. If a user had previously imported an own CA root certificate into the JVM keystore (for example a special certificate needed by their local LDAP system), then the installer of the JVM apparently notices that the keystore has been modified and will not update it!</P><P><U>This means, even after the required version of the JVM has been installed, it can happen that the new DigiCert G5 certificate is still not available!</U></P><P>Fixing this can then get quite tricky: e.g.</P><OL><LI>Make a fresh install of the JVM into a separate directory</LI><LI>Reimport the "special" certificate into its keystore</LI><LI>Change JAVA_HOME in the SCC's daemon to the new directory"</LI></OL><P><SPAN>This should resolve your issue, if not, you may open an incident with BC-MID-SCC.<BR /><BR />Best Regards,<BR />Victor</SPAN></P>2026-01-21T06:56:22.658000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/connecting-sap-s-4hana-on-prem-directly-to-advanced-event-mesh-using-cloud/ba-p/14313643Connecting SAP S/4HANA On-Prem Directly to Advanced Event Mesh using Cloud Connector - finally!2026-01-23T14:43:25.992000+01:00sissyhaehttps://community.sap.com/t5/user/viewprofilepage/user-id/8591<P>With Package Integration 1.4.0 (December 2025), the Advanced Event Mesh Adapter for SAP Integration Suite delivers several noteworthy updates.</P><P>One of these has been requested repeatedly by customers, partners, and SAP architects working in hybrid landscapes:<BR />official support for on-premise connectivity via the SAP Cloud Connector.</P><P>In addition to this key enhancement, the release also includes other technical changes, such as an update to the default acknowledgment mode.</P><P><STRONG>What’s New in Package Integration 1.4.0? </STRONG></P><H3 id="toc-hId-1917715106"><span class="lia-unicode-emoji" title=":keycap_1:">1️⃣</span>On-Premise Connectivity via SAP Cloud Connector</H3><P>The AEM Adapter can now <STRONG>officially route traffic to on-premise systems through the SAP Cloud Connector</STRONG>.</P><P>This enables a supported hybrid architecture where:</P><P>S/4HANA on-prem produces events<BR />SAP AEM distributes them<BR />Network security remains intact</P><P><STRONG>Important note from the official release notes:</STRONG></P><BLOCKQUOTE><P>Avoid mixing proxy configurations within the same tenant to prevent unexpected routing behavior.</P></BLOCKQUOTE><P>This is especially critical in complex hybrid tenants.</P><H3 id="toc-hId-1721201601"><span class="lia-unicode-emoji" title=":keycap_2:">2️⃣</span>Change of Default Acknowledgment Mode</H3><P>The default acknowledgment mode has changed from:<BR /><STRONG> Automatic Immediate</STRONG><BR />to <STRONG>Automatic On Exchange Complete</STRONG></P><P>Technical implications:</P><UL><LI><P>Clearer delivery semantics</P></LI><LI>improved error handling</LI><LI>Better alignment with enterprise-grade integration scenarios</LI></UL><P>Package Integration 1.4.0 introduces multiple technical improvements.<BR />The Cloud Connector support for the Advanced Event Mesh Adapter is a long-requested and architecturally significant enhancement.</P><P>It enables a clean, supported reference architecture to connect SAP S/4HANA on-premise directly to SAP Advanced Event Mesh, using SAP Cloud Connector as the secure hybrid backbone.</P><P>For SAP architects, this removes a major blocker when designing modern, event-driven hybrid landscapes.<BR /><BR /><A href="https://api.sap.com/package/AdvancedEventMeshAdapterforSAPIntegrationSuite/documents" target="_blank" rel="noopener noreferrer">https://api.sap.com/package/AdvancedEventMeshAdapterforSAPIntegrationSuite/documents</A></P>2026-01-23T14:43:25.992000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/is-this-the-right-way-to-build-talent-intelligent-hub-integration-with-sap/ba-p/14328814🤔 Is This the Right Way to Build Talent Intelligent Hub Integration with SAP Gene AI Hub-Extension2026-02-15T18:36:04.178000+01:00RajeshKPutumbakahttps://community.sap.com/t5/user/viewprofilepage/user-id/2081121<P>****Please check design at the bottom of this article (available for download)***</P><P>I've been sketching out an architecture for extending SAP SuccessFactors with AI-powered skills matching and requisition management. But before going down this path, I want to challenge my own assumptions. Is this the best approach, or am I overengineering?</P><P>THE PROPOSED ARCHITECTURE:</P><P>Here's what I'm considering:</P><P><span class="lia-unicode-emoji" title=":building_construction:">🏗</span>️ Multi-Cloud Foundation (SAP BTP)</P><P>- Cloud Foundry runtime for microservices</P><P>- HANA DB for data persistence</P><P>- Integration Suite for SuccessFactors connectivity</P><P>- Identity services for authentication</P><P><span class="lia-unicode-emoji" title=":robot_face:">🤖</span>AI & Analytics Layer</P><P>- SAP Generative AI Hub (GPT-4, Claude, Llama)</P><P>- Document intelligence and entity extraction</P><P>- Vector embeddings for semantic search</P><P>- Resume parsing and skills extraction</P><P><span class="lia-unicode-emoji" title=":gear:">⚙️</span>Microservices Architecture</P><P>- Requisition Analysis Service</P><P>- Skills Management Service</P><P>- Matching Service</P><P>- Custom build services for each capability</P><P><span class="lia-unicode-emoji" title=":bar_chart:">📊</span>Advanced Data Layer</P><P>- Vector engine for embeddings</P><P>- Object store for documents</P><P>- HANA DB for structured data</P><P>- Build Process Automation for workflows</P><P>THE CRITICAL QUESTIONS I'M WRESTLING WITH:</P><P><span class="lia-unicode-emoji" title=":keycap_1:">1️⃣</span>DO WE REALLY NEED MULTI-CLOUD COMPLEXITY?</P><P>The Good:</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Flexibility to choose best-of-breed services</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Avoid vendor lock-in</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Leverage SAP BTP's enterprise capabilities</P><P>The Concerns:</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Operational complexity across multiple clouds</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Higher costs for integration and management</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Steeper learning curve for teams</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>More points of failure</P><P>Alternative: Could we start with pure SuccessFactors extensions and only move to BTP if we hit limitations?</P><P><span class="lia-unicode-emoji" title=":keycap_2:">2️⃣</span>IS MICROSERVICES THE RIGHT PATTERN HERE?</P><P>The Good:</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Independent scaling of services</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Team autonomy and faster deployment</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Technology flexibility per service</P><P>The Concerns:</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Distributed system complexity</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Network latency between services</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Harder to debug and monitor</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Overkill for a small team or MVP?</P><P>Alternative: What if we started with a modular monolith and decomposed later based on actual bottlenecks?</P><P><span class="lia-unicode-emoji" title=":keycap_3:">3️⃣</span>ARE WE READY FOR GENERATIVE AI IN PRODUCTION HR?</P><P>The Good:</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Intelligent resume parsing and skills extraction</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Natural language requisition analysis</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Semantic matching beyond keyword search</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Document generation and summarization</P><P>The Concerns:</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Hallucination risks in HR decisions</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Bias and fairness implications</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Explainability requirements for hiring</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Cost per API call at scale</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Data privacy and compliance (GDPR, EEOC)</P><P>Alternative: Should we start with rule-based matching and traditional NLP, then layer in GenAI for non-critical features?</P><P><span class="lia-unicode-emoji" title=":keycap_4:">4️⃣</span>DO WE NEED VECTOR EMBEDDINGS AND SEMANTIC SEARCH?</P><P>The Good:</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Find similar skills even with different terminology</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Semantic matching beyond exact keywords</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Better candidate-requisition alignment</P><P>The Concerns:</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Added infrastructure complexity (vector DB)</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Embedding model maintenance and updates</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Explainability: "Why was this candidate matched?"</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Cost of generating and storing embeddings</P><P>Alternative: Could traditional search with synonyms and taxonomies get us 80% of the value with 20% of the complexity?</P><P><span class="lia-unicode-emoji" title=":keycap_5:">5️⃣</span>IS THE INTEGRATION LAYER OVER-ARCHITECTED?</P><P>The Good:</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Clean separation of concerns</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>Reusable integration patterns</P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span>API management and event mesh</P><P>The Concerns:</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Do we need event mesh for this use case?</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Is Build Process Automation necessary or could we use simpler workflows?</P><P><span class="lia-unicode-emoji" title=":warning:">⚠️</span>Are we adding layers that slow down development?</P><P>Alternative: Direct SuccessFactors OData APIs with simple retry logic?</P><P>WHAT MIGHT BE A SIMPLER STARTING POINT?</P><P>Phase 1: Validate the Value</P><P>- Build a SuccessFactors extension app (UI5)</P><P>- Use SuccessFactors APIs directly</P><P>- Simple keyword-based matching</P><P>- Manual review and approval workflows</P><P>- Prove the business value first</P><P>Phase 2: Add Intelligence Gradually</P><P>- Introduce resume parsing (traditional NLP)</P><P>- Add skills taxonomy and synonyms</P><P>- Basic analytics dashboard</P><P>- Measure improvement over baseline</P><P>Phase 3: Scale What Works</P><P>- Only then consider microservices if we have clear scaling needs</P><P>- Add GenAI for specific high-value use cases</P><P>- Introduce vector search if keyword matching proves insufficient</P><P>- Expand to multi-cloud only if we need capabilities not in SuccessFactors</P><P>THE REAL QUESTIONS:</P><P><span class="lia-unicode-emoji" title=":thought_balloon:">💭</span>Am I solving for scale we don't have yet?</P><P><span class="lia-unicode-emoji" title=":thought_balloon:">💭</span>Am I choosing technology because it's interesting vs. because it's necessary?</P><P><span class="lia-unicode-emoji" title=":thought_balloon:">💭</span>What's the simplest thing that could possibly work?</P><P><span class="lia-unicode-emoji" title=":thought_balloon:">💭</span>How do we balance innovation with pragmatism?</P><P><span class="lia-unicode-emoji" title=":thought_balloon:">💭</span>What would a true MVP look like?</P><P>WHAT I'D LOVE YOUR INPUT ON:</P><P><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span>Have you built similar HR/talent extensions? What worked? What didn't?</P><P><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span>Where have you seen GenAI add real value in recruiting vs. just hype?</P><P><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span>When is microservices worth it vs. premature optimization?</P><P><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span>How do you balance "enterprise-grade" with "ship fast and learn"?</P><P><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span>What would you do differently?</P><P>I'm genuinely torn between building something robust and future-proof vs. starting simple and evolving based on real needs.</P><P>What's your take? Is this architecture the right approach, or should we start simpler and earn our way to complexity?</P><P>Drop your thoughts below - especially if you think I'm overcomplicating this! <span class="lia-unicode-emoji" title=":backhand_index_pointing_down:">👇</span></P><P>#EnterpriseArchitecture #SAPSuccessFactors #SAPBTP #TalentManagement #AIinHR #Microservices #CloudArchitecture #SoftwareEngineering #TechLeadership #ArchitecturalDecisions #BuildOrBuy #MVPFirst #OverengineeringDebate</P>2026-02-15T18:36:04.178000+01:00