https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Build-Process-Automation-blog-posts.xmlSAP Community - SAP Build Process Automation2026-02-16T18:00:33.735960+00:00python-feedgenSAP Build Process Automation blog posts in SAP Communityhttps://community.sap.com/t5/sap-learning-blog-posts/what-tools-and-practices-enable-advanced-app-development-and-sap/ba-p/14262144What tools and practices enable advanced app development and SAP integration?2025-11-06T14:04:12.604000+01:00Margit_Wagnerhttps://community.sap.com/t5/user/viewprofilepage/user-id/491<P data-unlink="true"><FONT size="3"><SPAN>I recommend to access our <A title="Developing with SAP Build – From Apps to Automation" href="https://learning.sap.com/preview/learning-journeys/developing-with-sap-build-from-apps-to-automation" target="_self" rel="noopener noreferrer">Developing with SAP Build – From Apps to Automation</A></SPAN></FONT> learning journey.<SPAN> <BR /></SPAN></P><P>Completing this learning journey will empower you to build advanced applications, automate processes, manage user access, and monitor performance effectively within the SAP ecosystem. These skills are in high demand, positioning you to make a significant impact in your organization and advance your career.</P><P>Start your learning journey today and unlock the full potential of SAP technologies. By mastering these advanced capabilities, you will be well-equipped to drive innovation, improve efficiency, and deliver measurable business value.</P><DIV class=""><DIV class=""><STRONG><BR />Goals</STRONG></DIV></DIV><UL><LI><SPAN>Get started with SAP: Building the basics</SPAN></LI><LI>Develop your expertise: Skill deepening learning</LI><LI>Excel in your expertise: Advanced specialization learning</LI></UL><P><STRONG>Prerequisites</STRONG></P><UL><LI><A class="" title="Exploring SAP Business Technology Platform" href="https://learning.sap.com/courses/exploring-sap-business-technology-platform" target="_blank" rel="noopener noreferrer">Exploring SAP Business Technology Platform</A></LI><LI><A class="" title="Develop and automate with SAP Build" href="https://learning.sap.com/courses/develop-and-automate-with-sap-build" target="_blank" rel="noopener noreferrer">Develop and automate with SAP Build</A></LI><LI><A class="" title="Experiencing End-To-End SAP Build" href="https://learning.sap.com/courses/experiencing-end-to-end-sap-build" target="_blank" rel="noopener noreferrer">Experiencing End-To-End SAP Build</A></LI></UL><P><STRONG>Please post you question related to the digital learning Journey in the </STRONG><A href="https://groups.community.sap.com/t5/sap-learning-q-a/qa-p/learningqanda-board" target="_blank" rel="noopener noreferrer"><STRONG>Q&A area</STRONG></A><STRONG>. </STRONG></P><DIV class=""><DIV class=""><DIV class=""><P>Our SAP Learning Experts will get back to you as soon as possible! <BR />We are here to support you.</P><DIV class=""><DIV class=""><DIV class=""><BR />I appreciate your feedback and we will make sure to continue sharing interesting topics.<BR /><BR />Kind regards<BR />Margit</DIV></DIV></DIV></DIV></DIV></DIV>2025-11-06T14:04:12.604000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/join-sap-usability-testing-sessions-at-sap-teched-bangalore-influence-your/ba-p/14263513Join SAP Usability Testing Sessions at SAP TechEd Bangalore - Influence your Product Experience2025-11-11T07:39:08.270000+01:00VikramKulkarnihttps://community.sap.com/t5/user/viewprofilepage/user-id/19735<P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Blog Banner_2025_v1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/337533iCECCFF26AA16E461/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Blog Banner_2025_v1.png" alt="Blog Banner_2025_v1.png" /></span></P><P><SPAN>Join our live </SPAN><STRONG>usability testing session at <A href="https://registration.saptechedblr2025.in/agenda?" target="_blank" rel="noopener noreferrer nofollow">SAP TechEd Bangalore </A>on November 25-26, 2025.<BR /><BR /></STRONG>Usability testing offers a unique opportunity for SAP users to engage directly with the SAP product and development teams. In a focused 60-minute one-on-one session, you’ll interact with product screens and evaluate whether the buttons, terminology, and features meet your expectations and workflow needs.</P><P>If you've ever thought,<SPAN> </SPAN><EM>"Why can’t I just click here and make it work?"</EM><SPAN> </SPAN>— this is your chance to influence exactly that. Your feedback helps us create intuitive, user-friendly solutions that better support your business.<BR /><BR /></P><P><FONT size="5"><STRONG>Prerequisites for participating in usability testing at SAP TechEd Bangalore</STRONG></FONT></P><OL><LI>To be able to participate, you need to be an attendee at SAP TechEd Bangalore.</LI><LI>You need to have experience with using the product for which you’d like to participate in a Usability Test.</LI></OL><P><STRONG><FONT size="5">What you need to know about the registration process</FONT></STRONG></P><OL><LI>We use the<SPAN> <A href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/?ismsaljsauthenabled" target="_blank" rel="noopener nofollow noreferrer">Bookings</A> app </SPAN>to manage registrations for Usability Tests at SAP TechEd. Your data will be stored in our forms on the booking platform. To the extent that the entered information is personal data, the data collected through this form will be used solely for the purpose of organizing and managing the event. In accordance with GDPR requirements, your data will be deleted immediately after the event concludes.</LI><LI>Use the links below to register for the Usability Test Stations at SAP TechEd Bangalore and pick one of the available time slots for the test session.<BR /><STRONG>Please arrive at the Usability Test Lab (<FONT color="#3366FF">HALL 5</FONT>) 10 minutes before your scheduled time.<BR /></STRONG></LI><LI>Please sign up with your<SPAN> </SPAN><STRONG>business email address<SPAN> </SPAN></STRONG>– it will only be used for scheduling your test session; you will not receive marketing because of this registration.</LI><LI>Email notifications will be sent from <FONT color="#0000FF"><EM>Usability Testing Lab Participant Interest Form <UsabilityTestingLabRegistration@sap.onmicrosoft.com></EM> </FONT> Please check your SPAM/JUNK folder in case you do not receive the confirmation emails.</LI><LI><STRONG>Interested in future online user research opportunities after SAP TechEd?</STRONG><BR />To receive invitations, please complete the<SPAN> </SPAN><A href="https://www.userinterviews.com/opt-in/GwhpKGdWcdHFZgbRtSqCyTy9" target="_blank" rel="noopener nofollow noreferrer">registration form</A> for the SAP User Research Panel.</LI></OL><H1 id="toc-hId-1635537068"><STRONG><FONT size="5">Usability Test Stations</FONT></STRONG></H1><H3 id="toc-hId-1697189001">Usability Test Station 1: <BR /><SPAN>Integration Flow generation using AI & Groovy scripts, readiness for software upgrade </SPAN></H3><P><BR />Test the AI feature for creating integration flows from scenario descriptions (including Groovy script steps) with error handling. Evaluate Groovy script readiness for the upcoming Integration Cell runtime and explore integration flow creation via Joule using high-fidelity prototypes.<BR /><BR /><STRONG>Target audience:</STRONG> Participation in this usability test is restricted to users of SAP Integration Suite who have experience with developing integration flows.<BR /><BR /><STRONG>Potential roles include</STRONG>:</P><UL><LI>Integration Developers</LI><LI>Solution Architects,</LI><LI>SAP BTP Consultants</LI><LI>Business Process Experts </LI></UL><P><A href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/s/XvFXF8T-p0GVFa9yvpERNQ2?ismsaljsauthenabled " target="_blank" rel="noopener nofollow noreferrer"><SPAN><STRONG>Register here as a tester</STRONG></SPAN></A></P><H4 id="toc-hId-1629758215"> </H4><H3 id="toc-hId-1304161991">Usability Test Station 2: <BR />Test Conditional Task Chains and Port Connections in SAP Datasphere, BDC</H3><P>We’re inviting experienced SAP Datasphere Modelers and Integrators to participate in a usability testing session for the enhanced Task Chain workflow.</P><P>This session focuses on evaluating the new ability to <STRONG>react to task outcomes</STRONG> and define <STRONG>conditional execution paths</STRONG> using dedicated ports:</P><UL><LI><STRONG>Success (<FONT color="#339966">green</FONT>)</STRONG></LI><LI><STRONG>Error (<FONT color="#FF0000">red</FONT>)</STRONG></LI><LI><STRONG>Any (<FONT color="#0000FF">blue</FONT>)</STRONG></LI></UL><P>These enhancements aim to give users greater control and flexibility in orchestrating complex workflows. Alongside these, participants will also explore <STRONG>other new capabilities</STRONG> introduced to improve error handling and configurability.</P><P>A key focus of this session is to assess both <STRONG>usability</STRONG> and the <STRONG>durability of interactions</STRONG> — ensuring that the experience remains stable, intuitive, and efficient across varied use cases.</P><P>Your feedback will help us refine and improve our workflows even further.<BR /><BR /><STRONG>Target Audience:</STRONG><BR />Participants need to have experience with cloud implementations and end-user knowledge to participate.</P><P><STRONG>Potential roles include:</STRONG></P><UL><LI>SAP Datasphere Modeler / Integrator</LI><LI>Consultants</LI><LI>Developers</LI></UL><P><A href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/s/gH6bVLAehkGW9GuSbVppSA2?ismsaljsauthenabled" target="_blank" rel="noopener nofollow noreferrer"><SPAN><STRONG>Register here as a tester</STRONG></SPAN></A><BR /><BR /><BR /></P><H3 id="toc-hId-1107648486">Usability Test Station 3: <BR />End-to-End Agentic User Journey for Building Processes with Joule</H3><P>In this session, participants will experience and evaluate a future-state, agentic user journey for building business processes using Joule, the AI assistant integrated within SAP Build Process Automation. The focus is on exploring how Joule can support users through end-to-end process creation by providing intelligent suggestions, automating repetitive steps, and enabling seamless collaboration with key stakeholders. We aim to understand usability, clarity of guidance, efficiency gains, and how well Joule integrates into existing SAP Build Process Automation workflows. Participant feedback will help refine the interaction model and identify opportunities for enhancing agentic assistance in real scenarios. <BR /><BR /><STRONG>Target Audience:</STRONG><BR />Participants need to have experience with cloud implementations and end-user knowledge to participate.</P><P><STRONG>Potential roles include:</STRONG></P><UL><LI>Regular SAP Build Process Automation users</LI><LI>Process Designers</LI><LI>Citizen Developers</LI><LI>Automation Leads</LI><LI>Consultants</LI><LI>Business Process Experts</LI></UL><P><A title="Usability Testing" href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/s/_WtCJ9d5eEOdMQ3vR88YIg2?ismsaljsauthenabled" target="_blank" rel="noopener nofollow noreferrer"><SPAN><STRONG>Register here as a tester</STRONG></SPAN></A><BR /><BR /></P><H3 id="toc-hId-911134981">Usability Test Station 4: <BR />Smart Helper - An agent you define; actions you approve; Easy Fill: Copy, Paste, and Done in SAP S/4HANA Cloud Public Edition</H3><P>This session aims to evaluate the user experience and effectiveness of two AI-powered capabilities: Smart helper- we will evaluate how easy it is to get started, how clear control and approvals feel, and how overall usability and user experience are perceived; Easy Fill - we will evaluate how easy it is to use and if there is something missing. <BR /><BR /><STRONG>Target Audience:</STRONG><BR />Participants need to have experience with cloud implementations and end-user knowledge to participate.</P><P><STRONG>Potential roles include:</STRONG></P><UL><LI>Business Process Experts</LI><LI>Solution Architects</LI><LI>IT Administrators</LI><LI>SAP S/4HANA Solution Consultants</LI><LI>Developers</LI></UL><P><A title="Usability Testing" href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/s/HFtCzNdQNkOZlp_DEyVIow2?ismsaljsauthenabled" target="_blank" rel="noopener nofollow noreferrer"><SPAN><STRONG>Register here as a tester</STRONG></SPAN></A><BR /><BR /><BR /></P><H3 id="toc-hId-714621476">Usability Test Station 5: <BR />Evaluate WalkMe Onboarding Experience on SAP SuccessFactors</H3><P>Evaluate how users access WalkMe tours and engage with the onboarding experience for SuccessFactors features. To evaluate how effectively users can complete key SAP SuccessFactors tasks using WalkMe tours by identifying any usability, clarity, or content issues and gathering feedback to improve the overall experience.<BR /><BR /><STRONG>Target Audience:</STRONG><BR />Participants need to have experience with cloud implementations and end-user knowledge to participate.</P><P><STRONG>Potential roles include:</STRONG></P><UL><LI>Business Process Experts</LI><LI>Solution Architects</LI><LI>IT Administrators</LI><LI>SAP SuccessFactors Solution Consultants</LI></UL><P><A title="Usability Testing" href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/s/YH3GMIr17k-reQQmZT7xPg2?ismsaljsauthenabled" target="_blank" rel="noopener nofollow noreferrer"><SPAN><STRONG>Register here as a tester</STRONG></SPAN></A><BR /><BR /></P><H3 id="toc-hId-518107971">Usability Test Station 6: <BR />Supercharge your SAP Fiori elements app development with SAP Fiori tools and AI</H3><P>SAP Fiori tools are evolving to allow companies to dramatically improve developer efficiency by integrating intelligent, AI-enabled features and editors into the development environment. SAP Fiori tools are designed to lower the entry barrier for new teams while providing the advanced capabilities and flexibility that experienced developers demand. In this usability session, you can experiment with some of our early AI-driven features, provide feedback on our tools and our vision, and directly influence our direction for the next generation of intelligent development tools.</P><P><STRONG>Target audience:<BR /></STRONG>Participation in this usability test is restricted to users with experience developing Fiori apps using SAP Fiori tools (which are a part of SAP Build Code). Potential roles include:</P><UL><LI>S/4HANA Developers</LI><LI>Web Developers</LI><LI>Fiori Developers</LI><LI>Fiori Elements Developers</LI><LI>SAP Developers</LI><LI>Product Owners</LI><LI>Users of the Annotation Modeler</LI><LI>Other front-end developers leveraging web technologies</LI></UL><P><A title="Usability Testing" href="https://outlook.office.com/book/UsabilityTestingLabRegistration@sap.onmicrosoft.com/s/u6TOq94eiUW_-tdxIxWCWw2?ismsaljsauthenabled" target="_blank" rel="noopener nofollow noreferrer"><SPAN><STRONG>Register here as a tester</STRONG></SPAN></A><BR /><BR /><BR /><STRONG><FONT color="#FF0000">Disclaimer (for SAP TechEd 2025, Bangalore usability testing interest list)<BR /></FONT></STRONG><EM><SPAN>By registering you are expressing interest to join the participant list for usability testing at SAP TechEd 2025, Bangalore. Registration does not guarantee participation. Selected participants will be notified separately by email once they meet all eligibility criteria required to take part in the sessions and provide feedback. Due to limited seats, we cannot accommodate all registrants; priority will be given to applicants who meet specific selection criteria (for example: product experience, implementation involvement, end-user knowledge, valid licensing status, and other program requirements).</SPAN></EM></P>2025-11-11T07:39:08.270000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/supercharge-sap-automate-new-hire-events-with-sap-build-process-automation/ba-p/14268165Supercharge SAP: Automate New Hire Events with SAP Build Process Automation and SuccessFactors2025-11-13T16:24:14.773000+01:00acharyawhttps://community.sap.com/t5/user/viewprofilepage/user-id/151637<H2 id="toc-hId-1764765055">Overview</H2><P><A href="https://www.sap.com/india/products/technology-platform/process-automation/features.html" target="_blank" rel="noopener noreferrer">SAP Build Process Automation</A> is a low-code/no-code platform that enables users to automate business processes and tasks using visual drag-and-drop tools. It combines workflow automation, robotic process automation (RPA), and embedded AI capabilities to streamline processes and improve efficiency. To know about the product roadmap, you can follow the link <A href="http://roadmaps.sap.com/board?range=all&PRODUCT=73554900100800006111#Q4%202025" target="_self" rel="noopener noreferrer">here</A>.</P><P><A href="https://help.sap.com/docs/sap-cloud-application-event-hub" target="_blank" rel="noopener noreferrer">SAP Cloud Application Event Hub</A> offers a flexible solution to distribute business events across the SAP cloud landscape. This service supports SAP's strategic event-driven architecture initiative to create a well-defined, easily consumable and extensible ecosystem for exchanging SAP business events.</P><P>This blog explains how to use the event-driven automation for the New Hire Onboarding scenario spanning across <A href="https://www.sap.com/india/products/hcm.html" target="_blank" rel="noopener noreferrer">SAP SuccessFactors</A>, <A href="https://www.sap.com/india/products/technology-platform/process-automation/features.html" target="_blank" rel="noopener noreferrer">SAP Build Process Automation</A>(SBPA) and <A href="https://help.sap.com/docs/sap-cloud-application-event-hub" target="_blank" rel="noopener noreferrer">SAP Cloud Application Event Hub</A>. For more information on Success Factors events in Business Accelerator Hub read <A href="https://api.sap.com/search?searchterm=success%20factor&tab=Event%20Objects&$refinedBy=true&$type=(%22Event%20Object%22,%22SAP%20Event%20Package%22)" target="_blank" rel="noopener noreferrer">here</A>. Read <A href="https://help.sap.com/docs/successfactors-onboarding/implementing-onboarding/initiating-onboarding-process-manually?q=new+hire+onboarding" target="_blank" rel="noopener noreferrer">here</A> for more details on the scenario.</P><P>The integration support of SAP Build Process Automation with SAP Success Factors via SAP Cloud Application Event Hub was released from SAP Build in Q2 2025. For more details refer to the YouTube video <A href="https://www.youtube.com/watch?v=gaToaQGpPE8" target="_blank" rel="noopener nofollow noreferrer">Whats New in SAP Build – Q2 2025 Highlights</A> and Blog <A href="https://community.sap.com/t5/application-development-and-automation-blog-posts/what-s-new-in-sap-build-q2-2025-release-highlights/ba-p/14142487" target="_blank">What’s New in SAP Build Q2 2025 - Release Highlights</A>.</P><P> </P><PRE>Note : Integration of SAP Build Process Automation with SAP S/4HANA Cloud Public Edition and SAP S/4HANA Cloud Private Edition is also available with Event Mesh and Advanced Event Mesh.</PRE><P>Here are the reference blogs <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/event-mesh-and-sap-s-4hana-public-cloud-setup-for-sap-build-process/ba-p/13791480" target="_blank">Event Mesh and SAP S/4HANA Public Cloud Setup for SAP Build Process Automation</A> and <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/configure-sap-enterprise-messaging-for-sap-s-4hana-on-premise-2020-via/ba-p/13468533" target="_blank">Configure SAP Enterprise Messaging for SAP S/4HANA On-Premise 2020 via Service Key</A>.</P><H2 id="toc-hId-1568251550">New Hire Scenario Introduction</H2><P>The Onboarding process is a crucial and very common activity of Human Resource department of any organization, influencing the experience and success of new hires. Organisations often face challenges in onboarding process especially with equipment and trainings that are required by the new-hire. If these not done right, the onboarding process can involve manual and repetitive tasks, leading to inefficiencies and delays. An event-driven solution using process automation and customization to provide a personalized onboarding experience for new hires is much needed.</P><P>The current scenario is based on real-time event-driven business process integrations. It involves starting an approval workflow process using the SAP Build Process Automation solution, ensuring you involve the relevant stakeholders in certain scenarios.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SFSFArchitecture.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340215iE40CFC4AEC9854F8/image-size/large?v=v2&px=999" role="button" title="SFSFArchitecture.png" alt="SFSFArchitecture.png" /></span></P><H2 id="toc-hId-1371738045">Pre-requisite:</H2><UL><LI>The BTP and the SFSF systems needs to be connected already. This can be done by using Event Mesh, Advanced Event Mesh or SAP Cloud Application Event Hub.</LI><LI>The details of the setup to be done using Cloud Application Event Hub is mentioned in the blog <A href="http://Integrating SAP SuccessFactors with SAP Build Process Automation via SAP Cloud Application Event Hub" target="_self" rel="nofollow noopener noreferrer">Integrating SAP SuccessFactors with SAP Build Process Automation via SAP Cloud Application Event Hub</A> and the Devtoberfest video <A href="https://www.youtube.com/watch?v=CMVEobhPSIw&list=PL6RpkC85SLQA4Lb9qdevEkcqoCJH2bXek&index=50" target="_self" rel="nofollow noopener noreferrer">Using Intermediate Message Events and Success Factors Events in SAP Build Process Automation</A> .</LI></UL><H2 id="toc-hId-1175224540">Creating the process step by step</H2><P>Let's now create an end to end process. In this section we will create event triggers, add actions, add decisions, approval forms and email notifications. Below are the sample steps:</P><H3 id="toc-hId-1107793754">1. Add an Event Trigger to start the process</H3><P>The event here is "New Hire Data Review Initiated".</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NewHireDataEventAdded.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340203iE1BB4ED37CC633CD/image-size/large?v=v2&px=999" role="button" title="NewHireDataEventAdded.png" alt="NewHireDataEventAdded.png" /></span></P><PRE>Note: The event project should be created , released and published in Lobby already. </PRE><P>You can refer to this blog link on how to create an Event project in the Lobby or this YouTube video. <A href="https://api.sap.com/event/sap-sf-processStep-v1/resource" target="_self" rel="noopener noreferrer">Here</A> is the link for reference in Business Accelerator Hub for details on the <SPAN>New Hire Data Review Initiated event</SPAN>.</P><H3 id="toc-hId-911280249">2. Add the Actions to get further details of the new hire</H3><P>We need to use additional APIs to get further details for employee and job details. The APIs used in this example are the </P><P><SPAN>a. GET for /PerPerson('{personIdExternal}') from the <A href="https://api.sap.com/api/ECPersonalInformation/resource/PerPerson" target="_self" rel="noopener noreferrer">Personal Information API </A></SPAN></P><P><SPAN>b. GET for /EmpEmployment(personIdExternal='{personIdExternal}',userId='{userId}') from the <A href="https://api.sap.com/api/ECEmploymentInformation/resource/EmpEmployment" target="_self" rel="noopener noreferrer">Employment Information API</A></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GetEmployementDetailsByKeyGeneral.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340205iE11030ACCBD8F5CE/image-size/large?v=v2&px=999" role="button" title="GetEmployementDetailsByKeyGeneral.png" alt="GetEmployementDetailsByKeyGeneral.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GetEmployementDetailsByKeyMapping.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340207i9AFB542D3C67313E/image-size/large?v=v2&px=999" role="button" title="GetEmployementDetailsByKeyMapping.png" alt="GetEmployementDetailsByKeyMapping.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="GetPerPersonByKeyMapping.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340204i1ED44E93B2E02687/image-size/large?v=v2&px=999" role="button" title="GetPerPersonByKeyMapping.png" alt="GetPerPersonByKeyMapping.png" /></span></SPAN></P><P>Map the inputs of Actions to the required inputs from the events.</P><PRE>Note: The action projects should be created , released and published in Lobby already.</PRE><H3 id="toc-hId-714766744">3. Add decisions to determine the Equipment and Trainings for new hire</H3><P>The EquipmentDetermination Decision takes JobTitle as an Input and Output can be a list of Equipment for which we need to create a Purchase Order later in the S/4HANA Public Cloud System via Actions(APIs).</P><P>The TrainingDetermination Decision can take JobTitle as an Input and Output of can be a list of Trainings that are required for the employee, which can be notified to the employee via email after successful approval.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mapJobTitleForEquipmentDetermination.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340211i6BB3185BB633033E/image-size/large?v=v2&px=999" role="button" title="mapJobTitleForEquipmentDetermination.png" alt="mapJobTitleForEquipmentDetermination.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MapJobTitleForTrainingDetermination.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340210i25436FBB2E0DAC14/image-size/large?v=v2&px=999" role="button" title="MapJobTitleForTrainingDetermination.png" alt="MapJobTitleForTrainingDetermination.png" /></span></P><H3 id="toc-hId-518253239">4. Create an Approval form</H3><P>The Approval form shows the new hire data to be reviewed. Both the outputs from Equipment and Training can be used in the approval form. There are two options for user - Approve and Reject.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Add the Training and Equipment Approval Form.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340213iC47F880A5B164B7A/image-size/large?v=v2&px=999" role="button" title="Add the Training and Equipment Approval Form.png" alt="Add the Training and Equipment Approval Form.png" /></span></P><H3 id="toc-hId-321739734">5. Create a Purchase Order via Actions</H3><P>Upon successful Approval, add an Action call to create a Purchase Order in SAP S/4HANA Cloud Public System with the equipment determined for the new hire.</P><P>The required SAP S/4HANA API call is : POST for <SPAN><A href="https://api.sap.com/api/CE_PURCHASEORDER_0001/resource/Purchase_Order" target="_self" rel="noopener noreferrer">/PurchaseOrder.</A></SPAN></P><H3 id="toc-hId-125226229"><SPAN>6. Add email notifications</SPAN></H3><P><SPAN>You can add email notification after the Purchase Order is successfully created and also for rejection scenario. The sample process looks like the following:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="WholeProcess.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340196i25A8F4ECB23DBF9A/image-size/large?v=v2&px=999" role="button" title="WholeProcess.jpg" alt="WholeProcess.jpg" /></span></P><H2 id="toc-hId-146884362">Execute the process:</H2><P>1. Add a new employee in the SAP SuccessFactors application using "Add New Hire to Onboarding". This will create an event "New Hire Data Review Initiated" from the SAP Success Factors system.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="acharyaw_0-1763046678307.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340217i635B3F084E9022E6/image-size/large?v=v2&px=999" role="button" title="acharyaw_0-1763046678307.png" alt="acharyaw_0-1763046678307.png" /></span></P><P>2. In SAP Build Process Automation Approve/reject the equipment and training assignment to the new hire that you have created in the previous step.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ApprovalFormReview.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340223iB9EC47B1ED55915C/image-size/large?v=v2&px=999" role="button" title="ApprovalFormReview.png" alt="ApprovalFormReview.png" /></span></P><P>3. Purchase order will be created for the equipment approved in the SAP S/4HANA Cloud Public Edition and end users will be notified accordingly.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="acharyaw_1-1763046840407.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340219i38A842973CD8E3CE/image-size/large?v=v2&px=999" role="button" title="acharyaw_1-1763046840407.png" alt="acharyaw_1-1763046840407.png" /></span></P><H2 id="toc-hId--49629143">Tips and Tricks:</H2><UL><LI>To check if events are configured properly and are reaching SBPA, check the SAP Build Lobby -> Monitoring -> Acquired Events -> Business Events. Here you will find information on the business events that are received by SAP Build Process Automation.</LI><LI>The SFSF system needs to be enabled for sending events.</LI><LI>The new hire event is dispatched only when all the steps are completed, i.e. all the OK windows are acknowledged by user.</LI><LI>Proper destination for APIs for SFSF needs to be configured in BTP with correct API user in SFSF system</LI><LI>Proper destination for APIs for SAP S/4HANA Cloud Edition system should be configured with appropriate communication users.</LI><LI>SMTP Email destination needs to be created in BTP subaccount for the email tasks to work.</LI><LI>Check that events and actions are working fine before using them in the project.</LI></UL><P>For any further queries, please feel free to reach out ! </P><P>I would like to thank my co - author Rumen for his support in creating this content.</P><P>Happy eventing !</P>2025-11-13T16:24:14.773000+01:00https://community.sap.com/t5/financial-management-blog-posts-by-sap/building-low-code-no-code-sap-cpq-extension-using-sap-build-process/ba-p/14242355Building Low-code/No-code SAP CPQ extension using SAP Build Process Automation (Part 2)2025-11-18T07:34:13.518000+01:00FilipRistichttps://community.sap.com/t5/user/viewprofilepage/user-id/1766878<P>SAP CPQ (Configure Price Quote) is a software solution that allows customers to configure products and services, set up pricing and discounts, generate accurate quotes, and create custom proposals. While offering a great deal of functionality out-of-the-box, SAP CPQ can also be easily extended and customized, to support custom, and often unique, business processes and procedures.</P><P>One way in which SAP CPQ can be extended is by developing an external extension application that is integrated with SAP CPQ using standard integration mechanisms (REST APIs, events, webhook notifications etc.). This approach, also known as <STRONG>side-by-side extensibility</STRONG>, has several distinctive benefits: increased flexibility in terms of technological choice, possibility of using dedicated resources, better performance due to limited scope and many more.</P><P><SPAN>This series of blog posts will explore several ways for building and deploying side-by-side extensions of SAP CPQ, using the <A href="https://www.sap.com/products/technology-platform.html" target="_blank" rel="noopener noreferrer">SAP BTP (Business Technology Platform)</A> and various tools offered by that platform. </SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/financial-management-blog-posts-by-sap/building-low-code-no-code-sap-cpq-extension-using-sap-build-process/ba-p/14217662" target="_self">Building Low-code/No-code SAP CPQ extension using SAP Build Process Automation (Part 1)</A> </SPAN></LI><LI><SPAN>Building Low-code/No-code SAP CPQ extension using SAP Build Process Automation (Part 2) - this post</SPAN></LI></UL><H2 id="toc-hId-1762741158"><SPAN>Overview of the solution</SPAN></H2><P><SPAN><A href="https://www.sap.com/products/technology-platform/process-automation.html" target="_self" rel="noopener noreferrer">SAP Build Process Automation</A> is a <STRONG>low-code/no-code</STRONG> solution that enables you to automate workflow processes without writing a single line of code, just by using a graphical, drag-and-drop editor. It is an ideal solution for developing both simple extensions, as well as complex business process applications. To learn more about SAP Build Process Automation, please check the </SPAN><A href="https://help.sap.com/docs/build-process-automation" target="_blank" rel="noopener noreferrer"><SPAN>official documentation</SPAN></A><SPAN>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Overview of the solution (including Part 1 and Part 2)" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/316614iAFD3109BD49ECA75/image-size/large?v=v2&px=999" role="button" title="FilipRistic_0-1758209523434.png" alt="Overview of the solution (including Part 1 and Part 2)" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Overview of the solution (including Part 1 and Part 2)</span></span></P><P><SPAN>In the <A href="https://community.sap.com/t5/financial-management-blog-posts-by-sap/building-low-code-no-code-sap-cpq-extension-using-sap-build-process/ba-p/14217662" target="_self">first blog post</A>, we have described how you can invoke <FONT color="#FF6600"><A href="https://www.sap.com/products/technology-platform/process-automation.html" target="_blank" rel="noopener noreferrer">SAP Build Process Automation</A></FONT> process from SAP CPQ. In this second post, </SPAN><SPAN>we will demonstrate how to invoke SAP CPQ API from SAP Build Process Automation project using the concept of </SPAN><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-actions-project?locale=en-US" target="_blank" rel="noopener noreferrer"><SPAN>SAP Build Actions</SPAN></A><SPAN>. Actions encapsulate the details of a call to an external API, including the endpoint location, input and output parameters.</SPAN></P><P><SPAN>For the Action to be able to call, in our case, SAP CPQ API, it needs the information about the location of the SAP CPQ instance, as well as details about the authentication employed (authentication mechanism, credentials, etc.). This information is defined in an </SPAN><A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/http-destinations?locale=en-US" target="_blank" rel="noopener noreferrer"><SPAN>SAP BTP Destination</SPAN></A><SPAN>, and used in the runtime by the Action when invoking an API.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Example SAP Build Process Automation process used in this blog post series" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/315888iC459E978090E8190/image-size/large?v=v2&px=999" role="button" title="filipristic_0-1758114287884.png" alt="Example SAP Build Process Automation process used in this blog post series" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Example SAP Build Process Automation process used in this blog post series</span></span></SPAN></P><P><SPAN>As an example extension application that we want to integrate with SAP CPQ, we are going to use a simple business process involving legal check of created quotes. The process triggers manual check based on the market associated with the quote, and allows the responsible persons to decide whether quote should be accepted or rejected from the legal perspective. The decision then triggers invocation of appropriate custom CPQ action, something that is described in this blog process.</SPAN></P><P> </P><P><SPAN>Please note that, in this blog post, I assume that you are familiar with the basics of using SAP Build Process Automation. If that is not the case, please check the excellent <A href="https://learning.sap.com/learning-journeys/create-processes-and-automations-with-sap-build-process-automation" target="_blank" rel="noopener noreferrer">"Creating Processes and Automations with SAP Build Process Automation" learning journey at SAP Learning</A>.</SPAN></P><H3 id="toc-hId-1695310372"> </H3><H3 id="toc-hId-1498796867">Defining a CPQ Action project in SAP Build</H3><P>To define a new Action project for invoking SAP CPQ API, navigate your SAP Build Process Automation instance and select <EM>SAP Build Lobby</EM> -> <EM>Connectors</EM> -> <EM>Actions</EM> -> <EM>Create</EM>.</P><P>The easiest way to consume an SAP CPQ API is to use the SAP Business Accelerator Hub, which contains API definitions for many SAP applications, including the SAP CPQ. Select <EM>API Specification</EM> -> <EM>SAP Business Accelerator Hub.</EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1760451202899.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327392iBF5D9347077291B2/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="FilipRistic_0-1760451202899.png" alt="FilipRistic_0-1760451202899.png" /></span></P><P>Enter the keyword identifying the SAP CPQ API that you want to consume (for example, if you are interested in Quotes API, enter the <EM>quote</EM> keyword). Select the SAP CPQ API that you want to consume.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1760451330176.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327393iC4688270888E65B9/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="FilipRistic_0-1760451330176.png" alt="FilipRistic_0-1760451330176.png" /></span></P><P>Next screen contains the list of actions available in the selected SAP CPQ API. Click <EM>Next</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_1-1760451373480.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327394iCE4714642BFD3C0C/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="FilipRistic_1-1760451373480.png" alt="FilipRistic_1-1760451373480.png" /></span></P><P>Here, you can customize Action project name and description or use the defaults. Click <EM>Create</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_2-1760451437681.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327395i277C01396A891939/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="FilipRistic_2-1760451437681.png" alt="FilipRistic_2-1760451437681.png" /></span></P><P>In the next screen, you are presented with the list of all available actions in the selected SAP CPQ API. Select the desired actions and click <EM>Add</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_3-1760451501489.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327396iF21A719C923F7251/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="FilipRistic_3-1760451501489.png" alt="FilipRistic_3-1760451501489.png" /></span></P><P>Before being able to use the selected actions in your SAP Build Process Automation project, you need to <A href="https://help.sap.com/docs/build/sap-build-core/managing-action-project#releasing-a-project" target="_blank" rel="noopener noreferrer">release</A> and <A href="https://help.sap.com/docs/build/sap-build-core/managing-action-project#publishing-a-project" target="_blank" rel="noopener noreferrer">publish</A> the Action project. First, click on <EM>Release</EM> button, optionally enter the description and click <EM>Release</EM> again. After that, select <EM>Publish</EM> -> <EM>Publish</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_4-1760451560981.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327397iBE77FEB7C3D2BACB/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="FilipRistic_4-1760451560981.png" alt="FilipRistic_4-1760451560981.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1763128966797.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340688iC40EBFEF4A6EB298/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="FilipRistic_0-1763128966797.png" alt="FilipRistic_0-1763128966797.png" /></span></P><H3 id="toc-hId-1302283362"> </H3><H3 id="toc-hId-1105769857">C<SPAN>alling the CPQ API from SAP Build Process Automation project</SPAN></H3><P>After publishing the Action project, you can use selected SAP CPQ API actions in your SAP Build Process Automation project, for example, as a new step in the process. To do so, click on the <EM>+</EM> button (Add Process Step) at the place in the process where you want to invoke an SAP CPQ API.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1760451945223.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/327401iF612CF2BA6A0FAFC/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="FilipRistic_0-1760451945223.png" alt="FilipRistic_0-1760451945223.png" /></span></P><P>Then select <EM>Action</EM> -> <EM>Browse All Actions</EM> and select the desired action (from previously created and published Action project). Then click <EM>Add</EM> button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1762435261980.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336888i657EFA7037CEE7E6/image-size/large?v=v2&px=999" role="button" title="FilipRistic_0-1762435261980.png" alt="FilipRistic_0-1762435261980.png" /></span></P><P>Next, click on <EM>Destination Variable</EM> -> <EM>Create Destination Variable</EM> and specify an <STRONG>Identifier</STRONG> and <STRONG>Description</STRONG> of the variable that will hold a reference to the SAP BTP Destination pointing to your SAP CPQ instance (created and explained later in this blog post). Once you are ready to publish and deploy your SAP Build Process Automaton project, you will associate this variable with the concrete SAP BTP Destination (also explained later). For now, you can specify any value as an <STRONG>Identifier</STRONG>, preferable the one that makes it easy to understand its purpose (for example: <EM>CpqDestination</EM>). You can reuse the same variable for all the SAP CPQ actions that you use in your project.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_1-1762435338216.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336889i09D3B1221609B3BF/image-size/medium?v=v2&px=400" role="button" title="FilipRistic_1-1762435338216.png" alt="FilipRistic_1-1762435338216.png" /></span></P><P>Most of the SAP CPQ API actions define a set of input values (required and optional input parameters) and an output value (result of the API call). If the action you are planning to use has the required inputs, you can specify them by selecting the <EM>Inputs</EM> tab and choosing the input value (for each input) from the list of potential values (for example, an output from one of the previous steps) in the <STRONG>Process Content</STRONG> pane.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_2-1762435402479.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336890i4C8D0E1534ACC360/image-size/large?v=v2&px=999" role="button" title="FilipRistic_2-1762435402479.png" alt="FilipRistic_2-1762435402479.png" /></span></P><P>You can consume the output of the SAP CPQ API actions in the same way as you would consume output of any other process step in the project: you can display it on the form, use it as input parameter for other actions etc. In our example, a form is the step in the process that needs the information from the output, so we can use action's output fields as the values of the input fields of that form by selecting them in the <STRONG>Process Content</STRONG> pane (under the <STRONG>Process Inputs</STRONG> section). These fields (and the represented structure of the output) correspond to the response of the call to the related SAP CPQ API endpoint.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1762436015236.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336901i2D6E70CA06063640/image-size/large?v=v2&px=999" role="button" title="FilipRistic_0-1762436015236.png" alt="FilipRistic_0-1762436015236.png" /></span></P><P> </P><P><SPAN>Before being able to deploy your SAP Build Process Automation project, you first need to define an </SPAN><A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/managing-destinations" target="_blank" rel="noopener noreferrer"><SPAN>SAP BTP Destination</SPAN></A><SPAN> pointing to the SAP CPQ instance of your choice.</SPAN></P><P> </P><H3 id="toc-hId-909256352">D<SPAN>efining a destination in SAP BTP</SPAN></H3><P>To connect SAP Build Process Automation instance with an SAP CPQ instance, it is necessary to define a new Destination in the SAP BTP subaccount where the SAP Build Process Automation instance is located. As a first step, a new <A href="https://help.sap.com/docs/SAP_CPQ/bf1562733d5247f78f8f0a9c61e5382a/421908eba3e8444dbc142354914e8178.html?locale=en-US" target="_blank" rel="noopener noreferrer">Trusted Application</A> (OAuth 2.0 client application) in SAP CPQ should be created. To add a new Trusted Application, in the SAP CPQ setup go to <EM>Security</EM> -> <EM>Trusted Applications</EM>, then click on <EM>Add New</EM> -> <EM>Add new Trusted Application</EM>:</P><UL><LI>Specify a descriptive <STRONG>Name</STRONG> for this trusted application (client)</LI><LI>Note the <STRONG>Client ID</STRONG> and <STRONG>Client Secret</STRONG> that you will use in the next step</LI><LI>Enable <STRONG>Client Credentials Grant</STRONG> and</LI><LI>Specify a (preferably technical) user that will be used when accessing the instance.</LI></UL><P>It is also possible to use other OAuth 2.0 grant types in this case - for more information, please check <A href="https://help.sap.com/docs/SAP_CPQ/08a7929ad06d4680b4f18cb57bc1a1d3/fa97640df1ac40909472e69a3ba43e16.html?locale=en-US" target="_blank" rel="noopener noreferrer">SAP CPQ documentation</A> and <A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/http-destinations?locale=en-US" target="_blank" rel="noopener noreferrer">SAP BTP Connectivity documentation</A> (for example, if you want to use the principle propagation option when accessing the SAP CPQ API, you can use <A href="https://www.rfc-editor.org/rfc/rfc7522.html#section-2.1" target="_blank" rel="noopener nofollow noreferrer">SAML 2.0 assertion grant type</A>, as described in <A href="https://help.sap.com/docs/SAP_CPQ/08a7929ad06d4680b4f18cb57bc1a1d3/4da87acd636243a585f36f4b205d0413.html?locale=en-US" target="_blank" rel="noopener noreferrer">SAP CPQ documentation</A>, <A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/oauth-saml-bearer-assertion-authentication?locale=en-US" target="_blank" rel="noopener noreferrer">SAP BTP Connectivity documentation</A>, and in <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-configure-price-quote-cpq-apis-with-resilience-with-sap-btp-kyma/ba-p/13561449" target="_blank">this blog post</A>). Please note that it is generally recommended to define a separate Trusted Application per client application (application accessing the SAP CPQ API), and to enable only required OAuth grant types.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_1-1762437748090.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336932i2544A713311C2EEB/image-size/large?v=v2&px=999" role="button" title="FilipRistic_1-1762437748090.png" alt="FilipRistic_1-1762437748090.png" /></span></P><P>After configuring Trusted Application in SAP CPQ setup, a new Destination needs to be created in the SAP BTP subaccount where the SAP Build Process Automation instance is located. To do so, go to the subaccount, select <EM>Connectivity</EM> -> <EM>Destinations</EM>, and click on <EM>Create</EM> -> <EM>From Scratch</EM> -> <EM>Create</EM>:</P><UL><LI>Specify a descriptive <STRONG>Name</STRONG> for this destination</LI><LI>Specify base <STRONG>URL</STRONG> of your SAP CPQ instance</LI><LI>Select <EM>OAuth2ClientCredentials</EM> as an <STRONG>Authentication</STRONG> method (if you enabled <STRONG>Client Credentials Grant</STRONG> in the previous step; if not, please consult the <A href="https://help.sap.com/docs/connectivity/sap-btp-connectivity-cf/http-destinations?locale=en-US" target="_blank" rel="noopener noreferrer">documentation</A>)</LI><LI>In the <STRONG>Client ID</STRONG> and <STRONG>Client Secret</STRONG> fields, paste the value generated in the previous step (in the configuration of the Trusted Application in your SAP CPQ instance)</LI><LI>Specify <STRONG>Token Service URL</STRONG> by using the base URL of your SAP CPQ instance and adding the <EM>/oauth2/token</EM> suffix (or consult the <A href="https://help.sap.com/docs/SAP_CPQ/08a7929ad06d4680b4f18cb57bc1a1d3/017e1853ce194dc98dd5cf8d310cd98a.html?locale=en-US" target="_blank" rel="noopener noreferrer">documentation</A>)</LI><LI>Select <STRONG>Use Basic credentials for Token Service</STRONG></LI><LI>For the <STRONG>Token Service User</STRONG> field, use the same value as for the <STRONG>Client ID</STRONG> field</LI><LI>For the <STRONG>Token Service Password</STRONG> field, use the same value as for the <STRONG>Client Secret</STRONG> field</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_2-1762437838928.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336934i3FD7FDA4D21EB68B/image-size/large?v=v2&px=999" role="button" title="FilipRistic_2-1762437838928.png" alt="FilipRistic_2-1762437838928.png" /></span></P><P> </P><H3 id="toc-hId-712742847">I<SPAN>mporting destination into SAP Build</SPAN></H3><P>After creating Destination in SAP BTP subaccount, it needs to be imported into SAP Build environment. Navigate your SAP Build Process Automation instance, and select <EM>SAP Build Lobby</EM> -> <EM>Control Tower</EM> -> <EM>Backend Configuration</EM> -> <EM>Destinations</EM> -> <EM>Add</EM>. Select the Destination you have created in the previous step and click <EM>Next</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_0-1762438066888.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336936iEAFF5B41E228DB8F/image-size/medium?v=v2&px=400" role="button" title="FilipRistic_0-1762438066888.png" alt="FilipRistic_0-1762438066888.png" /></span></P><P>On the next screen, select the SAP Build environment to which you want to associate new Destination and click <EM>Add Destination</EM>.</P><P> </P><H3 id="toc-hId-516229342">D<SPAN>eploying SAP Build Process Automation project</SPAN></H3><P>After creating and importing SAP BTP Destination for an SAP CPQ instance, you can deploy your SAP Build Process Automation project on a desired environment (before doing that, please make sure that you have released a version of your project, as described in <A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/releasing-project?locale=en-US" target="_blank" rel="noopener noreferrer">documentation</A>).</P><P>The process of deploying SAP Build Process Automation project is described in detail in <A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/deploy-project?locale=en-US" target="_blank" rel="noopener noreferrer">official documentation</A>. What is important to note here is that you will be asked to specify a Destination for the Destination Variable you have previously defined and used for the SAP CPQ API actions. When asked to do so, please select the Destination you have imported in the previous step.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="FilipRistic_1-1762438199483.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336937i2839433F499911D6/image-size/medium?v=v2&px=400" role="button" title="FilipRistic_1-1762438199483.png" alt="FilipRistic_1-1762438199483.png" /></span></P><P>That's it!</P><H2 id="toc-hId-190633118">Conclusion</H2><P>In this blog post, we have demonstrated how to build side-by-side extensions of SAP CPQ using SAP Build Process Automation, a low-code/no-code platform that seamlessly integrates with SAP CPQ, and the rest of the SAP ecosystem. Side-by-side extensions can help you in customizing SAP CPQ to support your concrete business processes and requirements. In the following blog posts, we will talk about other <A href="https://www.sap.com/products/technology-platform.html" target="_blank" rel="noopener noreferrer">SAP BTP (Business Technology Platform)</A> tools and services that can help you in developing side-by-side extensions for SAP CPQ.</P><H3 id="toc-hId-123202332">Resources</H3><UL><LI><A href="https://learning.sap.com/learning-journeys/create-processes-and-automations-with-sap-build-process-automation" target="_blank" rel="noopener noreferrer">"Creating Processes and Automations with SAP Build Process Automation" learning journey at SAP Learning</A></LI><LI><A href="https://api.sap.com/api/SPA_Workflow_Runtime/path/post_v1_workflow_instances" target="_blank" rel="noopener noreferrer">API specification</A></LI></UL>2025-11-18T07:34:13.518000+01:00https://community.sap.com/t5/supply-chain-management-blog-posts-by-sap/sap-ariba-slp-mdg-attachment-integration-making-the-impossible-possible/ba-p/14253565SAP Ariba SLP - MDG attachment Integration - Making the Impossible Possible2025-11-19T17:37:23.442000+01:00aravindraj_arumugamhttps://community.sap.com/t5/user/viewprofilepage/user-id/558809<P>The integration between SAP Ariba Supplier Lifecycle and Performance (SLP) and SAP Master Data Governance for Suppliers (MDG-S) enables extensive synchronization of supplier master data across both systems through choreographed business scenarios. The SLP-MDG integration supports bidirectional data exchange between SAP Ariba SLP and MDG-S, ensuring consistent supplier master data across both applications. If you would like to know the supported scenarios within this integration, refer to the standard documentation <A title="SLP-MDG integration scenarios" href="https://help.sap.com/docs/SAP_MASTER_DATA_GOVERNANCE/db97296fe85d45f9b846e8cd2a580fbd/56087944db4f4217b65b8b29289b72bc.html?version=MDG92.latest" target="_blank" rel="noopener noreferrer">here</A></P><P>In this section, we will cover the details of integrating attachments from Ariba SLP into SAP MDG or SAP ERP systems. Let's first discuss the potential documents a supplier will upload to Ariba SLP when they register or update their existing registration. </P><UL><LI>Quality and other Certificates</LI><LI>Tax and Financial Documents</LI><LI>Supporting Documents that the buyer wants the supplier to upload</LI><LI>Contractual or Risk documents</LI></UL><P>Attachments in Ariba SLP are not restricted to the above documents it could be any Ariba acceptable format that pass the inbuilt Virus test while uploading on the SAP Business Network for Suppliers (which is the UI for the Supplier when trying to register to a Buyer's SLP) </P><P>Secondly, attachment-related inputs can be collected in the Registration, Modular, and Qualification Questionnaire. The SAP Ariba SLP product team recommends receiving certifications with Validity dates through <A title="Certificate Questions" href="https://support.ariba.com/item/view/KB0404031" target="_blank" rel="noopener nofollow noreferrer">Modular questionnaires</A> only. </P><P>Lastly, <SPAN>Questionnaire respondents can add attachments to a supplier management questionnaire as a response to any of the following questions:</SPAN></P><UL class=""><LI><P class="">Answer type of<SPAN> </SPAN><SPAN class="">Attachment</SPAN>.</P></LI><LI><P class="">Answer type of<SPAN> </SPAN><SPAN class="">Certificate</SPAN>, where one of the certificate detail fields is an attachment field.</P></LI><LI><P class="">Any other answer type, with<SPAN> </SPAN><SPAN class="">Participant can add additional comments and attachments</SPAN><SPAN> </SPAN>set to<SPAN> </SPAN><STRONG><SPAN class="">Yes</SPAN></STRONG></P></LI></UL><P><SPAN class="">In the first two cases, the attachment is a direct answer to the question. In the third case, the attachment is an optional addition to the response and can be added with or without a comment. For more details about the attachment sizes supported refer to the help documentation <A title="Ariba SLP attachment size" href="https://help.sap.com/docs/strategic-sourcing/supplier-management-setup-and-administration/about-comments-and-attachments-in-supplier-forms-and-questionnaires-b6628783d32e4917955a6268a1292cd1?version=2511" target="_blank" rel="noopener noreferrer">here.</A></SPAN></P><H3 id="toc-hId-1892779142">Our Solution: A Dedicated Integration Package for Attachments</H3><P><SPAN>Given the context above, customers seeking attachment integration typically fall into two categories:</SPAN></P><OL><LI><P><STRONG>Existing Users:</STRONG> Customers already live with the standard SAP Ariba SLP integration (via SAP Integration Suite, Managed Gateway for Spend and Business Network/CIG).</P></LI><LI><P><STRONG>New Implementations:</STRONG> Customers planning or currently implementing the standard SAP SLP-MDG/ERP integration through CIG.</P></LI></OL><H4 id="toc-hId-1825348356"><SPAN>Why This Package is Essential</SPAN></H4><P><SPAN>Our integration package is designed to work for both customer groups because <STRONG>it does not disrupt the standard SAP Ariba CIG integration for Supplier Data Integration</STRONG>.</SPAN></P><P><SPAN>Instead, we leverage <STRONG>SAP Ariba's open APIs</STRONG> and <STRONG>standard SAP MDG APIs</STRONG>, making the package highly consumable, robust, and extensible for future scenarios. We strongly recommend that customers <STRONG>first implement the standard CIG-based integration</STRONG> for core vendor master data integration and then utilize this package to seamlessly supplement it with attachment integration.</SPAN></P><P>Let's now take a look at the architecture at a high level to see how to achieve this.</P><H4 id="toc-hId-1628834851"><SPAN>High-Level Architecture</SPAN></H4><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="aravindraj_arumugam_0-1763261363542.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341665i51B79B33DFE8F49C/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="aravindraj_arumugam_0-1763261363542.png" alt="aravindraj_arumugam_0-1763261363542.png" /></span></SPAN></P><P><SPAN>The integration package, which we have developed and deployed for customers, operates on a continuous polling mechanism:</SPAN></P><OL><LI><P>It checks SAP Ariba SLP at regular intervals for the latest created and changed suppliers.</P></LI><LI><P>It identifies suppliers that are <STRONG>Approved</STRONG> and have a <STRONG>Registered</STRONG> status.</P></LI><LI><P>Using <STRONG>SAP Ariba Open APIs</STRONG>, it securely transfers the attachments from the questionnaires to the target system (SAP MDG or SAP ERP), which is configurable based on customer requirements.</P></LI><LI><P>The package includes the necessary <STRONG>ABAP code</STRONG> to accurately add the attachment to the <STRONG>SAP MDG Change Request</STRONG> or the <STRONG>SAP ERP Business Partner</STRONG> record.</P></LI></OL><P>Benefits of deploying this integration package for the Ariba SLP → SAP MDG / SAP ERP BP Attachment Integration would be,</P><UL><LI>Fully automated attachment flow, zero manual intervention</LI><LI>Reduced onboarding cycle time, Accelerates Supplier Onboarding</LI><LI>Lower administrative overhead for Supplier Management teams in Customers</LI><LI>More consistent and complete supplier records, strengthening compliance and Auditability</LI><LI>Enhances Data Quality and Governance</LI><LI>Supports Multiple Integration Scenarios (Both SAP MDG and SAP ERP systems)</LI></UL><P>Customers have reported a 40-60% reduction in manual effort during supplier onboarding, based on the volume of attachments they handle. </P><P>If you have any further questions, please leave a comment below or send your inquiries to the email <A class="" href="mailto:CoE_AI_PlanningSpendExec@global.corp.sap" target="_blank" rel="noopener nofollow noreferrer">CoE_AI_PlanningSpendExec@global.corp.sap</A>. We will be happy to get back to you.</P><P> </P><P> </P><P> </P><P> </P><P> </P>2025-11-19T17:37:23.442000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AE-joule-skill-%E5%BF%9C%E7%94%A8%E7%B7%A8-automation-%E3%81%A7%E8%A4%87%E6%95%B0%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE%E3%83%90%E3%83%83%E3%82%B8%E3%82%92%E4%B8%80%E6%8B%AC%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/ba-p/14273244初めての Joule Skill 応用編:Automation で複数ユーザのバッジを一括リクエストしてみた2025-11-20T08:32:39.793000+01:00Ryota_Itohttps://community.sap.com/t5/user/viewprofilepage/user-id/1390198<P><STRONG>Joule Studio </STRONG>というサービスがリリースされてから約3ヶ月が経ちました。すでに SAP Tutorial にもいくつかコンテンツが公開されており、少しずつ盛り上がりを見せつつあります。一方で、「Joule Studio でどこまでできるのか?」という点は、まだ気になっている方も多いのではないでしょうか。</P><P>Tutorial の1つに 「<A href="https://developers.sap.com/group.joule-studio-first-skill.html" target="_self" rel="noopener noreferrer"><STRONG>Build Your First Joule Skill in Joule Studio</STRONG></A>」 というものがあります。以下のように、S/4 のモックからデータを参照する Action 、バッジを作成する Action を開発し、それらを利用した Joule Skill を開発する内容です。</P><BLOCKQUOTE><P>In this tutorial, you will create an action project for accessing business partner information from an OData service representing an SAP system. You will also create an action project for creating a badge request via an OData service representing a third-party system.</P></BLOCKQUOTE><P> 非常に勉強になる Tutorial なのですが、同僚から「例えば、<STRONG>複数のユーザを一気にバッジリクエストしたい場合</STRONG>はどうするの?」という質問をもらいました。確かに、このままの構成だと1ユーザずつ Joule にリクエストしないといけません。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 15.38.24.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342938i0854CE9FC8AFB694/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Screenshot 2025-11-20 at 15.38.24.png" alt="Screenshot 2025-11-20 at 15.38.24.png" /></span></P><P>それでは、<STRONG>複数ユーザ分をまとめてバッジリクエストできるようにしてみましょう</STRONG>。</P><P>ただし、ここで1つ問題があります。Joule Skill には、SBPA の Process でいうところの <STRONG>「Go to Step」</STRONG> や、Automation でいうところの <STRONG>「forEach」</STRONG> に相当するような、ループ制御の機能がありません。そのため、BusinessPartner の GET と Badge Create の POST を Joule Skill の中だけで繰り返し実行するのは難しい状況です。</P><P>そこで今回は、<STRONG>Automation を組み合わせる</STRONG> というアプローチを取ってみます。以下が完成形です。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 15.41.18.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342939i2AC7B21862A979F8/image-size/medium?v=v2&px=400" role="button" title="Screenshot 2025-11-20 at 15.41.18.png" alt="Screenshot 2025-11-20 at 15.41.18.png" /></span> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 15.42.21.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342940i2D485615C19F44B6/image-size/medium?v=v2&px=400" role="button" title="Screenshot 2025-11-20 at 15.42.21.png" alt="Screenshot 2025-11-20 at 15.42.21.png" /></span></P><P> </P><H2 id="toc-hId-1765540519">1. Joule Skill の仮組みを作成</H2><P>Joule Skill からは Automation(および Process)を呼び出すことができます。今回は、<STRONG>Business Partner ID のリストを Automation に渡して処理させる構成</STRONG>にします。 ただし、Joule Skill 内における Automation への Input には Data Type の設定がなく、 <STRONG>String 型のみ</STRONG> です。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 15.47.51.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342942iD49968AD304B8195/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-11-20 at 15.47.51.png" alt="Screenshot 2025-11-20 at 15.47.51.png" /></span></P><P>そのため、Joule 側では "AAAA, BBBB" のようにカンマ区切りの文字列として ID を入力してもらい、Automation 内で String から List of String に変換します。</P><UL><LI>Joule Skill の Input パラメータ名:<EM>BusinessPartnerList</EM></LI><LI>Description:<EM>a list of BusinessPartner ID like "0001, 0002"</EM></LI></UL><P>といった形で定義しておきます。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 16.09.11.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342960i18E0E2DAB8DA631D/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-11-20 at 16.09.11.png" alt="Screenshot 2025-11-20 at 16.09.11.png" /></span></P><P>(元ネタの Tutorial では他にもいくつかパラメータを設定していますが、本記事では割愛します。)</P><P> </P><H2 id="toc-hId-1569027014">2. Automation の作成</H2><P>次に、Automation を作成します。一度 Joule Skill の開発画面から離れて、SAP Build Process Automation 側で Automation プロジェクトを作成します。</P><BLOCKQUOTE><P>※ まだ Desktop Agent をセットアップしていない場合は、以下の URL を参考にセットアップしてください:<BR /><A href="https://developers.sap.com/tutorials/spa-setup-desktop-3-0-agent.html" target="_self" rel="noopener noreferrer"><STRONG>Install and Set Up Desktop Agent 3</STRONG></A></P></BLOCKQUOTE><P>最初に、<STRONG>Custom Script</STRONG> を使って String から List への変換を実装します。イメージは以下のような JavaScript 関数です。</P><pre class="lia-code-sample language-javascript"><code>function parseIds(rawIds) {
if (typeof rawIds !== "string") {
throw new Error("rawIds must be a string like 'AAA, BBBB'.");
}
const ids = rawIds
.split(",")
.map(s => s.trim())
.filter(Boolean);
if (ids.length === 0) {
throw new Error("No valid IDs found. Expected something like 'AAA, BBBB'.");
}
return ids;
}</code></pre><P>こうすることで、後続ステップで <STRONG>forEach</STRONG> を使って ID ごとの処理を実装できるようになります。</P><P>続いて、右上の <STRONG>Project Properties</STRONG> から <STRONG>Manage Dependencies → Add an Action Project Dependency</STRONG> を選択し、Tutorial で作成した Business Partner の GET と Badge Create の POST の Action Project を依存関係として追加します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Picture1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342948iA998E710758FF6A3/image-size/large?v=v2&px=999" role="button" title="Picture1.png" alt="Picture1.png" /></span></P><P>あとは、以下のようにフローを組みます。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_1-1763621873654.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342951i87E7635A18DE37DF/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="Ryota_Ito_1-1763621873654.png" alt="Ryota_Ito_1-1763621873654.png" /></span></P><OL><LI>Input 文字列を String to List で List に変換</LI><LI>forEach で ID を1件ずつ取り出す</LI><LI>Get data from BP API の Action を呼び出す</LI><LI>結果を使って Create Badge の Action を呼び出す</LI></OL><P>最後に、<STRONG>Project Properties(<SPAN>右上の歯車マーク</SPAN>) → Attributes</STRONG> から、Agent セットアップ時に設定した Agent の属性を紐づけておきます。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Picture1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342956i7A4BB4EEACFE821B/image-size/large?v=v2&px=999" role="button" title="Picture1.png" alt="Picture1.png" /></span></P><P>準備ができたら、<STRONG>Release → Deploy</STRONG> を実行します。その後、Joule Skill から利用できるように、Lobby の該当バージョンで <STRONG>Publish to Library</STRONG> をクリックして公開します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Picture2.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342957i07F5A7AFF049537B/image-size/medium?v=v2&px=400" role="button" title="Picture2.png" alt="Picture2.png" /></span></P><P> </P><H2 id="toc-hId-1372513509">3. Automation の導入(Joule Skill 側)</H2><P>再度 Joule Skill の画面に戻り、<STRONG>Run Automation</STRONG> を追加します。まずは、Browse All Automations から、先ほど作成した Automation を選択します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 16.07.42.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342958i4B2901DDBC5CB5AA/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-11-20 at 16.07.42.png" alt="Screenshot 2025-11-20 at 16.07.42.png" /></span></P><P>Input パラメータ BusinessPartnerList を Automation の Input にマッピングします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_2-1763622663065.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342961i53BBBBD6B256A672/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_2-1763622663065.png" alt="Ryota_Ito_2-1763622663065.png" /></span></P><P>後続のステップに Send Message ノードを追加します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-11-20 at 16.11.37.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342999iA4CB6BCECD0BAFB4/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-11-20 at 16.11.37.png" alt="Screenshot 2025-11-20 at 16.11.37.png" /></span></P><P>これでフローが完成したら、Joule Skill 側でも <STRONG>Release → Deploy</STRONG> を実施します。</P><P> </P><H2 id="toc-hId-1176000004">4. テスト</H2><P>先ほども少し触れましたが、Automation には <STRONG>Agent</STRONG> が必要です(ここでいう Agent は、いわゆる AI エージェントではありません、念のため…)。</P><P>Joule Skill 内で Automation を実行する場合も、どの Agent を使うか を指定しておく必要があります。</P><P>Automation および Joule Skill をデプロイした環境に、Control Tower → Environments からアクセスします。その上で、Agent Management にて、対象の Agent を追加します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Picture3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342966iB47CE20283708251/image-size/large?v=v2&px=999" role="button" title="Picture3.png" alt="Picture3.png" /></span></P><P>ローカルの PC で動いている Desktop Agent の設定で、Agent Mode が Unattended になっていることを確認します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_4-1763623036295.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342971iA2747AE580260C41/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_4-1763623036295.png" alt="Ryota_Ito_4-1763623036295.png" /></span></P><P>一番右側のタブに「Joule」とあるので、作成した Joule Skill のバージョンを確認し、Launch ボタンから Joule にアクセスします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342985i960BF721DA5ABD75/image-size/large?v=v2&px=999" role="button" title="4.png" alt="4.png" /></span></P><P>実際にプロンプトを入力して試してみます。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_6-1763623473595.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342990i9DB87657C31C55D8/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_6-1763623473595.png" alt="Ryota_Ito_6-1763623473595.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_8-1763623713706.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342993i2981696CC3E01802/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_8-1763623713706.png" alt="Ryota_Ito_8-1763623713706.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_7-1763623652966.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/342992i3A6CD4A0DEADBA29/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_7-1763623652966.png" alt="Ryota_Ito_7-1763623652966.png" /></span></P><P>それぞれの ID について Badge リクエストが登録されていることが確認できます。</P><P>やっていること自体は、Automation 側で forEach によるループを回しているだけなので、<STRONG>1件のリクエストにも複数件のリクエストにも対応できる構成</STRONG>になっています。</P><P>将来的にファイルアップロードが Joule Skill でサポートされれば、ファイルを元にさらに多くのリクエストを一括処理する、といったことも期待できそうです。</P><P> </P><H2 id="toc-hId-979486499">5. 最後に</H2><P>いかがでしたでしょうか。既存の SAP Build Process Automation(SBPA)の知識をほとんどそのまま活かしながら、Joule Skill を拡張していくことができます。</P><P>一方で、</P><UL><LI>Go to Step のような柔軟なフロー制御が Joule Skill 側にないこと</LI><LI>Automation の Output を Joule Skill の変数に直接マッピングできないこと (Help には Output タブがあると記載されていますが、少なくとも私の環境ではまだ確認できていません)</LI></UL><P>など、現時点では少し物足りない部分があるのも事実です。 とはいえ、Joule Studio と SBPA を組み合わせることでできることは、今後さらに広がっていくはずです。これからのアップデートがとても楽しみです!</P><P> </P><P>CoE Japan チームでは、Joule Studio だけでなく、様々な製品を対象に PoC やユースケース検証を実施しています。技術検証やアーキテクチャ検討、ベストプラクティスのご紹介などを通じて、お客様・パートナーの皆さまの SAP 活用を技術面からご支援しています。</P><P>Joule や SAP Build 周りで「こういうことはできる?」といったお悩みがあれば、ぜひ CoE Japan チームまでお気軽にご相談ください。</P>2025-11-20T08:32:39.793000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/first-steps-with-joule-skill-advanced-request-badges-for-multiple-users/ba-p/14273519First Steps with Joule Skill (Advanced): Request Badges for Multiple Users with Automation2025-11-20T11:44:50.317000+01:00Ryota_Itohttps://community.sap.com/t5/user/viewprofilepage/user-id/1390198<P>It has been about three months since <STRONG>Joule Studio</STRONG> was released.<BR />Several tutorials are already available on SAP Tutorials, and the community is slowly getting more active. And, I think many people still wonder: <EM>“What can we really do with Joule Studio?”。</EM></P><P>One of the tutorials is <STRONG>“Build Your First Joule Skill in Joule Studio.” </STRONG>In this tutorial, you create two Actions, Action to read data from an S/4 mock system and Action to create a badge. Then you use these Actions in a Joule Skill.</P><BLOCKQUOTE><P>In this tutorial, you will create an action project for accessing business partner information from an OData service representing an SAP system. You will also create an action project for creating a badge request via an OData service representing a third-party system.</P></BLOCKQUOTE><P>This tutorial is very good and easy to learn how to make Joule Skill. However, one of my colleagues asked me a question:</P><BLOCKQUOTE><P><EM>“What if we want to send badge requests for multiple users at once?”</EM></P></BLOCKQUOTE><P>With the tutorial as it is, you need to send a request to Joule <STRONG>one user at a time</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_0-1763629420915.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343035i38732D45AD3F3EC0/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_0-1763629420915.png" alt="Ryota_Ito_0-1763629420915.png" /></span></P><P>So in this blog, we will change the scenario and <STRONG>send badge requests for multiple users in one go</STRONG>.</P><P>There is one problem. In Joule Skill, we do <STRONG>not </STRONG>have loop control function like "<STRONG>Go to Step</STRONG>" in Process, "<STRONG>forEach</STRONG>" in Automation. Because of this, it is difficult to call <EM>Business Partner GET </EM>and<EM> Badge Create POST</EM> again and again <STRONG>inside Joule Skill only</STRONG>.</P><P>To solve this, we will use <STRONG>Automation inside Joule Skill.</STRONG> This is the final flow:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_2-1763629727494.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343040iA1AE48D3B30FD8E3/image-size/medium?v=v2&px=400" role="button" title="Ryota_Ito_2-1763629727494.png" alt="Ryota_Ito_2-1763629727494.png" /></span> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Ryota_Ito_3-1763629745094.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343041iE6667330FF734962/image-size/medium?v=v2&px=400" role="button" title="Ryota_Ito_3-1763629745094.png" alt="Ryota_Ito_3-1763629745094.png" /></span></P><P> </P><H2 id="toc-hId-1765543314">Step1 - Create a Skeleton Joule Skill</H2><P>A Joule Skill can call Automaton (or Process). In this scenario, we will send a list of Business Partner Ids from the Joule Skill to the Automation. However, in the Joule Skill, the input parameter on trigger phase does not have a data type setting. It is treated as <STRONG>String only</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_4-1763630081142.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343049i17E168B3FF24EF19/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_4-1763630081142.png" alt="Ryota_Ito_4-1763630081142.png" /></span></P><P>So, on the Joule side, Joule will enter IDs as one comma-separated string like <EM>"AAAA, BBBB". </EM>And, inside the Automation, we will convert this String to <STRONG>a List of String</STRONG>. In the Joule Skill, we define the input parameter like:</P><UL><LI>Inputs Name: <EM>BusinessPartnerList</EM></LI><LI> Description: <EM>a list of BusinessPartner ID like "AAAA, BBBB"</EM></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_5-1763630311751.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343052i70BAEB102C243EB1/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_5-1763630311751.png" alt="Ryota_Ito_5-1763630311751.png" /></span></P><P>(In the original tutorial, there are some other input parameters. To keep this blog simple, I will not use them here.)</P><P> </P><H2 id="toc-hId-1569029809">Step2 - Create the Automation</H2><P>Next, we create an Automation. Leave the Joule Skill editor, and go to SAP Build Lobby to create a new Automation project.</P><BLOCKQUOTE><P>If you have not se up the Desktop Agent yet, plz follow this tutorial:<BR /><A href="https://developers.sap.com/tutorials/spa-setup-desktop-3-0-agent.html" target="_self" rel="noopener noreferrer"><STRONG>Install and Set Up Desktop Agent 3</STRONG></A></P></BLOCKQUOTE><P>At the beginning of the Automation, we use a <STRONG>Custom Script </STRONG>to convert the input String to a List of String. The image is like the following Javascript&colon;</P><pre class="lia-code-sample language-javascript"><code>function parseIds(rawIds) {
if (typeof rawIds !== "string") {
throw new Error("rawIds must be a string like 'AAA, BBBB'.");
}
const ids = rawIds
.split(",")
.map(s => s.trim())
.filter(Boolean);
if (ids.length === 0) {
throw new Error("No valid IDs found. Expected something like 'AAA, BBBB'.");
}
return ids;
}</code></pre><P>With this, we can use forEach in the next step and process each ID one by one.</P><P>Next, open Project Properties(top-right gear icon), and select <STRONG>Manage Dependencies -> Add an Action Project Dependency.</STRONG> Here, add the two Action Projects from the original tutorial, <EM>Business Partner GET</EM> and<EM> Badge Create POST. </EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_0-1763634038911.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343102i78BBA7B06BE9DF4E/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_0-1763634038911.png" alt="Ryota_Ito_0-1763634038911.png" /></span></P><P>Now we build the flow like this:</P><OL><LI>Convert the input String to a List by the "String to List" Custom Script</LI><LI>Use forEach to take one ID at a time</LI><LI>Call the Action Get data from BusinessPartner API</LI><LI>Call the Action Create Badge using the result</LI></OL><P>Finally, in <STRONG>Project Properties -> Attributes</STRONG>, connect the Agent attribute that you created when you set up the Agent.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_2-1763634282943.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343104i2623A09297A94D79/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_2-1763634282943.png" alt="Ryota_Ito_2-1763634282943.png" /></span></P><P>When everything is ready, click <STRONG>Release -> Deploy</STRONG>. Then, to use this Automation from Joule Skill, go to the Lobby, open the correct version and click <STRONG>Publish to Library</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_3-1763634395682.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343105iF77ED590853C684D/image-size/medium?v=v2&px=400" role="button" title="Ryota_Ito_3-1763634395682.png" alt="Ryota_Ito_3-1763634395682.png" /></span></P><P> </P><H2 id="toc-hId-1372516304">3. Use the Automation inside the Joule Skill</H2><P>Go back to your Joule Skill, and add a <STRONG>Run Automation</STRONG> step. First, click <STRONG>Browse All Automations </STRONG>and select the Automation you just created.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_4-1763634532398.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343106iE2A04C9B6DEC6B8F/image-size/medium?v=v2&px=400" role="button" title="Ryota_Ito_4-1763634532398.png" alt="Ryota_Ito_4-1763634532398.png" /></span></P><P>Next, map the Joule Skill input parameter <EM>Business PartnerList </EM>to the Automation input.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_5-1763634583982.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343107i008B28BB9F2182E6/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_5-1763634583982.png" alt="Ryota_Ito_5-1763634583982.png" /></span></P><P>After that, add a <STRONG>Send Message </STRONG>node in the next step. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_6-1763634641501.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343108i52483F528D7E0241/image-size/large?v=v2&px=999" role="button" title="Ryota_Ito_6-1763634641501.png" alt="Ryota_Ito_6-1763634641501.png" /></span></P><P>When the flow is ready, click <STRONG>Release -> Deploy</STRONG> for the Joule Skill as well.</P><P> </P><H2 id="toc-hId-1176002799">4. Test the scenario</H2><P>As I mentioned before, an Automation needs an <STRONG>Agent </STRONG>(and in the correct, "Agent" is <EM>not</EM> an AI Agent <span class="lia-unicode-emoji" title=":grinning_face:">😀</span>). When we run an Automation from inside a Joule Skill, we must tell Joule <STRONG>which Agent</STRONG> to use.</P><P>Open Control Tower -> Environments, and go to the environment where your Automation and Joule Skill are deployed. In Agent Management, add the target Agent to that environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_7-1763634920186.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343109i599069930CD0741A/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_7-1763634920186.png" alt="Ryota_Ito_7-1763634920186.png" /></span></P><P>On your local PC, open the <STRONG>Desktop Agent</STRONG> settings and check that <STRONG>Agent Mode</STRONG> is <STRONG>Unattended</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_8-1763634989823.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343110i095F8D373B7A11CB/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_8-1763634989823.png" alt="Ryota_Ito_8-1763634989823.png" /></span></P><P>In the environment screen, you will see a tab named “<STRONG>Joule</STRONG>” on the far right. Check the version of the Joule Skill you created, and click <STRONG>Launch</STRONG> to open Joule.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_9-1763635021901.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343111iECF0465CED538B7D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_9-1763635021901.png" alt="Ryota_Ito_9-1763635021901.png" /></span></P><P>Now, try to send a prompt to test the Skill.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_10-1763635046533.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343112i33936A4003931CC3/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_10-1763635046533.png" alt="Ryota_Ito_10-1763635046533.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_11-1763635185785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343114i91A0E096EF37C95D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_11-1763635185785.png" alt="Ryota_Ito_11-1763635185785.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ryota_Ito_12-1763635193058.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/343115i3A04FD63AEE2312D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Ryota_Ito_12-1763635193058.png" alt="Ryota_Ito_12-1763635193058.png" /></span></P><P>You can see that a badge request is created for <STRONG>each</STRONG> ID!!</P><P>Internally, the Automation is just running a forEach loop, so the same design works for both a single request and multiple requests in one run. In the future, if Joule Skills support <STRONG>file upload</STRONG>, we may also be able to read IDs from a file and send a large number of badge requests in bulk.</P><P> </P><H2 id="toc-hId-979489294">Conclusion</H2><P>What do you think? With this approach, we can extend a Joule Skill by using our existing knowledge of SAP Build Process Automation. The way we design the Automation is almost the same as in other SBPA use cases. We simply call it from Joule.</P><P>On the other hand, there are still some gaps:</P><UL><LI>Joule Skill does not have flexible flow control like <STRONG>Go to Step</STRONG></LI><LI>We cannot directly map <STRONG>Automation output</STRONG> to Joule Skill variables yet (SAP Help says there is an Output tab, but in my current environment I cannot see it.) </LI></UL><P>Even with these limits, combining Joule Studio and SBPA already gives us many options. I am very excited to see how Joule Studio will grow in future updates!!!!</P><P> </P><P>The CoE Japan team runs PoCs and scenario validations not only for Joule Studio, but also for many other SAP products. Through technical validations, architecture discussions, and sharing best practices, we support our customers and partners in getting more value from SAP from a technical point of view.</P><P>If you are thinking: “<EM>Can we do something like this with Joule or SAP Build?</EM>” please feel free to contact the CoE Japan team.</P><DIV><DIV class=""> </DIV></DIV>2025-11-20T11:44:50.317000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/setting-up-joule-studio-for-all-partner-flows-and-entitlement-levels/ba-p/14282498Setting Up Joule Studio for All Partner Flows and Entitlement Levels2025-12-05T09:51:53.085000+01:00CharanRavikumarhttps://community.sap.com/t5/user/viewprofilepage/user-id/587985<P><EM>This blog was authored by Joule Studio Product Managers: Charan Ravikumar and Maria Kondratyeva<BR /></EM></P><H1 id="toc-hId-1637353611"> </H1><H1 id="toc-hId-1440840106"><STRONG><SPAN>Setting Up Joule Studio for All Partner Flows and Entitlement Levels</SPAN></STRONG></H1><P><SPAN><A href="https://www.sap.com/products/artificial-intelligence/joule-studio.html" target="_self" rel="noopener noreferrer">Joule Studio,</A> the latest capability in SAP Build, empowers developers to extend SAP's AI copilot with custom Joule skills and powerful Joule agents tailored to your unique business needs. These capabilities extend Joule, orchestrate complex cross-functional workflows, and unlock new levels of enterprise efficiency.</SPAN></P><P>However, we recognize that the partner landscape, with its mix of TDD, PAYG, and subscription accounts, introduces unique complexities. Many of you have asked the essential question: "How do we, as partners, get Joule Studio set up correctly in our environments?"</P><P><SPAN>This guide is built specifically for you. It synthesizes insights from our support channels and direct partner feedback to address your most common challenges, such as multi-global account integrations and navigating the new SAP Build licensing in TDD environments. Whether you're starting fresh or integrating existing services, this post outlines everything you need to know to get started efficiently and cost-effectively.<BR /></SPAN><SPAN><BR /></SPAN><SPAN>Let's get started!</SPAN></P><H2 id="toc-hId-1373409320"><SPAN>Critical Prerequisites: Licensing & Plans</SPAN></H2><P>Before diving into the setup flows, let's clarify three critical concepts that are often sources of confusion for partners. Getting these right from the start will save you significant time and effort.</P><H3 id="toc-hId-1305978534"><STRONG>The "New" SAP Build Plan (</STRONG><STRONG>build-default</STRONG><STRONG>)</STRONG></H3><P class="lia-align-justify lia-indent-padding-left-30px" style="text-align : justify; padding-left : 30px;">Many partners have existing SAP Build entitlements on a legacy "standard" plan. To use Joule Studio, you must use the <STRONG>build-default</STRONG><SPAN> plan, specifically for </SPAN><EM>SAP Build Process Automation</EM><SPAN>.</SPAN></P><UL class="lia-list-style-type-square"><LI><STRONG>Critical Action:</STRONG> <STRONG>Do NOT order a new, separate SAP Build subscription!</STRONG> In your existing Partner TDD Global Account (under a PAYG model), the entitlement for the new plan is already available.</LI><UL class="lia-list-style-type-square"><LI>You simply need to navigate to the <STRONG>Service Marketplace</STRONG> in your BTP cockpit and activate the <EM>SAP Build Process Automation</EM> service, ensuring you select the <STRONG>build-default</STRONG> plan during setup.</LI></UL><LI><STRONG>Note:</STRONG> Ordering a new subscription instead of activating the existing entitlement often leads to selecting the wrong plan and creates unnecessary account complexity.</LI><LI><STRONG>TDD Licensing Options:</STRONG></LI><UL class="lia-list-style-type-square"><LI>License the <STRONG>Pay-As-You-Go for SAP BTP for cloud test, demo, and development (SKU 8009282)</STRONG>. This grants you access to free "Fair Use Limits" for SAP Build <STRONG>(Recommended)</STRONG></LI><LI><STRONG>Alternative (Subscription):</STRONG> A subscription-based <STRONG>SAP Build TDD developer license (SKU 8019951)</STRONG> is also available, but it <STRONG>does not</STRONG> include the Fair Use Limits.</LI></UL><LI><STRONG>What is Fair Use Limits (FUL): </STRONG>The Fair Use Limit where the partner is provided an entitled specified threshold amount of TDD services free of charge per billing cycle. It’s designed to support development without unexpected costs.</LI><UL class="lia-list-style-type-square"><LI><STRONG>Please refer to this link for more details on FUL -</STRONG> <A href="https://partneredge.sap.com/en/library/assets/products/tech_plat/dgl/30/23/SAP1223023.html" target="_blank" rel="noopener noreferrer">https://partneredge.sap.com/en/library/assets/products/tech_plat/dgl/30/23/SAP1223023.html</A></LI></UL></UL><H3 id="toc-hId-1109465029"><STRONG> Joule Entitlement </STRONG></H3><UL><UL><LI><SPAN>TDD Joule Base SKU: <STRONG>8020592</STRONG></SPAN></LI><LI>Joule for Consultant and Joule for Developers are different licenses and not connected with Joule Studio license and its activation.</LI></UL><LI><P><STRONG>For Custom Joule Skills:</STRONG> There is no additional cost for the orchestration and invocation of custom Joule <STRONG>Skills</STRONG> using the current features in Joule Studio. This means <STRONG>you do not need AI Units to run custom Joule Skills</STRONG> in your production environments.</P></LI><LI><P><STRONG>For Custom Joule Agents:</STRONG> Following the <STRONG>free promotion in Q1 2026.</STRONG> the execution of custom <STRONG>Joule Agents</STRONG> in will consume <STRONG>AI Units</STRONG>.</P></LI><LI><P>It’s important to note that for both custom skills and agents, the underlying components they use will still follow their standard commercial models. For example, if your custom Joule skill or agent kicks off a business process automation, the usage of SAP Build Process Automation will still be billed according to its pricing structure.</P></LI></UL><H3 id="toc-hId-912951524"><STRONG>The Multi-Global Account Scenario</STRONG></H3><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">It is very common for partners to have their Joule entitlement in a TDD subscription based global account and their SAP Build entitlement in a separate TDD PAYG global account. <STRONG>This is a supported scenario.</STRONG></P><UL><LI><STRONG>The Golden Thread:</STRONG> The key to making this work is to ensure that <STRONG>both global accounts are federated under the same SAP Cloud Identity Services (IAS)</STRONG>. This single identity provider is what allows the two systems to trust each other and integrate seamlessly.</LI><LI>To run Joule Booster or Joule Formation (see table below), select the 2 global accounts you have.</LI></UL><H2 id="toc-hId-587355300"><SPAN>Understanding Your Integration Flow: Starting Points and Required Steps</SPAN></H2><P>This table outlines the five primary scenarios for integrating SAP Build Process Automation (SBPA in the future text) capabilities into the Joule Studio environment. Identify which flow best matches your current setup, whether you’re starting fresh or have existing SBPA or Joule subscriptions. This will immediately provide you with the exact action steps and critical notes required for a successful connection.</P><P> </P><TABLE width="957px"><TBODY><TR><TD width="295.217px" height="50px"><P>Starting Point</P></TD><TD width="661.224px" height="50px"><P>Key Action Steps</P></TD></TR><TR><TD width="295.217px" height="392px"><P>The partner is setting up both Joule and SBPA from scratch. </P></TD><TD width="661.224px" height="392px"><UL><LI><STRONG>Check the Prerequisites mentioned above. Verify the assignments.</STRONG></LI><LI>Setup <STRONG>SBPA. </STRONG> <SPAN><BR /><A href="https://www.youtube.com/watch?v=VTkOObQzLWA" target="_blank" rel="noopener nofollow noreferrer">Setup SBPA Step by Step Video Guide</A></SPAN></LI><LI>Both <STRONG>Joule</STRONG> and <STRONG>SBPA</STRONG> need to be on the same <STRONG>Cloud Identity Service</STRONG>. </LI><LI>Connect <STRONG>Joule</STRONG> and <STRONG>SBPA</STRONG> by running the <STRONG>Joule Booster</STRONG> <SPAN><BR /><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_41c6lxa0" target="_blank" rel="noopener nofollow noreferrer">Step by Step Video Guide for Joule Studio Activation SAP BTP</A></SPAN></LI><LI>Verify <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">SBPA Role Collections.</A></SPAN> (On SBPA Sub Account) </LI><LI>Create <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">Joule Role Collections.</A></SPAN> (On Joule Sub Account) </LI><UL><LI>joule_extensibility</LI><LI>end_user </LI></UL><LI>Finalize <STRONG>trust/security </STRONG>configurations.</LI><LI>Verify entitlement/instance setup. </LI><LI>Access<STRONG> Joule Studio</STRONG>.</LI></UL></TD></TR><TR><TD width="295.217px" height="500px"><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">The partner already has Joule (Booster provisioned) and now links the existing SBPA (it must be a build-default plan) for Joule Studio.</P></TD><TD width="661.224px" height="500px"><OL><LI><STRONG>Verify SBPA Prerequisites:</STRONG> Ensure SBPA entitlement is on the <STRONG>build-default</STRONG> plan (standard plan is <STRONG>not compatible</STRONG>).</LI><LI>Setup <STRONG>SBPA</STRONG>. <SPAN><BR /><A href="https://www.youtube.com/watch?v=VTkOObQzLWA" target="_blank" rel="noopener nofollow noreferrer">Setup SBPA Step by Step Video Guide</A></SPAN></LI><LI>Both <STRONG>Joule</STRONG> and <STRONG>SBPA</STRONG> need to be on the same <STRONG>Cloud Identity Service</STRONG>. </LI><LI><STRONG>Update Formation in Joule Global Account:</STRONG></LI><OL><LI>Navigate to System Landscape -> Formations. </LI><LI>Select the existing Integration with Joule formation.</LI><LI>Click <STRONG>Include Systems</STRONG> and select the <STRONG>SBPA subaccount</STRONG>.</LI><LI>Check <STRONG>Enable Capability Deployment</STRONG> and finalize. </LI></OL><LI><STRONG>Wait</STRONG> for Formation Status to become <STRONG>Ready</STRONG>. </LI><LI>Verify <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">SBPA Role Collections.</A></SPAN> (On SBPA Sub Account) </LI><LI>Create <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">Joule Role Collections.</A></SPAN> (On Joule Sub Account) </LI><OL><LI>joule_extensibility</LI><LI>end_user </LI></OL></OL></TD></TR><TR><TD width="295.217px" height="345px"><P>The partner has an existing SBPA (on the correct build-default plan) and now wants to add Joule.</P></TD><TD width="661.224px" height="345px"><UL><LI><STRONG>Check the Prerequisites mentioned above for Joule. Verify the assignments.</STRONG></LI><LI>Both <STRONG>Joule</STRONG> and <STRONG>SBPA</STRONG> need to be on the same <STRONG>Cloud Identity Service</STRONG>. </LI><LI><STRONG>Connect the new Joule</STRONG> to the existing SBPA by running the <STRONG>Joule Booster</STRONG> <SPAN><BR /><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_41c6lxa0" target="_blank" rel="noopener nofollow noreferrer">Step by Step Video Guide for Joule Studio Activation SAP BTP</A></SPAN></LI><LI>Verify <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">SBPA Role Collections.</A></SPAN> (On SBPA Sub Account) </LI><LI>Create <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">Joule Role Collections.</A></SPAN> (On Joule Sub Account) </LI><UL><LI>joule_extensibility</LI><LI>end_user </LI></UL><LI>Finalize <STRONG>trust/security </STRONG>configurations.</LI><LI>Verify entitlement/instance setup. </LI><LI>Access<STRONG> Joule Studio</STRONG>.</LI></UL></TD></TR><TR><TD width="295.217px" height="370px"><P>The partner already has both services (on the correct plan); they just need to be linked for Joule Studio.</P></TD><TD width="661.224px" height="370px"><UL><LI><STRONG>Check the Prerequisites mentioned above. Verify the assignments.</STRONG></LI><LI>Both <STRONG>Joule</STRONG> and <STRONG>SBPA</STRONG> need to be on the same <STRONG>Cloud Identity Service</STRONG>. </LI><LI><STRONG>Update Formation in Joule Global Account:</STRONG></LI><UL><LI>Navigate to System Landscape -> Formations. </LI><LI>Select the existing Integration with Joule formation.</LI><LI>Click <STRONG>Include Systems</STRONG> and select the <STRONG>SBPA subaccount</STRONG>.</LI><LI>Check <STRONG>Enable Capability Deployment</STRONG> and finalize. </LI></UL><LI><STRONG>Wait</STRONG> for Formation Status to become <STRONG>Ready</STRONG>. </LI><LI>Verify <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">SBPA Role Collections.</A></SPAN> (On SBPA Sub Account) </LI><LI>Create<SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer"> Joule Role Collections.</A></SPAN> (On Joule Sub Account) </LI><UL><LI>joule_extensibility</LI><LI>end_user </LI></UL></UL></TD></TR><TR><TD width="295.217px" height="347px"><P>The partner has both, but SBPA is on the standard plan (requires an upgrade).</P></TD><TD width="661.224px" height="347px"><UL><LI><SPAN><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/upgrading-from-free-plan-to-standard-plan" target="_blank" rel="noopener noreferrer"><STRONG>Upgrade SBPA to the correct plan</STRONG></A><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/upgrading-from-free-plan-to-standard-plan" target="_blank" rel="noopener noreferrer"> (build-default)</A></SPAN>.</LI><LI>Both <STRONG>Joule</STRONG> and <STRONG>SBPA</STRONG> need to be on the same <STRONG>Cloud Identity Service</STRONG>. </LI><LI><STRONG>Update Formation in Joule Global Account:</STRONG></LI><UL><LI>Navigate to System Landscape -> Formations. </LI><LI>Select the existing Integration with Joule formation.</LI><LI>Click <STRONG>Include Systems</STRONG> and select the <STRONG>SBPA subaccount</STRONG>.</LI><LI>Check <STRONG>Enable Capability Deployment</STRONG> and finalize. </LI></UL><LI><STRONG>Wait</STRONG> for Formation Status to become <STRONG>Ready</STRONG>. </LI><LI>Verify <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">SBPA Role Collections.</A></SPAN> (On SBPA Sub Account) </LI><LI>Create <SPAN><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/11f93c7775274b2996e1469b1bc07584.html" target="_blank" rel="noopener noreferrer">Joule Role Collections.</A></SPAN> (On Joule Sub Account) </LI><UL><LI>joule_extensibility</LI><LI>end_user </LI></UL></UL></TD></TR></TBODY></TABLE><P><FONT size="5"><STRONG>How to Activate the Limited-Time Offer for Agent Builder</STRONG></FONT></P><P>Once you have the prerequisites in place, you can take advantage of our promotional offer to explore the full potential of custom Joule agents. Here's how:</P><OL><LI><STRONG>Build Your Agent:</STRONG> The capability to build Joule agents will automatically appear in your lobby—no extra setup required.</LI><LI><STRONG>Test & Run for Free:</STRONG> Activate our limited-time promotional offer to run your custom agents with zero execution costs from now throughout Q1 2026.</LI></OL><P><STRONG>To activate the offer:</STRONG></P><P>1. Navigate to the <STRONG>Control Tower</STRONG> in your SAP Build tenant.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-12-19 at 10.14.11.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/354172iD2F39B9BA98F8DDD/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-12-19 at 10.14.11.png" alt="Screenshot 2025-12-19 at 10.14.11.png" /></span></P><P>2. Select <STRONG>AI Agent Builder Activation</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-12-19 at 10.04.01.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/354171i04D5799AB8036D6F/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-12-19 at 10.04.01.png" alt="Screenshot 2025-12-19 at 10.04.01.png" /></span></P><P>3. Enable agent builder, by accepting the terms and condition</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2025-12-19 at 10.04.08.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/354170i1F8C94946DBF8100/image-size/large?v=v2&px=999" role="button" title="Screenshot 2025-12-19 at 10.04.08.png" alt="Screenshot 2025-12-19 at 10.04.08.png" /></span></P><H2 id="toc-hId-390841795"><STRONG>FAQ & Common Pitfalls for Partners</STRONG></H2><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><STRONG>Q1: I don't see the </STRONG><STRONG>build-default</STRONG><STRONG> plan for SAP Build in my TDD account. How do I get it?</STRONG> Do not order a new paid subscription. Ensure you have the correct TDD account with BTP PAYG license. Then, go to your BTP Cockpit -> Service Marketplace. Find "SAP Build Process Automation" and create a new instance/subscription, making sure to select the build-default plan.</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><STRONG>Q2: My Joule and SAP Build are in different Global Accounts. Is that a problem?</STRONG> No, this is a common and supported partner scenario. The absolute requirement is that both global accounts' subaccounts use the <STRONG>same Cloud Identity Service (IAS) tenant</STRONG> for authentication.</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><STRONG>Q3: I ran the booster, but Joule Studio doesn't appear, or I get an error when deploying. What's wrong?</STRONG> This is almost always one of three issues:</P><OL><LI><STRONG>Mismatched Identity Services:</STRONG> Your Joule and SBPA subaccounts are pointing to different IAS tenants.</LI><LI><STRONG>Incorrect SBPA Plan:</STRONG> You are still on the "standard" plan instead of "build-default".</LI><LI><STRONG>Incorrect Joule SKU:</STRONG> Make sure you have a correct Joule license under <STRONG>Joule service TDD SKU (8020592)</STRONG> at no cost. To be on the safe side, please contact with your account manager, making sure you have right SKU enabled.</LI><LI><STRONG>Missing Role Collections:</STRONG> Your user is missing the <EM>joule_extensibility</EM><STRONG><EM> </EM></STRONG>and <EM>end_user</EM> roles in the Joule subaccount, or the necessary developer roles in the SBPA subaccount.</LI></OL><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><STRONG>Q4: I followed the steps, but deployment still fails with an IdP error:</STRONG> This points to a deeper trust configuration issue. Verify the trust settings between your BTP subaccounts and the IAS tenant. Ensure the Integration with Joule Formation status is Ready. If the issue persists, we recommend logging a free Technical Advisory request via the <A href="https://partnerbenefitscatalog.sap.com/Partner-Benefits-Catalog/Innovation/SAP-BTP-Technical-Advisory/p/1002329" target="_blank" rel="noopener noreferrer">SAP BTP Technical Advisory</A> service for expert assistance.</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><STRONG>Q5: I am experiencing an ongoing issue and require further assistance. How may I contact you? </STRONG><STRONG>Please submit </STRONG>a free Technical Advisory request via the <A href="https://partnerbenefitscatalog.sap.com/Partner-Benefits-Catalog/Innovation/SAP-BTP-Technical-Advisory/p/1002329" target="_blank" rel="noopener noreferrer">SAP BTP Technical Advisory</A> service for expert assistance.</P><H2 id="toc-hId-194328290"><SPAN>Helpful Resources for Setup and Activation </SPAN></H2><UL><LI><A href="https://community.sap.com/t5/application-development-and-automation-blog-posts/how-to-get-started-with-joule-studio/ba-p/14152855" target="_blank">How to get started with Joule Studio</A></LI><LI><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/getting-started-with-joule-studio-in-sap-build-part-1-provisioning-joule/ba-p/14157407" target="_blank">Provisioning Joule Studio</A> </LI><LI><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/enabling-joule-studio-in-sap-build-for-existing-joule-customers/ba-p/14162550" target="_blank">Enabling Joule Studio for existing customers </A></LI><LI><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_41c6lxa0" target="_blank" rel="noopener nofollow noreferrer">Step by Step Video Guide for Joule Studio Activation SAP BTP</A></LI><LI><A href="https://discovery-center.cloud.sap/index.html#/missiondetail/4643/4932/?tab=overview" target="_blank" rel="noopener nofollow noreferrer">Reference Architecture for Joule Studio </A></LI><LI><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/activate-joule-studio-in-5-simple-steps/ba-p/14252945" target="_blank">Activate Joule Studio in 5 Simple Steps</A></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CharanRavikumar_0-1764731911436.png" style="width: 505px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/347781iB1416800F6D52011/image-dimensions/505x312?v=v2" width="505" height="312" role="button" title="CharanRavikumar_0-1764731911436.png" alt="CharanRavikumar_0-1764731911436.png" /></span></P>2025-12-05T09:51:53.085000+01:00https://community.sap.com/t5/product-lifecycle-management-blog-posts-by-sap/ready-set-go-jump-start-complex-collaboration-scenarios-with-start-forms/ba-p/14286615Ready, Set, Go! Jump-start complex Collaboration Scenarios with Start Forms2025-12-10T10:24:29.553000+01:00mberlinghofhttps://community.sap.com/t5/user/viewprofilepage/user-id/129981<P>Manually creating Collaborations in SAP Integrated Product Development (IPD) often requires several steps: creating the Collaboration itself, adding Reference Objects and Participants, starting Workflows, and more. Public APIs let you automate these steps. By invoking those APIs from a Process in SAP Build Process Automation - triggered by a Start Form - you can deliver an app-like experience to users inside SAP Build Work Zone.</P><P>This post shows how to provide dedicated Start Form apps for common IPD Collaboration scenarios. The main steps are:</P><UL><LI>Configure the Collaboration Type.</LI><LI>Design the Process and Start Form.</LI><LI>Add the Start Form to SAP Build Work Zone.</LI></UL><H2 id="toc-hId-1766557165">Configure the Collaboration Type</H2><P><A href="https://help.sap.com/docs/PLM_EPD/1bfdb8b2f0264b66a818a2a889ee8c31/6975e1b300da4982b2d531135ce6a2b3.html" target="_self" rel="noopener noreferrer">Create a Collaboration Type</A> <SPAN>that maps to your business needs. Define a Status Profile, add Reference Objects, and attach Workflows. Using APIs to create Collaborations imposes no extra requirements.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Configure Collaboration" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/350075iF2F83EADBA56998F/image-size/large?v=v2&px=999" role="button" title="mberlinghof_0-1765269187147.png" alt="Configure Collaboration" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Configure Collaboration</span></span></P><P> </P><H2 id="toc-hId-1570043660">Design the Process and Start Form</H2><P>Make sure that you have imported all required Actions for SAP Integrated Product Development Collaboration from <SPAN><A href="https://api.sap.com/api/EPD_COLLABORATION/overview" target="_self" rel="noopener noreferrer">SAP Business Accelerator Hub</A>. </SPAN>Create a new Process in SAP Build Process Automation and design a <A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/configure-start-trigger-form-form-and-approval-form-settings" target="_self" rel="noopener noreferrer">Form as Trigger</A> for the Process.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Start Form Designer" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/350283iBFF4D4595813C007/image-size/large?v=v2&px=999" role="button" title="mberlinghof_0-1765284490443.png" alt="Start Form Designer" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Start Form Designer</span></span></P><P>Add the Actions you need based on the Collaboration properties you want to set. In our example:</P><OL><LI>Create a new Collaboration.</LI><LI>Add a Participant.</LI><LI>Add a Reference Object.</LI><LI>Optionally start a Workflow (based on a user choice).</LI></OL><P><SPAN>There are no tasks that require user interaction in this example. Of course, you can use all features provided by SAP Build Process Automation.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Process Design" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/350263iB35FA37953EDA0E2/image-size/large?v=v2&px=999" role="button" title="mberlinghof_1-1765282035038.png" alt="Process Design" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Process Design</span></span></P><H2 id="toc-hId-1373530155">Add Start Form to SAP Build Work Zone</H2><P><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/configure-start-trigger-form-with-sap-build-work-zone" target="_self" rel="noopener noreferrer">Create a local copy</A> of the Process Trigger App and provide the <SPAN>Launchpad Configuration Parameters of your deployed Process. Add this to your site and apply the required authorizations. The form will become visible as separate tile.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Start Form in SAP Build Work Zone" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/350261i9D7C921CF58B2B27/image-size/large?v=v2&px=999" role="button" title="mberlinghof_0-1765280988139.png" alt="Start Form in SAP Build Work Zone" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Start Form in SAP Build Work Zone</span></span></P><P><SPAN>When users click the tile, the Start Form appears. </SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Start Form" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/350267iFF1E6AFE18A77416/image-size/large?v=v2&px=999" role="button" title="mberlinghof_3-1765282648423.png" alt="Start Form" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Start Form</span></span></P><P><SPAN>After they complete required fields and submit, the Process invokes the APIs to create the Collaboration, add the Reference Object and Participant, and start the Workflow if requested. The collaboration is ready within seconds and contains all necessary data for users to begin work.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Ready to use Collaboration" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/350269i1857CBA42AC7976C/image-size/large?v=v2&px=999" role="button" title="mberlinghof_4-1765283083223.png" alt="Ready to use Collaboration" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Ready to use Collaboration</span></span></P><H2 id="toc-hId-1177016650">Summary</H2><P><SPAN>Start Forms are an efficient way to expose frequently used Collaboration setups to end users. By leveraging custom Processes, you can enrich user input with external data, add validations, and improve data quality and the overall experience - enabling smoother, faster collaboration.</SPAN></P><P> </P><P> </P>2025-12-10T10:24:29.553000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/guide-to-process-automation-apis-part-ii-api-keys/ba-p/14292296Guide to Process Automation APIs - Part II - API Keys2025-12-17T15:15:07.151000+01:00Dan_Wroblewskihttps://community.sap.com/t5/user/viewprofilepage/user-id/72<P>In this series:</P><UL><LI><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/guide-to-process-automation-apis-part-i-getting-started/ba-p/14148983" target="_self">Guide to Process Automation APIs - Part I - Getting Started</A></LI><LI>Guide to Process Automation APIs - Part II - API Keys (this blog post)</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="rule.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/295882i3E2967613A5D1256/image-size/large?v=v2&px=999" role="button" title="rule.png" alt="rule.png" /></span></P><P>API keys are required when called SAP Build Process Automation keys, but it can be confusing to know you need to provide, what different keys will return, and how to set it all up.</P><H2 id="toc-hId-1767357927">When do you need an API key?</H2><P>Each environment lets you assign permissions to users for that environment. To do this, in the environment, click on <STRONG>Share</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_0-1765971058795.png" style="width: 1047px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353097i12646C1E3358909F/image-dimensions/1047x357?v=v2" width="1047" height="357" role="button" title="Dan_Wroblewski_0-1765971058795.png" alt="Dan_Wroblewski_0-1765971058795.png" /></span></P><P>Then you will be able to assign to a user specific authorizations. <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/188699">@Alex-Fortin</a> (who is brilliant) has a wonderful <A href="https://community.sap.com/t5/application-development-and-automation-blog-posts/sap-build-process-automation-how-to-transition-to-shared-environment/ba-p/14049650" target="_self">blog about "shared" environments</A> and assigning authorizations, including a table of what each authorization enables.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_1-1765971117170.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353099i86840EC61DDC5744/image-size/medium?v=v2&px=400" role="button" title="Dan_Wroblewski_1-1765971117170.png" alt="Dan_Wroblewski_1-1765971117170.png" /></span></P><P>Different authorizations will allow you different API calls, but let's use the <A href="https://api.sap.com/api/SPA_Workflow_Runtime/path/get_v1_workflow_instances" target="_self" rel="noopener noreferrer">Workflow API</A> as an example. If you have the <STRONG>Monitor </STRONG>authorization than you will be able to run the Workflow API for this environment.</P><P>To make it more complicated, you can also have the <STRONG>ProcessAutomationAdmin</STRONG> role collection (from the SAP BTP cockpit) and then you can run this API for any environment, without needing authorizations for any of the environments. </P><P>And ll of this works <STRONG>WITHOUT ANY API KEY</STRONG> if you are authenticated using user token exchange. But if you are using client credentials and are authenticated simply as the service, then you need an API key. </P><H2 id="toc-hId-1570844422"> </H2><H2 id="toc-hId-1374330917">How to create an API key?</H2><P>Go to the SAP Build Control Tower and click <STRONG>Others > API Keys</STRONG>. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_0-1765978408370.png" style="width: 1119px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353158iAE22AD73D498452D/image-dimensions/1119x614?v=v2" width="1119" height="614" role="button" title="Dan_Wroblewski_0-1765978408370.png" alt="Dan_Wroblewski_0-1765978408370.png" /></span></P><P>Then just create a new API key.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_1-1765978622647.png" style="width: 1084px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353159iC24779E186CDF7B9/image-dimensions/1084x250?v=v2" width="1084" height="250" role="button" title="Dan_Wroblewski_1-1765978622647.png" alt="Dan_Wroblewski_1-1765978622647.png" /></span></P><P>Then you set the following:</P><UL><LI><STRONG>Name/Description</STRONG></LI><LI><STRONG>Scopes</STRONG>, that is, what authorizations assigned to the key. There is information on what each scope means </LI><LI><STRONG>Environments</STRONG>, that is, for which environments the key will work. You can specify one or more environments, or you can give the key access to all environments, including future ones. <BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_2-1765979099559.png" style="width: 349px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353160iA186015A6C57D817/image-dimensions/349x311?v=v2" width="349" height="311" role="button" title="Dan_Wroblewski_2-1765979099559.png" alt="Dan_Wroblewski_2-1765979099559.png" /></span></LI></UL><P>The scopes are explained in this <A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/api-keys" target="_self" rel="noopener noreferrer">documentation page</A>. For reading workflow instances, you need <EM><STRONG>trigger_read</STRONG></EM> and <EM><STRONG>environment_read </STRONG></EM>scopes.</P><P>When you are finished, the key is displayed. You have one chance to copy it, and then you can no longer retrieve it from SAP Build.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_3-1765979205872.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353161i343137BCE251D5C7/image-size/medium?v=v2&px=400" role="button" title="Dan_Wroblewski_3-1765979205872.png" alt="Dan_Wroblewski_3-1765979205872.png" /></span></P><P>Note that there is also a UI for creating API keys in each environment. The UI is the same except that that environment is automatically selected and you cannot select a different one.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_4-1765979360444.png" style="width: 1226px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353162iDE7DD7401B9C6287/image-dimensions/1226x331?v=v2" width="1226" height="331" role="button" title="Dan_Wroblewski_4-1765979360444.png" alt="Dan_Wroblewski_4-1765979360444.png" /></span></P><P> </P><H2 id="toc-hId-1177817412">What does API return based on the key?</H2><P>If the API key is required, you must provide it as an HTTP header with the name <EM><STRONG>api-key</STRONG></EM>.</P><P>Note that the key used to be <EM><STRONG>irpa-api-key,</STRONG></EM> or something like that. I went crazy wondering why my API calls were not working, until something told me that the key name had apparently changed. <span class="lia-unicode-emoji" title=":pouting_cat_face:">😾</span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_5-1765979502511.png" style="width: 1009px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353163i0EE415F6287741AC/image-dimensions/1009x349?v=v2" width="1009" height="349" role="button" title="Dan_Wroblewski_5-1765979502511.png" alt="Dan_Wroblewski_5-1765979502511.png" /></span></P><P>The following is a summary of what happens given the example of calling the GET call of the Workflow API's workflow-instances, depending on:</P><UL><LI>How you authenticate</LI><LI>What role the user has (if user token exchange is used)</LI><LI>Whether the user has the Monitor authorization for the given environment (if user token exchange is used)</LI><LI>Whether an API key is sent that is valid and has the correct scopes for the given API</LI></UL><TABLE border="1" width="100%"><TBODY><TR><TD width="20%" height="57px"><STRONG>ProcessAutomationAdmin Role Collection</STRONG></TD><TD width="20%" height="57px"><STRONG>API Key</STRONG></TD><TD width="20%" height="57px"><STRONG>Monitor Authorization</STRONG></TD><TD width="20%" height="57px"><STRONG>Authentication</STRONG></TD><TD width="20%" height="57px"><STRONG>Does API return values?</STRONG></TD></TR><TR><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD width="20%" height="30px">NA</TD><TD width="20%" height="30px">NA</TD><TD width="20%" height="30px">User Token Exchange</TD><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD></TR><TR><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":cross_mark:">❌</span></TD><TD width="20%" height="30px">NA</TD><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD width="20%" height="30px">User Token Exchange</TD><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD></TR><TR><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":cross_mark:">❌</span></TD><TD width="20%" height="30px">NA</TD><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":cross_mark:">❌</span></TD><TD width="20%" height="30px">User Token Exchange</TD><TD width="20%" height="30px"> <span class="lia-unicode-emoji" title=":cross_mark:">❌</span></TD></TR><TR><TD width="20%" height="30px"> NA</TD><TD width="20%" height="30px"> <span class="lia-unicode-emoji" title=":cross_mark:">❌</span></TD><TD width="20%" height="30px">NA </TD><TD width="20%" height="30px">Client Credentials </TD><TD width="20%" height="30px"><span class="lia-unicode-emoji" title=":cross_mark:">❌</span> </TD></TR><TR><TD height="30px"> NA</TD><TD height="30px"><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD height="30px">NA </TD><TD height="30px">Client Credentials </TD><TD height="30px"><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD></TR></TBODY></TABLE><P>As an example, in this call:</P><UL><LI>I am authenticated using client credentials.</LI><LI>A URL parameter indicates to return only workflow instances from the <EM><STRONG>salesgroup</STRONG> </EM>environment.</LI><LI>I supplied an API key for the <EM><STRONG>salesgroup</STRONG> </EM>environment with <EM><STRONG>trigger_read</STRONG></EM> and <EM><STRONG>environment_read </STRONG></EM> scopes </LI></UL><P>And now I can see the running instances for that environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Dan_Wroblewski_6-1765980776776.png" style="width: 1097px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353170i47A91D2E199E767C/image-dimensions/1097x598?v=v2" width="1097" height="598" role="button" title="Dan_Wroblewski_6-1765980776776.png" alt="Dan_Wroblewski_6-1765980776776.png" /></span></P><P>In upcoming blogs, we'll look at specific APIs, what they return/do and how to use them.</P><P>P.S.: Apologies for taking so long on this Part II <span class="lia-unicode-emoji" title=":kissing_cat_face:">😽</span></P><P> </P><P> </P>2025-12-17T15:15:07.151000+01:00https://community.sap.com/t5/artificial-intelligence-blogs-posts/sap-joule-extensibility-with-joule-studio-skill-builder/ba-p/14268385SAP Joule Extensibility - With Joule Studio Skill Builder2025-12-22T08:04:15.216000+01:00AmitBangotrahttps://community.sap.com/t5/user/viewprofilepage/user-id/1809142<P class="">During TechEd, AI was a central theme across nearly all sessions — it was rare to find one where the term “AI” wasn’t mentioned. Many of these sessions focused on <STRONG>Joule agents</STRONG>, <STRONG>skills</STRONG>, and the <STRONG>Agent Builder</STRONG>, which is expected to be released by the end of <STRONG>December 2025</STRONG>.</P><P class="">That said, <STRONG>Joule Studio</STRONG> is already available today as part of <STRONG>Build Process Automation</STRONG>. In addition to the upcoming Agent Builder, it is currently possible to extend Joule’s capabilities using <STRONG>Custom Joule Skills</STRONG> through the <STRONG>Joule Skill Builder</STRONG>.</P><P class="">To put it simply, we are still running <STRONG>S/4HANA 2022 FPS02</STRONG>, and features such as <EM>Sales Order Fulfillment and Monitoring</EM> (SAP Note 3459573) via Joule are only available in later releases. As a result, asking Joule transactional questions related to Sales Orders does not yield any response.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_0-1763055983613.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340266iEF082B7602D92F2D/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="AmitBangotra_0-1763055983613.png" alt="AmitBangotra_0-1763055983613.png" /></span></P><P><SPAN>Here’s where the</SPAN> <STRONG>Joule Skill Builder</STRONG> <SPAN>in</SPAN> <STRONG>Joule Studio</STRONG> <SPAN>comes into play.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_1-1763056013632.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340267i4F14C65A71377235/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="AmitBangotra_1-1763056013632.png" alt="AmitBangotra_1-1763056013632.png" /></span></P><P class="">We could create a custom skill and leverage existing <STRONG>BAPIs</STRONG> in the <STRONG>S/4HANA</STRONG> system. (First, a <STRONG>destination</STRONG> must be configured in the <STRONG>BPA BTP subaccount</STRONG> to establish the connection with the S/4 system.)</P><P class="">Once the S/4 system is accessible from <STRONG>BPA</STRONG> via this destination, the next step is to define <STRONG>actions</STRONG>—specifying which fields, tasks, and data should be retrieved from S/4 using the relevant <STRONG>BAPIs</STRONG> (in this case, those related to <STRONG>Sales Orders</STRONG>).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_2-1763056044987.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340268i05079935BC9124B1/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_2-1763056044987.png" alt="AmitBangotra_2-1763056044987.png" /></span></P><P><SPAN>The only mandatory input field required is the</SPAN> <STRONG>Sales Document Number</STRONG><SPAN>; all other fields have been excluded from the selection.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_3-1763056087007.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340269iBD4152A46055D594/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_3-1763056087007.png" alt="AmitBangotra_3-1763056087007.png" /></span></P><P><SPAN>The following are the only</SPAN> <STRONG>output fields</STRONG> <SPAN>(or outputs) of interest for this</SPAN> <STRONG>Joule Skill</STRONG><SPAN>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_4-1763056115670.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340270i0D8E9966DF3330B8/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_4-1763056115670.png" alt="AmitBangotra_4-1763056115670.png" /></span></P><P><SPAN>Once the</SPAN> <STRONG>Action</STRONG> <SPAN>is defined, we’re ready to build our first</SPAN> <STRONG>basic Joule Skill</STRONG><SPAN>. I’ll include a few numbered screenshots to illustrate the process and explain the overall flow.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_5-1763056143750.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340272i6D13D76ACADEB885/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_5-1763056143750.png" alt="AmitBangotra_5-1763056143750.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_6-1763056167135.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340273i6A37C52119FA213F/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_6-1763056167135.png" alt="AmitBangotra_6-1763056167135.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_0-1763056569091.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340278iFCB63E1C098E395E/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_0-1763056569091.png" alt="AmitBangotra_0-1763056569091.png" /></span></P><P> </P><P><SPAN>Once the skill is deployed in your</SPAN> <STRONG>BPA environment</STRONG><SPAN>, you can</SPAN> <STRONG>grant and share access</STRONG> <SPAN>to other users using the</SPAN> <STRONG>Share</STRONG> <SPAN>option. To test the skill, simply</SPAN> <STRONG>launch the standalone Joule</STRONG> <SPAN>using the</SPAN> <STRONG>Launch</STRONG> <SPAN>button.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_7-1763056188685.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340274i629611D2DE9F32AA/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_7-1763056188685.png" alt="AmitBangotra_7-1763056188685.png" /></span></P><P class="">The skill can also be <STRONG>deployed and made available</STRONG> to the <STRONG>central/shared Joule instance</STRONG> that is enabled across the SAP landscape, encompassing both <STRONG>private and public cloud systems and services</STRONG> (via <STRONG>Joule Formation</STRONG>).</P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_8-1763056213571.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340275iD3E2373607D03018/image-size/medium?v=v2&px=400" role="button" title="AmitBangotra_8-1763056213571.png" alt="AmitBangotra_8-1763056213571.png" /></span><P><SPAN>Now we can retry the same</SPAN> <STRONG>Sales Order queries</STRONG> <SPAN>to check if</SPAN> <STRONG>Joule</STRONG> <SPAN>can provide meaningful responses. This time, I invoked</SPAN> <STRONG>Joule directly from our S/4HANA system</STRONG><SPAN>, rather than launching it as a standalone instance from</SPAN> <STRONG>BPA</STRONG><SPAN>.</SPAN></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmitBangotra_9-1763056237985.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340276iC49C15B8C03B76F1/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="AmitBangotra_9-1763056237985.png" alt="AmitBangotra_9-1763056237985.png" /></span><P class="">Although this functionality is not natively supported in the <STRONG>S/4HANA version</STRONG> we are currently running, we successfully <STRONG>extended Joule’s capabilities</STRONG> by creating <STRONG>custom skills</STRONG> to address a simple, practical use case.</P><P class=""><STRONG>Disclaimer:</STRONG> An additional skill was also developed to demonstrate the <STRONG>Card with Buttons</STRONG> feature; however, it is not covered here<STRONG> <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></STRONG></P><P class=""><STRONG>Helpful Links</STRONG></P><P class=""><A class="" href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcommunity.sap.com%2Ft5%2Fapplication-development-and-automation-blog-posts%2Fhow-to-get-started-with-joule-studio%2Fba-p%2F14152855&data=05%7C02%7Camiba%40pandora.net%7C76d46bc9b4374a23ac2e08ddc9f8c7e6%7C656793e6d51d4bb2b5fac66ddd181a40%7C0%7C0%7C638888792530782459%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=Ooo9AL%2Fo1%2BVZl9opGYRsix22dCBw1hmjSIMI5Mg%2FMvQ%3D&reserved=0" target="_self" rel="nofollow noopener noreferrer">How to Get Started with Joule Studio</A></P><P class=""><STRONG><A class="" href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/04b323352fa645238211ce017f634d34.html" target="_self" rel="noopener noreferrer">Set Up Joule Studio</A> </STRONG></P><P class=""><A class="" href="https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdiscovery-center.cloud.sap%2Fmissiondetail%2F4643%2F%3Ftab%3Doverview&data=05%7C02%7Camiba%40pandora.net%7C76d46bc9b4374a23ac2e08ddc9f8c7e6%7C656793e6d51d4bb2b5fac66ddd181a40%7C0%7C0%7C638888792530846717%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=5DyHDnDsCkR8Kj5QM4z%2F8g%2FpTf0ZhrxZwETZ8G2OWDw%3D&reserved=0" target="_self" rel="nofollow noopener noreferrer">Mission in Discovery Center</A></P><DIV class=""><DIV class=""> </DIV></DIV></DIV>2025-12-22T08:04:15.216000+01:00https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886Hands-On Guide: SAP Build + Joule Skill for Purchase Order Listing, Approval, or Modification2025-12-22T08:09:03.721000+01:00Batuhannhttps://community.sap.com/t5/user/viewprofilepage/user-id/175881<P><FONT size="6"><STRONG>Introduction</STRONG></FONT></P><P>In this tutorial, we will build an AI powered Purchase Order listing, modification or approval app using SAP Build and Joule. This step by step guide covers everything from OData integration to creating a working Joule Skill.</P><P> </P><P><FONT size="6"><STRONG>Table of Contents</STRONG></FONT></P><P><ul =""><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-1893794982">1. Create an Environment</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-1697281477">2. Exposing the Destination</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-1500767972">3. Create a database table to store purchase orders</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-1304254467">4. Create a CDS from the ZTABLE for Odata</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-1107740962">5. Create OData service with T-code SEGW</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-911227457">6. Activate the Odata service via /iwfnd/maint_service T-code</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-714713952">7. Crete an Action in SAP Build</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-518200447">8. Create A Joule Skill to Get Purchase Order</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-321686942">9. Create A Joule Skill to Approve Purchase Order</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/artificial-intelligence-blogs-posts/hands-on-guide-sap-build-joule-skill-for-purchase-order-listing-approval-or/ba-p/14266886#toc-hId-125173437">10. Launch The Joule and Test The Skills</a></li></ul></P><P> </P><P> </P><P>In today’s SAP ecosystem, intelligent automation is an expectation, not a future goal. SAP Build allows developers to quickly create business applications without extensive coding and SAP Joule brings AI-driven intelligence to these experiences.</P><P>In this hands-on guide, I’ll walk you through the process of building a Joule skill that connects to an OData service, allowing users to list, approve, and update purchase orders directly through SAP Build. ( This guide uses ZTABLE to store purchase order data because the standard SAP tables in the test system I work on don't have enough or the right kind of data. However, you can use the standard tables instead of ZTABLE. )</P><P>This project shows how AI capabilities can seamlessly integrate into SAP’s low-code environment, enabling automation and human decision-making in one interface. Whether you want to enhance your workflow with intelligent actions or explore real-world Joule integration scenarios, this guide will provide a practical starting point.</P><P> </P><H3 id="toc-hId-1893794982"><STRONG>1. Create an Environment</STRONG></H3><P> </P><P>We need to create an environment for testing joule skill.</P><P>Open the SAP Build Lobby, choose Control Tower->Environments and press the Create button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_0-1762951486194.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339448iE91253DFE78B5C5E/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_0-1762951486194.png" alt="Batuhann_0-1762951486194.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_1-1762951486194.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339449i8E4F825B4231DE6C/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_1-1762951486194.png" alt="Batuhann_1-1762951486194.png" /></span></P><P> </P><P>Name your environment and add Description.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_2-1762951486194.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339447i02DDA528EE106A2C/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="Batuhann_2-1762951486194.png" alt="Batuhann_2-1762951486194.png" /></span></P><P> </P><H3 id="toc-hId-1697281477"><STRONG>2. Exposing the Destination</STRONG></H3><P> </P><P>Url of the destination on BTP is the url of our SAP system and the destination must have these properties:<SPAN class=""> </SPAN></P><P>sap.applicationdevelopment.actions.enabled -> true</P><P>sap.processautomation.enabled -> true</P><P>sap.build.usage -> odata_gen</P><P> </P><P>Also the destination’s user will be used for set an external break-point for debugging the ABAP code.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_3-1762951486194.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339452i025CC33442B1A0E0/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_3-1762951486194.png" alt="Batuhann_3-1762951486194.png" /></span></P><P> </P><P>Open the SAP Build Lobby, choose Control Tower->Destinations and press the Add button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_4-1762951486193.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339451iDA52A8ADE7E8B3CE/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_4-1762951486193.png" alt="Batuhann_4-1762951486193.png" /></span></P><P> </P><P>Select the Destination and choose next.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_5-1762951486194.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339450i2A1504F4B8D14CD7/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_5-1762951486194.png" alt="Batuhann_5-1762951486194.png" /></span></P><P> </P><P>Choose the environment in which you want to use the target. For this tutorial you can choose the Test Environment that you create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_6-1762951486194.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339453i50B41BBA23341F33/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_6-1762951486194.png" alt="Batuhann_6-1762951486194.png" /></span></P><P> </P><H3 id="toc-hId-1500767972">3. Create a database table to store purchase orders</H3><pre class="lia-code-sample language-abap"><code>@EndUserText.label : 'Purchase Order Change With Sap Build'
@AbapCatalog.enhancementCategory : #NOT_CLASSIFIED
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #ALLOWED
define table zbg_build_test {
key mandt : mandt not null;
key purchaseorder : ebeln not null;
key purchaseorderitem : ebelp not null;
key reservationitem : ebelp not null;
material : matnr;
materialcompisvariablesized : boolean;
materialcomponentisphantomitem : boolean;
reservation : char10;
@Semantics.quantity.unitOfMeasure : 'zbg_build_test.entryunit'
requiredquantity : menge_d;
requirementdate : dats;
reservationisfinallyissued : boolean;
baseunit : meins;
@Semantics.quantity.unitOfMeasure : 'zbg_build_test.entryunit'
quantityinentryunit : menge_d;
entryunit : meins;
plant : werks_d;
latestrequirementdate : dats;
billofmaterialitemnumber : ebelp;
bomitemcategory : char1;
isbulkmaterialcomponent : boolean;
debitcreditcode : shkzg;
@Semantics.quantity.unitOfMeasure : 'zbg_build_test.entryunit'
withdrawnquantity : menge_d;
approver : uname;
appoved : flag;
}</code></pre><P> </P><P>Fill the table:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_7-1762951486194.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339455i588019ABAC52100D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_7-1762951486194.png" alt="Batuhann_7-1762951486194.png" /></span></P><P> </P><H3 id="toc-hId-1304254467"><STRONG>4. Create a CDS from the ZTABLE for Odata</STRONG></H3><P> </P><pre class="lia-code-sample language-abap"><code>@AbapCatalog.sqlViewName: 'ZSLV_BUILD_TST_V'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Purchasing Document Informations CDS'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.deleteEnabled: true
@ObjectModel.createEnabled: true
@ObjectModel.updateEnabled: true
define view ZSLV_V_BUILD_TEST as select from zbg_build_test as z
{ @EndUserText.label: 'Purchase Order'
key purchaseorder,
@EndUserText.label: 'Purchase Order Item'
key purchaseorderitem,
@EndUserText.label: 'Reservation Item'
key reservationitem,
@EndUserText.label: 'Material'
material,
@EndUserText.label: 'Material Size'
materialcompisvariablesized,
@EndUserText.label: 'Material Item'
materialcomponentisphantomitem,
@EndUserText.label: 'Reservation'
reservation,
@EndUserText.label: 'Quantity'
requiredquantity,
@EndUserText.label: 'Date'
requirementdate,
@EndUserText.label: 'Reservation Issue'
reservationisfinallyissued,
@EndUserText.label: 'Unit'
baseunit,
@EndUserText.label: 'Entry Unit'
entryunit,
@EndUserText.label: 'Quantity In Entry Unit'
quantityinentryunit,
@EndUserText.label: 'Plant'
plant,
@EndUserText.label: 'Latest Requirement Date'
latestrequirementdate,
@EndUserText.label: 'Bill Of Material Number'
billofmaterialitemnumber,
@EndUserText.label: 'BOM Item Category'
bomitemcategory,
@EndUserText.label: 'Is Bulk Material'
isbulkmaterialcomponent,
@EndUserText.label: 'Debit Credit Code'
debitcreditcode,
@EndUserText.label: 'With Drawn Quantity'
withdrawnquantity,
@EndUserText.label: 'Approver'
approver,
@EndUserText.label: 'Approved'
appoved
}</code></pre><P> </P><H3 id="toc-hId-1107740962"><STRONG>5. Create OData service with T-code SEGW</STRONG></H3><P>(Because of the version of the system I work on, this guide uses SEGW instead of RAP to create an OData service. However, you can easily create your own OData service with RAP.)</P><P>Press ‘Create Project’ button, fill the fields and assign the package, request (For this tutorial it will be local object).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_8-1762951486194.png" style="width: 552px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339454iA442249332DC10C3/image-dimensions/552x491/is-moderation-mode/true?v=v2" width="552" height="491" role="button" title="Batuhann_8-1762951486194.png" alt="Batuhann_8-1762951486194.png" /></span></P><P> </P><P>Complete the creation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_9-1762951486194.png" style="width: 531px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339458i4C371D0DB2FF2A4D/image-dimensions/531x469/is-moderation-mode/true?v=v2" width="531" height="469" role="button" title="Batuhann_9-1762951486194.png" alt="Batuhann_9-1762951486194.png" /></span></P><P> </P><P>Extend the project, right click to ‘Data Model’, select the Reference->Source</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_10-1762951486195.png" style="width: 524px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339456iADCCAF8BCBF3F0F2/image-dimensions/524x205/is-moderation-mode/true?v=v2" width="524" height="205" role="button" title="Batuhann_10-1762951486195.png" alt="Batuhann_10-1762951486195.png" /></span></P><P> </P><P>Fill the CDS name that you created. Choose ‘Next’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_11-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339457iE178E9FF8808137F/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_11-1762951486195.png" alt="Batuhann_11-1762951486195.png" /></span></P><P> </P><P>Choose ‘Finish’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_12-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339460i162C954A12A77E87/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_12-1762951486195.png" alt="Batuhann_12-1762951486195.png" /></span></P><P> </P><P>Activate and generate the Service:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_13-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339462i0C776D5B90B9187A/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_13-1762951486195.png" alt="Batuhann_13-1762951486195.png" /></span></P><P> </P><P>Go to the class ZCL_ZSLV_BUILD_DPC_EXT. At the bottom of the method list redefine the update method ZSLV_V_BUILD_TES_UPDATE_ENTITY.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_14-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339461iFB95781DC614B3CF/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_14-1762951486195.png" alt="Batuhann_14-1762951486195.png" /></span></P><P> </P><P>In the method, update the approved field with the below code and activate it.</P><P> </P><pre class="lia-code-sample language-abap"><code>METHOD zslv_v_build_tes_update_entity.
DATA: lv_ebeln TYPE ebeln,
lv_ebelp TYPE ebelp,
lv_item TYPE ebelp,
ls_entity TYPE zcl_zslv_build_mpc=>ts_zslv_v_build_testtype,
lr_entity TYPE REF TO data,
ls_table TYPE zbg_build_test.
LOOP AT it_key_tab INTO DATA(ls_key).
CASE ls_key-name.
WHEN 'purchaseorder'.
lv_ebeln = ls_key-value.
WHEN 'purchaseorderitem'.
lv_ebelp = ls_key-value.
WHEN 'reservationitem'.
lv_item = ls_key-value.
ENDCASE.
ENDLOOP.
io_data_provider->read_entry_data( IMPORTING es_data = ls_entity ).
MOVE-CORRESPONDING ls_entity TO ls_table.
er_entity = ls_entity.
UPDATE zbg_build_test FROM ls_table.
COMMIT WORK.
ENDMETHOD.</code></pre><P> </P><H3 id="toc-hId-911227457"><STRONG>6. Activate the Odata service via /iwfnd/maint_service T-code</STRONG></H3><P> </P><P>Choose ‘Add Service’</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_15-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339464i247926CE41613662/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_15-1762951486195.png" alt="Batuhann_15-1762951486195.png" /></span></P><P> </P><P>Select the ‘System Alias’, fill the ‘Technical Service Name’ and press ‘Get Services’. Select the service that you create and press ‘Add Selected Services’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_16-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339463iE26394B5578D33BF/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_16-1762951486195.png" alt="Batuhann_16-1762951486195.png" /></span></P><P> </P><P>Assign the package and continue.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_17-1762951486195.png" style="width: 586px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339465i93701DCF6F84A375/image-dimensions/586x482/is-moderation-mode/true?v=v2" width="586" height="482" role="button" title="Batuhann_17-1762951486195.png" alt="Batuhann_17-1762951486195.png" /></span></P><P> </P><P>We have added the service, which should appear as follows. In the ICF Nodes section, there is a button labeled "SAP Gateway Client" that provides a testing environment for the service. Press that button.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_18-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339466i257E4502887B7CD2/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_18-1762951486195.png" alt="Batuhann_18-1762951486195.png" /></span></P><P> </P><P>Select the HTTP method as ‘GET’. Press ‘EntitySets’ to choose entity set. Choose the one that you created.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_19-1762951486195.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339467iD26BA638EA695D04/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_19-1762951486195.png" alt="Batuhann_19-1762951486195.png" /></span></P><P> </P><P>Press ‘Execute’ button for testing and response should appear as follows.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_20-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339468iB19EEFFE1A96F079/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_20-1762951486196.png" alt="Batuhann_20-1762951486196.png" /></span></P><P> </P><H3 id="toc-hId-714713952"><STRONG>7. Crete an Action in SAP Build</STRONG></H3><P> </P><P>Open the SAP Build Lobby, choose Connectors->Actions and press the ‘Create’ button. Choose ‘OData Destinations’ and select the Destination that we created.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_21-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339469i75D4226E6210AAA0/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_21-1762951486196.png" alt="Batuhann_21-1762951486196.png" /></span></P><P> </P><P>Fill the Resource Path as follows and click ‘Next’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_22-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339470iC98AD9718467DDBE/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_22-1762951486196.png" alt="Batuhann_22-1762951486196.png" /></span></P><P> </P><P>The available methods are listed in this window. Select ‘Next’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_23-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339471iB4B087B4930D98F9/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_23-1762951486196.png" alt="Batuhann_23-1762951486196.png" /></span></P><P> </P><P>Fill the name and description for your action and create.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_24-1762951486196.png" style="width: 699px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339472i6C840202272BF07C/image-dimensions/699x517/is-moderation-mode/true?v=v2" width="699" height="517" role="button" title="Batuhann_24-1762951486196.png" alt="Batuhann_24-1762951486196.png" /></span></P><P> </P><P>The action Purchase_Order_Action is created. Click the action and open it.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_25-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339473i36F970231CEAF229/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_25-1762951486196.png" alt="Batuhann_25-1762951486196.png" /></span></P><P> </P><P>Select the methods in the OData Service.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_26-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339474i9B7B2A2ACC5EF572/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_26-1762951486196.png" alt="Batuhann_26-1762951486196.png" /></span></P><P> </P><P>The GET method's input has no required fields, only optional GET parameters.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_27-1762951486196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339476iF63E82D70E99586D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_27-1762951486196.png" alt="Batuhann_27-1762951486196.png" /></span></P><P> </P><P>Output parameters are the fields in the CDS that we created.<SPAN class=""> </SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_28-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339477i2981064B998D3F65/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_28-1762951486197.png" alt="Batuhann_28-1762951486197.png" /></span></P><P> </P><P>Methods can be tested in the action interface. For the GET method we don’t need to fill any input parameters. Click ‘Test’ button.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_29-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339475iD784417B4363F97F/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_29-1762951486197.png" alt="Batuhann_29-1762951486197.png" /></span></P><P> </P><P>The data appears on the ‘Test Preview’ section.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_30-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339481iF9B10249BA8AE7F3/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_30-1762951486197.png" alt="Batuhann_30-1762951486197.png" /></span></P><P> </P><P>The PATCH method requires purchaseorder, purchaseorderitem and reservationitem, all of which are key fields in our ZTABLE and CDS.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_31-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339480i05AB260CD5D83103/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_31-1762951486197.png" alt="Batuhann_31-1762951486197.png" /></span></P><P> </P><P>There are no standard output in PATCH method.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_32-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339478iA6B33D61E44BFE31/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_32-1762951486197.png" alt="Batuhann_32-1762951486197.png" /></span></P><P> </P><P>In the Test section, all required fields and fields that need to be changed must be filled out. In this scenario these fields are purchaseorder, purchaseorderitem, reservationitem and approved fields.</P><P> </P><P>Also the link on the Test section can be used in the SAP Gateway Client to test the PATCH method.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_33-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339482i07D1694EC91827A8/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_33-1762951486197.png" alt="Batuhann_33-1762951486197.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_34-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339483iDD0AB9C12A72FCCB/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_34-1762951486197.png" alt="Batuhann_34-1762951486197.png" /></span></P><P> </P><P>PATCH method return “204: NO CONTENT” and empty Response. This means the update is successful and we will use this emptiness in our joule skill.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_35-1762951486197.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339484i698F6AA58FBFF6D2/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_35-1762951486197.png" alt="Batuhann_35-1762951486197.png" /></span></P><P> </P><P>After checking and testing, save the methods using the ‘Save’ button and select ‘Release’. After the release process, the action should appear as shown below. Then, press 'Publish'.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_36-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339486iBE26FA144B5FA082/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_36-1762951486198.png" alt="Batuhann_36-1762951486198.png" /></span></P><P> </P><P>You can debug when testing methods via the SAP Gateway Client or the SAP Build Action. Set an external breakpoint for the user in your destination that we created at the beginning.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_37-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339487i89CC14AD81B73696/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_37-1762951486198.png" alt="Batuhann_37-1762951486198.png" /></span></P><P> </P><P>For the PATCH method, our key fields in the internal table IT_KEY_TAB.<SPAN class=""> </SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_38-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339485i6B0D4AB7F117B580/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_38-1762951486198.png" alt="Batuhann_38-1762951486198.png" /></span></P><P> </P><H3 id="toc-hId-518200447"><STRONG>8. Create A Joule Skill to Get Purchase Order</STRONG></H3><P> </P><P>Open the SAP Build Lobby, choose Create->Joule Skill and fill the name and description. Open the created skill.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_39-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339489i6C3CFA0CA8BB54F5/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_39-1762951486198.png" alt="Batuhann_39-1762951486198.png" /></span></P><P> </P><P>Select the ’Trigger’ step. On the ‘General’ tab fill the name and description. Allow Joule to generate a response and skill to be started directly by user.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_40-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339488i8AF6014A0B2D3A60/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_40-1762951486198.png" alt="Batuhann_40-1762951486198.png" /></span></P><P> </P><P>We don't need input, but outputs can vary according to our needs. In this tutorial, the parameters shown below have been added as outputs.</P><P>Choose ‘Configure’ and add parameters you want to show to the user. For this example, all parameters are string except the ‘approved’ which is boolean.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_41-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339490i37CAFB717C9518BB/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_41-1762951486198.png" alt="Batuhann_41-1762951486198.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_42-1762951486198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339491i71B08C51F4AFAA8E/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_42-1762951486198.png" alt="Batuhann_42-1762951486198.png" /></span></P><P> </P><P>Press ‘+’ and choose ‘Call Action’, ‘Browse All Actions’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_43-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339493iD9A8E33D18BB36DC/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_43-1762951486199.png" alt="Batuhann_43-1762951486199.png" /></span></P><P> </P><P>Search for ‘ZSLV_V_BUILD_TEST’ or your Service Name. Add the ‘Get entities from ZSLV_V_BUILD_TEST’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_44-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339492i29CD84E55DC3D4A0/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_44-1762951486199.png" alt="Batuhann_44-1762951486199.png" /></span></P><P> </P><P>Select the ‘Destination Variable’ as Destination we created.<SPAN class=""> </SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_45-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339494i1ADC6AED50920631/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_45-1762951486199.png" alt="Batuhann_45-1762951486199.png" /></span></P><P> </P><P>We can skip the input tab because there are no input for GET method.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_46-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339495iCF826E2C172819B2/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_46-1762951486199.png" alt="Batuhann_46-1762951486199.png" /></span></P><P> </P><P>We can see the output parameters in this tab.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_47-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339496i0D79C6DE47F87320/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_47-1762951486199.png" alt="Batuhann_47-1762951486199.png" /></span></P><P> </P><P>On the "End" step, we need to assign the input and output parameters for the skills. Since we don't have any inputs, let's assign the outputs added in the "Trigger" step as our action's outputs.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_48-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339498iF065B601C1E42425/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_48-1762951486199.png" alt="Batuhann_48-1762951486199.png" /></span></P><P> </P><P>Save the Joule Skill.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_49-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339497i22EAD020264F75C1/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_49-1762951486199.png" alt="Batuhann_49-1762951486199.png" /></span></P><P> </P><P>And Release.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_50-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339499iC941DB003C70EDDF/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_50-1762951486199.png" alt="Batuhann_50-1762951486199.png" /></span></P><P> </P><P>Now Deploy.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_51-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339501i38DBD6FDEEC0D97D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_51-1762951486199.png" alt="Batuhann_51-1762951486199.png" /></span></P><P> </P><P>Choose the Environment we created and click ‘Upgrade’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_52-1762951486199.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339503i8DA5330F08DEC060/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_52-1762951486199.png" alt="Batuhann_52-1762951486199.png" /></span></P><P> </P><P>Match the destinations, and the skill will be ready to use by Joule after deployment.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_53-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339502iD7925260EAAA33B7/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_53-1762951486200.png" alt="Batuhann_53-1762951486200.png" /></span></P><P> </P><H3 id="toc-hId-321686942"><STRONG>9. Create A Joule Skill to Approve Purchase Order</STRONG></H3><P> </P><P>On the ‘Trigger’ step, fill the name and description. Deactivate the ‘Allow Joule to generate a response’ feature because in this skill we will create our own messages. The other feature should be active.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_54-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339506iCF2B4B09A81CFE1A/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_54-1762951486200.png" alt="Batuhann_54-1762951486200.png" /></span></P><P> </P><P>Configure the input parameters. Add purchaseorder, purchaseorderitem and reservationitem key fields as string. For approve skill we don’t need any output field.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_55-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339504i795B12BB0A5FDD06/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_55-1762951486200.png" alt="Batuhann_55-1762951486200.png" /></span></P><P> </P><P>Choose ‘+’ and ‘Call Action’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_56-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339505iF137892C308443DC/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_56-1762951486200.png" alt="Batuhann_56-1762951486200.png" /></span></P><P> </P><P>Browse All Actions.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_57-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339507iCB188F4B80EEF892/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_57-1762951486200.png" alt="Batuhann_57-1762951486200.png" /></span></P><P> </P><P>Search update or the service name. Add the Update entity in ZSLV_V_BUILD_TEST.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_58-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339508i9195BC6AC1EBB8EF/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_58-1762951486200.png" alt="Batuhann_58-1762951486200.png" /></span></P><P> </P><P>On the ‘General’ tab, assign the Destination.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_59-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339509i6AEAF116350A3717/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_59-1762951486200.png" alt="Batuhann_59-1762951486200.png" /></span></P><P> </P><P>On the ‘Inputs’ tab, assign the purchaseorder, purchaseorderitem and reservationitem to the parameters created on the "Trigger" step.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_60-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339510iD7BE5A293F78E88D/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_60-1762951486200.png" alt="Batuhann_60-1762951486200.png" /></span></P><P> </P><P>We only need to fill the fields ‘approved’ from the fields to be updated. We need to configure the ‘approved’ field because action inputs can only be string.<SPAN class=""> </SPAN></P><P> </P><P>Choose ‘approved’ field and ‘Apply a formula’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_61-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339511i1CC892148E0E938B/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_61-1762951486200.png" alt="Batuhann_61-1762951486200.png" /></span></P><P>Type ‘true’ and click ‘Apply’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_62-1762951486200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339512iD53F3F6D975D989B/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_62-1762951486200.png" alt="Batuhann_62-1762951486200.png" /></span></P><P> </P><P>Choose ‘+’ and ‘Check Condition’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_63-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339513i9D767715D97E0E68/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_63-1762951486201.png" alt="Batuhann_63-1762951486201.png" /></span></P><P> </P><P>Choose the ‘Condition Editor’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_64-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339514iD1DEADEE783168CA/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_64-1762951486201.png" alt="Batuhann_64-1762951486201.png" /></span></P><P> </P><P>Add the following conditions and Click ‘Apply’. If PATCH method is executed successfully, the result will be empty.<SPAN class=""> </SPAN></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_65-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339515i1085590800299A9E/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_65-1762951486201.png" alt="Batuhann_65-1762951486201.png" /></span></P><P> </P><P>If the condition is met, the left branch of the condition executes. In the opposite case, the ‘Default’ branch of the condition executes.</P><P> </P><P>Choose the ‘+’ on the left branch and ‘Send Response’.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_66-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339517iEEA27BCE03F23CCC/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_66-1762951486201.png" alt="Batuhann_66-1762951486201.png" /></span></P><P> </P><P>Open Message Editor.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_67-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339518i12FD6CF1135905F9/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_67-1762951486201.png" alt="Batuhann_67-1762951486201.png" /></span></P><P> </P><P>Fill the parameters as shown below and save.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_68-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339516i834CCF9C092AAC55/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_68-1762951486201.png" alt="Batuhann_68-1762951486201.png" /></span></P><P> </P><P>You can add parameters to the title and message with the ‘<>’ button.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_69-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339520i22FFEB9A68D1170B/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_69-1762951486201.png" alt="Batuhann_69-1762951486201.png" /></span></P><P> </P><P>Do the same steps for the right branch of the condition. ‘+’ -> ’Send Response’ -> ‘Open Message Editor’</P><P> </P><P>Fill the parameters as shown below and save.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_70-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339519iB1B455C7EC155E26/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_70-1762951486201.png" alt="Batuhann_70-1762951486201.png" /></span></P><P> </P><P>Save, Release and Deploy just like the previous GET_PURCHASE_ORDER skill.</P><P> </P><H3 id="toc-hId-125173437"><STRONG>10. Launch The Joule and Test The Skills</STRONG></H3><P> </P><P>Open the SAP Build Lobby, choose Control Tower->Environments->Joule</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_71-1762951486201.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339521i4845A290D81D0EBA/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_71-1762951486201.png" alt="Batuhann_71-1762951486201.png" /></span></P><P> </P><P>Launch the joule, ask for Purchase Orders and get the details.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_72-1762951486202.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339522i923E80477DF51C05/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_72-1762951486202.png" alt="Batuhann_72-1762951486202.png" /></span></P><P> </P><P>Ask joule to approve the purchase orders and get the illustrated success message card we create.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Batuhann_73-1762951486202.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339523iCB0F2C77FC1078DA/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Batuhann_73-1762951486202.png" alt="Batuhann_73-1762951486202.png" /></span></P><P> </P>2025-12-22T08:09:03.721000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/tribute-to-thomas-volmering/ba-p/14296083Tribute to Thomas Volmering2025-12-23T11:06:24.578000+01:00Pierre_Colhttps://community.sap.com/t5/user/viewprofilepage/user-id/63<P><SPAN class=""><SPAN><span class="lia-unicode-emoji" title=":loudspeaker:">📢</span> <STRONG>Today is <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/189303">@thomas_volmering</a>'s last day at SAP</STRONG>. <BR /><BR /><STRONG><A class="" href="https://www.linkedin.com/in/thomas-volmering-3538b7/" target="_blank" rel="noopener nofollow noreferrer">Thomas</A> joined SAP 26 years ago</STRONG>, and I met him when he was head of Product Management for <A href="https://community.sap.com/t5/c-khhcw49343/SAP+Build+Process+Automation/pd-p/73554900100800003832" target="_self">SAP Build Process Automation</A>, before he became Head of Product for <A class="" href="https://www.linkedin.com/company/sapbuild/" target="_self" rel="nofollow noopener noreferrer">SAP Build</A>. Together we worked on many communication projects for <A class="" href="https://community.sap.com/t5/c-khhcw49343/SAP+Build/pd-p/73555000100700001491" target="_self">SAP Build</A>, including technical blog posts that you can read <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/189303" target="_self">here</A>. <span class="lia-unicode-emoji" title=":newspaper:">📰</span><BR /><BR />Let me just say that it has been a great pleasure and also some fun working with him, and I thank <A class="" href="https://www.linkedin.com/in/thomas-volmering-3538b7/" target="_blank" rel="noopener nofollow noreferrer">Thomas</A> a lot for that. <span class="lia-unicode-emoji" title=":folded_hands:">🙏🏻</span><BR /><BR /><STRONG>Please join me in wishing <A class="" href="https://www.linkedin.com/in/thomas-volmering-3538b7/" target="_blank" rel="noopener nofollow noreferrer">Thomas</A> the very best for what's to come!</STRONG> <span class="lia-unicode-emoji" title=":thumbs_up:">👍🏻</span></SPAN></SPAN></P><P><SPAN class=""><SPAN><A href="https://www.linkedin.com/in/thomas-volmering-3538b7/" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Thomas Volmering on LinkedIn and SAP Community.jpg" style="width: 676px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/355115iA31A8D7B8FE3ED2A/image-size/large?v=v2&px=999" role="button" title="Thomas Volmering on LinkedIn and SAP Community.jpg" alt="Thomas Volmering on LinkedIn and SAP Community.jpg" /></span></A></SPAN></SPAN></P><P> </P>2025-12-23T11:06:24.578000+01:00https://community.sap.com/t5/human-capital-management-blog-posts-by-sap/integrating-sap-successfactors-apis-with-sap-btp-destination-setup-and/ba-p/14294201Integrating SAP SuccessFactors APIs with SAP BTP - Destination Setup and Usage2026-01-02T05:09:16.510000+01:00Twinkle_Shah1https://community.sap.com/t5/user/viewprofilepage/user-id/26598<H2 id="toc-hId-1767417225">Introduction</H2><P>Integrating SAP SuccessFactors with SAP Business Technology Platform (BTP) unlocks new opportunities to extend and automate your HR processes. A common requirement is to securely invoke SAP SuccessFactors APIs from BTP-based extensions or applications.</P><P>To enable this, you need to establish a secure connection between your SAP BTP environment and your SAP SuccessFactors system. This guide provides a step-by-step approach to creating and configuring the required BTP destination.</P><P>You’ll learn how to:</P><UL><LI>Register your SAP SuccessFactors system in the SAP BTP System Landscape</LI><LI>Enable the SAP SuccessFactors Extensibility Service to automatically generate a destination</LI><LI>Create Actions projects and use the configured destination in SAP Build Process Automation</LI></UL><P>After completing these steps, you’ll have a reusable destination for secure API calls to your SuccessFactors system. While this guide uses SAP Build Process Automation as an example, the same destination can be used by other SAP BTP services and applications that need to access SAP SuccessFactors data.</P><H3 id="toc-hId-1699986439">Register an SAP SuccessFactors System in a Global Account in<SPAN> </SPAN><SPAN class="">SAP BTP</SPAN></H3><P><SPAN>In the </SPAN><SPAN class="">SAP BTP</SPAN><SPAN> cockpit, navigate to your global account, and then choose </SPAN><SPAN class=""><SPAN class=""><STRONG>System</STRONG> <STRONG>Landscape</STRONG></SPAN> > <STRONG><SPAN class="">Systems</SPAN></STRONG><SPAN class="">. </SPAN></SPAN><SPAN class=""><SPAN class="">Check if your SAP SuccessFactors instance is already available in the list and the status is shown as <STRONG>Registered</STRONG>. </SPAN></SPAN></P><P><U>Follow below steps if the system is not available :</U></P><P><STRONG><SPAN class=""><SPAN class="">Add an SAP SuccessFactors System in a Global Account in SAP BTP</SPAN></SPAN></STRONG></P><P><SPAN class=""><SPAN class="">Click on <STRONG>Add </STRONG>on the <STRONG>System</STRONG> <STRONG>Landscape</STRONG> > <STRONG>Systems </STRONG>page</SPAN></SPAN></P><OL><LI><SPAN class="">In the<SPAN> </SPAN><STRONG><SPAN class="">Type</SPAN></STRONG><SPAN> </SPAN>dropdown list, select <STRONG>SAP SuccessFactors</STRONG>.</SPAN></LI><LI><SPAN class="">Enter a name for the system you want to register</SPAN></LI></OL><P><U><SPAN class="">Follow the below steps if the system status is not <STRONG>Registered </STRONG>:</SPAN></U></P><OL><LI>Click on <STRONG>Get Token </STRONG>to generate the registration token</LI><LI>Copy the token </LI></OL><P><SPAN>Start the automated integration process on the SAP SuccessFactors side: </SPAN></P><P data-unlink="true"><SPAN>Prerequisites: </SPAN><SPAN><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/register-sap-successfactors-system-in-global-account-in-sap-btp?version=Cloud#prerequisites" target="_self" rel="noopener noreferrer">Register SAP SuccessFactors System > Prerequisites </A> </SPAN></P><OL><LI>In SAP SuccessFactors, navigate to<SPAN> <STRONG>Admin Center > </STRONG></SPAN><STRONG><SPAN class="">Extension Center</SPAN></STRONG>.</LI><LI>Paste the registration token in the<SPAN> </SPAN><SPAN class="">Integration Token</SPAN><SPAN> </SPAN>input field and click on <STRONG>Add</STRONG>.</LI><LI>Wait for the integration process to complete</LI></OL><H4 id="toc-hId-1632555653"><STRONG>Validation</STRONG></H4><UL><LI>Navigate to the <SPAN class=""><STRONG>System</STRONG> <STRONG>Landscape</STRONG> > <STRONG>Systems </STRONG>on the SAP BTP Cockpit and confirm that the SAP SuccessFactors system is available and the status is set to <STRONG>Registered</STRONG>.</SPAN></LI></UL><P> </P><H3 id="toc-hId-1306959429"><SPAN class="">Enable SAP SuccessFactors Extensibility Service</SPAN></H3><P><SPAN class="">Add the required entitlement and create an instance of SAP SuccessFactors Extensibility service. With this service instance, a</SPAN><SPAN class=""> destination will be automatically created which can be used to make API calls to the SAP SuccessFactors system.</SPAN></P><H5 id="toc-hId-1368611362"><SPAN class="">Configure the Entitlements </SPAN></H5><OL class=""><LI><SPAN class="">In the<SPAN> </SPAN><SPAN class="">SAP BTP</SPAN><SPAN> </SPAN>cockpit, navigate to your Global Account</SPAN></LI><LI><SPAN class="">In the navigation area, choose<SPAN> </SPAN><STRONG><SPAN class=""><SPAN class="">Entitlements</SPAN> > <SPAN class="">Entity Assignments</SPAN></SPAN></STRONG></SPAN></LI><LI><SPAN class="">On the<SPAN> </SPAN><STRONG><SPAN class="">Entity Assignments</SPAN></STRONG><SPAN> </SPAN>screen, select your BTP subaccount in the<SPAN> </SPAN><STRONG><SPAN class="">Subaccounts/Directories</SPAN></STRONG><SPAN> </SPAN>field</SPAN></LI><LI><SPAN class="">Choose<SPAN> </SPAN><STRONG><SPAN class="">Edit</SPAN></STRONG>, and then choose<SPAN> </SPAN><STRONG><SPAN class="">Add Service Plans</SPAN></STRONG></SPAN></LI><LI><SPAN class="">Select the<SPAN> </SPAN><STRONG><SPAN class="">SAP SuccessFactors Extensibility</SPAN></STRONG><SPAN> </SPAN>service</SPAN></LI><LI><SPAN class=""><SPAN>In the </SPAN><STRONG><SPAN class="">Service Details</SPAN></STRONG><SPAN> area, select the SAP SuccessFactors system you have registered. In the </SPAN><STRONG><SPAN class="">Available Plans</SPAN></STRONG><SPAN> area, select the </SPAN><STRONG><SPAN class="">api-access</SPAN></STRONG><SPAN> </SPAN><SPAN>service plan, and click on <STRONG>Add Service Plan</STRONG></SPAN></SPAN></LI></OL><P><SPAN class=""><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Entitlement - SuccessFactors Extensibility.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/354176i7E0B1CE22402CA51/image-size/medium?v=v2&px=400" role="button" title="Entitlement - SuccessFactors Extensibility.png" alt="Entitlement - SuccessFactors Extensibility.png" /></span></SPAN></SPAN></P><H5 id="toc-hId-1172097857"><SPAN class=""><SPAN>Create Service Instance</SPAN></SPAN></H5><OL class=""><LI><SPAN class="">In the<SPAN> </SPAN><SPAN class="">SAP BTP</SPAN><SPAN> </SPAN>cockpit, navigate to your subaccount</SPAN></LI><LI><SPAN>In the navigation area, choose </SPAN><STRONG><SPAN class=""><SPAN class="">Services</SPAN> > <SPAN class="">Service Marketplace</SPAN></SPAN></STRONG></LI><LI><SPAN class=""><SPAN class="">Choose <STRONG>SAP SuccessFactors Extensibility </STRONG>and click on <STRONG>Create</STRONG></SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">Select <STRONG>api-access </STRONG>service plan</SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">Select appropriate <STRONG>Runtime Environment</STRONG> and related configuration</SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">Select the SAP SuccessFactors system in the <STRONG>System Name</STRONG> dropdown</SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">Enter the instance name</SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">Click <STRONG>Next</STRONG></SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">(Optional) If you want to use any specific user to make the API calls, specify parameter in the JSON format. Ensure that the user specified here has the necessary permissions to make the relevant API calls.</SPAN></SPAN><SPAN class=""><SPAN class=""><BR /></SPAN></SPAN></LI></OL><pre class="lia-code-sample language-json"><code>{
"systemName":"<SAP SuccessFactors System>",
"technicalUser":"<Technical User>"
}</code></pre><UL><LI>Click <STRONG>Create</STRONG> </LI></UL><H4 id="toc-hId-846501633"><STRONG>Validation</STRONG></H4><UL class=""><LI><P class="">In the SAP BTP subaccount, the newly created service instance appears in the list of instances in the<SPAN> </SPAN><STRONG><SPAN class="">Instance and Subscriptions</SPAN></STRONG><SPAN> </SPAN>page.</P></LI><LI><P class="">Navigate to <STRONG>Connectivity > Destinations</STRONG> and search for the destination with same name as the service instance name (provided in Step-7). This would be an <STRONG>HTTP</STRONG> destination with Authentication Type <STRONG>OAuth2SAMLBearerAssertion</STRONG>.</P></LI></UL><H3 id="toc-hId-520905409"><SPAN class="">Configuring SAP SuccessFactors APIs in SAP Build Process Automation</SPAN></H3><H5 id="toc-hId-582557342"><SPAN class="">Create Actions project</SPAN></H5><OL><LI><SPAN class="">Launch SAP Build Lobby</SPAN></LI><LI><SPAN class="">Navigate to <STRONG>Connectors > Actions </STRONG>from the navigation panel</SPAN></LI><LI><SPAN class="">Click on <STRONG>Create</STRONG></SPAN></LI><LI><SPAN class="">Select <STRONG>SAP Business Accelerator Hub</STRONG> as the API source from the <STRONG>API Specification </STRONG>selection</SPAN></LI><LI><SPAN class="">Select <STRONG>SAP SuccessFactors</STRONG> and the relevant API package like <STRONG>SAP SuccessFactors Employee Central APIs </STRONG></SPAN></LI><LI><SPAN class=""><SPAN class="">Click on the relevant API like <STRONG>Personal Information</STRONG> and click on <STRONG>Next</STRONG></SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">Review and update Project Name and Description as needed and click on <STRONG>Create</STRONG></SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">The project opens in the Actions editor. </SPAN></SPAN></LI><LI><SPAN class=""><SPAN class="">In the Actions dialog, search and select relevant action like "<SPAN><STRONG>Get entity from PerPerson by key</STRONG>" and click on <STRONG>Add</STRONG></SPAN></SPAN></SPAN></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Twinkle_Shah1_1-1766399460582.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/354625iE3B2A6271D3EEB28/image-size/medium?v=v2&px=400" role="button" title="Twinkle_Shah1_1-1766399460582.png" alt="Twinkle_Shah1_1-1766399460582.png" /></span></P><H5 id="toc-hId-386043837">Configure the Action </H5><OL><LI>Select the <STRONG><SPAN class="">Get entity from PerPerson by key </SPAN></STRONG><SPAN class="">action from the actions list</SPAN></LI><LI><STRONG><SPAN class="">(Optional) </SPAN></STRONG><SPAN class="">Configure $expand parameter</SPAN><BR /><OL><LI><SPAN class="">Click on Add button under the<STRONG> Input > Parameter</STRONG> section</SPAN></LI><LI><SPAN class="">Under Available Fields, select $expand and click on <STRONG>Delete</STRONG> button</SPAN></LI><LI><SPAN class="">Go to New Field section and enter below details (<STRONG>value </STRONG>would be the navigations which you want to expand).</SPAN></LI></OL></LI></OL><pre class="lia-code-sample language-json"><code>key = $expand
parameter = query
value =emailNav,phoneNav,personalInfoNav</code></pre><P><SPAN class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Twinkle_Shah1_2-1766400113234.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/354631iBF7DD07784473041/image-size/medium?v=v2&px=400" role="button" title="Twinkle_Shah1_2-1766400113234.png" alt="Twinkle_Shah1_2-1766400113234.png" /></span></SPAN></P><UL><LI><SPAN class="">Click on <STRONG>Add </STRONG>to add this as new field</SPAN></LI><LI><SPAN class="">Save the action by clicking on <STRONG>Save </STRONG></SPAN></LI><LI><SPAN class="">Select <span class="lia-unicode-emoji" title=":gear:">⚙️</span> <STRONG>Settings</STRONG></SPAN></LI><LI><SPAN class="">In the <SPAN class="">Project Settings</SPAN> dialog, go to URL prefix and enter <STRONG>/odata/v2</STRONG> in the <STRONG><SPAN class="">Resource Path</SPAN></STRONG> field.</SPAN></LI><LI><SPAN class="">Click on <STRONG>Release</STRONG>. Once the project is released click on <STRONG>Publish</STRONG></SPAN></LI></UL><H5 id="toc-hId--730672489">Next Steps</H5><OL><LI>Add the destination created using the SAP SuccessFactors Extensibility Service to the SAP Build Process Automation using <STRONG>Control Tower </STRONG>as described in the help guide <A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/manage-destinations?version=Cloud#destinations-section" target="_self" rel="noopener noreferrer">Manage Destinations</A> .</LI><LI>Use the <STRONG>Actions</STRONG><SPAN> project in the process created using SAP Build Process Automation.</SPAN><OL><LI>In the process, select <STRONG>Action </STRONG>step.</LI><LI>Browse the actions library and choose the suitable Action </LI><LI>While configuring the Action step, under <SPAN>Destination Variable, create a new destination variable. You can give it any preferred name. </SPAN></LI><LI><SPAN>Complete the process, save and release it</SPAN></LI><LI><SPAN>On the released version, click on <STRONG>Deploy</STRONG>. Under the <STRONG>Set new value</STRONG> section, select the SAP SuccessFactors destination which was added to SAP Build Process Automation via control tower. </SPAN></LI></OL></LI></OL><P><SPAN>You can now test the SAP Build Process Automation process and validate that the process is able to call the corresponding SAP SuccessFactors OData API.</SPAN></P><H3 id="toc-hId--340379980">References:</H3><P><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/extending-sap-successfactors-in-cloud-foundry-and-kyma-environment?version=Cloud" target="_blank" rel="noopener noreferrer">Extending SAP SuccessFactors in the Cloud Foundry and Kyma Environment | SAP Help Portal</A></P><P><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-action-project?version=Cloud" target="_self" rel="noopener noreferrer">SAP Build Process Automation - Create Action Project</A> </P>2026-01-02T05:09:16.510000+01:00https://community.sap.com/t5/spend-management-blog-posts-by-sap/best-practices-for-process-modelling-in-sap-build-process-automation-to-use/ba-p/14300610Best practices for Process Modelling in SAP Build Process Automation to use in SAP Ariba Intake Mngt2026-01-09T11:21:25.803000+01:00NMZhttps://community.sap.com/t5/user/viewprofilepage/user-id/1784571<P><FONT size="3">In this blog, we share best practices that you can apply to develop processes in SAP Build Process Automation with the specific intent to publish and deploy them as Intake Request Types for the SAP Ariba Intake Management solution.</FONT></P><P><FONT size="3"><STRONG>Make use of the existing documentation</STRONG></FONT></P><P><SPAN><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/using-sap-build-process-automation?locale=en-US&version=Cloud" target="_blank" rel="noopener noreferrer">Use SAP Build Process Automation</A></SPAN></P><P><SPAN><A href="https://learning.sap.com/products/sap-build/process-automation" target="_blank" rel="noopener noreferrer">Explore the available learnings</A></SPAN></P><P><FONT size="3"><STRONG>Re-use action-structures</STRONG></FONT></P><P>If you are using actions, the according structures are generated into your project and you can re-use them directly.</P><P><STRONG>Use data types</STRONG></P><P>If you use structures aside from actions, create them as data type in SAP Build Process Automation (SBPA), so you can re-use them at any point in your project. Otherwise, you would have to define them in each input/output of each step you use them in.</P><P><STRONG>Create custom variables</STRONG></P><P>If you need a variable to be available in the whole process then create a custom variable. Custom variables can also make use of created data types<SPAN>.</SPAN></P><P><STRONG>Use constants</STRONG></P><P>Using constants will avoid typo-based errors in evaluations/comparisons. SBPA does not provide such a thing in the editor, but you can use a custom variable with a default value as a replacement for a constant.</P><P><STRONG>Actions, numbers, and strings</STRONG></P><P>When an action is created via an interface description, fields that are of type EDMX.Decimal will be transformed to “string” in order to avoid truncation issues. If your process is using input that has been defined as “number”, use a script task to convert the number into a string (e.g. via the toString() function) before using it as an input to the action.</P><P><STRONG>Actions and deep mapping</STRONG></P><P>If actions are being used to trigger APIs with deep nested structures (e.g. the Purchase Order API in SAP S/4HANA Cloud Public Edition), the complete structure depth will not be offered in the process editor for mapping. You can use a script task to create an according object as a custom variable and select “bind Object” in the according action input.</P><P><STRONG>How to disable type checking in the script editor</STRONG></P><P>The script editor is checking the complex types you are using within it. For complex structures it will require you to set a value to a field, even if the field is not mandatory. In such cases you can hide the type-information from the editor:</P><pre class="lia-code-sample language-javascript"><code>// import the item data from the context
// ignore type information to prevent clashes with editor
var orderItem = JSON.parse(JSON.stringify(
$.context.action_getAPurchaseOrderItem.result.d));
…
// take over the table of account assignments into the PO item
orderItem.to_AccountAssignment = (orderItem.to_AccountAssignment.results && orderItem.to_AccountAssignment.results.length > 0) ? orderItem.to_AccountAssignment : undefined
…
// create POI object with results array
var POI = {
results: [orderItem]
}
// write the created item data to a custom variable
// but ignore type information (again) to prevent clashes with editor
$.context.custom.poi = JSON.parse(JSON.stringify(POI))</code></pre><P>Now the custom variable “POI” can be used to populate the deep nested to_PurchaseOrderItem input of a “Create Purchase Order” action:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NMZ_0-1767364371747.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/357766iCD8585A69BB1FDD0/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="NMZ_0-1767364371747.png" alt="NMZ_0-1767364371747.png" /></span></P><P><STRONG>Capture the output of a “Wait for API call” step</STRONG></P><P>The “Wait for API call” steps have outputs that unfortunately can’t be used directly as an input for the next upcoming step. Use a script task to take over the value into a custom variable.</P><P><STRONG>Use sub-processes</STRONG></P><P>If you are creating complex approval workflows, the usage of sub-processes may help to master the complexity. They allow to cut a huge process into smaller manageable pieces. They also help to visualise milestones in the process.</P><P><STRONG>Consider the usage of template variants</STRONG></P><P>It also will give some degree of flexibility, compared to a pure predefined process running in a SaaS environment. You start with a normal process project. There you can add a “Variant Template” step via the “+” anywhere into your process flow. This can be compared to adding an extension point, where (restricted) custom logic can be added in the form of predefined sub-processes.</P><P>If you open the editor, you can add sub-processes to it, define inputs/outputs, and general constraints, for example if a step is required or if there is a maximum number of usages. With the “Variant Editor” you also need to create a default variant. Then a “Variant Management” project needs to be created (see <A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-variant-configuration-project?locale=en-US&version=LATEST" target="_self" rel="noopener noreferrer">here</A>) and maintained as a dependency in the process project. This way an app can be offered to the customer that allows to define and manage variants. The variants that are available can automatically be chosen by predefined rules. If there is no rule in place, the default variant will be chosen.</P>2026-01-09T11:21:25.803000+01:00https://community.sap.com/t5/spend-management-blog-posts-by-sap/best-practice-on-process-modelling-to-enable-process-visibility-in-sap/ba-p/14300623Best practice on process modelling to enable process visibility in SAP Ariba Intake Management2026-01-09T11:22:27.770000+01:00NMZhttps://community.sap.com/t5/user/viewprofilepage/user-id/1784571<P>As a pre-requisite, you must ensure that your <SPAN>SAP Build Process Automation</SPAN> (SBPA) project contains at least a main process, where all the steps of the process are defined. If you aim to visualise certain major milestones within the process, you can do that by using a combination of <STRONG>sub-processes</STRONG> and “<STRONG>Wait for API call</STRONG>” steps. Create a business document via your own microservice and make your implementation also receive status updates for the business documents it creates. Your own microservice can now call the SBPA process instance and pass the updated status<SPAN>.</SPAN></P><P><STRONG>Sub-Processes:</STRONG></P><P>Represent the milestones in this context. You can create a sub-process either directly on the canvas using the “+” in between process steps, or upfront on the overview tab, using the create button. The sub-processes can be used for deeper structuring complex processes, but for visualising the milestones only, they do not have to contain any steps.</P><P>Sub processes will be displayed in a UI component once they are done in the current flow:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NMZ_0-1767366330158.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/357778i2B93479EB9566A8C/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="NMZ_0-1767366330158.png" alt="NMZ_0-1767366330158.png" /></span></P><P>Now that we have the milestones visualised, we also want to show the progress of the process over time. Usually a process will only pause, if there is a direct user input required for example via a form or an approval that is modelled inside the process. But when calling something outside of the process that introduces a delay, this can’t be represented in the process.</P><P>This could be for example an external API to create a Purchase Order in S/4. If there is an approval active within the S/4 system, the SBPA process would not wait for the approval to happen, it would continue directly after the creation of the PO. To pause a process in such a case, “Wait for API call” steps can be used.</P><P><STRONG>Wait for API call steps:</STRONG></P><P>The “Wait for API call” steps allow the process to pause in between two milestones, if next milestone is not reached yet. (also see <SPAN><A href="https://help.sap.com/docs/build-process-automation/sap-build-process-automation/create-wait-event-for-api-call?locale=en-US&version=Cloud" target="_blank" rel="noopener noreferrer">Create a Wait for an API Call Trigger</A></SPAN> and <SPAN><A href="https://developers.sap.com/tutorials/codejam-events-process-10..html" target="_blank" rel="noopener noreferrer">10 - Call 3rd-Party System and Wait for Callback</A></SPAN>)</P><P>With the help of the “Wait for API call” steps, you achieve two things:</P><OL><LI>The process pauses at this step, until a call to the according API (trigger) happens from the outside.</LI><LI>You can provide information into the process with that API call. By defining outputs for the wait step, you define the API that can be called later. The provided values can be evaluated later in the process</LI></OL><P>The “Wait for API call” steps can be re-used in the process. If there are several places in the process where you want to wait and evaluate the incoming API call, you just have to define an according “Wait for API call” step once. The places where the defined wait step is inserted, can also be individually renamed, which helps to keep the process organised.</P><P>Otherwise, if you are not re-using the “Wait for API call” steps, for each new one, a new API endpoint would be created.</P><P><STRONG>Wait steps after an action are special</STRONG></P><P>In general, for updating the status of a process, a single “wait for API call” step with a variable “status” as output would be sufficient, but there is also the case of performing an action first. In that case, in SAP Ariba intake Management, a separate step is created, that has the variables “error” and “id”. If the error variable is not empty, this indicates that the action did fail, otherwise the id needs to be populated with the id of the created document.</P><P>In general:</P><UL><LI>“Wait for API call” steps will create an according trigger in the project. This trigger is an API endpoint and can be re-used at different places in the process.</LI><LI>Every “Wait for API call” requires the id of the process instance as a parameter. It is also possible to provide additional parameters</LI></UL><H1 id="toc-hId-1658536712"><FONT size="3">How to model to make use of polling</FONT></H1><P>A detailed description is shown in the sequence diagram below. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="NMZ_0-1767366890356.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/357783iA476069BF31DE24A/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="NMZ_0-1767366890356.png" alt="NMZ_0-1767366890356.png" /></span></P><P>If you are using your own microservice app-to-app authentication has to be set up as described in <SPAN><A href="https://cap.cloud.sap/docs/java/security#app-to-app" target="_blank" rel="nofollow noopener noreferrer">https://cap.cloud.sap/docs/java/security#app-to-app</A></SPAN></P><P>If you do not use your own microservice, the API call to “startIntake” needs to be performed by the Wind-up UI directly and the API call to the “backend for business document creation” must be called via an action from the SBPA process. A later status update and display will then not be possible.</P>2026-01-09T11:22:27.770000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/intelligent-alert-management-in-sap-cloud-alm-with-sap-build-process/ba-p/14310372Intelligent Alert Management in SAP Cloud ALM with SAP Build Process Automation2026-01-20T06:09:09.384000+01:00balazs_trencsenyihttps://community.sap.com/t5/user/viewprofilepage/user-id/1551844<P><FONT size="3">If you ever wonder how to configure <STRONG>custom email</STRONG> notifications for <STRONG>SAP Cloud ALM</STRONG> events or whether notifications were sent to the <STRONG>right team</STRONG>, you’re in the right place. I’d also like to cover <STRONG>SAP Build Process Automation</STRONG>’s fairly new <STRONG>generative AI</STRONG> capabilities and how they can help us configure automations, processes, forms, and rules within BPA.</FONT><BR /><BR /><FONT size="3">I’ll guide you through the process using the <STRONG>Certificate Expiry</STRONG> event in SAP Cloud ALM, but the same approach can be applied to other event types as well. In SAP Cloud ALM, certificate expirations are rated as either <STRONG>Warning</STRONG> or <STRONG>Critical</STRONG>, depending on how you’ve configured the thresholds. By default, SAP Cloud ALM may send an email using a template like the following:</FONT></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><FONT size="2">SAP Cloud ALM for Operations</FONT><BR /><FONT size="2">Expired Certificate – CF Cloud Integration Tech P&P Int</FONT><BR /><FONT size="2">Alert Context: CF Cloud Integration Tech P&P Int</FONT><BR /><FONT size="2">Reported At: 2025-12-03 12:08:57 UTC</FONT><BR /><FONT size="2">Priority: High</FONT><BR /><FONT size="2">Status: In Process</FONT></P><P><STRONG>As you can see the default email does not include:</STRONG><BR /> 1, Which certificate (CN/alias/subject) is expired<BR /> 2, Expiry date and “days overdue / days remaining”<BR /> 3, Where used (endpoint / integration artifact / runtime)<BR /><BR />You may want to enrich the message and send a customized email to the right team.</P><P>Let’s see how we can achieve this...<BR /><BR /></P><P><U><FONT size="4"><STRONG>Context</STRONG></FONT></U><FONT size="3"><STRONG><BR /></STRONG></FONT></P><P><STRONG>1,</STRONG> Configure an event in SAP Cloud ALM for the desired monitoring application. In this example, we use <STRONG>Health Monitoring</STRONG> for <STRONG>Integration Suite (Cloud Integration)</STRONG>.</P><P><STRONG>2,</STRONG> When we configure an event in SAP Cloud ALM, we can enable alerts and add <STRONG>Operations Automation</STRONG> as an action. If an alert is open, we can start the operation flow manually by clicking <STRONG>Actions</STRONG>. If the event is triggered, the operation automation starts automatically.</P><P><STRONG>3,</STRONG> Once the operation flow is triggered, we can view the execution logs in SAP Build Process Automation under the <STRONG>Monitoring > Processes</STRONG> tab, including the context payload sent from SAP Cloud ALM to BPA.</P><P> </P><P><U><FONT size="4"><STRONG>Configuring the workflow:</STRONG></FONT></U></P><P><STRONG>1,</STRONG> Create a process automation in SAP Build Process Automation</P><P><STRONG>2,</STRONG> If generative AI is enabled in <STRONG>Control Tower</STRONG>, you should see the <STRONG>Generate</STRONG> button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="balazs_trencsenyi_0-1768815855662.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362546i09E1C34946581984/image-size/medium?v=v2&px=400" role="button" title="balazs_trencsenyi_0-1768815855662.png" alt="balazs_trencsenyi_0-1768815855662.png" /></span></P><P><STRONG>3,</STRONG> First, create a process using the generative AI functionality. For example:<BR /><EM>“Generate a process called ‘customAlert’ with a decision table and an email step.”</EM><BR />This will create a basic process skeleton:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="balazs_trencsenyi_3-1768838812219.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362968i434FA362656773B1/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="balazs_trencsenyi_3-1768838812219.png" alt="balazs_trencsenyi_3-1768838812219.png" /></span></P><P><STRONG>4,</STRONG> Next, add the process inputs that BPA expects from SAP Cloud ALM (refer: <SPAN><A href="https://help.sap.com/docs/cloud-alm/apis/operation-flow?locale=en-US" target="_blank" rel="noopener noreferrer">Operation Flow | SAP Help Portal</A></SPAN>). For an operation automation, you typically receive values such as:</P><UL><LI>automationId</LI><LI>timestamp</LI><LI>eventDetailsTable (This will be an object, include the certificate details we wish to call…)</LI><LI>serviceName etc..</LI></UL><P>You must define these as process inputs in BPA—and you can use generative AI for this as well. For example:</P><P>‘Create process inputs for rating, timestamp, serviceName, eventName and lmsRole’<BR /><BR /><STRONG>5,</STRONG> Then, add an <STRONG>API trigger</STRONG>.</P><P><STRONG>6,</STRONG> Create a <STRONG>Script Task</STRONG> before the decision table <STRONG>to parse</STRONG> the <CODE>eventDetailsTable</CODE>to <STRONG>retrieve the certificates</STRONG> in this example from the payload. With this script, you would be able to <STRONG>filter</STRONG> out for certain certificates for example a<STRONG> top 5 certificate</STRONG> by expiry date <STRONG>or filter alerts only for specific certificates.</STRONG> If you would like to set thresholds for the rating you would be able to derive a custom severity (CRITICAL/WARNING) based on the "days until expiry" value. <STRONG>Tiny snippet:</STRONG></P><P><FONT size="2">var t = safeParseJson($.context.startEvent.eventDetailsTable);</FONT><BR /><FONT size="2">var rows = (t && Array.isArray(t.rows)) ? t.rows : [];</FONT><BR /><FONT size="2">var overall = "WARNING";</FONT></P><P><FONT size="2">for (var i = 0; i < rows.length; i++) {</FONT><BR /><FONT size="2">var days = parseFloat(rows[i][4]); // Value = days until expiry</FONT><BR /><FONT size="2">if (!isNaN(days) && days <= 7) { overall = "CRITICAL"; break; }</FONT><BR /><FONT size="2">}</FONT></P><P><FONT size="2">$.context.custom.certseverityoverall = overall;</FONT></P><P><STRONG>7,</STRONG> Configure a Decision Step for correct email routing:</P><P>Click <STRONG>Open Editor</STRONG>. This step determines the notification recipients based on the incoming values and the rules you define..</P><P>For example, a <STRONG>CRITICAL</STRONG> severity in <STRONG>PROD</STRONG> should be routed to the on-call team. In contrast, a <STRONG>WARNING</STRONG> severity in <STRONG>DEV</STRONG> can typically be routed to the standard support team.</P><P>In the Decision step, define the required inputs and outputs for this routing logic. Add <CODE>rating</CODE> and <CODE>systemType</CODE> as input parameters, and <CODE>recipient</CODE> as the output parameter.</P><P>Now, create a rule using generative AI, for example:</P><P>‘If the rating is CRITICAL, then recipient must be <A href="mailto:support@oncall.com" target="_blank" rel="noopener nofollow noreferrer">support@oncall.com</A>’<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="balazs_trencsenyi_4-1768840191858.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362985iB9690700B456B50B/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="balazs_trencsenyi_4-1768840191858.png" alt="balazs_trencsenyi_4-1768840191858.png" /></span></P><P><STRONG>8,</STRONG> Open the <STRONG>Mail Body Editor</STRONG> as the final step and reference the variables in your custom email.</P><P><STRONG>9,</STRONG> Deploy and Verify:</P><P>Deploy the workflow in SAP Build Process Automation, then register it in SAP Cloud ALM via the <STRONG>Operations Automation</STRONG> tab.</P><P>Assign it to the <STRONG>“Expired Certificate”</STRONG> event in <STRONG>Health Monitoring</STRONG> for <STRONG>Integration Suite (Cloud Integration)</STRONG>. When the event is triggered, the operation flow will start automatically and send the appropriate email to the appropriate team.<BR /><BR /><U><STRONG><FONT size="4">Result:<BR /></FONT></STRONG></U></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="balazs_trencsenyi_1-1768992600328.png" style="width: 581px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/363650i9AA5E61B86940A41/image-dimensions/581x492?v=v2" width="581" height="492" role="button" title="balazs_trencsenyi_1-1768992600328.png" alt="balazs_trencsenyi_1-1768992600328.png" /></span></P><P> </P>2026-01-20T06:09:09.384000+01:00https://community.sap.com/t5/community-corner-blog-posts/ask-me-anything-with-sap-champions-monthly-series-session-1/ba-p/14310542Ask Me Anything with SAP Champions – Monthly Series (Session 1)2026-02-02T08:07:05.474000+01:00smarchesinihttps://community.sap.com/t5/user/viewprofilepage/user-id/125739<P><STRONG>Hello Community,</STRONG></P><P>My name is <STRONG>Sebastiano Marchesini</STRONG>, SAP Champion and SAP BTP architect. I moved from Italy to the US and currently work as a technology lead consultant, focusing on SAP BTP and enterprise architectures. I also love <A href="https://community.sap.com/t5/community-corner-blog-posts/sap-community-hobbies-series-from-stress-to-strength-running-as-my-lifelong/ba-p/14233040" target="_self">running</A> <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P><P>From my experience at <STRONG>SAP TechEd</STRONG>, learning sessions, and live events, the most valuable moments are always the same:</P><H3 id="toc-hId-1917624771"><STRONG>Asking questions, any kind of question, and getting direct, honest answers from experts.</STRONG></H3><P>For this reason, the <STRONG>SAP Champions are launching a new monthly AMA (Ask Me Anything) series starting in 2026</STRONG>.</P><P>Each month, a <STRONG>different SAP Champion with a specific area of expertise</STRONG> (BTP, architecture, integration, development, automation, career growth, and more) will answer questions from the community, both <STRONG>technical and non-technical</STRONG>.</P><P>This blog post is the <STRONG>first of the series</STRONG>.</P><P>You are invited to ask <STRONG>any questions you have</STRONG>, openly or <STRONG>anonymously</STRONG>, using the form below.<BR />No topic is off-limits: architecture doubts, product choices, real-life SAP challenges, or even questions about working in the SAP ecosystem, running (lol).</P><P>Let’s make this a space for <STRONG>open discussion, real experience, and practical answers</STRONG>.<BR /><BR />You can ask anonymously here</P><H3 id="toc-hId-1721111266"><BR /><A href="https://forms.office.com/e/w1ruFctkQQ" target="_blank" rel="noopener nofollow noreferrer">AMA Champion Anonymously Questions</A></H3><P>(or below as anwer of the blog) </P><P><EM>Submit your questions by early February and get answers in our upcoming SAP Communities video and blog recap.</EM></P><P><BR /><BR />This AMA session will be open for questions until <STRONG>the last week of February</STRONG>.<BR /><BR />After that, selected questions will be answered in a <STRONG>recorded video published on the SAP Communities YouTube channel</STRONG>.<BR />A <STRONG>blog recap</STRONG> summarizing the questions and answers will also be published for the community.<BR /><BR /></P><BLOCKQUOTE><P>Only questions submitted during this window will be considered.</P></BLOCKQUOTE><P><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ChatGPT Image Jan 19, 2026, 07_18_52 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/363094i6FCAF1CA3465F544/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="ChatGPT Image Jan 19, 2026, 07_18_52 PM.png" alt="ChatGPT Image Jan 19, 2026, 07_18_52 PM.png" /></span></P><P> </P>2026-02-02T08:07:05.474000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/sap-codejam-on-event-driven-build-process/ba-p/14320928SAP Codejam on Event Driven Build Process2026-02-03T18:32:00.943000+01:00Sharathmghttps://community.sap.com/t5/user/viewprofilepage/user-id/174516<P>I recently participated in an <STRONG>SAP Code Jam focused on building event-driven processes using SAP Integration Suite (Advanced Event Mesh) and SAP Build Process Automation</STRONG>. The Session was ably conducted and managed by <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/149819">@ajay_soreng</a> and <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/156020">@Rekha_DR</a> .</P><P>Codejams are my favorite community events. It pure code with access to the best of SAP in terms of tools, license and expertise. In this session we had a hands-on and walkthrough of a realistic end-to-end scenario rather than a theoretical demo.</P><P>The core use case was triggered by a <STRONG>Business Partner creation event</STRONG> in a simulated SAP S/4HANA Cloud system. Once the Business Partner was created and tagged, an event was published to <STRONG>SAP Advanced Event Mesh</STRONG>, where I configured topics, queues, and subscriptions to reliably route the event.</P><P>As you see in the below soln. diagram, an event is triggered by App. The advanced event mesh is configured to handle these events and appropriately route it to the build process and finally allow user to act on it. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_1-1770139160134.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368646i0C458D17361E07BA/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_1-1770139160134.png" alt="Sharathmg_1-1770139160134.png" /></span></P><P>Event Triggered from a Mock UI: </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_0-1770139129174.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368645iA01F249D6F0A5DFE/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_0-1770139129174.png" alt="Sharathmg_0-1770139129174.png" /></span></P><P>Configure the Broker Manager - The best part of this code jam:</P><P>The plethora of options of Event mesh were made available to us. The Queues, RDPs, Connectors, Tyr me's etc. was a learning experience. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_2-1770139284100.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368647i5BDE3CB1AE04F93C/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_2-1770139284100.png" alt="Sharathmg_2-1770139284100.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_3-1770139294157.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368648i1C471018046B338E/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_3-1770139294157.png" alt="Sharathmg_3-1770139294157.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_4-1770139313602.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368649iEF74B92E080526A6/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_4-1770139313602.png" alt="Sharathmg_4-1770139313602.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_6-1770139339611.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368651i6E1C95B68A67969C/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_6-1770139339611.png" alt="Sharathmg_6-1770139339611.png" /></span></P><P>As for the use case, </P><P>using a <STRONG>REST Delivery Point</STRONG>, the event was forwarded from Advanced Event Mesh to <STRONG>SAP Build Process Automation</STRONG>, which automatically triggered a business process. From there, the flow combined <STRONG>event-driven automation with human interaction</STRONG>—a user approval step in the SAP Build Inbox—followed by an asynchronous call to a simulated third-party badge system.</P><P>The process paused, waited for a callback, and then resumed to complete the flow with a final notification and badge ID.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_7-1770139483718.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368652i38695FA7628A4500/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_7-1770139483718.png" alt="Sharathmg_7-1770139483718.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sharathmg_8-1770139496131.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368653iCAD57A7E36F8E9CE/image-size/medium?v=v2&px=400" role="button" title="Sharathmg_8-1770139496131.png" alt="Sharathmg_8-1770139496131.png" /></span></P><P> </P><P>What stood out most was seeing how cleanly <STRONG>systems were decoupled</STRONG>. The event producer had no awareness of the consumers, and SAP Build acted purely as an orchestrator reacting to events. Configuring and testing this live made the benefits of event-driven architecture very tangible.</P><P>Overall, I enjoyed the Code Jam as it was a great practical deep dive into how <STRONG>SAP Advanced Event Mesh and SAP Build Process Automation.</STRONG></P><P><STRONG>Thanks to all the developer advocates, especially <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/107">@ajmaradiaga</a> for compiling the content on integration suite and adv. event mesh.</STRONG></P><P><STRONG>Until the next code jam - Ciao ! </STRONG></P>2026-02-03T18:32:00.943000+01:00https://community.sap.com/t5/supply-chain-management-blog-posts-by-sap/build-custom-joule-agent-to-analyze-blocked-freight-order-in-s-4hana-tm/ba-p/14323546Build custom Joule Agent to analyze blocked freight order in S/4HANA TM2026-02-08T01:49:35.777000+01:00HariPanakkalhttps://community.sap.com/t5/user/viewprofilepage/user-id/162762<P>In this blog, the objective is to build a custom Joule agent with multiple skills that analyzes a blocked freight order in the S/4HANA Transportation Management (TM) solution.</P><P>To keep the scenario simple, the agent analyzes blocks caused by time conflicts and explains them in simple business language.</P><P><STRONG>What you will learn</STRONG></P><P>By the end of this blog, you will understand:</P><UL><LI>The prerequisites for building this use case</LI><LI>How to expose TM documents as OData services consumable by Joule</LI><LI>How to create Build Actions, Joule Skills, and a Joule Agent</LI><LI>How to write basic instructions for the Joule Agent</LI><LI>How to test and fine-tune the agent</LI></UL><P>All of this can be done with <STRONG>minimal or no coding</STRONG>. With the right access and setup, even a business user can follow these steps and build a basic scenario in about 30 minutes. The approach is similar across S/4HANA solutions, with different OData services used to fetch backend data.</P><P>Let’s look at the high-level steps</P><OL><LI>Pre-requisites</LI><LI>Identify available CDS views in S/4HANA TM and wrap it with an OData service</LI><LI>Configure SAP Cloud Connector – Joule (from public internet) needs secure communication channel to connect your ERP environment</LI><LI>Define Destinations on your BTP subaccount - connect to the OData service via cloud connector</LI><LI>Define Actions in Joule Studio</LI><LI>Define Joule Skills</LI><LI>Define Joule Agent</LI><LI>Test!</LI></OL><P>Let’s look at the steps in detail.</P><OL><LI><STRONG>STEP 1: Pre-requisites</STRONG></LI></OL><P> You need the following to run this scenario,</P><UL><LI>An S/4HANA private or on-premise environment</LI><LI>Eclipse IDE with ABAP Development Toolkit (ADT) – <A href="https://developers.sap.com/tutorials/abap-install-adt..html" target="_blank" rel="noopener noreferrer">see the tutorial</A> if you haven’t done</LI><LI>SAP Cloud Connector installed in your landscape – <A href="https://learning.sap.com/courses/connecting-sap-btp-with-on-premise-via-cloud-connector/installing-the-cloud-connector_cf9917b4-da92-4ef3-aee1-3f43c4690de6" target="_blank" rel="noopener noreferrer">follow this</A> if haven’t done</LI><LI>An SAP BTP subaccount with Joule Studio (Joule studio is one of the components of SAP Build) – follow <A href="https://discovery-center.cloud.sap/missiondetail/4651/4940/" target="_blank" rel="noopener nofollow noreferrer">SAP Discovery Center Mission</A> for steps to do that.</LI></UL><P><STRONG>STEP 2: Identify available CDS views in S/4HANA TM and wrap it with an OData service</STRONG></P><P> Look at the SAP documentation for all <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/ee6ff9b281d8448f96b4fe6c89f2bdc8/8573b810511948c8a99c0672abc159aa.html" target="_blank" rel="noopener noreferrer">available standard S/4HANA CDS views</A>. For S/4HANA TM, <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/ee6ff9b281d8448f96b4fe6c89f2bdc8/612fca192298463c8012feeef8b84de5.html" target="_blank" rel="noopener noreferrer">see here</A>. In this use case, we require data from Freight Order, its item and stop nodes. So, let’s login to S/4HANA system and create an OData service for the three CDS views.</P><P>Select a package and create a service definition</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_0-1770511371724.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369872i37481BD972D5FCEA/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_0-1770511371724.png" alt="HariPanakkal_0-1770511371724.png" /></span></P><P> </P><P>Select referenced object as the respective CDS view and create and activate the service definition for the three CDS views.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_1-1770511371726.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369871iE9A2C97E299B5C59/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_1-1770511371726.png" alt="HariPanakkal_1-1770511371726.png" /></span></P><P> </P><P>Once created the definition, create a service binding by right click on each definition. Follow the wizard and after creation, activate the binding and then publish it. You can see the service URL and note that down. You can as well test the service now.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_2-1770511371743.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369873iA34C05F690F2584D/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_2-1770511371743.png" alt="HariPanakkal_2-1770511371743.png" /></span></P><P> </P><P><STRONG>STEP 3: Configure Cloud Connector</STRONG></P><P>Login to your SAP Cloud connector and Configure cloud to On-premise for the subaccount you are going to use for Joule. ‘/’ expose all which is not ideal, but fine for testing environments.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_3-1770511371752.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369875i0F5E362C02AA29CF/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_3-1770511371752.png" alt="HariPanakkal_3-1770511371752.png" /></span></P><P> </P><P><STRONG>STEP 4: Define Destinations on your BTP subaccount</STRONG></P><P>Now login to your BTP sub-account and navigate to ConnectivityDestinations and create a destination of type ‘HTTP,’ proxytype ‘OnPremise’.</P><P>The URL must be constructed by combining virtual host URL in cloud connector with service end point. Also add additional properties as shown in the screenshot.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_4-1770511371768.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369876i2CBEC03B93D37014/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_4-1770511371768.png" alt="HariPanakkal_4-1770511371768.png" /></span></P><P> </P><P><STRONG>STEP 5: Define Build Actions</STRONG></P><P>Now navigate to your Joule Studio (SAP Build) environment.</P><P>Navigate to the ConnectorsActions and create an action to fetch freight orders which are blocked.</P><P>Once you click create, select OData Destinations as API source. It will display all OData destinations defined in the subaccount. Pick the destination created in step 4.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_5-1770511371774.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369874i480261DDCBA0B3F5/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_5-1770511371774.png" alt="HariPanakkal_5-1770511371774.png" /></span></P><P> </P><P>It displays the available services in the underlying CDS view. Select Next and provide a meaningful name and description. Then navigate to the created action project.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_6-1770511371780.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369878iC7F3066AEB354569/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_6-1770511371780.png" alt="HariPanakkal_6-1770511371780.png" /></span></P><P> </P><P>Initially, the OData service will be with its basic definition. We need to add filter to fetch only filter blocked freight order (just pick execution blocked).</P><P>For this, click $filter parameter and then click Value F4 help in the popup. You can use condition editor or Text Expression.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_7-1770511371782.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369877iEEC304DDB212EC5B/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_7-1770511371782.png" alt="HariPanakkal_7-1770511371782.png" /></span></P><P> </P><P><STRONG>Reduce output fields</STRONG></P><P>In the <STRONG>Output</STRONG> tab:</P><OL><LI>Select the <STRONG>Body</STRONG> parameter.</LI><LI>Remove unnecessary fields.</LI></OL><P>For this scenario, keep only:</P><UL><LI>Order number</LI><LI>Description</LI><LI>UUID</LI></UL><P>You can test the action under the <STRONG>Test</STRONG> tab by selecting the destination and clicking <STRONG>Test</STRONG>.</P><P>If destination is not visible, Go to Control Tower view of Build and select Destinations and add the destination you created before.</P><P>Do these steps to create three actions to fetch root, item and stop information. Idea here is, first fetch root and then PRD item. From item node, get the FU and go to FU stop to get acceptable and planned dates. Provide all this information to Joule for analysis.</P><P>While creating action for item,</P><UL><LI>add a filter to restrict only PRD items.</LI><LI>Reduce the Output to have only freightUnitUUID field.</LI></UL><P>While creating action for stop,</P><UL><LI>Reduce output to pick only location, stoprole, stopcategory,acceptable start and end time and planned time.</LI></UL><P><STRONG>STEP 6: Define Joule Skill</STRONG></P><P>Navigate to Build Lobby and click create and select Joule Agent and skill. Once the project is created, click create and select Joule Skill. Provide a clear name and description of the skill.</P><P>Click on conversation starter and provide the prompt. Example ‘get execution blocked freight order with stop details and analyze the reason for block’</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_8-1770511371792.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369879i56532CABECD1E634/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_8-1770511371792.png" alt="HariPanakkal_8-1770511371792.png" /></span></P><P> </P><P>You don’t need any other input from user as we already did filter in our action to pick execution blocked freight orders.</P><P>Add the action by clicking the ‘+’ button and select our action to fetch freight order root.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_9-1770511371796.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369882i81E8836B047A1B1B/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_9-1770511371796.png" alt="HariPanakkal_9-1770511371796.png" /></span></P><P> </P><P>Navigate to skill parameter (select anywhere in the editor and click >> button to view skill parameter). Select the output for http 200 code as shown below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_10-1770511371801.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369881i732A369B5BF1255B/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_10-1770511371801.png" alt="HariPanakkal_10-1770511371801.png" /></span></P><P> </P><P>Finally bind the skill output to the trigger end of action.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_11-1770511371806.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369880i2D2A36440E32E587/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_11-1770511371806.png" alt="HariPanakkal_11-1770511371806.png" /></span></P><P> </P><P>Likewise create other skills to fetch item and stop nodes.</P><P>For item skill,</P><UL><LI>Skill input must be TransportationOrderUUID</LI><LI>Map skill input to action input as shown below</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_12-1770511371809.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369883i789C04192FD30EED/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_12-1770511371809.png" alt="HariPanakkal_12-1770511371809.png" /></span></P><P> </P><UL><LI>Finally map skill output to trigger end.</LI></UL><P>For stop skill,</P><UL><LI>Skill input must be FreightUnitUUID</LI><LI>Map skill input to action inputs shown below</LI><LI><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_13-1770511371812.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369884iF9EEAD8F9CF7FC91/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_13-1770511371812.png" alt="HariPanakkal_13-1770511371812.png" /></span><P> </P></LI></UL><P><STRONG>STEP 7 – Create Joule Agent</STRONG></P><P>In the project, create ‘Joule Agent’ and navigate to agent definition screen.</P><P>Define ‘Expertise’ which provides the persona of the agent and ‘Instructions’ as system prompt on how to analyze reason for blocked freight order. Write that in plain, simple English. An example as shown below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_14-1770511371822.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369885i7A5CD1505AC5EF4B/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_14-1770511371822.png" alt="HariPanakkal_14-1770511371822.png" /></span></P><P> </P><P>Provide some few-shot learnings to the agent as part of instructions. Example below</P><P><EM>##Example 1 (case with date 'TranspOrdStopPlanTranspDteTme' is before date 'TranspOrdStopAccptblStrtDteTme') </EM></P><P><EM>Given the following Freight unit stop details:</EM></P><P><EM>- Transportation stop acceptable start date: 10-January-2026</EM></P><P><EM>- Transportation stop acceptable end date: 12-January-2026</EM></P><P><EM>- Transportation stop planned date: 8-January-2026</EM></P><P><EM>// Business Rule: date 'TranspOrdStopPlanTranspDteTme' must be after date 'TranspOrdStopAccptblStrtDteTme' </EM></P><P><EM>// Analysis: 8-January-2026 is NOT after 10-January-2026</EM></P><P><EM>// Expected blocked freight order Analysis result: Since planned date is not after acceptable start dates, freight order is blocked</EM></P><P>Select your desired LLM provider, base and advanced model. Example OpenAI, GPT-4o Mini and GPT-4o. Save the agent definition.</P><P>Navigate to the Tools tab and add the three skills to the Agent you created before,</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_1-1770649728827.png" style="width: 608px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/370522i1A7B12DED8151A66/image-dimensions/608x266?v=v2" width="608" height="266" role="button" title="HariPanakkal_1-1770649728827.png" alt="HariPanakkal_1-1770649728827.png" /></span></P><P> </P><P>At the end, your project will have one Joule Agent and three Joule Skills.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_0-1770649597577.png" style="width: 686px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/370521i98A5ED93D81473D5/image-dimensions/686x348?v=v2" width="686" height="348" role="button" title="HariPanakkal_0-1770649597577.png" alt="HariPanakkal_0-1770649597577.png" /></span></P><P> </P><P><STRONG>STEP 8: Testing!</STRONG></P><P>Click on the Test icon at the top of the project. Select the actual destinations within BTP to be used at runtime.</P><P>The conversation starter will appear and click that.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_15-1770511371826.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369886i4AD250553E4FA5E4/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_15-1770511371826.png" alt="HariPanakkal_15-1770511371826.png" /></span></P><P> </P><P>The agent will:</P><UL><LI>Select the required skills</LI><LI>Execute them in the appropriate sequence</LI><LI>Map parameters between skills</LI><LI>Evaluate the data</LI><LI>Return a business-friendly analysis using the selected LLM</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="HariPanakkal_16-1770511371837.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369887i4297F8147340863B/image-size/medium?v=v2&px=400" role="button" title="HariPanakkal_16-1770511371837.png" alt="HariPanakkal_16-1770511371837.png" /></span></P><P> </P><P> </P><P><STRONG>Summary:</STRONG></P><P>This example demonstrates how easy it is to build custom Joule agents and skills.<BR />The same approach can be applied to other S/4HANA solutions and a wide range of use cases.</P><P>This blog should help anyone new to Joule get started and build a simple proof of concept.</P>2026-02-08T01:49:35.777000+01:00