https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Event-Mesh-blog-posts.xmlSAP Community - SAP Event Mesh2026-02-21T03:01:07.829382+00:00python-feedgenSAP Event Mesh blog posts in SAP Communityhttps://community.sap.com/t5/technology-blog-posts-by-sap/small-but-great-introducing-micro-integrations-for-advanced-event-mesh/ba-p/14281037Small but Great: Introducing Micro-Integrations for Advanced Event Mesh2025-12-01T13:22:27.767000+01:00KStrothmannhttps://community.sap.com/t5/user/viewprofilepage/user-id/7039<H3 id="toc-hId-1895485227"><STRONG>The Mesh</STRONG></H3><P>SAP Integration Suite, advanced event mesh is more than just a broker – it allows you to build a mesh of event brokers. Once on the mesh, events can flow through your enterprise providing a veritable nervous system that allows your company to even become better in what you do – faster, more reactive, more scalable, more flexible, more open to your employee’s ideas and your customer’s and supplier’s technology.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/347010i86EB259763D69A55/image-size/large?v=v2&px=999" role="button" title="1.png" alt="1.png" /></span></P><H3 id="toc-hId-1698971722"><STRONG>Once on the Mesh</STRONG></H3><P>Now we have added to this “more than just a broker” – SAP has just, on November 28th, released Micro-Integrations for SAP Integration Suite, advanced event mesh.</P><P>Let’s go back to the second sentence you have read above: once on the mesh, events can flow … Often the question was: how do I get the events on the mesh from my event source, or off the mesh to the event consumer? Micro-Integrations facilitate exactly this on-ramp to and off-ramp from the mesh.</P><H3 id="toc-hId-1502458217"><STRONG>Micro-Integrations</STRONG></H3><P>Micro-Integrations are small, lightweight, event-driven integration modules that connect enterprise technologies (legacy and SaaS applications, messaging services, data bases, files, AI agents, etc.) to an event-driven distribution layer, so they can exchange information in real-time. Advanced Event Mesh Micro-Integrations serve as on-ramp and off-ramp to the mesh – a network of meshed SAP Integration Suite, advanced event mesh brokers. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/347012iAE6FFBBAA87C1C9F/image-size/large?v=v2&px=999" role="button" title="2.png" alt="2.png" /></span></P><H3 id="toc-hId-1305944712"><STRONG>Scope of Micro-Integrations</STRONG></H3><P>Micro-Integrations focus on specific, narrowly defined tasks or processes. They are easier to design and change without impact to any other systems because the effect and risk of the change is localized. The reason for this is that a Micro-Integration (MI) does not connect two applications with each other. A MI connects a given application as an event source to the mesh (On-Ramp) or event target from the mesh (off-ramp). Resulting from the event-driven approach and the power of Advanced Event Mesh, high throughput data streams flow faster.</P><P>Micro-Integrations include a <STRONG>source or target connector</STRONG> which establishes a data flow between an event distribution layer like an event mesh and some source/target system.</P><P>Micro-Integrations are available in the Cloud Console and allow you to manage and observe the state of an integration between your external system and an event broker service or event mesh. </P><H3 id="toc-hId-1109431207"><STRONG>Benefits of Micro-Integrations</STRONG></H3><P>Micro-Integrations are highly beneficial for modernizing integrations with event-driven architecture and the benefits they offer include</P><OL><LI><STRONG>Greater Agility</STRONG>: easy to change how applications and services interact with one another</LI><LI><STRONG>Faster data distribution: </STRONG>better real-time performance than traditional integration patterns and fast streaming capabilities</LI><LI><STRONG>Better/Easy Scalability: </STRONG>improved scalability by use of pub/sub to distribute events and by option to add additional Micro-Integrations to specific task</LI><LI><STRONG>More Flexibility:</STRONG> different technologies can be used at source or target sides depending on best fit technology, commercials or technology evolution</LI></OL><H3 id="toc-hId-912917702"><STRONG>Available Micro-Integrations</STRONG></H3><P>A number of Micro-Integrations are currently available for use with SAP Integration Suite, advanced event mesh and SAP adds new Micro-Integrations to this list frequently. The currently available Micro-Integrations include:</P><UL><LI>Azure Service Bus</LI><LI>Amazon SNS</LI><LI>Amazon SQS</LI><LI>MQTT</LI><LI>Network files services SFTP</LI><LI>IBM MQ</LI><LI>Google Pub/Sub</LI><LI>AWS SQS</LI><LI>Snowflake</LI><LI>Oracle Advanced Queuing</LI><LI>Salesforce </LI></UL><P>More Micro-Integrations are planned to be made available.</P><H3 id="toc-hId-716404197"><STRONG>Pre-Requisites and Commercials</STRONG></H3><P>Micro-Integrations require an SAP Integration Suite, advanced event mesh broker – a certain number of Micro-Integrations is included with the bigger AEM brokers. For the current commercial offering an Advanced Event Mesh broker of the 1K tier or higher is required (version 10.2.1 or later). The 1k broker for example includes a usage right for 2 Micro-Integrations which you can choose from the list of Micro-Integrations available for AEM.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Table.png" style="width: 627px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/347018i08A33C270B369EA1/image-dimensions/627x343?v=v2" width="627" height="343" role="button" title="Table.png" alt="Table.png" /></span></P><P>Micro-Integrations are supported on Public Regions, Dedicated Regions, and Customer-Controlled Regions.</P><H3 id="toc-hId-519890692"><STRONG>Understanding Micro-Integrations</STRONG></H3><P>A Micro-Integration defines how data should move between an external system and Advanced Event Mesh. A Micro-Integration includes a source or target connector which establishes data flow between an event distribution layer (i.e. Advanced Event Mesh) and some other source or target system.</P><P>So, there are two types of Micro-Integrations:</P><UL><LI>With a <EM>target</EM> Micro-Integration, data streams from an SAP event broker service to the external system.</LI><LI>With a <EM>source</EM> Micro-Integration, data streams from the external system to an SAP event broker service.</LI></UL><P>You decide at creation time whether to create a source or target Micro-Integration. A Micro-Integration contains up to five Flows that share the same connection information but differ in their endpoints. This allows you to group similar integrations and manage them as a single deployment, simplifying configuration and reducing operational costs.</P><H3 id="toc-hId-323377187"><STRONG>The way forward</STRONG></H3><P>Customers with supported brokers can as of today use start using Micro-Integrations – supported again means a 1K broker or higher.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arrow.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/347008i6030ADE75A7A138B/image-size/large?v=v2&px=999" role="button" title="Arrow.png" alt="Arrow.png" /></span></P><P>With the feature introduced, we intend to provide it in future via additional channels as well.</P><P>This is work in progress, so stay tuned for updates here.</P><H3 id="toc-hId-126863682"><STRONG>Getting Started</STRONG></H3><P>Find additional information on Micro-Integrations for Advanced Event Mesh here:</P><P><A href="https://help.pubsub.em.services.cloud.sap/Micro-Integrations/Managed/managed-micro-integrations-overview.htm" target="_self" rel="nofollow noopener noreferrer">Documentation</A></P>2025-12-01T13:22:27.767000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-process-integration-meets/ba-p/14290088IDoc with Integration Suite, Advanced Event Mesh – Process Integration meets Eventing2025-12-15T04:43:00.463000+01:00FlorianOkoshttps://community.sap.com/t5/user/viewprofilepage/user-id/5536<H2 id="toc-hId-1767296394">Introduction: Why IDoc-based Eventing matters</H2><P>Event-driven architectures have become a cornerstone for building responsive, loosely coupled SAP landscapes. With SAP Event Mesh and SAP Advanced Event Mesh (AEM), organizations can now distribute business events in near real time across SAP and non-SAP systems.</P><P>However, despite the growing availability of native business events in SAP S/4HANA, <STRONG>IDocs remain one of the most widely used integration mechanisms</STRONG> in productive SAP landscapes today. Especially in hybrid and transition scenarios — such as ECC to S/4HANA conversions, RISE with SAP journeys, or coexistence setups.</P><P>This leads to a pragmatic but important question for many architects and integration teams: <EM>How can we enable event-driven integration when IDocs are the primary source of truth?</EM></P><P> </P><H2 id="toc-hId-1570782889">Motivation: Bridging Legacy Integration with Modern Eventing</H2><P>Many customers want to adopt event-driven integration patterns <STRONG>without breaking existing interfaces</STRONG> or redesigning core business processes. Replacing IDocs with native domain events is often not feasible in the short term due to:</P><UL><LI><P>Large numbers of productive IDoc interfaces</P></LI><LI><P>Business-critical dependencies on established ALE/EDI processes</P></LI><LI><P>Limited capacity to redesign integration contracts during S/4HANA or RISE projects</P></LI></UL><P>At the same time, downstream consumers increasingly expect <STRONG>event-based communication</STRONG>, lightweight payloads, and scalable publish/subscribe models instead of point-to-point messaging.</P><P> </P><H2 id="toc-hId-1374269384">What This Blog Covers</H2><P>In this blog, we will compare <STRONG>four technical approaches</STRONG> for enabling SAP Eventing with IDocs as a source:</P><OL><LI><P><STRONG>SAP RAP</STRONG> – modeling domain-oriented events in the backend</P></LI><LI><P><STRONG>SAP Application Interface Framework (AIF)</STRONG> – governed IDoc processing and transformation</P></LI><LI><P><STRONG>ASAPIO Event Add-on</STRONG> – purpose-built IDoc-to-event enablement</P></LI><LI><P><STRONG>SAP Integration Suite (PI-style Cloud Integration) to SAP AEM</STRONG> – middleware-driven event publication</P></LI></OL><P>The comparison focuses on <STRONG>technical, operational, and commercial KPIs</STRONG>, helping architects and integration leads decide which approach best fits their current landscape — and their long-term eventing strategy.</P><P>Furthermore we are planning to release a setup blog for every approach in 2026.</P><P> </P><TABLE width="1664"><TBODY><TR><TD width="168"><STRONG>KPI Area</STRONG></TD><TD width="267"><STRONG>Sub-KPI</STRONG></TD><TD width="445"><STRONG>SAP RAP</STRONG></TD><TD width="204"><STRONG>SAP AIF</STRONG></TD><TD width="219"><STRONG>ASAPIO Event Add-on</STRONG></TD><TD width="361"><STRONG>IDoc with Integration Suite, Process Integration → SAP AEM</STRONG></TD></TR><TR><TD width="168"><STRONG>Technical</STRONG></TD><TD width="267"><STRONG>Architecture fit for eventing</STRONG></TD><TD width="445">RAP is a development model for OData/REST apps; events must be explicitly modeled and outbound connectors added.</TD><TD width="204">AIF is built to process, validate and route message-based interfaces, including IDocs, before forwarding.</TD><TD width="219">Purpose-built for IDoc capture → event broker integration; minimal coding needed.</TD><TD width="361">Uses IDoc adapters in Integration Suite (Cloud Integration) to pick up IDocs → transform → push to AEM; classic PI-style patterns. Good for hub-and-spoke landscapes.</TD></TR><TR><TD width="168"> </TD><TD width="267"><STRONG>Payload granularity & semantic model</STRONG></TD><TD width="445">High flexibility; you design domain events — can be fine-grained but requires modeling effort.</TD><TD width="204">Strong transformation/mapping capabilities; suitable for shaping IDoc content into event payloads.</TD><TD width="219">Prebuilt mapping designer enables consistent, semantically enriched payloads quickly.</TD><TD width="361">Very flexible message mapping in Cloud Integration; can output structured JSON events or IDoc-like structures.</TD></TR><TR><TD width="168"> </TD><TD width="267"><STRONG>Payload type (Original IDoc vs. IDoc-like)</STRONG></TD><TD width="445">IDoc-like payload — RAP does not emit IDocs; outputs structured domain events that can mimic IDoc segments if designed so.</TD><TD width="204">Original IDoc or IDoc-like — AIF can pass through raw IDocs or transform into custom IDoc-like payload structures.</TD><TD width="219">IDoc-derived payload — captures the IDoc, then emits a normalized JSON event retaining IDoc semantics (not the raw IDoc).</TD><TD width="361">Setup would use standard distribution model (BD64) based in Original IDoc</TD></TR><TR><TD width="168"> </TD><TD width="267"><STRONG>Latency & throughput</STRONG></TD><TD width="445">Not optimized for high-volume IDoc capture; requires event plumbing; suitable for domain events rather than mass IDoc streaming.</TD><TD width="204">Strong runtime for IDoc processing; can scale with tuning.</TD><TD width="219">Optimized for real-time, high-volume IDoc eventing with direct connectors.</TD><TD width="361">Medium–High depending on Cloud Integration worker capacity; good for steady volumes, less ideal for IDoc bursts.</TD></TR><TR><TD width="168"> </TD><TD width="267"><STRONG>Development effort & maintainability</STRONG></TD><TD width="445">Medium–High: event modeling + outbound logic need to be built.</TD><TD width="204">Medium: mostly configuration-driven, reduced custom coding.</TD><TD width="219">Low–Medium: mostly no-code/low-code; install, configure, map, emit.</TD><TD width="361">Low–Medium: requires integration flow development, mapping, testing, monitoring artifacts.</TD></TR><TR><TD width="168"><STRONG>Operations</STRONG></TD><TD width="267"><STRONG>Monitoring & observability</STRONG></TD><TD width="445">Standard Event Monitor as part of Event Enablement Framework</TD><TD width="204">Very strong: built-in interface monitoring, message lists, business error handling.</TD><TD width="219">Built-in IDoc/event diagnostics + integration with event broker telemetry.</TD><TD width="361"> Cloud Integration monitoring via Message Monitor + separated backend IDoc monitoring → two monitoring planes. Could add it to AIF or CALM</TD></TR><TR><TD width="168"> </TD><TD width="267"><STRONG>Error handling & reprocessing</STRONG></TD><TD width="445">Requires custom retry logic; no native interface reprocessing workflow.</TD><TD width="204">Excellent: assisted corrections, reprocessing, business-user-friendly UI.</TD><TD width="219">Strong support for IDoc re-send, retries, scheduling, and alerting.</TD><TD width="361">Reprocessing via Cloud Integration retry or resending IDoc from backend; not as business-friendly as AIF.</TD></TR><TR><TD width="168"><STRONG>Commercial</STRONG></TD><TD width="267"><STRONG>Licensing / procurement</STRONG></TD><TD width="445">No new licenses; uses ABAP/RAP; development cost is the main factor.</TD><TD width="204">Included/licensed with SAP backend; configuration effort applies.</TD><TD width="219">Partner product with subscription/maintenance; reduces dev time.</TD><TD width="361">Requires Integration Suite licenses (message-based or connection-based) + AEM consumption.</TD></TR><TR><TD width="168"> </TD><TD width="267"><STRONG>TCO & time-to-value</STRONG></TD><TD width="445">Longer ramp-up due to event modeling and development effort.</TD><TD width="204">Medium TTV; faster than custom coding thanks to AIF tooling.</TD><TD width="219">Fast TTV; immediate eventing from IDocs with minimal dev.</TD><TD width="361">Fast TTV: Integration flows must be developed, deployed, and maintained; good reuse for multi-system connectivity.</TD></TR><TR><TD width="168"><STRONG>Setup Guide</STRONG></TD><TD width="267"><STRONG>How to implement it?</STRONG></TD><TD width="445">Blog will follow </TD><TD width="204"><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/how-to-send-out-idocs-to-advanced-event-mesh-using-sap-application/ba-p/13972680" target="_self">Setup Blog</A></TD><TD width="219"><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-using-the-event-add-on/ba-p/14290095" target="_self">Setup blog</A></TD><TD width="361"><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-process-integration-meets/ba-p/14290088" target="_self">Setup Blog</A></TD></TR></TBODY></TABLE><P>There is no one-size-fits-all approach to IDoc-based eventing in SAP landscapes — each option comes with distinct trade-offs across architecture, operations, and cost. While purpose-built add-ons and middleware enable fast time-to-value, backend-driven approaches provide stronger long-term alignment with domain-driven and native event models. Ultimately, the right choice depends on whether your priority is <STRONG>speed, governance, or future-proof event semantics</STRONG> on your journey toward an event-driven SAP architecture.</P><P>Stay tuned and Happy Eventing</P>2025-12-15T04:43:00.463000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-using-the-event-add-on/ba-p/14290095IDoc with Integration Suite, Advanced Event Mesh using the Event Add-On2025-12-18T08:38:25.882000+01:00FlorianOkoshttps://community.sap.com/t5/user/viewprofilepage/user-id/5536<P>In modern SAP landscapes, <EM>Intermediate Documents (IDocs)</EM> remain a foundational pillar for reliable, standardized data exchange—both within SAP systems and between SAP and external systems. The<STRONG> Event Add-on</STRONG> extends this proven SAP mechanism into today's heterogeneous and event-driven integration architectures by enabling bidirectional IDoc messaging that is <STRONG>code-less, real-time, and flexible</STRONG>. With the Add-On, standard and custom SAP IDocs can not only be processed in their native format but also <STRONG>converted on-the-fly to JSON</STRONG> for seamless delivery to cloud platforms, messaging brokers, or event-driven consumers, and vice versa. This empowers organizations to leverage established SAP interfaces while bridging to modern integration patterns without heavy custom development.</P><P>Please also check out the <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-process-integration-meets/ba-p/14290088" target="_self">technology comparison in our central blog.</A></P><H3 id="toc-hId-1896379141">Create Logical System</H3><UL><LI>Transaction: <STRONG>SALE</STRONG></LI><LI>Select the created<STRONG> Connection</STRONG></LI><LI>Go to section<STRONG> Basic Settings →</STRONG><STRONG><SPAN> </SPAN>Define Logical System</STRONG></LI><LI>Add<STRONG> New Entry </STRONG>and specify:<UL><LI><STRONG>Log.System</STRONG>: Name has to be “LOCAL”</LI><LI><STRONG>Name</STRONG>: choose a description</LI></UL></LI></UL><H3 id="toc-hId-1699865636">Create Customer Distribution Model</H3><UL><LI>Transaction: <STRONG>BD64</STRONG></LI><LI><STRONG>Create Model View </STRONG>and specify:<UL><LI><STRONG>Sender</STRONG>: Sending client</LI><LI><STRONG>Recipients</STRONG>: Logical system (LOCAL)</LI><LI>Add<SPAN> </SPAN><STRONG>message type</STRONG><SPAN> </SPAN>as required (e.g., MATMAS)</LI></UL></LI></UL><H3 id="toc-hId-1503352131">Create IDoc Port</H3><UL><LI>Transaction: <STRONG>WE21</STRONG></LI><LI>Select the created<STRONG> Connection</STRONG></LI><LI>Go to section<STRONG> ABAP-PI</STRONG></LI><LI>Add<STRONG> New Entry </STRONG>and specify:<UL><LI><STRONG>Port</STRONG>: choose a name (e.g., ACI_IDOC)</LI><LI><STRONG>Description</STRONG>: choose a description</LI><LI><STRONG>Function module</STRONG>: /ASADEV/ACI_IDOC_PORT_TRIGGER</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 15.12.25 um 11.07 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351883iA59B9C9B86C98E57/image-size/large?v=v2&px=999" role="button" title="Bild 15.12.25 um 11.07 AM.png" alt="Bild 15.12.25 um 11.07 AM.png" /></span></P><H3 id="toc-hId-1306838626">Create Partner profiles</H3><P><STRONG>Note:</STRONG></P><P>Make sure a Distribution model is available (Transaction BD64)</P><UL><LI>Transaction: <STRONG>WE20</STRONG></LI><LI>Open folder: <STRONG>Partner Type LS</STRONG></LI><LI>Go to section<STRONG> Outbound Options.</STRONG><UL><LI><STRONG>Receiver port</STRONG>: ACI_IDOC</LI><LI><STRONG>Basic Type</STRONG>: MATMAS07</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 15.12.25 um 11.24 AM.png" style="width: 696px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351884i7DB2C9A978A38690/image-size/large?v=v2&px=999" role="button" title="Bild 15.12.25 um 11.24 AM.png" alt="Bild 15.12.25 um 11.24 AM.png" /></span></P><H3 id="toc-hId-1110325121">Create Outbound Object</H3><P><STRONG>Note:<BR /></STRONG><BR />In the example below, we want to trigger an outbound message for SAP material master IDocs (IDoc name “MATMAS”), convert the IDoc payload to JSON and send it to an event broker instance.</P><UL><LI>Transaction: <STRONG>SPRO</STRONG></LI><LI>Goto <STRONG>ASAPIO Cloud Integrator →<SPAN> </SPAN></STRONG><STRONG>Connection and Replication Object Customizing</STRONG></LI><LI>Or go directly to transaction:<STRONG> /ASADEV/68000202</STRONG></LI><LI>Select the created<STRONG> Connection</STRONG></LI><LI>Go to section<STRONG> Outbound Objects</STRONG></LI><LI>Add<STRONG> New Entry </STRONG>and specify:<UL><LI><STRONG>Object</STRONG>: name of the outbound configuration</LI><LI><STRONG>Extraction Func. Module</STRONG>: /ASADEV/ACI_GEN_VIEW_EXTRACTOR</LI><LI><STRONG>Message Type</STRONG>: Specific message type (Example: Z_SAP_EM_MATMAS)</LI><LI><STRONG>Load Type</STRONG>: Incremental Load</LI><LI><STRONG>Trace</STRONG>: activate for testing purposes</LI><LI><STRONG>Extraction view name</STRONG>: EDID4</LI></UL></LI><LI><STRONG>Formatting Function:</STRONG> /ASADEV/ACI_GEN_IDOC_FORMATTER</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 15.12.25 um 1.02 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351899i251C5974915EDEF0/image-size/large?v=v2&px=999" role="button" title="Bild 15.12.25 um 1.02 PM.png" alt="Bild 15.12.25 um 1.02 PM.png" /></span></P><H3 id="toc-hId-913811616">Set up ‘Event Linkage’</H3><P>Link the configuration of the outbound object to a Business Object event:</P><UL><LI>Navigate to<SPAN> </SPAN><STRONG>Outbound Objects →<SPAN> </SPAN></STRONG><STRONG>Event Linkage</STRONG><SPAN> </SPAN>or use transaction <STRONG>SWE2.</STRONG></LI><LI>Add<STRONG> New Entry </STRONG>and specify:<UL><LI><STRONG>Object Category</STRONG>: BO BOR Object Type</LI><LI><STRONG>Object Type</STRONG>:<FONT color="#000000"> /ASADEV/ID</FONT></LI><LI><STRONG>Event</STRONG>: ACI_TRIGGER_EVENT</LI><LI><STRONG>Receiver Function Module</STRONG>: /ASADEV/ACI_EVENTS_TRIGGER</LI><LI><STRONG>Linkage Activated</STRONG>: tick the checkbox</LI><LI><STRONG>Check Function Module</STRONG>: /ASADEV/ACI_EVENTS_CHECK</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 18.12.25 um 2.10 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353443i6FE196D70D4EDED0/image-size/large?v=v2&px=999" role="button" title="Bild 18.12.25 um 2.10 PM.png" alt="Bild 18.12.25 um 2.10 PM.png" /></span></P><P> </P><H3 id="toc-hId-717298111">Set-up ‘Header Attributes’</H3><P>Specific for the IDoc Outbound use-case you have to specify the header attributes. For all details check <A href="https://asapio.com/docs/idoc/" target="_blank" rel="noopener nofollow noreferrer">https://asapio.com/docs/idoc/</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 18.12.25 um 2.13 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353444iE2311A1708A7EBFF/image-size/large?v=v2&px=999" role="button" title="Bild 18.12.25 um 2.13 PM.png" alt="Bild 18.12.25 um 2.13 PM.png" /></span></P><H3 id="toc-hId-520784606">Test the outbound IDoc event creation</H3><P>Start transaction <STRONG>BD10</STRONG> to test the described formatter</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 18.12.25 um 2.14 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353445i52EA98DA36C053E9/image-size/large?v=v2&px=999" role="button" title="Bild 18.12.25 um 2.14 PM.png" alt="Bild 18.12.25 um 2.14 PM.png" /></span></P><H3 id="toc-hId-324271101">Welcome you IDoc event in SAP AEM using Try-Me.</H3><DIV class=""><DIV class=""><DIV class=""><P>Stay tuned and Happy Eventing</P></DIV></DIV></DIV><DIV class=""> </DIV>2025-12-18T08:38:25.882000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/santa-learns-lessons-from-the-past-successful-agentic-ai-needs-an-event/ba-p/14293212Santa learns lessons from the past: Successful Agentic AI needs an Event Driven Architecture2025-12-18T11:56:50.616000+01:00robert_pickeringhttps://community.sap.com/t5/user/viewprofilepage/user-id/222583<P>Most organisations realise that Agentic AI will become critical to their business. But there is still hesitation about giving up more control to these new agents. What if they make bad decisions, what if they do the wrong thing ?</P><P>I’ve been in the technology industry for more decades than I may care to admit. Before joining SAP, I spent 14 years working within Financial Services and Capital Markets. It is interesting to reflect on those times. Many of the challenges back then remain the same today.</P><P>In Financial Services, the major players did not hesitate to innovate with new technology – for them it was opportunity. Very early on they realised that trading in “simpler” financial instruments ( e.g. foreign exchange ) did not really need humans shouting excitedly at one another on the (tele)phone. That trading was quickly handed over to computers – and whilst it was perhaps not AI by today’s definition, it was certainly <STRONG>algorithmic</STRONG> and it was most definitely <STRONG>autonomous</STRONG>. Billions still gets traded by these Agentic AI predecessors, all based on the lightning-fast decisions they make ( but operating within parameters and thresholds defined by humans that quantify the risk ).</P><P>Decisions are made as a result of an event that arises. <U>Better</U> decisions are made knowing the wider context of that event. Yes, context comes from data. Wider context ( surprise ! ) comes from more and different data. But all that data needs to be super up-to-date, and accurate.</P><P>Financial Services firms understood and solved this also. In a 24x7 global market, there is no window for a batch run to load data. Trading systems, market data providers, stock exchanges, market and credit risk systems and more, all needed to be wired together for simultaneous update of data. Plus, it needed to be robust and flexible to add-in other market participants and their systems also.</P><P>Most firms adopted architectures built around messaging-oriented middleware, with technologies like Enterprise Service Bus, Message Queue, and Event Bus amongst others, all being variations on a theme that today we call an <STRONG>Event Driven Architecture</STRONG> (EDA). Their appetite for speed pushed the technology to milli-second response times and super high-availability. Equally valuable was that the decoupled publisher-subscriber model allowed much faster and easier recovery if any of the participants in their expanded trading ecosystem did experience a failure.</P><P>Perhaps such requirements seem a bit extreme for many companies operating in other industry segments. But the world is increasingly real time for the majority of businesses, and as Agentic AI plays a bigger part in your daily operations, it may be time to reflect on these lessons.</P><P>To highlight this more tangibly, I thought about a festive ( but fictional ? ) example where the capabilities of an Event Driven Architecture could really make a difference. So grab a coffee, something sweet to eat ( save the gym for the New Year ) and read on …</P><P> </P><P><STRONG>Santa Inc refactors gift delivery on an Event Driven Architecture</STRONG></P><P>After decades relying on delivery to every home in sequence, Santa has realised this will no longer scale and he risks missing targets and some serious reputational damage. His operations used to be ok, but the customer base expands every year and getting to all of those in one day is now stretching the imagination.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="291356_GettyImages-1283733014_medium_jpg.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353517i5E415B5FBE57E34C/image-size/medium?v=v2&px=400" role="button" title="291356_GettyImages-1283733014_medium_jpg.jpg" alt="291356_GettyImages-1283733014_medium_jpg.jpg" /></span></P><P><SPAN>Production used to be straightforward when it was just teddy bears, dolls, drums and toy trains, but now with games consoles, smartphones and other sophisticated presents it has become necessary to outsource to specialised manufacturing facilities in many countries. The elves have switched roles from sewing and carpentry to now managing supply chains, delivery bottlenecks and stock-outs – they’re stressed and threatening to go on strike ! Managing stock and purchasing was much easier when children used to write letters, but now they post their wish lists on social media – and keep changing their minds based on what is trending ! Logistics was never a problem – Rudolph and the other reindeer managed through even the harshest weather. But now they are obliged to adhere to air-traffic control diversions and compulsory rest stops. Finally, when delivering a present, it was disappointing to find out ( too late ) that the child had been naughty rather than nice. It meant carrying extra payload on the sleigh and unnecessary manufacturing and purchase costs.</SPAN></P><P>Santa has an extensive IT landscape and ecosystem. But he realised even his magical powers were no longer the answer – <STRONG>it was time to transform his operations</STRONG>. But not rip and replace … even with 364 quieter days, that would still be too much work. Besides, most of the individual systems did what they needed to do – it was just they didn’t really react to each other that well. There was a lot of point-to-point connection between the production, inventory, CRM and other systems, with each repeatedly polling the other for updates – a real spaghetti architecture. Adding new suppliers’ systems into this landscape was slow. Recovering from any one system failure, having to replay lost transactions and regain overall confidence in stock quantities and delivery shipments an even bigger nightmare.</P><P>All of this was putting huge pressure on the elves. Santa has always been committed to his workforce, and he wanted the team to be happy and motivated. He looked to Agentic AI to help them, to manage the scale and complexity of supply chains. But like his elves, those AI agents would need to be super-smart, reactive, and always up to date with reliable data.</P><P>And then the lightbulb went on for Santa. He was reading this <A href="https://www.technologyreview.com/2025/10/06/1124323/enabling-real-time-responsiveness-with-event-driven-architecture/" target="_blank" rel="noopener nofollow noreferrer">article</A> about Event Driven Architecture and realised that would answer so many of these problems. The synchronous and repeated point-to-point communication is taken away. Instead, events are published asynchronously, with brokers distributing and guaranteeing them, to be consumed by any system that is interested – instantly ( super-fast ) and simultaneously ( not each system in turn ). The spaghetti is now replaced by something more like a giant distributed smorgasbord in which everyone ( elves, agents and ecosystem partners ) can share all at once. <EM>NOTE: Santa was never a fan of spaghetti but does quite enjoy a good smorgasbord.</EM></P><P>With an Event Driven Architecture, Santa could be much more responsive in his production runs and purchasing. Plus, new suppliers could be on-boarded quickly and easily to cater for peaks in toy popularity, as well as getting up-to-date pricing and costs across his ecosystem. On the big night itself, so many of those delivery headaches could now be mitigated. Travel and weather alerts would be provided immediately for dynamic routing updates ( and for Santa, every milli-second matters ). Add to this a real-time feed of naughty-or-nice monitoring data being gathered by event brokers across the globe ( some in very remote locations ) and made available to the dynamic routing algorithm as well as stock logistics teams ( Santa has an increasing network of warehouses that he needs to stop at – he cannot carry everything on his sleigh ).</P><P>Santa and his Enterprise Architect ( another Elf ) looked at options and decided on SAP Integration Suite, Advanced Event Mesh. Given that 84% of the world’s global commerce runs on SAP systems, and these already have high-value business events out-of-the-box, it was likely that much of Santa’s ecosystem could be easily included. Even for those using other vendors’ applications, the solution was open to those via industry-standard protocols, plus it was possible to include custom-built events. It did not need rip and replace, and the system could scale by adding more brokers over time to create an <STRONG>event mesh</STRONG>. Even better, that same infrastructure could be used for other event use cases ( Santa wondered about moving into Travel & Entertainment for the rest of the year – perhaps offering trips on the sleigh into low earth orbit – he thought that might become popular ).</P><P>Whilst looking at SAP, his Enterprise Architect saw SAP Build <A href="https://www.sap.com/products/artificial-intelligence/joule-studio.html" target="_blank" rel="noopener noreferrer">Joule Studio</A>, to create the AI agents. That seemed an obvious choice also – many processes would run on SAP, the most relevant and up-to-date operational data resides there, plus it offered a large choice of LLMs across the major providers. Quick to get into production also – because they rapidly needed to regain morale amongst the elves.</P><P>So that’s the story of how one globally recognised brand came to explore the benefits of an Event Driven Architecture. If you recognise any similarities to challenges within your own business operation, then I would invite you learn more <A href="https://www.sap.com/products/technology-platform/integration-suite/advanced-event-mesh.html" target="_blank" rel="noopener noreferrer">here</A>. Or, if you would like to see an example that the elves built earlier, then please do look at this <A href="https://www.sap.com/assetdetail/2025/11/f0033bb9-297f-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">short demo</A>.</P>2025-12-18T11:56:50.616000+01:00https://community.sap.com/t5/integration-blog-posts/sap-integration-suite-q4-2025-feature-highlights/ba-p/14305802SAP Integration Suite: Q4/2025 Feature Highlights2026-01-12T18:00:38.146000+01:00MaiaraEllwangerhttps://community.sap.com/t5/user/viewprofilepage/user-id/58<P><SPAN>The fresh batch of features delivered in Q4 2025 brings powerful new tools designed to make your integrations smarter, faster, and more resilient. From AI-powered recommendations that simplify troubleshooting, to streamlined connectivity with top platforms like Amazon Kinesis and Box, these updates are crafted to boost your operational efficiency and keep you ahead of the curve. Read on to explore how these innovations can transform your integration experience.</SPAN></P><H2 id="toc-hId-1787770245">Artificial Intelligence</H2><P><STRONG>AI-based intelligent recommendations for detected API anomalies</STRONG></P><P>This AI enhancement builds on anomaly detection to explain what changed, why it likely happened, and what to do next, cutting triage and speeding recovery. Embedded in API Management, it surfaces guidance alongside alerts with one-click actions and optional “intelligent healing.”</P><P>The included capabilities - <EM>Insights, Causes, and Recommendations</EM> - enable faster response to error spikes, latency surges, and abnormal traffic patterns, improving reliability and operational efficiency for API owners and teams. See how to get started in this <A title="Blog post: Introducing AI-Powered Anomaly Insights & Recommendations in SAP Integration Suite" href="https://community.sap.com/t5/integration-blog-posts/introducing-ai-powered-anomaly-insights-amp-recommendations-in-sap/ba-p/14286013" target="_blank">blog post and review the </A><A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/enabling-anomaly-detection" target="_blank" rel="noopener noreferrer">Documentation.</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="intelligent recommendations.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/360572i97D9258105959742/image-size/large?v=v2&px=999" role="button" title="intelligent recommendations.png" alt="intelligent recommendations.png" /></span></P><H2 id="toc-hId-1591256740"> <SPAN>Connectivity and Adapters</SPAN></H2><UL><LI><SPAN><A href="https://hub.sap.com/package/AmazonKinesisAdapterforSAPIntegrationSuite/overview" target="_self" rel="noopener noreferrer">Amazon Kinesis receiver adapter</A>: facilitates and accelerates connectivity to Amazon Kinesis Data Streams, streamlining data communication and enhancing real-time data processing.</SPAN></LI><LI><SPAN><SPAN><A href="https://hub.sap.com/package/BoxAdapterforSAPIntegrationSuite/overview" target="_self" rel="noopener noreferrer">Box receiver adapter</A>: connects SAP Integration Suite to Box and enables you to access components on Box.</SPAN></SPAN></LI><LI><SPAN><SPAN><A href="https://hub.sap.com/package/MicrosoftOneNoteAdapterforSAPIntegrationSuite/overview" target="_self" rel="noopener noreferrer">Microsoft OneNote receiver adapter</A>: automates common business operations by integrating MS OneNote with other business applications. It connects an SAP Integration Suite tenant to a remote system using HTTP protocol.</SPAN></SPAN></LI><LI><SPAN><SPAN><A href="https://hub.sap.com/package/AzureServiceBusAdapterforSAPIntegrationSuite/overview" target="_self" rel="noopener noreferrer">Azure Service Bus adapter</A>: connects SAP Integration Suite to Azure Service Bus.</SPAN></SPAN></LI><LI><SPAN><SPAN><A href="https://hub.sap.com/package/MongoDBAdapterforSAPIntegrationSuite/overview" target="_self" rel="noopener noreferrer">MongoDB receiver adapter</A>: connects SAP Integration Suite to MongoDB.</SPAN></SPAN></LI><LI><SPAN><SPAN><SPAN><A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/configure-ftp-sender-adapter-used-with-poll-enrich-step-3eca3f8f518540ec98db8c9eb4c67f90" target="_self" rel="noopener noreferrer">Poll Enrich Step in FTP sender adapter</A>: reads (poll) messages from FTP server and adds the content to the original message in the middle of the message processing sequence.</SPAN></SPAN></SPAN></LI></UL><P><STRONG>New data space integration package</STRONG></P><P>The data space integration package helps supply chain partners exchange data securely and self-sovereignly within data spaces. It includes two components: a data space connector for secure, sovereign data exchange, and a decentralized identity wallet for sharing trustworthy, verifiable data. Read all details in the <A href="https://community.sap.com/t5/integration-blog-posts/data-space-integration-package/ba-p/14262165" target="_self">blog post.</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="data space integration BAH.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/360573i2157628DD0EE8D49/image-size/large?v=v2&px=999" role="button" title="data space integration BAH.png" alt="data space integration BAH.png" /></span></P><H2 id="toc-hId-1394743235"><STRONG>Data Center Availability <span class="lia-unicode-emoji" title=":germany:">🇩🇪</span> <span class="lia-unicode-emoji" title=":italy:">🇮🇹</span> <span class="lia-unicode-emoji" title=":united_arab_emirates:">🇦🇪</span></STRONG></H2><P>Customers can now run SAP Integration Suite in four new data centers: on SAP infrastructure in Frankfurt, Sankt Leon-Rot (both in Germany) and in the United Arab Emirates; and additionally, one in Italy on Amazon Web Services.</P><H2 id="toc-hId-1198229730">Event-driven Integration </H2><P><STRONG>Micro-Integrations</STRONG></P><P>Micro-Integrations are small, event-driven connectors that link applications to an Advanced Event Mesh as on-ramps (event sources) or off-ramps (event targets), avoiding brittle point-to-point ties so changes stay localized and low-risk. By focusing on narrowly defined tasks, they are easier to design, adapt, and scale, delivering high-throughput, real-time streams via pub/sub and letting you add more Micro-Integrations per task as demand grows. Available in the Cloud Console, they provide management and observability for integrations between external systems and event brokers or meshes, resulting in greater agility, faster data distribution, and flexibility to use the best-fit technologies at the source and target. Find more details and the currently available micro-integrations in the <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/small-but-great-introducing-micro-integrations-for-advanced-event-mesh/ba-p/14281037" target="_self">blog post.</A></P><P><STRONG>Event Mesh integration with SAP Cloud ALM for health monitoring</STRONG></P><P>SAP Integration Suite’s Event Mesh now integrates with SAP Cloud ALM Health Monitoring to regularly collect and display broker vitals, such as active connections, message consumers, message queues, spool usage, and broker state, on the CALM dashboard. Customers can customize thresholds for each metric (except broker state), view 14 days of history, and receive warning notifications when values reach 80% (orange) and 90% (red) of the defined thresholds, enabling proactive monitoring and alerts for Event Mesh health. Set up and further details can be found <SPAN><A href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/health-monitoring/health-monitoring-setup-configuration/health-monitoring-isem.html" target="_blank" rel="noopener noreferrer">here.</A></SPAN></P><P><STRONG>Migration support from Event Mesh capability to SAP Integration Suite, advanced event mesh</STRONG></P><P>Great news to facilitate your system modernization: SAP provides technical- and process-oriented migration support to help customers move from the Event Mesh capability in SAP Integration Suite to SAP Integration Suite, advanced event mesh, scaling smoothly from basic scenarios to a richer, more powerful event-driven foundation. This includes support for migrating events so applications can communicate asynchronously in real time across distributed landscapes with support for various protocols, enabling teams to start simple, grow confidently, and modernize without disruption.</P><H2 id="toc-hId-1001716225">B2B Integration</H2><P><STRONG>Support for the SFTP adapter and Alerting of failed B2B interchanges in Trading Partner Management</STRONG></P><P>SAP Integration Suite’s Trading Partner Management now supports SFTP (Secure File Transfer Protocol), available in both standard and premium editions and via the SAP BTP Enterprise Agreement. Users can read and write files to their own or trading partners’ SFTP servers and, when defining systems, can choose SFTP sender and receiver adapters.</P><P>Additionally, SAP Integration Suite extends Trading Partner Management by publishing B2B interchange data to SAP Cloud ALM for centralized monitoring and rapid detection of failed transactions. Using SAP Cloud ALM, you can configure granular scenario specific alerts that filter by details such as trading partners or message types to receive targeted notifications and act quickly on issues.</P><H2 id="toc-hId-805202720">Process Integration</H2><P><STRONG>Basic authentication on Edge Integration Cell</STRONG></P><P>SAP Integration Suite’s Edge Integration Cell now supports basic HTTP authentication using a client ID and client secret during temporary connectivity loss to SAP BTP. This enables simple sender authentication for testing with minimal configuration and allows integration flow processing and API artifact invocations using clientId and clientsecret while SAP BTP is unreachable.</P><P><STRONG>Advanced checks in Groovy scripts</STRONG></P><P>SAP Integration Suite’s Cloud Integration designer now offers advanced checks for Groovy scripts, helping developers analyze and prepare custom integration flows for future runtime version upgrades. A new “ensure upgrade readiness” guideline recommends supported libraries and classes and can automatically update scripts to align with upgrade requirements. See all information in the respective <SPAN><A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/groovy-script#use-recommended-libraries-and-proxy-based-classes" target="_blank" rel="noopener noreferrer">documentation.</A></SPAN></P><P><STRONG>Service interface artifact creation In Cloud Integration</STRONG></P><P>SAP Integration Suite Cloud Integration now supports creating and editing service interface artifacts directly in the workspace, aligning with an API first outside in development approach and supporting existing Enterprise Services Repository use cases. These artifacts enable proxy generation in ABAP backends for smooth integration into ABAP based systems. The capability is available in the multi cloud environment and allows native creation of service interface artifacts in your Cloud Integration tenant.</P><P><STRONG>Local OData API Access & SAP HANA Support</STRONG></P><P>See details and demo in the video:</P><P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FBw6WGI_rc74%3Fstart%3D335%26feature%3Doembed%26start%3D335&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DBw6WGI_rc74&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FBw6WGI_rc74%2Fhqdefault.jpg&type=text%2Fhtml&schema=youtube" width="400" height="225" scrolling="no" title="Whats New in SAP BTP: Top New Features | Joule Studio Agent Builder | Q4 2025" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P>----</P><UL><LI><SPAN>For a sneak peek into what’s in store for 2026, check out the <A href="https://roadmaps.sap.com/board?PRODUCT=000D3A47875C1EDB98A8A910864AC24B&PRODUCT=73554900100800003241&range=2026Q1-2026Q2#Q1%202026" target="_self" rel="noopener noreferrer">road map explorer and the </A><A href="https://www.sap.com/topics/innovation-guide/h2#integration" target="_blank" rel="noopener noreferrer">SAP TechEd 2025 News Guide</A></SPAN></LI><LI><SPAN>Join the <A href="https://community.sap.com/t5/integration/gh-p/integration " target="_self">integration community and connect with other integration developers!</A></SPAN></LI></UL>2026-01-12T18:00:38.146000+01:00https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-members/idocs-as-events-how-to-simulate-and-test-them-at-enterprise-scale/ba-p/14308890IDOCs as Events: How to Simulate and Test Them at Enterprise Scale2026-01-16T16:20:44.064000+01:00MichalKrawczykhttps://community.sap.com/t5/user/viewprofilepage/user-id/45785<P><SPAN>The integration landscape within the SAP ecosystem has undergone a significant shift in Q4 2025. For years, the industry narrative suggested that IDOCs were relics of the past, destined to be replaced entirely by SOAP Web Services, later one with OData and REST APIs. However, recent updates have changed the table. Not only are IDOCs officially "safe" for the Clean Core era, but they have also evolved into powerful components of modern Event-Driven Architecture (EDA).</SPAN></P><P><SPAN>In this post, I will explore why IDOCs are making a comeback and, more importantly, how you can simulate and test these scenarios at an enterprise scale.</SPAN></P><H2 id="toc-hId-1787859895"><STRONG>The 2025 Turning Point: IDOCs are "Clean Core" Safe</STRONG></H2><P><SPAN>The first major update involves the </SPAN><STRONG>SAP Clean Core guidance (referencing OSS Note 3578329)</STRONG><SPAN>. As of late 2025, IDOCs are now classified as </SPAN><STRONG>Clean Core Extensibility Level B</STRONG><SPAN> as per my blog: <A class="" href="https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-members/idocs-are-still-safe-for-sap-s-4hana-sap-clean-core-extensibility-level-b/ba-p/14225439" target="_blank">IDOCs are Still Safe for SAP S/4HANA - SAP Clean Core Extensibility Level B</A> </SPAN></P><P><SPAN>What does this mean for your S/4HANA journey?</SPAN></P><UL><LI><STRONG>Existing Investments are Valid:</STRONG><SPAN> If you have stable, working IDOC integrations, you don’t need to scrap them to be "Clean Core" compliant.</SPAN></LI><LI><STRONG>Pragmatism over Dogma:</STRONG><SPAN> While SAP still recommends APIs and Events for greenfield developments, continuing with IDOCs is a pragmatic choice for stable processes, provided the IDOC type isn't deprecated in the S/4HANA Simplification List.</SPAN></LI></UL><H2 id="toc-hId-1591346390"><STRONG>IDOCs Meet the Advanced Event Mesh (AEM)</STRONG></H2><P><SPAN>The second breakthrough is the ability to "event-enable" classic IDOCs using the </SPAN><STRONG>SAP Event Add-on by ASAPIO</STRONG><SPAN> as per this blog: <A class="" href="https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-using-the-event-add-on/ba-p/14290095" target="_blank">IDoc with Integration Suite, Advanced Event Mesh using the Event Add-On</A></SPAN></P><P><SPAN>This allows organizations to bridge the gap between legacy reliability and modern real-time agility. By using ASAPIO with SAP Integration Suite, Advanced Event Mesh (AEM), you can:</SPAN></P><UL><LI><STRONG>Go No-Code:</STRONG><SPAN> Send and receive IDOCs through AEM in a near real-time, code-less manner.</SPAN></LI><LI><STRONG>Payload Transformation:</STRONG><SPAN> Automatically convert classic IDOC formats to </SPAN><STRONG>JSON</STRONG><SPAN> on-the-fly for cloud consumption, and convert them back for inbound processing.</SPAN></LI><LI><STRONG>Triggering:</STRONG><SPAN> Link business events in ERP so that a transaction triggers an IDOC extraction and immediate publication to the event mesh.</SPAN></LI></UL><H2 id="toc-hId-1394832885"><STRONG>The Testing Challenge: Scalability and Realism</STRONG></H2><P><SPAN>With IDOCs acting as high-speed events, the question arises: </SPAN><STRONG>How do we test these scenarios at scale?</STRONG><SPAN> Standard manual testing isn't enough when you need to validate complex, high-volume event flows.</SPAN></P><H3 id="toc-hId-1327402099"><STRONG>The Traditional Approach: WE19</STRONG></H3><P><SPAN>The standard tool for simulating IDOCs is transaction </SPAN><STRONG>WE19</STRONG><SPAN> (the IDOC Test Tool). To use it, you find an existing IDOC, use it as a template, modify the data, and trigger it again.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure_1_We19.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362088iAF524A09EC51F6BE/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Figure_1_We19.png" alt="Figure_1_We19.png" /></span></P><P><SPAN>Figure 1 - We19 for outbound processing </SPAN></P><P><STRONG>The Limitations:</STRONG></P><UL><LI><STRONG>Data Sourcing:</STRONG><SPAN> Finding the "perfect" IDOC with specific business content is time-consuming (no easy way to search through them) </SPAN></LI><LI><STRONG>Lack of Scale:</STRONG><SPAN> You cannot easily simulate thousands of IDOCs with variable data (different partners, dates, or materials) manually.</SPAN></LI><LI><STRONG>Isolation:</STRONG><SPAN> WE19 tests the IDOC in a vacuum, not the end-to-end event flow.</SPAN></LI></UL><H2 id="toc-hId-1001805875"><STRONG>Enterprise-Scale Simulation with Int4 Suite</STRONG></H2><P><SPAN>To truly simulate IDOCs as events for enterprise testing, you need automation. </SPAN><STRONG>Int4 Suite</STRONG><SPAN> provides three sophisticated ways to handle this:</SPAN></P><H3 id="toc-hId-934375089"><STRONG>A) Simulating Incoming to Trigger Outgoing</STRONG></H3><P><SPAN>In many business processes, an incoming IDOC triggers an outgoing one (e.g., an incoming Sales Order creates an outgoing Order Confirmation). With Int4 APITester, you can simulate the incoming message and use its </SPAN><STRONG>variable concept</STRONG><SPAN> to inject dynamic values (like unique PO numbers or current dates).</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure_3_variables.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362089i4BFCC5CFF2996D9C/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Figure_3_variables.png" alt="Figure_3_variables.png" /></span></SPAN></P><P><SPAN>Figure 3 - variables so each time the IDOC is triggered the content can change dynamically </SPAN></P><P><SPAN> This ensures the resulting "Event" (the outgoing IDOC) is generated by the actual business logic of the system.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure_2_outbound_inbound.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362090i3135EC1B79CF1A6E/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Figure_2_outbound_inbound.png" alt="Figure_2_outbound_inbound.png" /></span></P><P><SPAN>Figure 2 - IDOCs as outbound from simulating incoming documents </SPAN></P><H3 id="toc-hId-737861584"><STRONG>B) Triggering via Message Control (NACE/NAST)</STRONG></H3><P><SPAN>Int4 Suite can trigger output directly via SAP Message Control. This simulates how the system works in production (e.g., printing or sending an EDI upon saving a document).</SPAN></P><UL><LI><STRONG>How it works:</STRONG><SPAN> By using the Int4 Suite Knowledge Center guidance, you can trigger the output by calling the necessary functional modules or reports (like RSNAST00) to process specific output types for a range of documents, ensuring the "Event" is fired exactly as it would be by a business user.</SPAN></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure_4_message_control.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362091iF5C1539ED585C98F/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Figure_4_message_control.png" alt="Figure_4_message_control.png" /></span></P><P><SPAN>Figure 4 - How Int4 Suite can trigger IDOCs with Message Control </SPAN></P><H3 id="toc-hId-541348079"><STRONG>C) AI-Driven Simulation and WE19</STRONG></H3><P><SPAN>The future of testing involves </SPAN><STRONG>AI Chatbots</STRONG><SPAN>. Instead of manually navigating WE19, Int4 Suite allows you to use an AI interface to perform selections and data changes. You can instruct the chatbot to "Generate 50 Sales Order IDOCs with varying quantities or different identifiers" and the suite handles the back-end execution in WE19, bridging the gap between conversational AI and legacy SAP transactions.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure_5_ai_chat.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/362092i90F044B3A2D35FA1/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="Figure_5_ai_chat.png" alt="Figure_5_ai_chat.png" /></span></P><P><SPAN>Figure 5 - Searching for IDOCs and resending them with Int4 Suite Chatbot </SPAN></P><H2 id="toc-hId-215751855"><STRONG>Validating SAP AEM Flows</STRONG></H2><P><SPAN>Once the IDOC is triggered as an event, you must ensure it reaches the </SPAN><STRONG>SAP Advanced Event Mesh</STRONG><SPAN> correctly. Int4 Suite allows you to validate these flows by:</SPAN></P><OL><LI><STRONG>Preparation:</STRONG><SPAN> Configuring the connection between Int4 Suite and SAP AEM to allow the tester to "listen" to specific queues or topics.</SPAN></LI><LI><STRONG>Message Selector:</STRONG><SPAN> Using the </SPAN><A href="https://help.int4.com/int4-suite-knowledge-center-library/3.13/int4-suite-sap-advanced-event-mesh-message-selecto" target="_blank" rel="noopener nofollow noreferrer"><SPAN>Int4 Message Selector</SPAN></A><SPAN>, you can pull the actual messages published to AEM and compare them against a "golden" expected payload. This validates that the conversion (e.g., IDOC to JSON) and the routing happened exactly as designed.</SPAN></LI></OL><H3 id="toc-hId-148321069"><STRONG>Watch it in Action</STRONG></H3><P><SPAN>To see how Int4 Suite handles SAP AEM message selection and validation, check out this technical walkthrough:</SPAN></P><P><A href="https://www.youtube.com/watch?v=6SCqcWpSVuE" target="_blank" rel="noopener nofollow noreferrer"><STRONG>Watch: SAP AEM Testing with Int4 Suite</STRONG></A></P><H2 id="toc-hId-169979202"><STRONG>Summary and Next Steps</STRONG></H2><P><SPAN>The combination of </SPAN><STRONG>Clean Core Level B</STRONG><SPAN> status and </SPAN><STRONG>ASAPIO/AEM integration</STRONG><SPAN> has given IDOCs a second life as modern business events. However, to move these scenarios into production with confidence, your testing strategy must evolve from manual WE19 clicks to automated, variable-driven enterprise simulation.</SPAN></P><P><STRONG>Want to learn more?</STRONG></P><UL><LI><STRONG>Deep Dive:</STRONG><SPAN> Explore the </SPAN><A href="https://learning.sap.com/courses/avoid-sap-s-4hana-project-delays-with-third-party-systems-service-virtualization" target="_blank" rel="noopener noreferrer"><SPAN>SAP Learning Course: Avoid SAP S/4HANA Project Delays with Third-Party Systems Service Virtualization</SPAN></A><SPAN> to understand how to decouple your testing from external dependencies.</SPAN></LI><LI><STRONG>Documentation:</STRONG><SPAN> Visit the </SPAN><A href="https://www.google.com/search?q=https://help.int4.com/int4-suite-knowledge-center-library/3.13/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>Int4 Suite Knowledge Center</SPAN></A><SPAN> for detailed configuration guides on SAP AEM and Message Control.</SPAN></LI></UL>2026-01-16T16:20:44.064000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023Why Your SAP Upgrades Keep Breaking (And How Event-Driven Architecture Fixes It)2026-01-21T06:35:24.315000+01:00Hari-Rangarajanhttps://community.sap.com/t5/user/viewprofilepage/user-id/1460223<P><ul =""><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-1658769274">Why Your SAP Upgrades Keep Breaking (And How Event-Driven Architecture Fixes It)</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-1591338488">What is a clean core and why it matters</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-1394824983">Why achieving clean core is hard ?</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-1198311478">Extensibility as a clean core dimension</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-1001797973">Event-driven architecture: the clean core enabler</a></li><li style="list-style-type:disc; margin-left:30px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-934367187">Key EDA advantages for SAP landscapes</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-608770963">Events as nouns, verbs, and properties</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-412257458">Micro integrations: a new, pragmatic integration paradigm</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-215743953">How micro integrations support clean core</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-19230448">Real-world scenario: business partner events</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId-169971300">Practical next steps</a></li><li style="list-style-type:disc; margin-left:15px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-members/why-your-sap-upgrades-keep-breaking-and-how-event-driven-architecture-fixes/ba-p/14308023#toc-hId--26542205">Conclusion</a></li></ul></P><H1 id="toc-hId-1658769274"><SPAN>Why Your SAP Upgrades Keep Breaking (And How Event-Driven Architecture Fixes It)</SPAN></H1><P> </P><P><SPAN>If you’ve ever delayed an S/4HANA upgrade because of custom code anxiety, you’re not alone. Many SAP teams genuinely want to move faster and adopt new innovations , but tightly coupled extensions, brittle integrations, and years of accumulated technical debt often get in the way.</SPAN></P><P><SPAN>During my session at SAP DevtoberFest 2025 : <A title="Clean Core, Event-Driven: Unlocking SAP Value with Advanced Event Mesh" href="https://www.youtube.com/watch?v=J86agPa9bOk" target="_self" rel="nofollow noopener noreferrer">Clean Core, Event-Driven: Unlocking SAP Value with Advanced Event Mesh</A> </SPAN></P><P><SPAN>this challenge came up repeatedly. So, I decided to turn that conversation into a blog . Not as a theoretical exercise, but as a practical guide to one of the most important architectural shifts in modern SAP landscapes: clean core enabled by event-driven architecture (EDA).</SPAN></P><H2 id="toc-hId-1591338488">What is a clean core and why it matters</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="HariRangarajan_0-1768482322307.png" style="width: 904px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/361657i86D7A29D9CB33A2E/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="HariRangarajan_0-1768482322307.png" alt="HariRangarajan_0-1768482322307.png" /></span></P><P><SPAN>A clean core is the strategic foundation for modern SAP landscapes. It means keeping the SAP digital core lean and standard, while moving custom logic, integrations, and nonessential processes to side‑by‑side extensions. This approach reduces upgrade risk, improves performance, lowers operational cost, and makes it possible to adopt new SAP innovations faster and with less friction.</SPAN></P><P>Instead of modifying the core directly, customization happens around it.</P><P>Why does this matter? Because a clean core directly translates to:</P><UL><LI><STRONG>Improved performance:</STRONG> Core resources focus on essential business processes, reducing latency and improving throughput.</LI><LI><STRONG>Higher stability:</STRONG> Fewer custom touch points mean fewer failure surfaces and easier upgrades.</LI><LI><STRONG>Lower maintenance cost:</STRONG> Less bespoke code reduces debugging, regression testing, and emergency fixes.</LI><LI><STRONG>Faster innovation:</STRONG> Standard APIs and modular extensions speed onboarding, refactoring, and new feature delivery.</LI><LI><STRONG>Stay Current:</STRONG> Clean core means reduced complexities and challenges in upgrading to new releases and faster adoption of new features and capabilities</LI></UL><H2 id="toc-hId-1394824983">Why achieving clean core is hard ?</H2><P>If clean core is so clearly beneficial, why isn’t everyone already there!!??</P><P><STRONG>Because real-world SAP landscapes are messy.</STRONG></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="HariRangarajan_1-1768482343914.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/361659iE27481703C2F4792/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="HariRangarajan_1-1768482343914.png" alt="HariRangarajan_1-1768482343914.png" /></span><SPAN>Most enterprises face a set of recurring obstacles that erode the clean core ideal:</SPAN></P><UL><LI><STRONG>Insufficient extensibility:</STRONG> Legacy systems and older extension points force code changes in the core.</LI><LI><STRONG>Integration complexity:</STRONG> Tightly coupled point-to-point interfaces are fragile to change.</LI><LI><STRONG>Data rot:</STRONG> ROT = Redundant, Obselete and Trivial – data in custom fields and tables that erode trust in master data.</LI><LI><STRONG>High upfront investment:</STRONG> Code analysis, data cleanup, and process rework require time and budget before benefits appear.</LI><LI><STRONG>Skills and tooling gaps:</STRONG> Cloud-native extension patterns and event thinking require new skills and practices.</LI><LI><STRONG>Hybrid landscapes:</STRONG> On-prem, multicloud, and different SAP systems introduce compatibility and governance issues.</LI></UL><H2 id="toc-hId-1198311478">Extensibility as a clean core dimension</H2><P>Extensions are inevitable and necessary. The key question isn’t whether you extend SAP, but how you do it. Clean core demands that:</P><UL><LI>Custom logic must not tamper with core objects</LI><LI>Extensions are decoupled from SAP standard</LI><LI>Only upgrade-stable mechanisms are used</LI></UL><P>SAP formalizes this approach through the <STRONG>Clean Core Strategy Pyramid</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="HariRangarajan_2-1768482343933.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/361658i67980F25ABD50A86/image-size/large/is-moderation-mode/true?v=v2&px=999" role="button" title="HariRangarajan_2-1768482343933.png" alt="HariRangarajan_2-1768482343933.png" /></span><SPAN>The strategy emphasizes a shift away from traditional, "monolithic" customizations that modify the digital core, moving instead toward a </SPAN><STRONG>side-by-side extensibility</STRONG><SPAN> model.</SPAN></P><P><SPAN>By leveraging the <STRONG>SAP Business Technology Platform (BTP)</STRONG> and utilizing stable APIs and events, businesses can decouple their custom logic and integrations from the standard S/4HANA system. </SPAN></P><P>The goal is simple but powerful: <STRONG>Eliminate technical debt and adopt innovation without disruption.</STRONG></P><H2 id="toc-hId-1001797973">Event-driven architecture: the clean core enabler</H2><P>Adopting event-driven architecture (EDA) is a practical way to decouple systems and preserve a clean core.</P><P>At its heart, EDA treats business changes as events that are published by a source and consumed by one or many subscribers. This replaces brittle point-to-point integrations with a publish/subscribe model where extensions live outside the core.</P><P>EDA doesn’t just support clean core , it actively enforces it.</P><H3 id="toc-hId-934367187">Key EDA advantages for SAP landscapes</H3><UL><LI><STRONG>Asynchronous communication:</STRONG> Producers and consumers evolve independently.</LI><LI><STRONG>Unlimited fan-out:</STRONG> Publish once, deliver to many subscribers without changing the producer.</LI><LI><STRONG>Scalability and resilience:</STRONG> Brokers absorb bursts and ensure reliable delivery and ordering.</LI><LI><STRONG>Side-by-side extensibility:</STRONG> Consumers implement business logic externally, protecting the core from bespoke changes.</LI></UL><H2 id="toc-hId-608770963">Events as nouns, verbs, and properties</H2><P><EM>A simple</EM><EM>, </EM><EM>practical </EM><EM>but highly effective </EM><EM>way to</EM> <EM>being with EDA is to</EM><EM> <SPAN>visualize business processes as events and further design these events is to describe them with three parts:</SPAN></EM></P><UL><LI><EM><STRONG>Noun</STRONG></EM><EM>: the object that changed (for example, BusinessPartner, Order, MaterialMaster, etc).</EM></LI><LI><EM><STRONG>Verb</STRONG></EM><EM>: the change that occurred (created, updated, cancelled, etc.).</EM></LI><LI><EM><STRONG>Properties</STRONG></EM><EM>: attributes that describe the event (IDs, timestamps, locations, reasons).</EM></LI></UL><H2 id="toc-hId-412257458">Micro integrations: a new, pragmatic integration paradigm</H2><P>Micro integrations are small, single-purpose components that produce or consume events. Think of them as integration-focused microservices: modular, decentralized, and easy to scale. Any component that onloads events to a broker is a <STRONG>source micro integration</STRONG>. Anything that consumes events from a broker is a <STRONG>target micro integration</STRONG>.</P><H2 id="toc-hId-215743953">How micro integrations support clean core</H2><UL><LI><STRONG>Externalize custom logic:</STRONG> Transformations, validations, and routing live outside SAP core.</LI><LI><STRONG>Reduce coupling:</STRONG> Systems publish events; any number of consumers can subscribe without impacting others.</LI><LI><STRONG>Independent scaling:</STRONG> Deploy micro integrations close to sources or targets and scale them separately.</LI><LI><STRONG>Operational visibility:</STRONG> Centralized monitoring and an event catalog make integrations discoverable and governable.</LI></UL><H2 id="toc-hId-19230448">Real-world scenario: business partner events</H2><P>Imagine an S/4HANA publishing BusinessPartner created events to a SAP BTP Advanced Event Mesh. Instead of hardcoding point-to-point calls, the event is published once and delivered to:</P><UL><LI>A SAP Integration Suite iFlow that pushes partner records to a Salesforce in under 1 second</LI><LI>A CAP application that enriches the partner data and makes it available in a cannonical model for other consumers</LI><LI>A Snowflake connector which takes SAP events and updates datawarehouse tables for advanced analytics</LI><LI>An increasing number of downstream services and funcationalities that bring new business value.</LI></UL><P>Each of those consumers is a micro integration. They scale independently, can be updated without touching the core, and receive only the events they subscribe to. The result is a leaner S/4HANA core, faster onboarding for new consumers, and more predictable upgrades.</P><H2 id="toc-hId-169971300">Practical next steps</H2><P><SPAN>You don’t need a big-bang transformation to get started:</SPAN></P><UL><LI>Identify a single usecase to productize as events (for example, business partner or inventory events).</LI><LI>Model each event as <STRONG>Noun-Verb-Properties</STRONG></LI><LI>Start with a source micro integration at the edge to publish, and a single target micro integration to consume.</LI><LI>Introduce an event catalog and basic access controls to document ownership and usage rules.</LI><LI>Measure event reuse and track the event reuse index to demonstrate value.</LI></UL><H2 id="toc-hId--26542205">Conclusion</H2><P>Clean core is achievable when extensibility and integrations are treated as products rather than throwaway code.</P><P>By combining:</P><UL><LI>Event-driven architecture</LI><LI>Micro integrations</LI><LI>A governed event mesh</LI></UL><P>Teams can decouple logic from the SAP core, scale consumption independently, and evolve systems safely over time.</P><P>The payoff is real:</P><UL><LI>Fewer upgrade headaches</LI><LI>Faster time to value</LI></UL><P><STRONG>A more resilient, future-ready SAP landscape</STRONG></P><P> </P>2026-01-21T06:35:24.315000+01:00https://community.sap.com/t5/integration-blog-posts/event-enabling-idocs-rapidly-and-almost-effortlessly-via-btp-integration/ba-p/14317897Event Enabling Idocs rapidly and almost effortlessly via BTP Integration Suite, Cloud Integration2026-01-29T16:22:32.332000+01:00AlexPfeilhttps://community.sap.com/t5/user/viewprofilepage/user-id/165526<H1 id="toc-hId-1659670913">1) Introduction</H1><P>In the past we have published a couple of Blogs where we describe how to event enable Idocs via <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/idoc-with-integration-suite-advanced-event-mesh-using-the-event-add-on/ba-p/14290095" target="_self">Event Enablement AddOn</A> or <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/how-to-send-out-idocs-to-advanced-event-mesh-using-sap-application/ba-p/13972680" target="_self">Application Interface Framework</A>. Another possibility with the least configuration on the ERP (ECC or S/4) System is the usage of the HTTP Port and SAP Cloud Integration. This Blog will demonstrate how to easily accomplish this + how to dynamically add Topic Values with the Help of the Partner Directory in SAP Cloud Integration. </P><P> </P><H1 id="toc-hId-1463157408">2) ERP Customizing</H1><P>Let´s start with the Definition of the Logical System in Transaction SALE</P><P>I have defined this Logical System for the Connection to AEM via Cloud Integration</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_0-1769695057421.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366964i8632870558E03D27/image-size/medium?v=v2&px=400" role="button" title="AlexPfeil_0-1769695057421.png" alt="AlexPfeil_0-1769695057421.png" /></span></P><P>In SM59 I have already prepared a Destination to SAP Cloud Integration Iflow receiving the Idocs:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_1-1769695203026.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366965i7F9F0F2FE347980D/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_1-1769695203026.png" alt="AlexPfeil_1-1769695203026.png" /></span></P><P>Of course later we´ll have to make sure that the Iflow Address and the endpoint in this Destination are the same. Based on this Destination we create a Port in WE21:</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_2-1769695347809.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366966iADCF2DF94A14006A/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_2-1769695347809.png" alt="AlexPfeil_2-1769695347809.png" /></span></P><P>Then we´ll need a Partner Profile in WE20 with the Receiver Port we just created. Let´s say we want to distribute Vendor Master Data with CREMAS:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_3-1769695409002.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366967i4F1E10D70E6CA2EC/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_3-1769695409002.png" alt="AlexPfeil_3-1769695409002.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_4-1769695461388.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366968i89E028CF2BC2A36F/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_4-1769695461388.png" alt="AlexPfeil_4-1769695461388.png" /></span></P><P>Also we´ll need a Distribution Model in BD64:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_5-1769695597065.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366969iDC8D9B6CC1A93728/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_5-1769695597065.png" alt="AlexPfeil_5-1769695597065.png" /></span></P><P>(Only the Receiver CPI_AEM relevant here)</P><P>That is all we have to do on the ERP! Let´s switch to the Cloud Integration.</P><P> </P><H1 id="toc-hId-1266643903">2) SAP Cloud Integration</H1><H3 id="toc-hId-1328295836">Static Topic</H3><P>In my <A href="https://github.com/alPfeil/IdocEventing" target="_self" rel="nofollow noopener noreferrer">Github Repo</A> I have provided a Template Iflow you can upload into your Cloud Integration Package </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_6-1769695931427.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366972i0EC095A94B17AAEE/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_6-1769695931427.png" alt="AlexPfeil_6-1769695931427.png" /></span></P><P>First thing is to configure the Sender Address and Role:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_0-1769707994704.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367120iF8DD61A1A8EBF366/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_0-1769707994704.png" alt="AlexPfeil_0-1769707994704.png" /></span></P><P> </P><P>In the Content Modifier Step we retrieve the Idoc Headers from the Payload:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_8-1769696462207.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366976iCDAF42FCD97DA010/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_8-1769696462207.png" alt="AlexPfeil_8-1769696462207.png" /></span></P><P>Then, depending if the Idoc has a CIMTYP or not, we put together the Topic. </P><P>With CIMTYP:</P><P>Header "Topic" = "${header.SAP_IDoc_EDIDC_SNDPRN}/${header.SAP_IDoc_EDIDC_MESTYP}/${header.SAP_IDoc_EDIDC_IDOCTYP}/${header.SAP_IDoc_EDIDC_CIMTYP}"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_9-1769696585525.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366978i6101EF801FE395B7/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_9-1769696585525.png" alt="AlexPfeil_9-1769696585525.png" /></span></P><P>Without CIMTYP the Topic is filled like this: "${header.SAP_IDoc_EDIDC_SNDPRN}/${header.SAP_IDoc_EDIDC_MESTYP}/${header.SAP_IDoc_EDIDC_IDOCTYP}"</P><P>So if I have an CREMAS07 Idoc from my System T33, the Topic would be </P><P>T33CLNT800/CREMAS/CREMAS07</P><P>If this is already enough for you, you can ignore or even remove the 2 Groovy Scripts after the Router in the Iflow.</P><P>The only Thing left of course is the Receiver Channel. Here we have to maintain the Connection Parameters</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_12-1769697728171.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366995iBB8712B9E088B65E/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_12-1769697728171.png" alt="AlexPfeil_12-1769697728171.png" /></span></P><P>That´s it. You can deploy the Iflow!</P><H3 id="toc-hId-1131782331">Dynamic Topic with PartnerDirectory</H3><P>If we want to include Parts of the Payload into the Topic, we´ll have to get it via Xpath. This could be easily done via Content Modifier, but to keep everything dynamic in one Iflow, I decided to implement 2 Groovy Scripts. 1st Script is retrieving the XPaths I set up for my Idoc Type in the Partner Directory. 2nd Script performs the XPath on the Body and puts together the Topic.</P><P>In order to enable this, i added the switch "<SPAN>GetDynamicTopicFromPartnerDirectoy"</SPAN> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_0-1769705367148.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367086iC1CC04B1D2C37D7C/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_0-1769705367148.png" alt="AlexPfeil_0-1769705367148.png" /></span></P><P>The Maintainence of the Idoc-specific XPaths happens in the Partner Directory. So in Monitor -> Integration and APIs -> Partner Directory</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_10-1769697028959.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366981i6459833728D26C6E/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_10-1769697028959.png" alt="AlexPfeil_10-1769697028959.png" /></span></P><P>The PartnerID is always <MESTYP>.<IDOCTYP>.<CIMTYP> (if CIMTYP exists) or <MESTYP>.<IDOCTYP> (no CIMTYP). In my Case it is <SPAN>CREMAS.CREMAS07. I have defined these 3 XPaths</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_11-1769697153085.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366986i9DBA85CA34662C81/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_11-1769697153085.png" alt="AlexPfeil_11-1769697153085.png" /></span></P><H3 id="toc-hId-935268826">Test</H3><P>Now let´s test the Scenario. I set the Log Level on the Iflow to "Trace" and set up a Consumer on Advanced Event Mesh TryMe Feature on Topic "T33CLNT800/>" </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_14-1769698393546.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367000i23B1E59EF4E0F187/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_14-1769698393546.png" alt="AlexPfeil_14-1769698393546.png" /></span></P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_13-1769698178127.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/366998i094417190D29CA16/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_13-1769698178127.png" alt="AlexPfeil_13-1769698178127.png" /></span></P><P>Now let´s send a Vendor from the ERP System Transaction BD14:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_15-1769698444551.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367002i8704B0ACD4497D03/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_15-1769698444551.png" alt="AlexPfeil_15-1769698444551.png" /></span></P><P>Result:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_16-1769698472821.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367003i819D55D32102A781/image-size/medium?v=v2&px=400" role="button" title="AlexPfeil_16-1769698472821.png" alt="AlexPfeil_16-1769698472821.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_17-1769698488670.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367005i37770A783A4BF61D/image-size/medium?v=v2&px=400" role="button" title="AlexPfeil_17-1769698488670.png" alt="AlexPfeil_17-1769698488670.png" /></span></P><P>Let´s check in WE05:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_18-1769698531106.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367006i282413EAB0ECB77D/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_18-1769698531106.png" alt="AlexPfeil_18-1769698531106.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_19-1769698569593.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367007i6EAD2C3A92B5E0E0/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_19-1769698569593.png" alt="AlexPfeil_19-1769698569593.png" /></span></P><P>Now let´s check the Trace in SAP Cloud Integration Message Monitoring:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_20-1769698618500.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367008i500B2B0D68CB48E1/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_20-1769698618500.png" alt="AlexPfeil_20-1769698618500.png" /></span></P><P>Here we can see at the Receiver Channel Step the dynamic Topic we produced:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_21-1769698711248.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367009i43CF38D4DBAB8CAD/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_21-1769698711248.png" alt="AlexPfeil_21-1769698711248.png" /></span></P><P>Also on Advanced Event Mesh we can see the result in TryMe:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_22-1769698775839.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367010i32CF19458281A823/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_22-1769698775839.png" alt="AlexPfeil_22-1769698775839.png" /></span></P><H3 id="toc-hId-738755321">Dynamic Topic and Conversion with Custom Exit Iflow</H3><P>Let´s say I want to convert the XML into a JSON and Filter out some Fields. For that I would use a custom exit, because that would be Idoc specific.</P><P>For this I added the Switch "<SPAN>CallCustomExit"</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_4-1769705979056.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367090iD445B57309BFA7CF/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_4-1769705979056.png" alt="AlexPfeil_4-1769705979056.png" /></span></P><P> </P><P>I configured the address to dynamically set the Address based on the Message- and Idoc Type, so here the complete Address would be "/IdocEventing/CREMAS/CREMAS07"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_3-1769705900329.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367089i1A03C0C662E1DBDD/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_3-1769705900329.png" alt="AlexPfeil_3-1769705900329.png" /></span></P><P>For the Custom Exit i added another Iflow into the <A href="https://github.com/alPfeil/IdocEventing" target="_self" rel="nofollow noopener noreferrer">GIT Repo</A>:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_17-1769707581106.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367116i293AFDF7705EEBDB/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_17-1769707581106.png" alt="AlexPfeil_17-1769707581106.png" /></span></P><P> </P><P>For a Filter i choose to define a Message Mapping. You can use a different Step if you prefer. For a Mapping I need the XSD for this Idoc. This can be exported in the ERP System, Transaction WE61:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_5-1769706506629.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367095iFF99BCCB5937BADD/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_5-1769706506629.png" alt="AlexPfeil_5-1769706506629.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_6-1769706523403.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367096i001211416E706994/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_6-1769706523403.png" alt="AlexPfeil_6-1769706523403.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_7-1769706558143.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367097i5662F46B40E375AD/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_7-1769706558143.png" alt="AlexPfeil_7-1769706558143.png" /></span></P><P>Now just import it into Cloud Integration</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_8-1769706607809.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367099i7D99D4F990A2C75F/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_8-1769706607809.png" alt="AlexPfeil_8-1769706607809.png" /></span></P><P>Create a Message Mapping:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_9-1769706634578.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367101i503837A30E9EA8CB/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_9-1769706634578.png" alt="AlexPfeil_9-1769706634578.png" /></span></P><P>and add it into your Mapping (Source and Target)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_10-1769706682801.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367102iE09C0DBFFC4144AE/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_10-1769706682801.png" alt="AlexPfeil_10-1769706682801.png" /></span></P><P> </P><P>First I map all Fields with this Button:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_11-1769706737721.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367104iE3C92412438088DA/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_11-1769706737721.png" alt="AlexPfeil_11-1769706737721.png" /></span></P><P>Then I disable the Structures I don´t want to map</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_12-1769706870651.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367106iE61F9128B4A18B36/image-size/medium?v=v2&px=400" role="button" title="AlexPfeil_12-1769706870651.png" alt="AlexPfeil_12-1769706870651.png" /></span></P><P>I disabled everything except EDI_DC40 and E1LFA1M. Then I saved and added the json Conversion to my Iflow:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_13-1769706992182.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367108i06389DA7F10CC44B/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_13-1769706992182.png" alt="AlexPfeil_13-1769706992182.png" /></span></P><H3 id="toc-hId-542241816">Test</H3><P>Let´s test again:</P><P>(Same Procedure as above, Send Vendor with BD14)</P><P>Result: Dynamic Topic is the same, Payload has been mapped and converted:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_14-1769707103253.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367111i2BE3E0FEC8396B1B/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_14-1769707103253.png" alt="AlexPfeil_14-1769707103253.png" /></span></P><P>Pretty Printed in Notepad++:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AlexPfeil_15-1769707333143.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/367114iC061ECDDEB4B9AD7/image-size/large?v=v2&px=999" role="button" title="AlexPfeil_15-1769707333143.png" alt="AlexPfeil_15-1769707333143.png" /></span></P><P>That´s it! Happy Eventing!</P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P><P> </P>2026-01-29T16:22:32.332000+01:00https://community.sap.com/t5/technology-blog-posts-by-sap/tweaks-for-rap-bo-events-addressing-filtering-before-send-and-too-small/ba-p/14320767Tweaks for RAP BO events addressing filtering (before send) and too small payload (callbacks needed)2026-02-03T15:18:52.529000+01:00mlauberhttps://community.sap.com/t5/user/viewprofilepage/user-id/157846<P>Are you working on modernizing your SAP integrations, or looking for better ways to integrate with clean core compliance? But when you've looked at "Event Objects" from the SAP Business Accelerator Hub, you have found that it's not exactly matching your needs? Too many events are fired (can I filter?). The callback API is too time-consuming/unwanted. Or maybe you are simply interested in how ABAP RESTful Programming Model (RAP) Events work, how you can use and/or extend SAP Standard events?</P><P>In this blog I'll go through first some basic info and then start to showcase some tips / tweaks / workarounds you may or may not be aware about. Let's go.</P><H1 id="toc-hId-1660384843">1 ABAP RESTful Programming Model (RAP) Events Intro</H1><P>I'll keep this very brief as the meat of this blog is to go into the nitty-gritty details. But, for the uninitiated, RAP BO events are events that have been built with the RAP framework which can easily integrate with event brokers, such as SAP Business Technology Platform's Event Mesh or Advanced Event Mesh. They are a sort of modern version of BTEs. You may refer to a previous blog of mine where I go into one full end-to-end example, showcasing how to find SAP standard events and then use them: <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/working-with-rap-bo-events-end-to-end-event-driven-architecture-event/ba-p/14018775" target="_blank">Working with RAP BO Events end-to-end</A> . The short version is that all events can be found on the <A href="https://hub.sap.com/" target="_blank" rel="noopener noreferrer">SAP Business Accelerator Hub</A> -> Your SAP Product -> Events.</P><H1 id="toc-hId-1463871338">2 Too many events are fired / I want to filter</H1><P>This is probably one of the most common discussion points when I work with my customers. More often than not a "Created" or even more interestingly, a "Changed" event is simply fired too often for the actual integration needs. So what can we do here? In essence we have 3 main options:</P><OL><LI><STRONG>Integration middleware handles filtering</STRONG> (= no changes in SAP system, use event as is)<OL><LI>This can be desirable if there are lots of receiving systems that need to receive information for a certain object, and maybe each of them would like to filter a little different. The middleware receives the event as it happens and can then handle the distribution accordingly. This way 1 single event could be the foundation of several functioning integrations (instead of several point-to-point integrations). The quote-on-quote downside to this is that you would of course increase the complexity in the middleware itself, but again if the same event benefits several receivers, this could be a good option.<BR /><BR /></LI></OL></LI><LI><STRONG>Extend SAP standard event</STRONG> to include filtering fields (= extension development in your SAP system, use extended event, not standard)<OL><LI>This can be used if you know for sure you always want to filter out certain types of objects, that none of the integrated systems would want to be informed about. The quote-on-quote downside here is that we need to create an extension. Secondly, we first have to check if the SAP Standard RAP BO in question even allows behavior extensions. If not, we cannot use this option at all.<BR /><BR /></LI></OL></LI><LI><STRONG>Use custom event in combination with SAP Standard event</STRONG> as a workaround (= custom development in your SAP system, use custom event, not standard)<OL><LI>Same as for the previous one, this option can be used if we know for a fact we always want to filter away certain objects. We can use this over the extend option, if for example the extension was not possible, or if the extension possibilities do not suffice (for example we need to add fields that are not easily associated in the RAP BO, or we need some complex logic and checking before we send an event)<BR /><BR /></LI></OL></LI></OL><P>As this blog focuses on RAP, I'll skip the first option and let the integration gurus tackle that one. Let's take a closer look at the other two...</P><H2 id="toc-hId-1396440552">2.1 Extend SAP standard event</H2><P>If we found a suitable SAP standard RAP BO event and all we want is to add a few filter fields, we can do that with what is called Derived Events. Please refer to this page for details: <A href="https://help.sap.com/docs/abap-cloud/abap-rap/derived-business-events?version=s4hana_cloud" target="_blank" rel="noopener noreferrer">Derived Business Events | SAP Help Portal</A></P><P>For my showcase I'll be using <STRONG>R_SalesOrderTP~Changed</STRONG> event. First of, we need to check if the behavior definition of the BO allows extensions. Open it and check for the word "<FONT color="#FF6600"><STRONG>extensible</STRONG></FONT>" somewhere at the beginning of the definition + on the entity which has the event (so we need <U><STRONG>two</STRONG></U> <FONT color="#FF6600"><STRONG>extensible</STRONG></FONT>). </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_0-1770118376066.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368508i197CA85BDC2C2AC5/image-size/large?v=v2&px=999" role="button" title="mlauber_0-1770118376066.png" alt="mlauber_0-1770118376066.png" /></span></P><P>If it's there, we can proceed. Next we can also check the event itself and the payload (if no <FONT color="#FF6600"><STRONG>parameter</STRONG> </FONT>statement is written there, the payload is the key field(s) of the BO alone).</P><H3 id="toc-hId-1329009766">2.1.1 Create derived event payload with filter fields</H3><P>Before we extend the behavior, we need a custom payload that includes our filter fields. Create a new data definition root entity and define your custom payload. For example:</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Sales Ord. ext. event for derived event'
define root view entity ZP_SalesOrder_EventExt as select from I_SalesOrder
{
key SalesOrder,
.context.attribute: 'xsapordtype'
SalesOrderType,
.context.attribute: 'xsapslsorg'
SalesOrganization,
.context.attribute: 'xsapbillplc'
_BillingPlan.BillingPlanCategory,
DistributionChannel,
OrganizationDivision,
SoldToParty,
CustomerGroup,
ShippingCondition,
IncotermsClassification,
OverallSDProcessStatus
}</code></pre><P>Few points:</P><UL><LI>Key fields must match the RAP BO you are extending</LI><LI>You can access fields just like the standard RAP BO and also associated fields (I showcase this with BillingPlanCategory above). Note, we focus only flat structures, so the associated field needs to be 1:1 (for deep structures, please refer to chapter 3).</LI><LI>With above, we created exactly 3 filter fields: Sales Order Type, Sales Organization, and Billing Plan Category. Filters must have the annotation "<STRONG>Event.context.attribute</STRONG>" and <U>must start with</U> "<STRONG>xsap</STRONG>"!</LI></UL><H3 id="toc-hId-1132496261">2.1.2 Extend standard RAP BO behavior to create a derived event (with our custom payload)</H3><P>Now we are ready to extend the behavior definition as per usual practice: find/display it in the project explorer - right click - New Behavior Extension. Here type out your derived event, for example:</P><pre class="lia-code-sample language-abap"><code>extension
//using interface i_salesordertp
;
extend behavior for SalesOrder {
managed event ZZChangedExtended on Changed parameter ZP_SalesOrder_EventExt;
}</code></pre><P>Few notes on the above:</P><UL><LI>First of I want to start with the <STRONG>interface</STRONG> commented away above. Bear with me, this is important to understand!<BR />In RAP it is always best to interact with RAP BOs via their interface, if there is one (not to be confused with a basic interface view, such as I_SalesOrder or I_Customer etc., which reads from the DB table). In the case of R_SalesOrderTP, it has a transactional interface called <STRONG>I_SalesOrderTP</STRONG>. This interface is meant as a stable "API" to interact with the BO, and is usually released with C1/C0 contracts for clean core compliance. So in truth, we should be using the interface as we are extending this BO, but as you see above, it's commented away. That is because we must, in this case. I_SalesOrderTP does not include any of the events, and because we need those, we cannot use the interface in this case. What this means is that my extension behavior definition, as of right now, must be saved as "<STRONG>Standard ABAP</STRONG>" and cannot be assigned to a package with an ABAP Cloud software component. HOWEVER, <U><STRONG>this is clean core compliant</STRONG></U>, because R_SalesOrderTP is released with a C0 contract for extension, thus allowing such extensions. The problem is that the syntax check for <STRONG>ABAP for Cloud Development</STRONG> only checks for C1 contracts (which is missing on R_SalesOrderTP behavior), which is why, as of right now, we have to save this as Standard ABAP, meaning a "level B" extension which is clean core compliant (it would have been "level C", if R_SalesOrderTP hadn't had the C0).</LI><LI>The rest is quite straight forward. We say which entity we are extending (<STRONG>SalesOrder</STRONG>, using the alias in the behavior definition) and we are stating the <STRONG>Changed</STRONG> event to be extended with <STRONG>ZZChangedExtended</STRONG> with our own payload we previously created.</LI></UL><H3 id="toc-hId-935982756">2.1.3 Create Event Binding for derived event</H3><P>Next up we need an Event Binding for our derived event. As a small side note: if you only intend to consume your own derived within your SAP system (the same system) and not send it out to an event broker, then you would not need an event binding.<BR />Create a new Event Binding object (Business Service - Event Binding or just search for event binding in the new ABAP object dialog) and add the event we just created to it:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_1-1770120045083.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368517iADDE8D17051D9C5B/image-size/large?v=v2&px=999" role="button" title="mlauber_1-1770120045083.png" alt="mlauber_1-1770120045083.png" /></span></P><P>Note that we of course refer to the SAP Standard RAP BO, which now includes our derived event thanks to the extension we just did.</P><H3 id="toc-hId-739469251">2.1.4 Configure Event Channel to include your derived event</H3><P>Lastly, to send our derived event to an event broker, we need to add it to our event channel. Assuming you already prepared an event channel (refer to my other blog linked above for more info on that), go to <STRONG>/n/IWXBE/CONFIG</STRONG>, select your event channel and go to <STRONG>Outbound Bindings</STRONG>.</P><P>Click the create button to add the event binding you just created. It could look something like this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_2-1770120572456.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368521i9EAB0A3A0D0D0D9B/image-size/large?v=v2&px=999" role="button" title="mlauber_2-1770120572456.png" alt="mlauber_2-1770120572456.png" /></span></P><P>The above means that my Event Mesh on my BTP subaccount receives the SAP standard Sales Order Created event, and my own derived Sales Order Changed event.</P><P>And that's it: now we are ready for filtering or for simply getting the larger payload as per our derived event.</P><H3 id="toc-hId-542955746">2.1.5 Adding Filters</H3><P>In the same location as we were (/n/IWXBE/CONFIG -> Event Channel -> Outbound Bindings) click on the button <STRONG>Filters</STRONG> at the top. Open up the folder <STRONG>Outbound Bindings</STRONG> for your event channel and click on your derived event. Clicking on the plus-button shows all available filter fields, in this example:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_3-1770120808327.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368528iFC46CE4591114DC4/image-size/medium?v=v2&px=400" role="button" title="mlauber_3-1770120808327.png" alt="mlauber_3-1770120808327.png" /></span></P><P>Create a filter, for example that only Sales Order Type "OR" should be sent to out:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_4-1770120857823.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368529i86EE30B213E86B56/image-size/large?v=v2&px=999" role="button" title="mlauber_4-1770120857823.png" alt="mlauber_4-1770120857823.png" /></span></P><H3 id="toc-hId-346442241">2.1.6 Subscribe to the event on your event broker</H3><P>To receive this derived event for example in Event Mesh on SAP BTP, you need of course a corresponding queue and then add the subscription for this new derived event. In my example:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_5-1770121089544.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368531i011AEB159CE6B0E4/image-size/medium?v=v2&px=400" role="button" title="mlauber_5-1770121089544.png" alt="mlauber_5-1770121089544.png" /></span></P><H3 id="toc-hId-149928736">2.1.6 Test example</H3><P>I changed a sales order in my system and saved. This now triggered my derived changed event, which I can see in the events monitoring transaction <STRONG>/n/IWXBE/EVENT_MONITOR</STRONG> (select event channel, click on Outbound Events, double-click on derived event)...</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="img1.png" style="width: 321px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368878i3A7336D1CA08EA56/image-size/medium?v=v2&px=400" role="button" title="img1.png" alt="img1.png" /></span></P><P>...and on SAP BTP Event Mesh where I added the subscription:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_7-1770121288238.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368533i6721A20876B09CD9/image-size/medium?v=v2&px=400" role="button" title="mlauber_7-1770121288238.png" alt="mlauber_7-1770121288238.png" /></span></P><P>Here we can only see what's sitting in the queue. So let me consume the message in the test tool to show the same payload as in our monitor:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="img2.png" style="width: 789px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368882i1C15646C036E5838/image-size/large?v=v2&px=999" role="button" title="img2.png" alt="img2.png" /></span></P><P>Awesome! We succeeded and this concludes the extend event option.</P><H2 id="toc-hId-171586869">2.2 Use custom event in combination with SAP Standard event</H2><P>This is an interesting one and in my experience comes with some confusion attached to it. I have heard sentences such as "But can't we just create a custom event instead of the standard one and use that?" And the simple answer to that is yes, but no <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span>. Let me explain...</P><P>Now of course if we create our own, custom RAP BOs, we can add events to them. That is clear. And within that custom BO you decide when that event is fired. Clear and no problem. But this is all custom.</P><P>And now, if you want "your custom event" <STRONG>to be trigged <U>during</U> SAP standard processing</STRONG>, well no, SAP standard can't do that, as it does not know your custom event exists. And if you are thinking to use user exits or BAdIs to do this; think again, because it would be wrong to do so. User exits and BAdIs are called while the processing has not yet completed. Meaning at this point, in theory, something could still go wrong (no update in DB), but you already triggered your event. So, do not do this, ever! The point of the event framework is to inform about a state change. So you only want to do that, if the state change has actually occurred, meaning after the DB is fully updated.</P><P>So what else then, you wonder? That's where the SAP standard event comes in (which yes, is fired AFTER the state change occurred and all processing has completed). The SAP Standard event <U>will trigger</U>, and thus if you want more flexibility than just explored in the previous option with the extension of the SAP standard event, that's when we can try to combine standard with custom event.</P><P>Essentially, this is the pattern:</P><OL><LI>SAP standard process does something, which triggers an event for a certain object. This triggering happens at the exact time you want, but the SAP Standard event does not fulfill your requirement (and we can't / don't want to do a derived event)</LI><LI>You will create a custom event on a "dummy" RAP BO which includes the exact payload you need (flat structure for EM, it can be a deep one for AEM).</LI><LI>You will create a local event listener (within your SAP system) for the SAP standard event that triggers at the right moment. Within this local consumption you can now do any ABAP logic you may need. Complex filtering. Complex data collection (calling BAPIs or other things) etc.<BR />Once all your data validation and collection is done, you fill the payload format of your custom event and finally you trigger your custom event (with a slight workaround, as events can only be raised from with the RAP BO itself)</LI><LI>You only configure your custom event in the event channel for the event broker. The event arriving there is ready to be consumed with all needed fields and only events are that are really expected are arriving there.</LI></OL><P>Let's do this example now. We stick with <STRONG>R_SalesOrderTP</STRONG>, this time using <STRONG>Created</STRONG> as the SAP Standard event.</P><P>Let's assume I don't just want to send all sales order that are created. Sales order type filtering is not good enough. In fact, it matters whether a product is sold that has certain characteristics, for example. As a simplified example here, I will only check the product type of the product, but hopefully this gives you some ideas; we could check anything at this point.</P><H3 id="toc-hId--318329643">2.2.1 Create custom event</H3><P>Our custom event doesn't need much of a BO. Meaning we don't want to (re)create read/update/delete etc. functionality, but this is purely for defining how the event payload should look like and for triggering the custom event. </P><P>In my example I took it a step further: what if I create a <STRONG>generic "event forwarder"</STRONG>, that could potentially be used together with many SAP standard objects? Now, this isn't to say that I recommend this approach, in fact quite the opposite. And depending on your exact requirement, this may definitely the wrong approach. But I did this also in an effort to answer if this is at all feasible.</P><P>If having an event trigger with only key field information and then having a subsequent callback API later in the integration is a good pattern for you, then this could potentially help you, as you could reuse it for several use cases.</P><P>But, if instead you want something very specific, for example only forward my object under certain circumstances and including already all data needed, then of course it makes more sense to create a tailored custom event, with the exact payload of that object you want.</P><P>So please bear that in mind as we continue with this example. <STRONG>With this example I handle only a generic key-field based payload</STRONG>.</P><H4 id="toc-hId--808246155">2.2.1.1 Custom entity data definition</H4><P>We start of course with the data definition. Custom entity is in my opinion the best, as again we don't actually need any read or update functionality, but we simply describe our event payload at this point (and here you could have a large flat/deep structure):</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'Event Forwarder BO'
define root custom entity ZR_EventForwarder
{
key ObjectKey : abap.string;
key ObjectType : zevent_fwd_object;
}</code></pre><H4 id="toc-hId--1004759660">2.2.1.2 Custom entity behavior definition</H4><P>Next we need the behavior that will include our custom event:</P><pre class="lia-code-sample language-abap"><code>unmanaged implementation in class zbp_r_eventforwarder unique;
strict ( 2 );
define behavior for ZR_EventForwarder
lock master
authorization master ( instance )
{
field ( readonly ) ObjectKey, ObjectType;
event ForwardEvent;
}</code></pre><P>Finally, let ADT generate the BP implementation for you (we do not need to fill any of the methods but so it's properly created (again, we need no read/save methods etc.)). So I will not paste the whole Class/or Local Types.</P><P>Instead, what we need to do here is now offer an option to "raise" our custom event "<STRONG>ForwardEvent</STRONG>" from outside this BO. The "<FONT color="#3366FF"><STRONG>raise entity event</STRONG></FONT>" command is not allowed outside the RAP BO itself. So instead, we need to encapsulate it in a way that ABAP code from outside this behavior pool can call it. For this we need 2 things:</P><OL><LI>"Local event handler" (not actually inheriting anything => chose this to separate it from other, standard RAP BP behavior methods)</LI><LI>Method in the global class that can be called from other ABAP code</LI></OL><P>Let's start with the "local event handler". Within the section <STRONG>Local Types</STRONG> of your behavior implementation class, add something this:</P><pre class="lia-code-sample language-abap"><code>class lcl_event_handler definition friends zbp_r_eventforwarder.
public section.
class-methods on_forward_event importing it_events type zbp_r_eventforwarder=>tt_events.
endclass.
class lcl_event_handler implementation.
method on_forward_event.
raise entity event zr_eventforwarder~forwardevent from it_events.
endmethod.
endclass.</code></pre><P>Note the "<FONT color="#0000FF"><STRONG>friends</STRONG></FONT>" command in the class definition. This is needed to be able to access private/protected class variables from the behavior pool (raising our entity event).</P><P>And in the <STRONG>Global Class</STRONG>, we change it as follow (full code copied):</P><pre class="lia-code-sample language-abap"><code>class zbp_r_eventforwarder definition public abstract final for behavior of zr_eventforwarder.
types tt_events type table for event zr_eventforwarder~forwardevent.
public section.
constants:
co_type_salesorder type zevent_fwd_object value 'SALESORDER'.
class-methods raise_forward_event
importing it_events type tt_events.
endclass.
class zbp_r_eventforwarder implementation.
method raise_forward_event.
" tell RAP framework that we are in a SAVE sequence (otherwise it thinks
" we are in the middle of a MODIFY)
cl_abap_tx=>save( ).
" trigger event (only allowed during SAVE)
lcl_event_handler=>on_forward_event( it_events ).
endmethod.
endclass.</code></pre><P>We did 3 main things: a global type for the event payload table, a constant to distinguish different types of RAP BO that I mean to handle with my generic one (right now only one) and, most importantly, a global class method that can be called from other ABAP code.</P><H4 id="toc-hId--1201273165">2.2.1.3 Event Binding</H4><P>As before, we need an event binding if we want to forward this to an event broker:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_9-1770124792302.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368569iA7F765998E574E12/image-size/large?v=v2&px=999" role="button" title="mlauber_9-1770124792302.png" alt="mlauber_9-1770124792302.png" /></span></P><P>(Namespace, object type etc. can be freely chosen.)</P><P>And that's all for our custom event. Remember that the only purpose of this custom event is to offer a way to define the payload and to trigger it. Any functionality, such as filtering, complex validation or data selection etc. we do when the real SAP standard event is triggered. Meaning in the local consumption. </P><H3 id="toc-hId--1104383663">2.2.2 Local consumption of SAP Standard event</H3><P>Now I won't go into step-by-step on this one, as I have done this already on the above linked blog post of mine. Please check there if the below steps are not enough for you.</P><P>I have an ABAP Class, abstract, final with the "<STRONG><FONT color="#3366FF">for events of</FONT></STRONG>" functionality, where once again we must type R_SalesOrderTP here (and not I_SalesOrderTP, which would have been the preferred option). This means my class has to be again saved as "Standard ABAP" and cannot be in an ABAP for Cloud Development package. But this is clean core compliant, as explained above.</P><P>In Local Types I have my local class that inherits from <STRONG>cl_abap_behavior_event_handler</STRONG> and I add a method for the Created event:</P><pre class="lia-code-sample language-abap"><code>class lcl_event_cons definition inheriting from cl_abap_behavior_event_handler.
private section.
methods:
consume_created for entity event instances for salesorder~created.
endclass.</code></pre><P>And here the implementation of that method (we'll go through it one by one below):</P><pre class="lia-code-sample language-abap"><code> data: lt_fwd_event type zbp_r_eventforwarder=>tt_events.
" go through RAP BO entity instances that triggerd the event
" (should only be 1 as we listend to sales order (header) created)
loop at instances into data(instance).
" get data needed for complex filtering
select salesorderitem, product, \_product-producttype
from i_salesorderitem
where salesorder = @instance-salesorder
into table (lt_items).
" check if sales order should be handled (forwarded to event broker)
if line_exists( lt_items[ producttype = 'HAWA' ] ).
" this sales order is now filtered OK and will be added to the forwarding instances
append initial line to lt_fwd_event assigning field-symbol(<fs_event>).
<fs_event> = value #( objectkey = instance-salesorder
objecttype = zbp_r_eventforwarder=>co_type_salesorder ).
else.
continue. " we are not interested in this Sales Order
endif.
endloop.
" now that we checked all instances, only those that we filtered will be forwarded
if lt_fwd_event is not initial.
zbp_r_eventforwarder=>raise_forward_event( lt_fwd_event ).
endif.</code></pre><UL><LI>We create an internal table of the payload type that is the custom event (we created a global type in the behavior definition)</LI><LI>We loop through all instances that were sent by the SAP standard event (since this is a sales order (header), this will only ever include 1)</LI><LI>As we loop, we select some additional data to do "some complex logic" for checking if this sales order should be forwarded or filtered out.</LI><LI>Once all requirements are met for forwarding the sales order, we fill the custom event payload table.</LI><LI>When the looping is done, we check if any sales orders remained (if we have any custom event payload) and if yes, we now call the method we offered on the custom event RAP BO behavior as global class method and give it the payload we just filled.</LI></UL><P> And that's all <span class="lia-unicode-emoji" title=":astonished_face:">😲</span><span class="lia-unicode-emoji" title=":grinning_face:">😀</span></P><H3 id="toc-hId--1300897168">2.2.3 Finishing</H3><P>As before, we need to configure our custom event (binding) in the event channel in order to forward it to the event broker:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_10-1770125042635.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368582iD3055B5DF16B25C3/image-size/large?v=v2&px=999" role="button" title="mlauber_10-1770125042635.png" alt="mlauber_10-1770125042635.png" /></span></P><P>On the event broker, we need to subscribe to that topic, to receive it there:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mlauber_12-1770125246503.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368585iCBCED5DFB3A60DDE/image-size/medium?v=v2&px=400" role="button" title="mlauber_12-1770125246503.png" alt="mlauber_12-1770125246503.png" /></span></P><P>To summarize, this is what will happen:</P><OL><LI>A user creates any sales order</LI><LI>R_SalesOrderTP-Created is triggered</LI><LI>Our local consumption of the SAP standard event is called: our local consumption checks if the sales order has any items with products of product type HAWA. If yes, we add it to be forwarded. If no, we disregard it.</LI><LI>If we had any sales order to forward, the ZR_EventForwarder behavior is called via workaround (a little bit nasty by just calling the global class but I could not think of any other way. For example we can't use an action, as actions are invoked via EML MODIFY, which in turn does not allow for RAISE EVENT). This triggers the ZR_EventForwarder-EventForwarded event with our payload</LI><LI>The custom event is forwarded to event broker</LI></OL><H3 id="toc-hId--1497410673">2.2.4 Testing</H3><P>Let's test this. I create a new sales order and I include 1 item that has a product of type HAWA. Meaning my filtering will allow this sales order and eventually trigger my custom event. </P><P>Let's see what the event monitor says:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="img3.png" style="width: 369px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368883i54C7B49E5FC7E40A/image-size/medium?v=v2&px=400" role="button" title="img3.png" alt="img3.png" /></span></P><P>And consuming this message in BTP Event Mesh:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="img4.png" style="width: 780px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368884i5357FD956B2A568C/image-size/large?v=v2&px=999" role="button" title="img4.png" alt="img4.png" /></span></P><H1 id="toc-hId--1107118164">3 I want a larger payload</H1><P>This is without a doubt the 2nd most discussed topic when talking event based integrations. In order to avoid callback APIs, maybe this is the way to go for you. As of right now, SAP Standard delivers notification events only, meaning small payloads to allow for the creation of fast, simple, integrations that can be easily reused.</P><P>You may already noticed that we already covered this in chapter 2. Both when extending the SAP standard event or when creating a custom event to work in combination with standard: I showcased how we can decide our own payload. So far I have only mentioned <STRONG>flat structures</STRONG>, as that is the only type that is supported by Event Mesh on SAP BTP. If you have a need for <STRONG>deep structure payloads</STRONG>, you may want to consider to upgrade to Advanced Event Mesh instead. And instead of creating a brand new example, please check out this blog post by a colleague that goes into deep payload: <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/rap-business-events-with-advanced-event-mesh-3-creating-events-with-deep/ba-p/13914285" target="_self">RAP Events with AEM 3 - Creating Events with deep payload</A>.</P><H1 id="toc-hId--1303631669">Conclusion / Final Words</H1><P>I hope this blog post helps and gives some ideas how far you can take RAP BO events and influence your integration landscape, in a positive way (of course, that's the end goal).</P><P>Is there anything I've missed? Another requirement that you would like to solve with eventing? Or any other questions or comments/feedback? Let me know in the comments and let's see <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P>2026-02-03T15:18:52.529000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/integration-suite-in-2025-amp-2026/ba-p/14320912Integration Suite in 2025 & 20262026-02-03T18:16:06.981000+01:00Sookriti_Mishrahttps://community.sap.com/t5/user/viewprofilepage/user-id/173946<P><SPAN>Watched this beautiful session by<STRONG> </STRONG><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/8446">@UdoPaltzer</a>: <A href="https://www.youtube.com/watch?v=kFynsigf99o" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/watch?v=kFynsigf99o</A></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2026-02-03 at 10.44.47 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368644i925C54038A8D0FFF/image-size/large?v=v2&px=999" role="button" title="Screenshot 2026-02-03 at 10.44.47 PM.png" alt="Screenshot 2026-02-03 at 10.44.47 PM.png" /></span></P><P>In case you wanted a quick summary, here you go:</P><P><STRONG>Modernize Integrations:</STRONG></P><UL><LI><SPAN>Use standard content as much as you can</SPAN></LI><LI><SPAN>Try to replace your RFCs and IDOCs with OData, Rest, and SOAP.</SPAN></LI><LI><SPAN>Leverage Event-driven Integration pattern (for real-time scenarios)</SPAN></LI><LI><SPAN>Use Side-by-side extensions to leverage API-centric integrations (with Build)</SPAN></LI><LI>Leverage monitoring and error resolution capabilities by using SAP AIF (for Business Users), and Cloud ALM (for technical users)</LI></UL><P> </P><P><STRONG>End of maintenance. Time is ticking!</STRONG></P><UL><LI><SPAN>2027 - SAP PO | Standard Maintenance sunset</SPAN></LI><LI><SPAN>2030 - SAP PO | Extended maintenance sunset</SPAN></LI><LI><SPAN>2028 - Cloud Platform Integration Neo | Services sunset</SPAN></LI></UL><P><SPAN>As far as your migration support is concerned, SAP provides Migration guides, documentation, and community content, which you are already aware of. What is additionally provided is:</SPAN></P><UL><LI><SPAN>SAP Migration Factory | a free 2-3 weeks program to help you assess and plan your migration from PI/PO to Integration Suite</SPAN></LI><LI><SPAN>Evolve Neo Program | free access to SAP experts who will help you plan and prepare your migration to Cloud Foundry</SPAN></LI><LI><SPAN>SAP Service and Support | quick migration assistance with short duration, low cost engagements</SPAN></LI></UL><P><STRONG>Edge Integration Cell </STRONG></P><UL><LI><SPAN>The latest kid in the block is now flexible to run hybrid integration runtime, which is offered as an optional extension to Integration Suite, which will help customer-managed private landscape to leverage the capabilities of Integration Suite. </SPAN></LI><LI><SPAN>The landscapes it supports are: Microsoft AKS, Amazon EKS, Red Hat OpenShift, SUSE Rancher, Google GKE. </SPAN></LI></UL><P><STRONG>Cloud ALM<BR /></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sookriti_Mishra_0-1770190773748.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368816iADE0F96757DC6FD8/image-size/medium?v=v2&px=400" role="button" title="Sookriti_Mishra_0-1770190773748.png" alt="Sookriti_Mishra_0-1770190773748.png" /></span></P><UL><LI><SPAN>Your one stop for end-to-end </SPAN><STRONG>technical </STRONG><SPAN>health monitoring for: SAP BTP, S/4HANA, S/4HANA Cloud, SuccessFactors, Integration Suite, Customer Experience, Business Network, Concur, Fieldglass.</SPAN></LI><LI><SPAN>You can configure the Oubound Channels like: email alerts, on chat-based apps like MS Teams/ Slack, Ticketing System like Service Now, Tasks like JIRA, APIs like SAP Analytics Cloud/ Grafana, and Operation Automations like Build Process Automation, and SAP iRPA, etc.</SPAN></LI><LI><SPAN>For us Integration Suite guys, you can use it for Cloud Integratio, API Management and Event Mesh as well.</SPAN></LI><LI><SPAN>Specifically for Integration Suite, you can now monitor Tenant Availability, Certificate Validity, Database and Resource consumption, Content, Exhaustion status of JMS queue. So, no more building custom iflows to trigger alerts. Please know that CALM pulls data every 5 mins, and persists data for 30 days. I wonder if they have a feature to display the trace only for failed messages. SAP, are you listening?</SPAN></LI></UL><P><STRONG>Innovations in 2025</STRONG></P><UL><LI><STRONG>Artificial Intelligence<BR /></STRONG><SPAN><SPAN>- </SPAN>Joule copilot-based discovery and reuse of artifacts were made available in Business Accelerator Hub<BR /></SPAN><SPAN>- Generation of Integration flow steps <BR /></SPAN><SPAN>- Groovy script optimization<BR /></SPAN><SPAN>- API anomaly detection<BR /></SPAN><SPAN>- API traffic prediction for usage and trend<BR /></SPAN><SPAN>- AI adapter</SPAN></LI><LI><STRONG>Business Accelerators<BR /></STRONG><SPAN><SPAN>- </SPAN>Additional non-SAP adaptors like, AI, Google, BigQuery, IBM MQ (JMS), BigQuery, Microsoft Azure Service Bus, Microsoft OneNote, Mongo DB, Salesforce Pub/ Sub, Shopify, etc<BR /></SPAN><SPAN>- New design guidelines to ensure upgrade readiness of Groovy Scripts (Camel 3 to Camel 4)</SPAN></LI><LI><STRONG>Migration & Modernization<BR /></STRONG><SPAN><SPAN>- </SPAN>Generate ABAP proxy in the backend without any dependency on PI<BR /></SPAN><SPAN>- Edge Integration Cell: Local OData API access, HANA DB, Shared Kubernetes, Basis Authentication during offline mode <BR /></SPAN><SPAN>- Alerting of failed B2B messages in CALM<BR /></SPAN><SPAN>- Automatic B2B interface creation based on Payload</SPAN></LI><LI><STRONG>API-centric & Event-driven integration<BR /></STRONG><SPAN><SPAN>- </SPAN>Lightweight adapter in the context of Advanced Event Mesh for small, light-weight, event-driven integration with non-SAP applications<BR /></SPAN><SPAN>- Migration support from EM to AEM</SPAN></LI></UL><P><STRONG>Agent-ready Application: IPaaS & AI Market Evolution & Trends</STRONG></P><UL><LI><SPAN>Agent iPaaS</SPAN></LI><LI><SPAN>Agent Integrations</SPAN></LI><LI><SPAN>Agent Orchestration</SPAN></LI><LI><SPAN>AI TRiSm (trusted relationship governance of the AI agents</SPAN></LI></UL><P><STRONG>SAP Integration Suite to become the trusted AI Integration Fabric: </STRONG><SPAN>IS is evolving to become a trusted AI Integration fabric</SPAN></P><P><STRONG>Some of the use cases are:</STRONG></P><UL><LI><SPAN><STRONG>Integration for AI</STRONG> (to make agentic interactions & orchestration to make applications agent-ready)</SPAN></LI><UL><LI><SPAN>MCP Gateway</SPAN></LI><LI><SPAN>Agent Orchestration</SPAN></LI><LI><SPAN>AI Gateway</SPAN></LI><LI><SPAN>Agent Identity Verification</SPAN></LI><LI><SPAN>LLM connector</SPAN></LI></UL><LI><SPAN><STRONG>AI for Integration</STRONG> (features in IS)</SPAN></LI><UL><LI><SPAN>Joule</SPAN></LI><LI><SPAN>Anomaly detection</SPAN></LI><LI><SPAN>API traffic predictions</SPAN></LI><LI><SPAN>Script Optimization</SPAN></LI><LI><SPAN>Configuration Agent</SPAN></LI></UL></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sookriti_Mishra_1-1770190833178.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368817i3AB2BA3AD00E953F/image-size/medium?v=v2&px=400" role="button" title="Sookriti_Mishra_1-1770190833178.png" alt="Sookriti_Mishra_1-1770190833178.png" /></span></P><P> </P><P><STRONG>2026 SAP Integration Suite Strategic Outlook:</STRONG></P><UL><LI><SPAN>Leveraging Joule for building Integration flows</SPAN></LI><LI><SPAN>MCP enablement for APIs</SPAN></LI><LI><SPAN>Migration Agents for Java Mappings & adapter modules</SPAN></LI><LI><SPAN>AEM events in developer hub</SPAN></LI><LI><SPAN>15+ new third-party adapters including Adobe Sign, Google Suite, Oracle, OFTP2, Salesforce Service & Marketing, Cloud, Oracle Eloqua</SPAN></LI><LI><SPAN>Joule Skills & AI Agents in SAP Business Accelerator Hub</SPAN></LI><LI><SPAN>B2B capabilities in Edge Integration Cell</SPAN></LI></UL><P><STRONG>Roadmap for SAP Integration Suite:</STRONG></P><UL><LI><STRONG>Artificial Intelligence<BR /></STRONG><SPAN>- Integration flow design validation<BR /></SPAN><SPAN>- Joule based generation of iflows<BR /></SPAN><SPAN>- MCP for agentic AI<BR /></SPAN><SPAN>- Migration agent for adapter modules, Java mapping<BR /></SPAN><SPAN>- Configuration Agent<BR /></SPAN><SPAN>- Payload-size anomaly detection</SPAN></LI><LI><STRONG>Business Accelerators<BR /></STRONG><SPAN>- More connectivity options, meaning, more adapters like Google Drive & Sheets Microsoft Excel & Outlook, OFTP2, RosettaNet, Salesforce Service Cloud, etc<BR /></SPAN><SPAN>- Support for publications of Joule Skills & Agents in Business Accelerator Hub<BR />- </SPAN><SPAN>Commercial module for Partner Content. Consumers/Customers with a licence to Partner Content can now use it. Currently, customers can copy and use it for free, but from now on, the IP rights are protected, so you can use it only if you have a licence.</SPAN></LI><LI><STRONG>Migration & Modernization<BR /><SPAN>- </SPAN></STRONG><SPAN>Mass migration from PO to IS<BR /><SPAN>- </SPAN></SPAN><SPAN>Edge Integration Cell: customer-managed cloud connectors, offline mode support for 48 hours, B2B capabilities, multiple instances of EIC per Kubernetes Cluster<BR />- </SPAN><SPAN>SAP IS data centers in Australia, Germany, India, Japan, US.</SPAN></LI><LI><STRONG>API-Centric & Event-driven integrations<BR /><SPAN>- </SPAN></STRONG><SPAN>AEM health monitoring in SAP Cloud ALM<BR /><SPAN>- </SPAN></SPAN><SPAN>Auto discovery and publications of events from AEM to Developer Hub as single catalog for APIs and Events<BR />- </SPAN><SPAN>Consumption of events through Developer Hub</SPAN></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sookriti_Mishra_3-1770191000785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/368818iE7540309A7D5036B/image-size/large?v=v2&px=999" role="button" title="Sookriti_Mishra_3-1770191000785.png" alt="Sookriti_Mishra_3-1770191000785.png" /></span></P><P> </P><P><BR /><BR /></P><P> </P>2026-02-03T18:16:06.981000+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/integration-blog-posts/jms-mastery-series-part-1-the-async-awakening/ba-p/14319670JMS Mastery Series Part 1 - The Async Awakening2026-02-06T10:32:09.582000+01:00MateuszPiotrowskihttps://community.sap.com/t5/user/viewprofilepage/user-id/1161523<H1 id="toc-hId-1659728504">The Async Awakening: Why Synchronous Integration is Holding You Back</H1><P><I>Or: How I Learned to Stop Worrying and Love Asynchronous Processing (Part 1 of 3)</I></P><H2 id="toc-hId-1592297718">Introduction</H2><P>If you asked me a few years ago whether most integrations should be asynchronous, I would have said: "It depends - many scenarios require synchronous processing."</P><P>Today, after many production integrations and troubleshooting sessions, my answer is more opinionated: <STRONG>Most point-to-point integrations default to synchronous unnecessarily</STRONG>.</P><P>The real operational challenges in SAP Cloud Integration (CPI/CI) don't come from implementation errors like bad mappings or misconfigured adapters - those are straightforward to diagnose and fix. They come from <STRONG>architectural decisions</STRONG>: interfaces that block on every timeout, messages that vanish when processing fails, and systems so tightly coupled that one component's downtime brings down the entire chain.</P><P>This three-part series explains:</P><UL><LI><STRONG>Part 1 (this article):</STRONG> Why synchronous is overused and async is underutilized</LI><LI><STRONG>Part 2:</STRONG> <A href="https://community.sap.com/t5/integration-blog-posts/jms-mastery-series-part-2-the-jms-revolution/ba-p/14319644" target="_blank">Why JMS queues are essential for reliable async processing</A></LI><LI><STRONG>Part 3:</STRONG> <A href="https://community.sap.com/t5/integration-blog-posts/jms-mastery-series-part-3-jms-in-production/ba-p/14300416" target="_blank">How to implement this in production with confidence</A></LI></UL><P><STRONG>Important context:</STRONG> This series focuses on <STRONG>point-to-point integrations with transformation and orchestration needs</STRONG> - scenarios where CI provides value beyond simple routing. For S/4HANA business events and pub-sub patterns, Event Brokers (like Event Mesh/AEM) are often the right choice. Both patterns coexist in modern SAP landscapes.</P><P> </P><H2 id="toc-hId-1395784213">Key Takeaways</H2><UL><LI><STRONG>SAP CPI / CI behaves synchronously by default for HTTP-based integrations</STRONG><BR />True decoupling must be designed explicitly.</LI><LI><STRONG>Asynchronous ≠ Guaranteed Delivery</STRONG><BR />Non-blocking sender adapters alone do not make an interface reliable.</LI><LI><STRONG>JMS is the main answer for reliable asynchronous processing in CI</STRONG><BR />Without persistence, retries, and DLQ, messages can be lost from automated recovery paths.</LI><LI><STRONG>EO and EOIO are design patterns, not free platform features</STRONG><BR />They require idempotency, ordering discipline, and end-to-end design.</LI></UL><P> </P><H2 id="toc-hId-1199270708">The Synchronous Trap: When Defensive Design Hurts</H2><P>Walk into any SAP integration landscape and you'll find the same pattern: most point-to-point integrations are synchronous by default.</P><P>Why? Not because business requires it, but because it feels safer:</P><UL><LI>"Let's wait for confirmation so we know it worked"</LI><LI>"The user should see the result immediately"</LI><LI>"Async is more complex, let's keep it simple"</LI><LI>"That's how we've always done it"</LI></UL><P>These sound reasonable in isolation. But they create hidden fragility, even when only a single synchronous call is involved:</P><UL><LI><STRONG>Availability coupling:</STRONG> The caller is unavailable as long as the receiver is unavailable</LI><LI><STRONG>Performance coupling:</STRONG> The receiver's latency directly becomes the caller's latency</LI><LI><STRONG>Blocked capacity:</STRONG> Threads, connections, and work processes are held while waiting</LI><LI><STRONG>Poor scalability:</STRONG> Traffic spikes amplify blocking and quickly overwhelm synchronous paths</LI></UL><P>In synchronous chains, these effects compound.</P><P>Even with API-first principles - reusable services, proper APIM layers, well-tested microservices - we often build synchronous interactions that trade apparent simplicity for hidden operational risk, without applying resilience patterns to absorb delay, failure, or burst load.</P><P>The real question isn't "Should this be async?" but rather: <STRONG>"What specifically requires the caller to wait for completion?"</STRONG></P><P>Answer honestly, and you'll find synchronous requirements are narrower than your default patterns suggest.</P><P> </P><H2 id="toc-hId-1002757203">Common Async Candidates</H2><P>These integration patterns rarely need synchronous processing:</P><UL><LI><STRONG>Master data synchronization:</STRONG> CRM customer updates don't need to wait for S/4HANA confirmation</LI><LI><STRONG>Document archival:</STRONG> Invoice posting shouldn't block on DMS storage completion</LI><LI><STRONG>Notifications and emails:</STRONG> Order creation shouldn't fail if email service is down</LI><LI><STRONG>Batch processing:</STRONG> High-volume operations benefit from queuing and parallel processing</LI><LI><STRONG>External system updates:</STRONG> Downstream systems can receive updates asynchronously</LI></UL><P><STRONG>Pattern recognition:</STRONG> If the user doesn't need the result to proceed with their next action, it's probably an async candidate.</P><P> </P><H2 id="toc-hId-806243698">When Synchronous IS the Right Choice</H2><P>Not everything should be asynchronous. Synchronous is correct when:</P><UL><LI><STRONG>Immediate validation required:</STRONG> Credit limit check before order submission</LI><LI><STRONG>Transactional integrity:</STRONG> Operations that must succeed or fail together atomically</LI><LI><STRONG>User expects immediate result:</STRONG> Price calculation, inventory availability check</LI><LI><STRONG>Fast, stable operations:</STRONG> Reference data lookups from highly available systems</LI></UL><TABLE border="1" cellpadding="10"><TBODY><TR><TD><STRONG><span class="lia-unicode-emoji" title=":warning:">⚠️</span></STRONG>These scenarios are <STRONG>narrower than our habits suggest</STRONG>. Many integrations default to sync out of caution, not requirement.</TD></TR></TBODY></TABLE><P> </P><H2 id="toc-hId-609730193">The Hidden Costs</H2><P><STRONG>Simple to understand ≠ simple to operate reliably at scale.</STRONG></P><P>What works smoothly in development often becomes problematic in production:</P><TABLE border="1" cellpadding="8"><TBODY><TR><TD><STRONG>Aspect</STRONG></TD><TD><STRONG>Synchronous Costs</STRONG></TD><TD><STRONG>Asynchronous Costs</STRONG></TD></TR><TR><TD><STRONG>User Impact</STRONG></TD><TD>User-facing failures, slow performance, downtime</TD><TD>Delayed feedback, eventual consistency</TD></TR><TR><TD><STRONG>Operational</STRONG></TD><TD>Cascading failures, availability coupling</TD><TD>Queue monitoring, message tracking</TD></TR><TR><TD><STRONG>Development</STRONG></TD><TD>Faster initially, harder to scale later</TD><TD>Slower initially, easier to scale later</TD></TR><TR><TD><STRONG>Debugging</STRONG></TD><TD>Simpler traces, immediate errors</TD><TD>Distributed traces, correlation needed</TD></TR><TR><TD><STRONG>Resilience</STRONG></TD><TD>Manual recovery, lost messages</TD><TD>Automatic retry, guaranteed delivery</TD></TR></TBODY></TABLE><P>For <STRONG>point-to-point integrations where users don't need immediate completion</STRONG>, async costs are typically more manageable than sync costs at scale.</P><TABLE border="1" cellpadding="10"><TBODY><TR><TD><STRONG><span class="lia-unicode-emoji" title=":warning:">⚠️</span></STRONG>Async without ops discipline and organisational maturity can be worse than sync (read part 2 & 3 to get more details). This series assumes production-grade operations, not ad-hoc integration development. Async-first is not a technical preference - it's an organizational maturity decision.</TD></TR></TBODY></TABLE><P> </P><H2 id="toc-hId-413216688">A Practical Decision Framework</H2><P>Instead of defaulting to sync, use this framework:</P><H3 id="toc-hId-345785902">Question 1: Can the user/system proceed without waiting?</H3><UL><LI><STRONG>YES →</STRONG> Strong async candidate → Go to Q2</LI><LI><STRONG>NO →</STRONG> Likely sync → Validate with Q3</LI></UL><H3 id="toc-hId-149272397">Question 2: Is this high-volume OR could backend be slow/unavailable?</H3><UL><LI><STRONG>YES →</STRONG> Async strongly recommended (resilience + scalability)</LI><LI><STRONG>NO →</STRONG> Async still beneficial for decoupling, but lower urgency</LI></UL><H3 id="toc-hId--122472477">Question 3: What specific part of the result does the caller actually need?</H3><UL><LI><STRONG>Just acknowledgment ("we got it") →</STRONG> Async</LI><LI><STRONG>Business validation only →</STRONG> Consider hybrid (validate sync, process async)</LI><LI><STRONG>Complete result with details →</STRONG> Likely sync</LI></UL><P> </P><H2 id="toc-hId--25582975">A Note on Advanced Hybrid Patterns</H2><P>Modern high-scale platforms (Amazon, Shopify, Uber) use sophisticated hybrid patterns that combine synchronous and asynchronous processing:</P><UL><LI><STRONG>Synchronous:</STRONG> Critical validations (inventory, pricing, payment authorization)</LI><LI><STRONG>Asynchronous:</STRONG> Backend processing (ERP order creation, warehouse notification, analytics)</LI></UL><P>This gives users instant feedback on what matters (order accepted, payment confirmed) while backend processing happens reliably in background.</P><P><STRONG>However,</STRONG> implementing these patterns requires significant infrastructure:</P><UL><LI>Local staging/tracking databases</LI><LI>Dual numbering schemes (platform ID vs. SAP document number)</LI><LI>Order lifecycle management</LI><LI>Reconciliation processes</LI><LI>Status synchronization workflows</LI></UL><P>These patterns are powerful but complex. For this introduction, we focus on <STRONG>clear-cut async scenarios</STRONG> that don't require hybrid complexity.</P><TABLE border="1" cellpadding="10"><TBODY><TR><TD><STRONG><span class="lia-unicode-emoji" title=":warning:">⚠️</span></STRONG>Hybrid patterns deserve their own detailed discussion. The key learning here is that "synchronous vs. asynchronous" isn't always binary - you can decompose processes to identify which parts truly need to be synchronous.</TD></TR></TBODY></TABLE><P> </P><H2 id="toc-hId--222096480">Architect's Note: Even Synchronous Can Be Loosely Coupled</H2><P>An interesting nuance: even synchronous communication can achieve <STRONG>significant decoupling</STRONG> when routed through middleware layers rather than direct point-to-point calls.</P><P>When sender systems connect to receivers through <STRONG>CI, API Management, or SAP Open Connectors</STRONG>, these intermediary layers provide important benefits:</P><UL><LI><STRONG>Message structure mapping, format conversion:</STRONG> Most visible role of middleware</LI><LI><STRONG>Protocol translation:</STRONG> Sender doesn't know receiver's protocol</LI><LI><STRONG>Version management:</STRONG> Changes to receiver API don't break sender</LI><LI><STRONG>Rate limiting:</STRONG> Protection from burst traffic</LI><LI><STRONG>Security layers:</STRONG> Authentication/authorization centralized</LI><LI><STRONG>Routing flexibility:</STRONG> Redirect to different endpoints without sender changes</LI></UL><P>This provides <STRONG>looser coupling than direct integration</STRONG>, even in synchronous mode.</P><H3 id="toc-hId--712012992">Synchronous Patterns with some Async Benefits</H3><P>With some adapters we can achieve <STRONG>higher decoupling</STRONG>:</P><P><STRONG>CI HTTP Adapter with Retry:</STRONG></P><UL><LI>✓ Automatic retry on receiver failures (HTTP errors configurable, up to 3 attempts)</LI><LI>⚠ Very limited compared to JMS possibilities (for details check part 2 and 3)</LI></UL><P><STRONG>CI SuccessFactors OData V2 adapter with Retry:</STRONG></P><UL><LI>✓ Automatic retry on receiver failures (5 retries, 3 min intervals)</LI><LI>⚠ Fixed settings (only HTTP 429, 502, 504 errors)</LI></UL><P><STRONG>Bottom line:</STRONG> Middleware-mediated synchronous is better than direct synchronous. Patterns like HTTP adapter retry can achieve some Async decoupling. But for point-to-point integrations where users don't need immediate response, <STRONG>full async with JMS</STRONG> provides the most mature operational model with guaranteed delivery, sophisticated retry, and production-grade monitoring.</P><P> </P><H2 id="toc-hId--615123490">Conclusion: Rethinking the Default</H2><P>The goal of this article isn't to convince you that "everything should be async." That would be as dogmatic as "everything should be sync."</P><P>The goal is to challenge the <STRONG>unexamined default</STRONG> toward synchronous patterns.</P><P><STRONG>Key takeaways:</STRONG></P><OL><LI>Many integrations are synchronous <STRONG>out of habit, not requirement</STRONG></LI><LI>Scenarios like <STRONG>master data sync, archival, and notifications should almost never be synchronous</STRONG></LI><LI>Synchronous is correct when <STRONG>user must wait for specific result to proceed</STRONG></LI><LI>Ask: <STRONG>"What specifically requires the caller to wait?"</STRONG> - the answer is often "nothing"</LI><LI>Async has costs (monitoring, correlation, complexity) that are often more manageable at scale</LI><LI>Choose based on business requirements and operational model, not convenience</LI></OL><P>Decoupling isn't just a technical choice; it's a <STRONG>customer experience strategy</STRONG> and a <STRONG>business continuity decision</STRONG>.</P><P>But simply switching to async SOAP or other non-blocking adapters isn't enough to guarantee delivery. As we'll discover in Part 2, there's an uncomfortable truth many integration consultants overlook...</P><P> </P><TABLE border="1" cellpadding="10"><TBODY><TR><TD><STRONG>Coming up in <A href="https://community.sap.com/t5/integration-blog-posts/jms-mastery-series-part-2-the-jms-revolution/ba-p/14319644" target="_blank">Part 2: The JMS Revolution</A></STRONG><BR /><BR />We've identified why synchronous defaults hold us back and which scenarios clearly benefit from async. But here's the critical gap: <STRONG>Asynchronous ≠ Guaranteed Delivery</STRONG>.<BR /><BR />In Part 2, we'll discover why non-blocking adapters alone aren't enough. I'll show you why <STRONG>JMS is the game-changer</STRONG> that transforms SAP CI from a web service mediator into a reliable message broker, and how Quality of Service levels (EO, EOIO) actually work in production.</TD></TR></TBODY></TABLE>2026-02-06T10:32:09.582000+01:00https://community.sap.com/t5/integration-blog-posts/jms-mastery-series-part-3-jms-in-production/ba-p/14300416JMS Mastery Series Part 3 - JMS in Production2026-02-06T10:57:49.669000+01:00MateuszPiotrowskihttps://community.sap.com/t5/user/viewprofilepage/user-id/1161523<H1 id="toc-hId-1658534762">JMS in Production: Best Practices, Limitations, and When to Use Event Broker</H1><P>Confessions of a JMS Advocate (Part 3 of 3)</P><TABLE border="1" cellpadding="10"><TBODY><TR><TD><STRONG>Recap from <A href="https://community.sap.com/t5/integration-blog-posts/jms-mastery-series-part-1-the-async-awakening/ba-p/14319670" target="_blank">Part 1</A> & <A href="https://community.sap.com/t5/integration-blog-posts/jms-mastery-series-part-2-the-jms-revolution/ba-p/14319644" target="_blank">Part 2</A>:</STRONG> We challenged the synchronous default (Part 1) and discovered that JMS transforms non-blocking behavior into true guaranteed delivery through persistence, retries, and Quality of Service levels (Part 2). Now we address the practical realities: limitations, best practices, and when Event Broker is the better choice.</TD></TR></TBODY></TABLE><P> </P><H2 id="toc-hId-1591103976">Considerations and Limitations</H2><P><STRONG>Is JMS perfect for all use cases?</STRONG> Of course, not.</P><H3 id="toc-hId-1523673190">Queue Limits</H3><P><A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/jms-resource-limits-and-optimizing-their-usage" target="_blank" rel="noopener noreferrer">SAP Help: JMS Resource Limits and Optimizing Their Usage</A></P><UL><LI>Default tenant limit: 30 JMS queues</LI><LI>Easily increased to 100 (self-service)</LI><LI>Above 100 via SAP ticket (with valid justification)</LI></UL><P>Is this a serious limitation? If you're enthusiastic about asynchronous interfaces like me, possibly. However:</P><UL><LI>You can share the same queue across multiple interfaces (group them by Sender, Receiver, business domain etc)</LI><LI>For PI migrations, leverage the Pipeline concept to optimize queue management by reusing a minimal set of queues across all asynchronous integrations. Using Integrated Async Processing results in 2 active queues and 2 corresponding DLQs - keeping the total at a bare minimum of 4 queues.</LI></UL><P><BR />Other limits are generous and should not require workarounds:</P><UL><LI>Default 90-day, maximum 180-day retention period. However note that JMS is <STRONG>transient</STRONG> storage, do not treat it like a database!</LI><LI>9.3 GB storage size (in addition to the 32 GB tenant database), expandable to 30 GB</LI></UL><TABLE border="1" cellpadding="10"><TBODY><TR><TD><span class="lia-unicode-emoji" title=":warning:">⚠️</span>While the theoretical maximum message size is very high (1280 MB - 256 × 5 MB chunks), pushing large attachments (e.g. 20MB+ PDFs) into JMS is an architectural anti-pattern. If a high-volume interface with large payloads hits a downstream bottleneck over a weekend, it can exhaust the entire storage pool (and memory during serialization). The result is catastrophic: every other JMS-based interface on your tenant will fail.<BR /><BR /><STRONG>The Expert's Recipe</STRONG>: Implement the Claim Check pattern (store large files in an Object Store/DMS and pass only the reference via JMS) and/or enforce strict payload size validation at the sender adapter to reject oversized requests. Implement monitoring alerts in CALM to check storage capacity.</TD></TR></TBODY></TABLE><H3 id="toc-hId-1327159685">Dead Letter Queue Handling</H3><P>I highly recommend using DataStore for DLQ management - you have complete control over automatic retry frequency via Timer steps (beyond manual retry).</P><P>However, for standard retry scenarios, JMS is superior and much more performant than DataStore (which is a database, not designed for high-throughput messaging).</P><H3 id="toc-hId-1130646180">API Operations</H3><P>No OData APIs for operations on JMS queue / queue messages (unlike for DataStore / DataStore entries). This prevents operating on JMS from external applications (beside access from Iflow)</P><P> </P><H2 id="toc-hId-805049956">Best Practices and Recommendations</H2><H3 id="toc-hId-737619170">Common Misconception: Exception Subprocess Pattern</H3><P>I frequently see developers using JMS receiver adapter in the Exception subprocess to retry failed messages. Is this correct?<BR />For error handling purpose only: Definitely Yes.<BR />For asynchronous processing: No - the sender still waits for complete iFlow execution</P><H3 id="toc-hId-541105665">Keep Initial iFlow Simple</H3><P>Keep the "decoupling" sender iFlow (sender adapter + JMS receiver adapter) as simple as possible.</P><P>While you can add steps to save headers, properties, or log messages for audit purposes, be cautious: each additional step increases the risk of failure before the message is safely queued - which would then require exception handling or sender retries (if possible). This essentially defeats the purpose of decoupling. Also remember that your sender must wait through every step before receiving acknowledgment.</P><H3 id="toc-hId-344592160">Queue Architecture for Complex Flows</H3><P>How many queues for a long, complex flow?</P><P>For resource-intensive logic, split your iFlow with multiple JMS queues. Then each iFlow does ONE thing well and:</P><UL><LI>Reuse is natural</LI><LI>Failures are isolated</LI><LI>Monitoring is crystal clear (which stage failed?)</LI><LI>Reprocessing is surgical (restart from the failed stage)</LI></UL><P><STRONG>But balance it:</STRONG> Consider the JMS queue limit constraint.</P><H3 id="toc-hId-148078655">Retry Strategy</H3><P>Retry only temporary errors, not permanent ones (requires careful assessment):</P><UL><LI><STRONG>Temporary:</STRONG> Connectivity issues, receiver unavailability, timeouts</LI><LI><STRONG>Permanent:</STRONG> Invalid data, validation failures, business rule violations, authentication/authorization issues</LI></UL><P><STRONG>No universal rule exists</STRONG> for categorizing errors - it depends on receiver implementation.</P><P><STRONG>My personal opinion:</STRONG> In most cases better to retry unnecessarily than fail and ask the sender to reprocess. Initially configure data errors you're certain should not retry (e.g. HTTP 400, 403, 405 or internal errors within iFlow coming from mapping, groovy script logic etc). Everything else triggers retry. After gaining operational experience, add other permanent errors to externalized parameters for filtering.</P><P><STRONG>Remark:</STRONG> Not all data errors are permanent. Some can be resolved on the receiver side, such as:</P><UL><LI>Missing master data that may be created shortly</LI><LI>Configuration issues that can be corrected</LI></UL><P>Unlike errors caused by invalid sender data, these are suitable for retry. Determine whether your integration scenario includes such recoverable errors and configure your retry strategy accordingly.</P><H3 id="toc-hId--123666219">Retry configuration best practices</H3><UL><LI>Retry only a few times (never indefinitely)</LI><LI>Use short breaks (few minutes) with exponential backoff</LI></UL><P>Temporary issues often resolve quickly. If not, move messages to DLQ (designed for longer pauses: hours or days) to handle extended receiver unavailability or data/configuration issues on Receiver side.</P><H3 id="toc-hId--320179724">Leverage Adapter-Level Retries</H3><P>Use retry capabilities of adapters (HTTP, SuccessFactors) <STRONG>in addition to</STRONG> JMS, never alone. Adapter features are limited and cannot replace JMS richness.</P><P>Think of it this way: When connectivity issues arise, let the adapter try first (HTTP: max 3 retries, no backoff configuration). If insufficient (more retries needed, undefined HTTP status), JMS catches it - messages always end up in queue or DLQ. You don't want to see Failed status too often or too quickly.</P><P> </P><H2 id="toc-hId--223290222">Event-Driven Architecture (EDA) vs. JMS</H2><P>Using JMS, we've built fully decoupled, resilient interfaces with guaranteed delivery. So why would we need Event Broker at all?</P><P><STRONG>Does EDA still provide benefits? Do we still need an Event Bus like Event Mesh or AEM?</STRONG></P><P>Yes, but for different reasons than you might think.</P><TABLE border="1" cellpadding="10"><TBODY><TR><TD><span class="lia-unicode-emoji" title=":warning:">⚠️</span>And let's be clear: "event-driven sounds impressive in architecture reviews" is not one of them. Neither is "it'll look good on my CV". Event Broker earns its place through actual technical advantages.</TD></TR></TBODY></TABLE><H3 id="toc-hId--713206734">When JMS Excels: Point-to-Point with CI Orchestration</H3><P>For <STRONG>point-to-point</STRONG> and async request-reply where a sender communicates with a single receiver, JMS is the ideal choice when CI already provides necessary mediation and orchestration beyond the basic routing and queueing capabilities of an event broker.</P><H3 id="toc-hId--909720239">When Event Broker Excels: Pub-Sub Patterns</H3><P>For <STRONG>Pub-Sub broadcasting through topics</STRONG> (Publish-Subscribe pattern: one sender, potentially many receivers), an Event Broker is always the correct choice.</P><P>Yes, you can technically replicate pub-sub in CI. You can successfully create a Recipient List pattern using dynamic routing to many receivers based on varied content (payload, headers/properties, HTTP path/query parameters...). For this, use Partner Directory and XSLTs while maintaining decoupled flows with independent queues per every receiver. Advantages: Partner Directory does not require redeployment, directly configurable on target tenant (no transport), therefore very flexible ... and dangerous tool.</P><P>Generally the question becomes: Better to force one tool (CI) to handle everything (doing pub-sub gymnastics) or use specialized tools for specific use cases (CI for mediation/orchestration, Event Broker for pub-sub)? If this isn't obvious, check ISA-M.</P><P><STRONG>EDA's decisive advantage:</STRONG> True decoupling through dynamic subscription. Receivers add themselves to topics without touching the middleware. This flexibility - not just guaranteed delivery - is what separates event-driven architectures from traditional message-oriented middleware.</P><H3 id="toc-hId--1106233744">The Gray Zone: Event Broker for Point-to-Point?</H3><P>Even for point-to-point, Event Broker can be the better choice when:</P><UL><LI><STRONG>Enterprise EDA strategy</STRONG> mandates routing all async through Event Broker for consistency</LI><LI><STRONG>No CI mediation needed</STRONG> (pure routing, minimal transformation)</LI><LI><STRONG>JMS limitations become constraining</STRONG></LI></UL><TABLE border="1" cellpadding="10"><TBODY><TR><TD><span class="lia-unicode-emoji" title=":warning:">⚠️</span>But stop cargo-culting Event Broker. 'It might become pub-sub!' is not architecture - it's hedging your bets with someone else's budget. Yes, requirements change. Yes, some point-to-point flows become pub-sub. But when only 1 in 10 integrations actually needs that second subscriber, deploying Event Broker for all 10 is waste. Design for today's reality, refactor for tomorrow's actuality. YAGNI applies to infrastructure too.</TD></TR></TBODY></TABLE><H3 id="toc-hId--1302747249">Cost Considerations</H3><P>For high-throughput interfaces, Event Brokers are more cost-effective, as they are charged by data volume (GB) rather than by egress like Integration Suite (charged per outbound messages).<BR />Note: Messages sent out through JMS receiver adapter are not considered as outbound messages because JMS adapter is internal adapter (like ProcessDirect) which makes usage of JMS "free of charge"</P><H3 id="toc-hId--1499260754">SAP S/4HANA Integration</H3><P>For utilizing standard S/4HANA events, Event Mesh with its CI AMQP adapter is the best match.</P><H3 id="toc-hId--1695774259">Advanced EDA Requirements</H3><P>For sophisticated EDA needs Advanced Event Mesh (AEM) is the answer</P><P>Example use cases:</P><UL><LI>Event streaming with replay capabilities (Kafka-like)</LI><LI>Request-reply with Reply-To destination for long running processes</LI><LI>Non-exclusive access type with partitioned queues for order ensurance and scalability</LI><LI>Direct point to point - direct messaging without persistent endpoint for performance over reliability</LI><LI>Persistent topic endpoint - as an alternative to queue endpoint, example use case: JMS durable subscribers</LI><LI>Very demanding high-volume integrations</LI></UL><P> </P><H2 id="toc-hId--1598884757">JMS: The King of CI Workflow Async Processing</H2><P><STRONG>Central thesis:</STRONG> JMS is the king of <STRONG>point-to-point async processing within CI workflows</STRONG>. This single adapter - available freely in all CI editions (except Basic) - converts synchronous flows into fully decoupled, reliable processing when CI provides necessary mediation and/or orchestration.</P><P>This single adapter brings CI close to PI/PO in decoupling capabilities. While PI provides these qualities through configuration, CI achieves them through BPMN freestyle design - a respected successor with modern look and feel.</P><P><STRONG>Stop treating SAP CI only as a web service mediator and orchestrator. With its built-in JMS message broker, CI supports high-throughput, reliable, asynchronous messaging</STRONG></P><P>But recognize its domain: JMS excels at async processing <STRONG>within CI's orchestration scope</STRONG>. For pub-sub patterns and enterprise-wide event distribution, Event Broker wears the crown.</P><P><STRONG>Know which kingdom you're in:</STRONG></P><UL><LI><STRONG>Point-to-point with CI mediation/orchestration:</STRONG> JMS is king</LI><LI><STRONG>Pub-sub and enterprise EDA:</STRONG> Event Broker is king</LI><LI><STRONG>Both exist in healthy integration landscapes</STRONG></LI></UL><P> </P><H2 id="toc-hId--1627214571">Final Thoughts</H2><P>Many colleagues argue that synchronous interfaces are superior because the sender quickly learns operation results - nothing remains on the middleware side, clean hands for us. This is true if our goal is to minimize responsibility and simplify our lives short-term.</P><P>When considering what's best for the project and customer overall:</P><P><STRONG>For point-to-point integrations with CI orchestration:</STRONG> Incorporate "ASYNC-first" and "JMS-first" alongside "API-first."</P><P><STRONG>For business events and pub-sub patterns:</STRONG> Embrace "EDA-first" with Event Broker from day one.</P><P><STRONG>These aren't competing philosophies - they're complementary patterns for different integration scenarios.</STRONG> Master both. Use each where it excels.</P><P> </P><H2 id="toc-hId--1823728076">Share your thoughts</H2><P>What are your experiences with JMS and asynchronous processing? I'd love to hear your stories and challenges in the comments below.</P><P>If I missed something important or you do not agree - feel free to comment as well, happy to discuss <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P>2026-02-06T10:57:49.669000+01:00https://community.sap.com/t5/integration-blog-posts/announcement-register-to-the-new-cei-project-for-sap-integration-suite-in/ba-p/14321718Announcement: Register to the new CEI project for SAP Integration Suite in 20262026-02-09T08:33:34.010000+01:00alex_bundschuhhttps://community.sap.com/t5/user/viewprofilepage/user-id/45178<P>Like in the previous years, we will run a <STRONG>Global Customer Engagement Initiative (CEI) for SAP Integration Suite</STRONG> also in 2026.</P><P>Last year, we had 180+ registered customers and partners from over 20 countries worldwide. We ran multiple feedback sessions covering various capabilities and strategic investment topics of SAP Integration Suite such as "SAP Process Orchestration move" (ABAP proxy generation, mass migration, migration assessment, migration agent, etc.), AI & gen AI in the context of SAP Integration Suite in general and for B2B in particular, monitoring and operations, new adapters and adapter enhancements, reusable APIs and governance of API key access, event driven architecture, etc.</P><P>In 2026, we will continue collaborating with our customers and partners to gather feedback on product improvements, enhancements and new developments to validate the planned enhancements at an early stage, and ensuring that what we build will meet your business needs.</P><P>This will include open discussion about our current product backlog from the <A href="https://roadmaps.sap.com/board?PRODUCT=000D3A47875C1EDB98A8A910864AC24B" target="_blank" rel="noopener noreferrer">roadmap explorer</A> as well as addressing pain points and topics that we collected in last year's CEI project such as more on Edge Integration Cell, AI, SAP PI/PO to SAP Integration Suite migration, Event Driven Architecture, ISA-M, best practices and guidelines, developer experience, etc. </P><P data-unlink="true">If you like to join the upcoming SAP Integration Suite influence project for providing feedback and shaping the SAP Integration Suite product, please<SPAN> </SPAN><A href="https://influence.sap.com/sap/ino/#campaign/4124" target="_blank" rel="noopener noreferrer">register here</A><SPAN> (link leads to the </SPAN>customer influence page).</P><P><STRONG>Registration is open from 9th of February 2026 until 13th of March 2026.</STRONG></P><P>Once, the registration closes, we will invite you for an initial call where we go through the scope and the prerequisites of the feedback project. This will be around end of March/ begin of April so that we are able to start the project latest in April this year.</P><P>We will run monthly feedback sessions through the end of the year and hold a closing call to summarize our learnings, review the feedback collected, and discuss next steps.</P><P>Register today to ensure you do not miss this opportunity to influence and contribute to shaping <STRONG>SAP Integration Suite</STRONG> to meet your business needs. </P><P>We look forward to your active participation and valuable feedback.</P><P> </P>2026-02-09T08:33:34.010000+01:00https://community.sap.com/t5/sap-for-oil-gas-and-energy-blog-posts/joule-is-not-a-chatbot-how-ai-agents-on-sap-btp-help-north-american/ba-p/14307664Joule Is Not a Chatbot: How AI Agents on SAP BTP Help North American Utilities Reduce Risk2026-02-09T10:02:41.303000+01:00Atul_Joshi85https://community.sap.com/t5/user/viewprofilepage/user-id/2274193<H2 id="toc-hId-1787828093"> </H2><H1 id="toc-hId-1462231869">Joule Is Not a Chatbot: How AI Agents on SAP BTP Help North American Utilities Reduce Risk</H1><P><STRONG> </STRONG></P><H2 id="toc-hId-1394801083">Introduction: The Misunderstanding That Holds Utilities Back</H2><P>Across North America, utilities are under pressure to modernize customer experience while reducing operational risk. When SAP introduced Joule, many utility teams assumed it was “just another chatbot.” It isn’t.</P><P>Joule is an <STRONG>AI agent framework</STRONG> that understands business context, triggers governed processes and interacts with SAP systems safely — something a traditional chatbot cannot do.</P><P>Utilities don’t need another conversational interface. They need <STRONG>intelligent agents that reduce risk, automate decisions, and protect the clean core</STRONG>.</P><P>This is where the <STRONG>SAP BTP AI Foundation</STRONG> becomes the strategic control plane, allowing utilities to innovate without modifying their S/4HANA or IS-U core—preserving a <STRONG>Clean Core</STRONG> while delivering cutting-edge automation.</P><H2 id="toc-hId-1198287578"><span class="lia-unicode-emoji" title=":star:">⭐</span>Why Joule Is More Than a Chatbot</H2><P>During my learning journey with Joule, one misconception stood out immediately: many people assume Joule is “just another chatbot.” But when you look at how it works on SAP BTP, it becomes clear that Joule is fundamentally different.</P><P>A chatbot answers questions. A Joule Agent acts.</P><OL><LI><STRONG>Intent Detection:</STRONG> Unlike a chatbot that triggers keywords, Joule identifies a utility consumer's true intent (e.g., a "high bill" might actually be a "meter dispute").</LI><LI><STRONG>Policy Enforcement:</STRONG> Joule checks <STRONG>SAP BTP Business Rules</STRONG> before any transaction occurs.</LI><LI><STRONG>Action-Oriented:</STRONG> It initiates the <STRONG>SAP Build Process Automation</STRONG> workflow directly.</LI><LI><STRONG>Reliable (RAG):</STRONG> Joule leverages <STRONG>Retrieval-Augmented Generation</STRONG> via the <STRONG>SAP HANA Cloud Vector Engine</STRONG> to provide answers grounded in actual utility regulatory manuals, eliminating hallucinations.</LI><LI><STRONG>Responsible:</STRONG> Every action follows SAP BTP’s security framework, ensuring PII is masked and every interaction is auditable.</LI></OL><P>In regulated industries like utilities, this shift from conversational assistance to policy-driven automation is significant. It’s not about chatting — it’s about operational discipline.</P><H2 id="toc-hId-1001774073"><span class="lia-unicode-emoji" title=":star:">⭐</span>The Real Problem: Utilities Don’t Need Chatbots — They Need Governance</H2><P>Most utilities already experimented with chatbots. The results were predictable:</P><UL><LI>Inconsistent answers</LI><LI>No integration with IS‑U</LI><LI>No audit trail</LI><LI>No process governance</LI><LI>High risk of incorrect customer commitments</LI></UL><P>A chatbot can <EM>talk</EM>. An AI agent can <EM>act</EM> — safely, consistently, and with full traceability.</P><P>That difference is everything.</P><H2 id="toc-hId-805260568"><span class="lia-unicode-emoji" title=":star:">⭐</span>A Reference Architecture Use-Case</H2><P>A large North American utility was struggling with high operational risk in its customer contact center. Agents were making inconsistent decisions about:</P><UL><LI>High‑bill disputes</LI><LI>Move‑in/move‑out exceptions</LI><LI>Meter investigation requests</LI><LI>Payment arrangement eligibility</LI></UL><P>The utility deployed <STRONG>Joule AI agents on SAP BTP</STRONG>, connected to IS‑U through Integration Suite.</P><P><SPAN>Based on scenario modelling and validated utility process patterns, this agent‑orchestrated design is expected to:</SPAN></P><OL><LI><P><SPAN> reduce manual exceptions by ~35%, and</SPAN></P></LI><LI><P><SPAN> improve billing accuracy by ~18%. These are directional estimates, not production KPIs.</SPAN></P></LI></OL><P>This is the difference between a chatbot and an AI agent.</P><P> </P><H2 id="toc-hId-608747063"><span class="lia-unicode-emoji" title=":star:">⭐</span>Architecture: How AI Agents Actually Work in a Utility Landscape</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Atul_Joshi85_0-1771215585522.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372884i9BC27C371F409A35/image-size/medium/is-moderation-mode/true?v=v2&px=400" role="button" title="Atul_Joshi85_0-1771215585522.png" alt="Atul_Joshi85_0-1771215585522.png" /></span></P><P>The architecture relies on the <STRONG>SAP BTP AI Foundation</STRONG>. Joule acts as the orchestration layer, while <STRONG>SAP Integration Suite</STRONG> serves as the governed gateway to the IS-U backend. By utilizing <STRONG>SAP Build Process Automation</STRONG>, we ensure that the AI agent never executes a 'Write' command directly to the ERP; instead, it triggers a governed workflow that includes <STRONG>Human-in-the-Loop</STRONG> approval for high-risk billing adjustments.</P><H2 id="toc-hId-412233558"><span class="lia-unicode-emoji" title=":star:">⭐</span>How It Works: The 5‑Step AI Agent Flow</H2><P>1. <U><STRONG>Intent Identification:</STRONG></U> Joule receives a request and identifies the underlying business need.</P><P>2. <U> <STRONG>Policy Check:</STRONG></U> The agent checks eligibility and risk flags against business rules.</P><P>3. <U><STRONG>Workflow Trigger:</STRONG></U> SAP BTP initiates a governed workflow via SAP Build.</P><P>4. <U><STRONG>Human-in-the-Loop Validation:</STRONG></U> High-value billing exceptions are routed to a supervisor’s 'My Inbox' for final sign-off.</P><P>5. <U><STRONG>Clean Core Integration:</STRONG></U> Integration Suite updates IS-U (Billing, FICA, or Device Management) via OData APIs, keeping the core clean.</P><P>This is what separates a <STRONG>safe enterprise AI agent</STRONG> from a <STRONG>generic chatbot</STRONG>.</P><H2 id="toc-hId-215720053"><span class="lia-unicode-emoji" title=":star:">⭐</span>Why This Matters for Utilities</H2><P>Utilities operate in a world where:</P><UL><LI>Every customer interaction is regulated</LI><LI>Every billing decision must be auditable</LI><LI>Every exception has financial impact</LI><LI>Every process must protect the clean core</LI></UL><P>AI agents on SAP BTP give utilities:</P><UL><LI><STRONG>Governed automation</STRONG></LI><LI><STRONG>Consistent decisions</STRONG></LI><LI><STRONG>Reduced operational risk</STRONG></LI><LI><STRONG>Faster customer resolution</STRONG></LI><LI><STRONG>A clean core that stays clean</STRONG></LI></UL><P>This is not hype — it’s a practical modernization path.</P><H2 id="toc-hId-19206548"><span class="lia-unicode-emoji" title=":star:">⭐</span>Key Takeaways</H2><UL><LI><STRONG>Governed Framework: Joule is an agent, not a chatbot.</STRONG></LI><LI><STRONG>SAP BTP is the control center, ensuring safe, auditassssble and compliant actions.</STRONG></LI><LI><STRONG>Utilities reduce risk</STRONG> by routing all decisions through workflows and rules.</LI><LI><STRONG>Integration Suite protects the clean core by using OData/API-led connectivity instead of legacy 'Z' enhancements.</STRONG></LI><LI><STRONG>AI agents deliver measurable impact</STRONG>: fewer exceptions, faster resolution, higher accuracy.</LI><LI><STRONG>Rapid ROI:</STRONG> Leveraging pre-built <STRONG>SAP Discovery Center missions</STRONG> for Joule allows utilities to move from pilot to production in under 90 days.</LI></UL><H2 id="toc-hId-169947400"><span class="lia-unicode-emoji" title=":star:">⭐</span>Conclusion: The Future of Utility Modernization Is Agent‑Driven</H2><P>Utilities don’t need conversational gimmicks. They need <STRONG>AI agents that understand processes, enforce rules, and reduce risk</STRONG>.</P><H2 id="toc-hId--26566105">Joule + SAP BTP delivers exactly that.</H2><P>This is the next evolution of utility modernization — and it’s already happening across North America.</P>2026-02-09T10:02:41.303000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/unlock-s-4hana-cloud-secrets-hybrid-events-apis-strategy-for-seamless-btp/ba-p/14326758Unlock S/4HANA Cloud Secrets: Hybrid Events+APIs Strategy for Seamless BTP Data Flows2026-02-12T01:30:35.487000+01:00tamitdassharmahttps://community.sap.com/t5/user/viewprofilepage/user-id/153763<H2 id="toc-hId-1789646278">Strategic Financial Data Extraction from SAP S/4HANA Cloud Public Edition to SAP BTP</H2><H4 id="toc-hId-1851298211">Using Transfer Pricing as a Real-World Example</H4><P>Transfer pricing represents a perfect use case to demonstrate <STRONG>generic financial data extraction strategies</STRONG> from SAP S/4HANA Cloud Public Edition. Multinational organisations need GL, Controlling, Material Ledger, and Asset Accounting postings to flow reliably to external engines hosted on SAP BTP—but Public Cloud’s “no direct database access” constraint demands architecturally sound patterns.</P><H3 id="toc-hId-1525701987">Why Transfer Pricing Perfectly Illustrates the Challenge</H3><P><STRONG>The business need</STRONG>: Calculate inter-company markups (cost-plus, resale-minus) using real-time ACDOCA postings across multiple currencies, profit centres, and cost elements.<BR /><STRONG>The constraint</STRONG>: Pure cloud extensibility—no RFCs, no custom ABAP, no direct table extracts. <BR /><STRONG>The solution:</STRONG> Three proven patterns that work for any financial data integration scenario.</P><H3 id="toc-hId-1329188482">Pattern 1: Event Notifications (Real-Time Push Model)</H3><P><STRONG>How transfer pricing uses it</STRONG>: GL postings trigger automatic business event notifications routed through SAP Event Mesh to BTP applications.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Event Notification" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/371720i4CB6FC368836A2D3/image-size/large?v=v2&px=999" role="button" title=" - visual selection-3.png" alt="Event Notification" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Event Notification</span></span></P><P><SPAN><STRONG>Generic applicability</STRONG>: Works for any posting-driven process—revenue recognition, inter-company reconciliation, compliance monitoring. </SPAN></P><DIV><STRONG>High-level activation</STRONG>:</DIV><OL><LI><SPAN><STRONG>Integration configuration apps</STRONG> → Activate accounting-related event notifications</SPAN></LI><LI><SPAN><STRONG>Communication scenarios</STRONG> → Configure outbound event destinations</SPAN></LI><LI><SPAN><STRONG>Event Mesh subscription</STRONG> → Point to BTP service endpoint</SPAN></LI><LI><SPAN><STRONG>Payload contains</STRONG>: Company codes, ledger amounts (local/group), profit centres, material valuations</SPAN></LI></OL><H3 id="toc-hId-1132674977">Pattern 2: Standard Query Services (Scheduled Pull Model)</H3><P><STRONG>How transfer pricing uses it</STRONG>: BTP service queries S/4HANA nightly for new/changed financial postings.</P><P> </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Query Service" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/371722iBABF11B5D5404615/image-size/large?v=v2&px=999" role="button" title=" - visual selection-4.png" alt="Query Service" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Query Service</span></span><STRONG><SPAN>Key services (release-dependent availability):</SPAN></STRONG></P><UL><LI><SPAN><STRONG>Financial line item services</STRONG> → GL/CO/ML/AA postings</SPAN></LI><LI><SPAN><STRONG>Profitability services</STRONG> → Margin analysis data</SPAN></LI><LI><SPAN><STRONG>Material valuation services</STRONG> → Cost component details</SPAN></LI></UL><P><STRONG>Generic applicability</STRONG>: Perfect for scheduled reconciliation, historical backfills, or validation runs.</P><H3 id="toc-hId-936161472">Pattern 3: Hybrid Extraction (Production Resilience)</H3><P>Transfer pricing demands 99.9% coverage. Smart architects layer all three patterns:</P><TABLE border="1" width="100%"><TBODY><TR><TD width="25%"><STRONG>Use Case</STRONG></TD><TD width="25%"><STRONG>Primary Pattern</STRONG></TD><TD width="25%"><STRONG>Transfer Pricing Example</STRONG></TD><TD width="25%"><STRONG>Generic Use</STRONG></TD></TR><TR><TD width="25%">Real-time GL postings</TD><TD width="25%">Event notifications</TD><TD width="25%">Invoice → immediate markup</TD><TD width="25%">Any posting trigger</TD></TR><TR><TD>Historical catch-up</TD><TD>Standard APIs</TD><TD>Month-end reconciliation</TD><TD>Data migration</TD></TR><TR><TD>Day 1 implementation</TD><TD>Bulk extraction</TD><TD>Full ACDOCA baseline</TD><TD>Initial loads</TD></TR><TR><TD>Custom calculations</TD><TD>BTP processing</TD><TD>Exception overrides</TD><TD>Business rules</TD></TR></TBODY></TABLE><P><STRONG> Three-tier reference flow:</STRONG></P><H4 id="toc-hId-868730686"><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hybrid Extraction" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/371723i0FA6EF631F99C2FE/image-size/large?v=v2&px=999" role="button" title=" - visual selection-5.png" alt="Hybrid Extraction" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Hybrid Extraction</span></span></STRONG><SPAN>BTP Implementation Patterns (Transfer Pricing Example)</SPAN></H4><H5 id="toc-hId-801299900"><SPAN>Cloud Application Programming Model (CAP)</SPAN></H5><pre class="lia-code-sample language-javascript"><code>service FinancialIntegration {
entity Postings as projection on external financial services;
entity PricingResults as projection on HANA staging;
}</code></pre><P><SPAN><STRONG> Pattern</STRONG>: Event handlers + scheduled queries → unified HANA staging → business rules.</SPAN></P><H5 id="toc-hId-604786395"><SPAN>ABAP RESTful Application Programming (RAP)</SPAN></H5><pre class="lia-code-sample language-abap"><code>define root view entity FinancialDataView
as select from standard financial services</code></pre><P><STRONG>Pattern</STRONG>: Analytical CDS views over external data → transactional services.</P><H4 id="toc-hId-279190171">Architect’s Production Checklist</H4><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span> Tenant validation: Test events/APIs in your specific S/4HANA Cloud environment<BR /><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span> Quota management: Monitor Event Mesh throughput + API rate limits<BR /><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span> Fallback design: API polling validates event stream completeness<BR /><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span> Quarterly readiness: SAP evolves event coverage and API fields continuously<BR /><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span> Pure cloud: Zero custom code in production S/4HANA</P><H4 id="toc-hId--415040429">The Universal Pattern</H4><DIV>Transfer pricing proves the strategy works for complex financial scenarios. The same architecture applies to:</DIV><UL><LI><SPAN>Inter-company reconciliation</SPAN></LI><LI><SPAN>Revenue recognition automation</SPAN></LI><LI><SPAN>Compliance reporting engines</SPAN></LI><LI><SPAN>Analytics data pipelines</SPAN></LI><LI><SPAN>Any standard data object/model driven process</SPAN></LI></UL><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Universal Pattern" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/371724i43222D4AB9F30955/image-size/large?v=v2&px=999" role="button" title=" - visual selection-6.png" alt="Universal Pattern" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Universal Pattern</span></span></SPAN><SPAN><STRONG>Key takeaway</STRONG>: This isn’t “just for transfer pricing”—it’s your reusable blueprint for any S/4HANA Cloud → BTP data integration. </SPAN></P>2026-02-12T01:30:35.487000+01:00https://community.sap.com/t5/integration-blog-posts/publish-events-from-cap-node-js-applications-to-event-mesh-of-integration/ba-p/14322210Publish events from CAP Node.js applications to Event Mesh of Integration Suite2026-02-13T05:19:07.232000+01:00qiangwan87https://community.sap.com/t5/user/viewprofilepage/user-id/152967<P><SPAN>In this blog I’ll show how to publish events from a CAP application to SAP Integration Suite’s Event Mesh. Both the CAP application and Event Mesh are located in the same BTP subaccount. I’ll skip the setup steps for Event Mesh and focus specifically on publishing events from the CAP application.</SPAN></P><P><SPAN><STRONG>Step 1</STRONG>: start by creating a new CAP Node.js application in Business Application Studio:</SPAN></P><pre class="lia-code-sample language-bash"><code>cds init emis-samebtp
touch srv/service.cds
touch srv/service.js</code></pre><P><STRONG>Step 2</STRONG>: in <STRONG>service.cds</STRONG>, define a simple service with a function that triggers an event:</P><pre class="lia-code-sample language-javascript"><code>service GreetingService {
function helloEvent(to: String) returns String;
}</code></pre><P>In <STRONG>service.js</STRONG>, implement the function to emit an event to Event Mesh:</P><pre class="lia-code-sample language-abap"><code>const eventTopic = 'cap/demo/v1/sample/hello-event';
module.exports = async (srv) => {
const messaging = await cds.connect.to('messaging');
srv.on('helloEvent', async (req) => {
const target = req.data.to;
const data = { To: target, Message: 'Hello world events!' };
await messaging.emit(eventTopic, data);
req.notify(`Event sent > ${eventTopic}`);
return `Hello event: ${target}`;
});
};</code></pre><P><SPAN><STRONG>Step 3</STRONG>: add the necessary services for authentication and messaging:</SPAN></P><pre class="lia-code-sample language-bash"><code>cds add xsuaa --for-production
cds add enterprise-messaging-shared --for-production</code></pre><P>Then update your <STRONG>package.json</STRONG> to configure the messaging service:</P><pre class="lia-code-sample language-javascript"><code>"cds": {
"server": { "index": true },
"requires": {
"[production]": {
"auth": "xsuaa",
"messaging": {
"kind": "enterprise-messaging-shared",
"publishPrefix": "stc/emis/",
"format": "cloudevents",
"vcap": {
"label": "event-mesh-message-client",
"plan": "message-client",
"name": "emis-samebtp-messaging"
}
}
}
}
}</code></pre><P><SPAN><STRONG>Step 4</STRONG>: generate the MTA deployment descriptor:</SPAN></P><pre class="lia-code-sample language-bash"><code>npm install
cds build --production
cds add mta</code></pre><P>Edit the generated <STRONG>mta.yaml</STRONG> to ensure the resource definitions match your <STRONG>package.json</STRONG> configuration.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mtayaml_packagejson.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369174i922131230F12A9D9/image-size/large?v=v2&px=999" role="button" title="mtayaml_packagejson.png" alt="mtayaml_packagejson.png" /></span></P><P><SPAN><STRONG>Step 5</STRONG>: run the build and deploy commands to push your application to BTP. </SPAN></P><pre class="lia-code-sample language-bash"><code>cds build
cf deploy mta_archives/your-archive.mtar</code></pre><P><STRONG>Step 6</STRONG>: Testing the Integration</P><P>Navigate to the Event Mesh section in SAP Integration Suite. Select a queue and subscribe to the topic "stc/emis/cap/demo/v1/sample/hello-event". </P><P>Then u<SPAN>se the OAuth client credentials from XSUAA to call your CAP service "<A target="_blank" rel="noopener">https://<your-hostname>:443/odata/v4/greeting/helloEvent?to=Mark"</A>.</SPAN></P><P><SPAN> If everything is configured correctly, you’ll receive a response and see the event appear in your Event Mesh queue.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="event-mesh_result.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369177iF36D926C551A2917/image-size/large?v=v2&px=999" role="button" title="event-mesh_result.png" alt="event-mesh_result.png" /></span></SPAN></P><P><SPAN>This setup is ideal for scenarios where you need real-time eventing between BTP applications and other SAP or non-SAP systems. Give it a try and let me know how it goes in the comments!</SPAN></P>2026-02-13T05:19:07.232000+01:00https://community.sap.com/t5/integration-blog-posts/receive-events-from-event-mesh-of-integration-suite-to-cap-node-js/ba-p/14322766Receive Events from Event Mesh of Integration Suite to CAP Node.js Applications2026-02-13T13:02:39.358000+01:00qiangwan87https://community.sap.com/t5/user/viewprofilepage/user-id/152967<P><SPAN>In a previous blog, we covered how to </SPAN><A href="https://community.sap.com/t5/integration-blog-posts/publish-events-from-cap-node-js-applications-to-event-mesh-of-integration/ba-p/14322210" target="_blank">publish events from a CAP application to Event Mesh of Integration Suite</A><SPAN>. This blog post is the natural counterpart. Here, we'll walk through the steps to configure a CAP Node.js application to </SPAN><STRONG><SPAN>consume and process events</SPAN></STRONG><SPAN> from the Event Mesh of SAP Integration Suite (often referred to as EMIS). Both the CAP application and Event Mesh are in the same BTP subaccount, but it also works if they are provisioned in different BTP subaccounts.</SPAN></P><P><SPAN>This guide skips the initial Event Mesh provisioning and focuses on the application development, configuration, and deployment steps for event consumption.</SPAN></P><P><SPAN><STRONG>Step 1</STRONG>: start by creating a new CAP Node.js application in Business Application Studio</SPAN></P><pre class="lia-code-sample language-bash"><code>cds init emis-consume
cd emis-consume
touch srv/consume-event.cds
touch srv/consume-event.js</code></pre><P> <STRONG>Step 2</STRONG>: Define the Service Handler in <STRONG>srv/consume-event.cds</STRONG></P><pre class="lia-code-sample language-javascript"><code>service ConsumeEvent @(path: '/consume-event') {
// Entity definitions are optional for a pure event consumer service
}</code></pre><P>Step 3: Define the event handling logic in <STRONG>srv/consume-event.js</STRONG></P><pre class="lia-code-sample language-javascript"><code>const cds = require('@sap/cds');
module.exports = cds.service.impl(async function () {
const messaging = await cds.connect.to('messaging');
// Handle events in "$namespace/hello-world" topic
await messaging.on('hello-world', (msg) => {
console.log('> hello-world event received: ', msg.data);
});
// Handle events in "$namespace/greeting" topic
await messaging.on('greeting', (msg) => {
console.log('> greeting event received: ', msg.data);
});
});</code></pre><P><STRONG>Step 4</STRONG>: add the necessary services for authentication and messaging:</P><pre class="lia-code-sample language-bash"><code>cds add xsuaa --for production
cds add enterprise-messaging-shared --for production</code></pre><P><SPAN>Then update your </SPAN><STRONG>package.json</STRONG><SPAN> to configure the messaging service:</SPAN></P><pre class="lia-code-sample language-json"><code>"cds": {
"requires": {
"production": {
"auth": "xsuaa",
"messaging": {
"kind": "enterprise-messaging-shared",
"publishPrefix": "$namespace/",
"subscribePrefix": "$namespace/",
"format": "cloudevents",
"vcap": {
"label": "user-provided",
"name": "emis-consume-messaging-ups"
},
"queue": {
"name": "$namespace/incoming"
}
}
}
}
}</code></pre><P><STRONG>Step 5</STRONG>: Prepare the MTA Deployment Descriptor</P><pre class="lia-code-sample language-bash"><code>npm install
cds build --production
cds add mta</code></pre><P>You must then edit the generated <STRONG>mta.yaml</STRONG> file to ensure the resource definitions match the configuration in <STRONG>package.json</STRONG>. Specifically, verify that the <STRONG>emis-consume-messaging</STRONG> resource points to the correct <STRONG>user-provided service</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mtayaml_packagejson2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369444i090075BEB74E22CE/image-size/large?v=v2&px=999" role="button" title="mtayaml_packagejson2.png" alt="mtayaml_packagejson2.png" /></span></P><P><STRONG>Step 6</STRONG>.<STRONG> Crucial Workaround: Mocking the Management Endpoint</STRONG></P><P>During deployment, cloud foundry runtime attempts to create the queue defined in package.json via a management URI provided by Event Mesh. Currently, this can fail with the error: "Requested route does not match any of the defined routes."</P><P><STRONG><SPAN>Workaround: </SPAN></STRONG></P><P>1). <SPAN>create event mesh service instance & key</SPAN></P><UL><LI><SPAN>service name: SAP Integration Suite, Event Mesh </SPAN></LI><LI><SPAN>service plan: message-client </SPAN></LI><LI><SPAN>name: emis-consume-messaging</SPAN></LI></UL><P><SPAN>With below parameters:</SPAN></P><pre class="lia-code-sample language-json"><code>{
"namespace": "stc/emis/consume",
"options": {
"management": false,
"messaging": false,
"messagingrest": false
},
"resources": {"units": 10},
"rules": {
"queueRules": {
"publishFilter": ["${namespace}/*"],
"subscribeFilter": ["${namespace}/*"]
},
"topicRules": {
"publishFilter": ["${namespace}/*"],
"subscribeFilter": ["${namespace}/*"]
}
}
}</code></pre><P><SPAN>Then create a service key and copy its value.</SPAN></P><P>2). Modify the service-key by replacing its management uri with a mock endpoint. The mockend endpoint should always return 201 when receiving PUT request, for example,</P><pre class="lia-code-sample language-bash"><code>PUT https://stc-mock.free.beeceptor.com/hub/rest/api/v1/management/messaging/queues/testqueue</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="srkey1.png" style="width: 812px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369449i9D546E3C4BE09136/image-size/large?v=v2&px=999" role="button" title="srkey1.png" alt="srkey1.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="srkey2.png" style="width: 809px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369450iBDC6AE684172AB29/image-size/large?v=v2&px=999" role="button" title="srkey2.png" alt="srkey2.png" /></span></P><P>3). Create a User-Provided Service in your Cloud Foundry space using this modified service key (emis-consume-messaging-ups). This is the service your CAP application will bind to.</P><P> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ups.png" style="width: 813px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369451iAD285CC9FD66B0AE/image-size/large?v=v2&px=999" role="button" title="ups.png" alt="ups.png" /></span></P><P>4). Login to Event Mesh of Integration Suite >> Configure, create the queue <STRONG>stc/emis/consume/incoming</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="queue.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369452i1FCA6B4C7688D477/image-size/large?v=v2&px=999" role="button" title="queue.png" alt="queue.png" /></span></STRONG></P><P>5). add below topic subscription to the queue</P><UL><LI>stc/emis/consume/hello-world</LI><LI>stc/emis/consume/greeting</LI></UL><P><SPAN>This configuration ensures any event published to these topics is delivered to your application's queue.</SPAN></P><P><SPAN><STRONG>Step 7</STRONG>: Build and Deploy</SPAN></P><pre class="lia-code-sample language-bash"><code>mbt build
cf deploy mta_archives/emis-consume_1.0.0.mtar</code></pre><P><STRONG>Step 8</STRONG>: Testing</P><P>Go to the Test section of your Event Mesh in the Integration Suite. Send test events to the topics hello-world and greeting. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="testing.png" style="width: 887px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369453i45EE44666E03FAAB/image-size/large?v=v2&px=999" role="button" title="testing.png" alt="testing.png" /></span></P><P>In the BTP cloud foundry cockpit, navigate to your deployed application and check its logs.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="test_result.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369454i7A3226F5D9583D74/image-size/large?v=v2&px=999" role="button" title="test_result.png" alt="test_result.png" /></span></P><P><SPAN>You have successfully configured a CAP Node.js application to act as an event consumer from Event Mesh of SAP Integration Suite. </SPAN><SPAN>Although we had to implement a workaround due to a current compatibility issue between CAP's queue management and Event Mesh's Management API, the overall pattern remains sound and functional. Hopefully, SAP will address this compatibility issue soon, making the developer journey even smoother.</SPAN></P>2026-02-13T13:02:39.358000+01:00https://community.sap.com/t5/technology-blog-posts-by-members/migrating-from-asanwee-to-asaaemee-from-sap-event-mesh-to-sap-advanced/ba-p/14327711Migrating from ASANWEE to ASAAEMEE: From SAP Event Mesh to SAP Advanced Event Mesh2026-02-13T13:26:20.613000+01:00Benedikt_Sprunghttps://community.sap.com/t5/user/viewprofilepage/user-id/661488<H2 id="toc-hId-1789675938">Introduction</H2><P>Event-driven architectures are increasingly shaping modern SAP landscapes. Many customers started their journey using the NetWeaver add-on for event enablement (component <STRONG>ASANWEE</STRONG>) to publish business events from their SAP systems to <SPAN class="">SAP Event Mesh</SPAN>.</P><P>While this setup works well for basic SAP BTP scenarios, growing enterprise requirements — such as hybrid integration, advanced routing, and high availability — often require a more powerful event broker.</P><P>This is where the Event Add-On for ERP (<STRONG>ASAAEMEE</STRONG>) in combination with <SPAN class="">SAP Advanced Event Mesh</SPAN> becomes highly relevant.</P><P>This article applies to:</P><UL><LI><P>SAP ERP (ECC 6.0 and higher)</P></LI><LI>SAP S/4HANA (on-premise, private cloud, all versions)</LI></UL><P>and explains the <STRONG>technical migration steps</STRONG> from component <STRONG>ASANWEE</STRONG> to <STRONG>ASAAEMEE</STRONG>.</P><P> </P><P><STRONG>Prerequisits:</STRONG></P><UL><LI><A href="https://help.sap.com/docs/SAP%20NetWeaver%20Add-On%20for%20Event%20enablement%201.0/e966e6c0e61443ebaa0270a4bae4b363/3eba827c531344eb879d8e35022d90ba.html?locale=enUS" target="_blank" rel="noopener noreferrer">NetWeaver Add-On for Event Enablement</A><SPAN> </SPAN>is installed (component <STRONG>ASANWEE</STRONG>).</LI><LI><A href="https://help.sap.com/docs/sap-integration-suite/event-add-on-for-erp-advanced-event-mesh/connect-advanced-event-mesh" target="_self" rel="noopener noreferrer">Event Add-on for ERP</A> is installed (component <STRONG>ASAAEMEE</STRONG>, installed on top of ASANWEE).</LI><LI>SAP Advanced Event Mesh service instance is provisioned.</LI><LI>Service Key from the BTP is available.</LI><LI>Ensure that the<SPAN> </SPAN><CODE>erp_event_add_on</CODE><SPAN> </SPAN>entitlement is added to your subaccount in the SAP BTP cockpit.</LI><LI>The SAP Integration Suite, Advanced Event Mesh instance must be of type<SPAN> </SPAN><STRONG>standard plan</STRONG>, not<SPAN> </SPAN><EM>default plan. </EM>For details on migrating to the standard service plan, refer to the<SPAN> </SPAN><A href="https://help.sap.com/docs/sap-integration-suite/advanced-event-mesh/migrating-to-standard-service-plan" target="_new" rel="noopener noreferrer">SAP Advanced Event Mesh migration guide</A>.</LI></UL><P> </P><P><STRONG>Migration Steps</STRONG></P><P><STRONG>Step 1: Create RFC-Destinations.</STRONG></P><P>To establish the connection to the SAP Advanced Event Mesh, we will create three RFC-Destinations in transaction SM59.</P><P>1. Create RFC-Destination pointing to the REST endpoint of the Advanced Event Mesh (Available inside the AEM broker).</P><UL><LI><P>Type: G (HTTP Connection to External Server).</P></LI><LI>Target Host: AEM REST endpoint host.</LI><LI>Basic Authentication: Add credentials, listed in the AEM broker for the REST endpoint.</LI><LI>SSL: Active.</LI><LI>Connection test should return in a 405 Method Not Allowed.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_4-1770972832198.png" style="width: 386px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372172i8B1986C869FBA4D2/image-dimensions/386x399?v=v2" width="386" height="399" role="button" title="Benedikt_Sprung_4-1770972832198.png" alt="Benedikt_Sprung_4-1770972832198.png" /></span> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_2-1770972771389.png" style="width: 389px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372170i53269A1ADF86E538/image-dimensions/389x399?v=v2" width="389" height="399" role="button" title="Benedikt_Sprung_2-1770972771389.png" alt="Benedikt_Sprung_2-1770972771389.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_3-1770972804286.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372171i075535153E8AED8B/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_3-1770972804286.png" alt="Benedikt_Sprung_3-1770972804286.png" /></span> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_5-1770972931446.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372173iF61CBE19782D97F5/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_5-1770972931446.png" alt="Benedikt_Sprung_5-1770972931446.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_1-1770973714514.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372183i087D7012F8FC6EB1/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_1-1770973714514.png" alt="Benedikt_Sprung_1-1770973714514.png" /></span></P><P>2. Create RFC-Destination for the Handshake (Available inside the SAP BTP Service Key).</P><UL><LI><P>Type: G</P></LI><LI>Target Host: Handshake URL from the SAP BTP Service Key</LI><LI>Path Prefix: /handshake</LI><LI>SSL: Active.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_6-1770973159410.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372175iBB862E68690B90B7/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_6-1770973159410.png" alt="Benedikt_Sprung_6-1770973159410.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_7-1770973206966.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372176i27DAFBF03EDBFA2B/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_7-1770973206966.png" alt="Benedikt_Sprung_7-1770973206966.png" /></span></P><P>3. Create RFC-Destination for the Token (Available inside the SAP BTP Service Key).</P><UL><LI><P>Type: G</P></LI><LI>Target Host: Token endpoint from Service Key</LI><LI>Path Prefix: /oauth/token</LI><LI>SSL: Active.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_8-1770973450412.png" style="width: 355px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372178i8DAD5B688D6AEAC9/image-dimensions/355x366?v=v2" width="355" height="366" role="button" title="Benedikt_Sprung_8-1770973450412.png" alt="Benedikt_Sprung_8-1770973450412.png" /></span> <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_9-1770973505589.png" style="width: 354px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372180iD90114D094A80E6B/image-dimensions/354x365?v=v2" width="354" height="365" role="button" title="Benedikt_Sprung_9-1770973505589.png" alt="Benedikt_Sprung_9-1770973505589.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_0-1770973660682.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372181iD245C00C582383D4/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_0-1770973660682.png" alt="Benedikt_Sprung_0-1770973660682.png" /></span></P><P> </P><P><STRONG>Step 2: Add Certificates to the Trust Store.</STRONG></P><P>To enable secure communication with <SPAN class=""><SPAN class="">SAP Advanced Event Mesh</SPAN></SPAN>, the server certificate must be trusted in your SAP system.</P><UL><LI>Open transaction <STRONG>STRUST.</STRONG></LI><LI>Select the SSL Client PSE that is used in the RFC destination created in SM59 (usually SSL Client (Anonymous) unless a specific PSE was assigned).</LI><LI>Click Import Certificate.</LI><LI>Upload the certificate file (.cer / .crt).</LI><LI>Click Add to Certificate List and save.</LI></UL><P> </P><P><STRONG>Step 3: Enable the Event Add-On for ERP.</STRONG></P><P>Inside your SAP Advanced Event Mesh, navigate to<SPAN> </SPAN><EM>Event Add-On for ERP.</EM></P><P>After enabling the service, the component can be installed on your SAP system.</P><DIV class=""> </DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_4-1770974115671.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372188i185719916BA69C86/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_4-1770974115671.png" alt="Benedikt_Sprung_4-1770974115671.png" /></span></P><P> </P><P><STRONG>Step 4: Activate BC-Set.</STRONG></P><P>Business Configuration Sets contain customizing and configuration-related table entries required for proper communication with <SPAN class=""><SPAN class="">SAP Advanced Event Mesh</SPAN></SPAN>.</P><P>Transaction: <STRONG>SCPR20</STRONG></P><UL><LI>Enter BC-Set name:<CODE><SPAN class="">/ASADEV/</SPAN><SPAN class="">ACI_BCSET_FRAMEWORK_AEM</SPAN></CODE></LI><LI>Choose <STRONG>Activate.</STRONG></LI></UL><P> </P><P><STRONG>Step 5: Copy Instance for SAP Event Mesh to new Instance for SAP Advanced Event Mesh.</STRONG></P><UL><LI>Go to SPRO -> IMG -> Integration with Other SAP Components -> SAP NetWeaver AddOn for Event enablement -> Connection and Replication Object Customizing </LI><LI>Or go directly to transaction <STRONG>/ASADEV/ACI_SETTINGS</STRONG>.</LI><LI>Copy the existing <STRONG>SAP Event Mesh</STRONG> instance to create a new <STRONG>SAP Advanced Event Mesh</STRONG> instance:</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_0-1770975731267.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372197iB71D48FFD145907B/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_0-1770975731267.png" alt="Benedikt_Sprung_0-1770975731267.png" /></span></P><UL><LI>Replace RFC destinations with the ones created for AEM</LI><LI>Change Cloud Type from <STRONG>SAP_EM</STRONG> to <STRONG>SAP_AEM</STRONG>.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_1-1770975878626.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372198i5721945BECDA13D7/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_1-1770975878626.png" alt="Benedikt_Sprung_1-1770975878626.png" /></span></P><UL><LI>Hit Enter and <STRONG>copy all</STRONG>.</LI><LI>Skip errors for duplicate Event Linkages</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_2-1770975995395.png" style="width: 545px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372199i1E52DF3C00978337/image-dimensions/545x403?v=v2" width="545" height="403" role="button" title="Benedikt_Sprung_2-1770975995395.png" alt="Benedikt_Sprung_2-1770975995395.png" /></span></P><UL><LI>Delete all <STRONG>Default Values </STRONG>(not required for SAP AEM):</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_3-1770976239386.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372203i8A87B23F4E70C07A/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_3-1770976239386.png" alt="Benedikt_Sprung_3-1770976239386.png" /></span></P><UL><LI>Delete Error Type Mapping (not required for SAP AEM):</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_4-1770976301395.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372204i0FF87CDE1C88540C/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_4-1770976301395.png" alt="Benedikt_Sprung_4-1770976301395.png" /></span></P><UL><LI>You can keep the message type in case you delete the old Instance pointing to the SAP Event Mesh.</LI><LI>Update <STRONG>message types</STRONG> if keeping the old SAP_EM instance::<UL><LI>Create new Message Type in transaction <STRONG>WE81</STRONG>.</LI><LI>Activate Change Pointer for the new message type in transaction <STRONG>BD50</STRONG>.</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_0-1770977472502.png" style="width: 583px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372211i7CEB842038CB055A/image-dimensions/583x322?v=v2" width="583" height="322" role="button" title="Benedikt_Sprung_0-1770977472502.png" alt="Benedikt_Sprung_0-1770977472502.png" /></span></P><UL><LI>Add Event Linkages for the new message type:</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_1-1770977600346.png" style="width: 694px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372213iF8481A98C463460D/image-dimensions/694x210?v=v2" width="694" height="210" role="button" title="Benedikt_Sprung_1-1770977600346.png" alt="Benedikt_Sprung_1-1770977600346.png" /></span></P><P> </P><UL><LI>Go to <STRONG>Header Attributes.</STRONG><UL><LI>Delete all Header Attributes for SAP EM.</LI><LI>Add new Header Attributes for SAP AEM.</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_2-1770977847914.png" style="width: 675px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372225iC0A273090367A895/image-dimensions/675x336?v=v2" width="675" height="336" role="button" title="Benedikt_Sprung_2-1770977847914.png" alt="Benedikt_Sprung_2-1770977847914.png" /></span></P><P> </P><UL><LI>Go to <STRONG>Field Mapping</STRONG> and configure a <STRONG>dynamic topic</STRONG>.<UL><LI>Each level becomes a segment in the dynamic topic.</LI><LI>There are static segments (Default Values) and dynamic segments (Source structure and Source field).</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_3-1770978163943.png" style="width: 797px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372231iDF9530954AC606F6/image-dimensions/797x286?v=v2" width="797" height="286" role="button" title="Benedikt_Sprung_3-1770978163943.png" alt="Benedikt_Sprung_3-1770978163943.png" /></span></P><P> </P><P><STRONG>Step 6: Add validation Instance for the SAP BTP.</STRONG></P><UL><LI>Got to <STRONG>Connections </STRONG>and add <STRONG>New Entry.</STRONG></LI><LI>A Validation Instance will be necessary for the authentication against the BTP.</LI><LI>Add <STRONG>RFC destination for Handshake</STRONG> (from Step 1).</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_0-1770978917543.png" style="width: 569px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372249i91BA3B9E1CBF81C1/image-dimensions/569x296?v=v2" width="569" height="296" role="button" title="Benedikt_Sprung_0-1770978917543.png" alt="Benedikt_Sprung_0-1770978917543.png" /></span></P><P> </P><UL><LI>Go to Default Values and specify:<UL><LI><STRONG>ACI_CLIENT_ID</STRONG>: Client ID from the Service Key.</LI><LI><SPAN><STRONG>ACI_TOKEN_DESTINATION</STRONG>: RFC-Destination for the Token (from Step 1).</SPAN></LI><LI><SPAN><STRONG>AUTH_TYPE</STRONG>: OAUTH (Certificate also possible; refer to official documentation).</SPAN></LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_1-1770979202976.png" style="width: 683px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372255iB559A38B6B8A9268/image-dimensions/683x320?v=v2" width="683" height="320" role="button" title="Benedikt_Sprung_1-1770979202976.png" alt="Benedikt_Sprung_1-1770979202976.png" /></span></P><UL><LI>Add client secret from the Service Key<UL><LI>Transaction: <STRONG>SPRO</STRONG></LI><LI>Go to:<STRONG> Integration with Other SAP Components -> SAP NetWeaver AddOn for Event enablement -> Set the cloud connection password</STRONG></LI><LI>Or go directly to transaction: <STRONG>/ASADEV/SCI_TPW</STRONG></LI><LI>Select the Cloud Instance for validation: SAP_VALIDATION</LI><LI>Enter the client secret in the Cloud Shared Secret field and execute.</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_2-1770979499502.png"><img src="https://community.sap.com/skins/images/ADE1CD7625311E14F70EFCDE23FC3CDD/responsive_peak/images/image_rejected.gif" alt="Benedikt_Sprung_2-1770979499502.png" /></span></P><P> </P><P><STRONG>Step 7: Test the new connection to SAP Advanced Event Mesh.</STRONG></P><P>After the steps from above we can now test our new connection to the SAP Advanced Event Mesh.</P><P>Change something in the Application, where your Event Add-on for ERP does have an Oubtound Object configured and check the monitor transaction <STRONG>/ASADEV/ACI_MONITOR</STRONG>.</P><P>Cloud response should be 200 OK.</P><P>On the left side of the Trace we can see the JSON and dynamic topic, that was used to send the message to the SAP Advances Event Mesh.</P><P>This was configured inside the Field Mapping of the Outbound Object.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_3-1770979829921.png" style="width: 913px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372262i5F40BCE198E0F349/image-dimensions/913x534?v=v2" width="913" height="534" role="button" title="Benedikt_Sprung_3-1770979829921.png" alt="Benedikt_Sprung_3-1770979829921.png" /></span></P><P><STRONG>Migration Completed</STRONG></P><P>After these steps, your SAP system is successfully switched from SAP Event Mesh to SAP Advanced Event Mesh using ASAAEMEE.</P><UL><LI><P>No changes are required in event definitions.</P></LI><LI>Monitoring and validation ensure messages are delivered correctly.</LI><LI>Find more configuration options for component ASAAEMEE inside the <A href="https://discovery-center.cloud.sap/serviceCatalog/advanced-event-mesh?region=all&tab=&commercialModel=btpea" target="_self" rel="nofollow noopener noreferrer">SAP Discovery Center</A> mission "<SPAN>Data Exchange to Connect SAP ERP with SAP Advanced Event Mesh for Event-Driven Integration</SPAN>".</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Benedikt_Sprung_0-1770984380351.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372312i9A690668998849FA/image-size/medium?v=v2&px=400" role="button" title="Benedikt_Sprung_0-1770984380351.png" alt="Benedikt_Sprung_0-1770984380351.png" /></span></P><P> </P><P> </P>2026-02-13T13:26:20.613000+01:00https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-sap/discover-and-publish-events-from-sap-advanced-event-mesh-in-developer-hub/ba-p/14325999Discover and Publish Events from SAP Advanced Event Mesh in Developer Hub2026-02-16T10:42:34.494000+01:00FlorianOkoshttps://community.sap.com/t5/user/viewprofilepage/user-id/5536<P><STRONG>Introduction</STRONG></P><P>Event-driven architecture (EDA) is a cornerstone of modern integration, enabling systems to react in real time to business events with loose coupling and scalability. In this blog, we walk through how to connect SAP <STRONG>Advanced Event Mesh with SAP Developer Hub to discover and publish events, empowering integration teams and developers to explore and reuse event streams within the SAP ecosystem.This setup is especially relevant if you’re looking to build responsive integrations or microservices that react to business events across SAP solutions.</STRONG></P><P><STRONG>🟢</STRONG><STRONG> Delivered Roadmap Item</STRONG></P><P>SAP has <A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800004463&range=CURRENT-LAST#;INNO=F586EF4391F81EDFBECE105CCBF70063" target="_blank" rel="noopener noreferrer">delivered manual discovery and publication of events from Advanced Event Mesh to SAP Developer Hub a...</A></P><P>For a complementary scenario focused on discovering events from SAP S/4HANA Cloud using SAP Developer Hub, see the blog <EM>“<A href="https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-sap/discover-s-4hana-cloud-events-in-sap-developer-hub/ba-p/14097325" target="_blank">Discover S/4HANA Cloud Events in SAP Developer Hub.” That post walks through registering your S/4HAN...</A></EM></P><P> </P><P><STRONG><span class="lia-unicode-emoji" title=":keycap_1:">1️⃣</span></STRONG><STRONG> </STRONG><STRONG>Overview: Why Discover and Publish Events</STRONG></P><UL><LI>Developer Hub acts as a central catalog for APIs and events.</LI><LI>Advanced Event Mesh is the cloud service that enables event distribution across hybrid landscapes.</LI></UL><P>Discovering events helps teams understand what events are available and reuse them consistently.</P><P><STRONG><span class="lia-unicode-emoji" title=":keycap_2:">2️⃣</span></STRONG><STRONG> </STRONG><STRONG>Set Up the Destination to Connect Event Mesh to Developer Hub</STRONG></P><OL><LI>Go to SAP BTP Cockpit → Subaccount</LI><LI>Navigate to Connectivity → Destinations → Create from Scratch</LI><LI>Fill in details:</LI><UL><LI>Name, Type: HTTP</LI><LI>Base URL of Advanced Event Mesh</LI><LI>Authentication (e.g., BasicAuthentication with API token)</LI><LI>Custom property: sap.isuite.dh.aem.enabled = true</LI></UL></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 11.02.26 um 7.57 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372977i2E87D313C0654335/image-size/large?v=v2&px=999" role="button" title="Bild 11.02.26 um 7.57 AM.png" alt="Bild 11.02.26 um 7.57 AM.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 11.02.26 um 7.58 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372976i22852476DD74F1EA/image-size/large?v=v2&px=999" role="button" title="Bild 11.02.26 um 7.58 AM.png" alt="Bild 11.02.26 um 7.58 AM.png" /></span></P><P><STRONG><span class="lia-unicode-emoji" title=":keycap_3:">3️⃣</span></STRONG><STRONG> </STRONG><STRONG>Register and Configure Your Advanced Event Mesh Instance</STRONG></P><P>Describe how to ensure Event Mesh and its event APIs are set up for discovery.</P><UL><LI>Create event APIs or ensure existing ones are shared</LI><LI>Enable appropriate access permissions</LI></UL><P>Note: Only shared events will show up in Developer Hub</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 16.02.26 um 10.40 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372986i3C53B5B944708580/image-size/large?v=v2&px=999" role="button" title="Bild 16.02.26 um 10.40 AM.png" alt="Bild 16.02.26 um 10.40 AM.png" /></span></P><P><STRONG><span class="lia-unicode-emoji" title=":keycap_4:">4️⃣</span></STRONG><STRONG> </STRONG><STRONG>Discover Events in SAP Developer Hub</STRONG></P><P>Steps to explore events once the destination is set:</P><OL><LI>Open Developer Hub via Integration Suite</LI><LI>Go to Admin Center → Manage → Content</LI><LI>Select your Advanced Event Mesh business system</LI></OL><P>Browse events grouped by application domain</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 13.02.26 um 4.47 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372985iBCFD306BF831BE79/image-size/large?v=v2&px=999" role="button" title="Bild 13.02.26 um 4.47 PM.png" alt="Bild 13.02.26 um 4.47 PM.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 13.02.26 um 5.02 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372980i4E7DDEDD8EF2081A/image-size/large?v=v2&px=999" role="button" title="Bild 13.02.26 um 5.02 PM.png" alt="Bild 13.02.26 um 5.02 PM.png" /></span></P><P><STRONG><span class="lia-unicode-emoji" title=":keycap_5:">5️⃣</span></STRONG><STRONG> </STRONG><STRONG>Create Products and Publish Events</STRONG></P><P>Explain how to group events into products and publish them:</P><OL><LI>In Developer Hub, select events you want to publish</LI><LI>Create a Product (logical grouping of events)</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Bild 13.02.26 um 5.07 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/372981i0E1D9754B6903089/image-size/large?v=v2&px=999" role="button" title="Bild 13.02.26 um 5.07 PM.png" alt="Bild 13.02.26 um 5.07 PM.png" /></span></P><P><STRONG>Summary</STRONG></P><P>In this blog you learned how to </P><UL><LI>Connect Advanced Event Mesh with SAP Developer Hub</LI><LI>Discover and publish events for reuse</LI><LI>Enable developers to consume events in integration use cases</LI><LI>Publish the Product to make it discoverable by developers</LI></UL><P> </P>2026-02-16T10:42:34.494000+01:00