https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Event-Broker-for-SAP-cloud-applications-blog-posts.xml SAP Community - SAP Event Broker for SAP cloud applications 2024-05-20T17:01:02.608039+00:00 python-feedgen SAP Event Broker for SAP cloud applications blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-members/automating-advanced-event-mesh-broker-creation/ba-p/13595187 Automating Advanced Event Mesh Broker Creation 2024-02-08T09:07:53.387000+01:00 MarianVatafu https://community.sap.com/t5/user/viewprofilepage/user-id/864725 <H1 id="toc-hId-836747362">Introduction</H1><P>&nbsp;</P><P><SPAN>The need to reduce costs associated with operating and maintaining an active message broker led to the creation of a tool that automates the generation and configuration any time the need for asynchronous event-based messages arises.</SPAN></P><P>This article will showcase a method of creating an event broker in <A href="https://help.sap.com/docs/SAP_ADVANCED_EVENT_MESH" target="_self" rel="noopener noreferrer">Advanced Event Mesh</A> by leveraging the REST endpoints provided by&nbsp;<A href="https://help.pubsub.em.services.cloud.sap/Cloud/ght_use_rest_api_services.htm" target="_self" rel="nofollow noopener noreferrer">Solace</A> and&nbsp;<A href="https://docs.solace.com/Admin/SEMP/Using-SEMP.htm" target="_self" rel="nofollow noopener noreferrer">SEMP configuration</A>. The solution will allow the system to request a broker creation, monitor the status, re-generate the queues and topics and extract the endpoints for sending or receiving data. Besides that, a UI has been set up that simplifies the broker configuration and allows users to persist or modify configurations.</P><H2 id="toc-hId-769316576">&nbsp;</H2><H1 id="toc-hId-443720352">Scenario Overview</H1><P>&nbsp;</P><P data-unlink="true">All the necessary steps for broker creation are done in SAP Integration Suite using multiple iFlow artifacts for each process step, <A href="https://help.sap.com/docs/cloud-integration/sap-cloud-integration/decoupling-via-jms-queue?q=JMS%20Queues" target="_self" rel="noopener noreferrer">JMS Queues</A> for handling connection errors, timeouts and message routing, Datastore for saving broker configurations and a main page that acts as a user interface for setting up everything.</P><P data-unlink="true">&nbsp;</P><H1 id="toc-hId-247206847">Architecture Overview</H1><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Architecture.png" style="width: 947px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60631i7F32250BAC014F9A/image-size/large?v=v2&amp;px=999" role="button" title="Architecture.png" alt="Architecture.png" /></span></P><P style=" text-align: center; ">&nbsp;<EM>Picture 1 - Architecture Overview</EM></P><H1 id="toc-hId-50693342">UI Configuration Page</H1><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="UIPAGE.png" style="width: 958px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60634iE8C3CB8E7FCF595B/image-size/large?v=v2&amp;px=999" role="button" title="UIPAGE.png" alt="UIPAGE.png" /></span></P><P style=" text-align: center; ">&nbsp;<EM>Picture 2 - UI Configuration Page</EM></P><P>The configuration page is a HTML page exposed as a REST endpoint, containing multiple sections that allow the user to generate new configurations, use existing ones and even check the status of the already-deployed broker creation jobs.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Deployment.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60638iEDF217918FCCE8E4/image-size/large?v=v2&amp;px=999" role="button" title="Deployment.png" alt="Deployment.png" /></span></P><P style=" text-align: center; ">&nbsp;<EM>Picture 3 - Deployment Page</EM></P><P>On this page, we can see the status of the active or pending brokers on the cluster. I also added the ability to delete the broker on demand.</P><P>&nbsp;</P><P>&nbsp;</P><H1 id="toc-hId--145820163">Technical Setup</H1><P>The process of creating an event broker has been detailed in the&nbsp;<A href="https://help.pubsub.em.services.cloud.sap/Cloud/ght_use_rest_api_services.htm" target="_self" rel="nofollow noopener noreferrer">Managing Services with the<SPAN>&nbsp;</SPAN><SPAN class="">SAP Integration Suite, Advanced Event Mesh</SPAN><SPAN>&nbsp;</SPAN>REST API</A> section and it consists of several REST calls in order to create a broker, get the connection details and check the creation status.</P><P>The most important parameters that allow us to continue with the next steps are :</P><UL><LI>&nbsp;serviceId - the id of the service cluster generated</LI><LI>&nbsp;msgVpnName - the internal id of the broker</LI><LI><DIV><DIV><SPAN>defaultManagementHostname - the hostname that will be used for queue, topic and rest delivery point creation</SPAN></DIV><DIV>&nbsp;</DIV></DIV></LI></UL><P>In order to create an event broker :</P><P>HTTP POST&nbsp;<SPAN><A href="https://api.solace.cloud/api/v0/services" target="_blank" rel="noopener nofollow noreferrer">https://api.solace.cloud/api/v0/services</A></SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>{ "name": "Broker Name", "datacenterId": "&lt;Data Center Id&gt;", "serviceClassId":"developer", "serviceTypeId": "developer", "adminState": "start" }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>The authentication for this endpoint is made via an authorization token generated in the Cluster Manager.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="token.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60664i9B1907A16E2BD1D3/image-size/large?v=v2&amp;px=999" role="button" title="token.png" alt="token.png" /></span></P><P style=" text-align: center; ">&nbsp;<EM>Picture 4 - API Token Management</EM></P><P>In order to create a queue object :</P><P><SPAN>HTTP POST https://&lt;defaultManagementHostname&gt;/SEMP/v2/config/msgVpns/&lt;msgVpnId&gt;/queues</SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-java"><code>{ "accessType": "exclusive", "egressEnabled": true, "ingressEnabled": true, "msgVpnName": "&lt;msgVpnId&gt;", "owner": "all", "permission": "consume", "queueName": "&lt;queue-name&gt;" }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>In order to create a topic subscription object :</P><P><SPAN>HTTP POST https://&lt;defaultManagementHostname&gt;/SEMP/v2/config/msgVpns/&lt;msgVpnId&gt;/queues/&lt;queue-name&gt;/subscriptions</SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-java"><code>{ "msgVpnName": "&lt;msgVpnId&gt;", "queueName": "&lt;queue-name&gt;", "subscriptionTopic": "&lt;topic/name&gt;" }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>In order to create a rest delivery point object :</P><P data-unlink="true">HTTP POST https://&lt;defaultManagementHostname&gt;/SEMP/v2/config/msgVpns/&lt;msgVpnId&gt;/restDeliveryPoints&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-java"><code>{ "clientProfileName": "default", "enabled": true, "msgVpnName": "&lt;msgVpnNameId&gt;", "restDeliveryPointName": "&lt;restDeliveryPointId&gt;" }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>If everything is correctly triggered, we should be able to see in the Cluster Manager our newly created broker, and as well in the broker console the queues and topics.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="cluster.png" style="width: 350px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60658iA531855FE1B34772/image-dimensions/350x371?v=v2" width="350" height="371" role="button" title="cluster.png" alt="cluster.png" /></span></P><P style=" text-align: center; ">&nbsp;<EM>Picture 5 - Cluster Manager</EM></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="msgvpn.png" style="width: 551px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60659i5524C62770D90BB6/image-dimensions/551x267?v=v2" width="551" height="267" role="button" title="msgvpn.png" alt="msgvpn.png" /></span></P><P style=" text-align: center; ">&nbsp;<EM>Picture 6 - Queues</EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="topics.png" style="width: 637px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60660i6BE492B596763D32/image-dimensions/637x249?v=v2" width="637" height="249" role="button" title="topics.png" alt="topics.png" /></span></P><P style=" text-align: center; ">&nbsp;&nbsp;<EM>Picture 7 - Topics subscribed to a queue</EM></P><H1 id="toc-hId--342333668">&nbsp;</H1><H1 id="toc-hId--538847173">Adapter for inserting/consuming events</H1><P>By using the recently published <A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/advanced-event-mesh-adapter" target="_self" rel="noopener noreferrer">adapter</A> for Advanced Event Mesh integrations, we can insert and consume events from our brokers. Below is a sample iFlow artifact that connects to a specific topic and consumes messages from there.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sender.png" style="width: 637px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/60666iE01E28DF9AF4A5DC/image-size/large?v=v2&amp;px=999" role="button" title="sender.png" alt="sender.png" /></span></P><P>&nbsp;</P><P style=" text-align: center; "><EM>Picture 8 - iFlow artifact for topic message consumption</EM></P><H1 id="toc-hId--735360678">Conclusions</H1><P>&nbsp;</P><P>Using the SAP Help documentation was the key behind the success, because the product is rather new on the market and we did not really heard of other use cases yet. By following the steps we were able to easily connect two Business Technology Platform products and we were able to leverage event-based integration far more powerful than the traditional <A href="https://help.sap.com/docs/event-mesh?locale=en-US&amp;state=PRODUCTION&amp;version=Cloud" target="_self" rel="noopener noreferrer">SAP Event Mesh</A>.</P><P>For any questions or suggestions, feel free to post here or in the special<SPAN>&nbsp;</SPAN><A href="https://community.sap.com/t5/c-khhcw49343/SAP+Internet+of+Things/pd-p/73554900100800002247" target="_self">Q&amp;A Section</A>.</P><P>Thank you!</P> 2024-02-08T09:07:53.387000+01:00 https://community.sap.com/t5/application-development-blog-posts/cloudevents-at-sap/ba-p/13620137 CloudEvents at SAP 🌁 2024-03-04T07:13:27.857000+01:00 ajmaradiaga https://community.sap.com/t5/user/viewprofilepage/user-id/107 <P class=""><STRONG>TLDR;</STRONG><SPAN> <EM>SAP is an&nbsp;<A title="https://github.com/cloudevents/spec/blob/main/docs/contributors.md" href="https://github.com/cloudevents/spec/blob/main/docs/contributors.md" target="_blank" rel="noopener nofollow noreferrer">active contributor</A>&nbsp;to the CloudEvents specification and it has adopted the specification for describing event data in common formats to provide interoperability across its services/applications/systems. In the&nbsp;<A title="https://hub.sap.com/content-type/Events/events/packages" href="https://hub.sap.com/content-type/Events/events/packages" target="_blank" rel="noopener noreferrer">SAP Business Accelerator Hub</A>, you can find all the events exposed by a total of 17 different SAP services that publish events following the specification, including its flagship ERP products,&nbsp;<A title="https://hub.sap.com/package/SAPS4HANACloudBusinessEvents/event" href="https://hub.sap.com/package/SAPS4HANACloudBusinessEvents/event" target="_blank" rel="noopener noreferrer">SAP S/4HANA Cloud public edition</A>&nbsp;and&nbsp;<A title="https://hub.sap.com/package/SAPS4HANABusinessEvents/event" href="https://hub.sap.com/package/SAPS4HANABusinessEvents/event" target="_blank" rel="noopener noreferrer">SAP S/4HANA</A>, exposing more than 600+ events combined. To enable seamless event-based integrations between SAP applications, SAP applications must conform to the CloudEvents specification. SAP also offers three services, part of the SAP Business Technology Platform (SAP BTP), that can help customers embrace event-driven architectures, these are:&nbsp;<A title="https://discovery-center.cloud.sap/serviceCatalog/sap-event-broker?region=all&amp;service_plan=standard&amp;commercialModel=cpea" href="https://discovery-center.cloud.sap/serviceCatalog/sap-event-broker?region=all&amp;service_plan=standard&amp;commercialModel=cpea" target="_blank" rel="noopener nofollow noreferrer">SAP Event Broker for SAP cloud applications</A>,&nbsp;<A title="https://discovery-center.cloud.sap/serviceCatalog/event-mesh?region=all" href="https://discovery-center.cloud.sap/serviceCatalog/event-mesh?region=all" target="_blank" rel="noopener nofollow noreferrer">SAP Event Mesh</A>, and&nbsp;<A title="https://discovery-center.cloud.sap/serviceCatalog/advanced-event-mesh?region=all" href="https://discovery-center.cloud.sap/serviceCatalog/advanced-event-mesh?region=all" target="_blank" rel="noopener nofollow noreferrer">SAP Integration Suite, advanced event mesh</A>.</EM></SPAN></P><P class=""><SPAN>&nbsp;</SPAN></P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CloudEvents-CloudEvents.drawio.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74739i32F62C5A627544D0/image-size/large?v=v2&amp;px=999" role="button" title="CloudEvents-CloudEvents.drawio.png" alt="CloudEvents-CloudEvents.drawio.png" /></span><P>&nbsp;</P></DIV><DIV class=""><SPAN>Before we dive into how CloudEvents have been adopted within SAP, we might need to talk a bit about what an Event-Driven architecture is and what a CloudEvent is as well. Let's get started.</SPAN></DIV><BLOCKQUOTE dir="auto"><P class=""><span class="lia-unicode-emoji" title=":loudspeaker:">📢</span>A new Developer Challenge will be announced later this week. The challenge will focus on CloudEvents and Event-driven architectures. Stay tuned for more <span class="lia-unicode-emoji" title=":television:">📺</span>.</P></BLOCKQUOTE><H2 id="toc-hId-987845475">Event-Driven Architectures</H2><P class="">Long gone are the days when a system (aka<SPAN>&nbsp;</SPAN><EM><STRONG>target system</STRONG></EM>) will constantly poll to check if there are any changes in another system, e.g. a new customer created in a master data system. Traditionally, the<SPAN>&nbsp;</SPAN><EM><STRONG>target system</STRONG></EM><SPAN>&nbsp;</SPAN>will only know this by programming a routine that will poll a file share and check for any files produced by this system or a web service exposed in the<SPAN>&nbsp;</SPAN><EM><STRONG>source system</STRONG></EM>, every X minutes/hours/days. The expectation nowadays is that systems are integrated and that the data exchanged between these systems will be immediately available in the<SPAN>&nbsp;</SPAN><EM><STRONG>target system(s)</STRONG></EM><SPAN>&nbsp;</SPAN>if any data is created/changed in the<SPAN>&nbsp;</SPAN><EM><STRONG>source system</STRONG></EM>. Enter<SPAN>&nbsp;</SPAN><STRONG>Event-Driven architectures</STRONG>.</P><P class="" data-unlink="true">An Event-Driven Architecture is a software architecture paradigm concerning the production and consumption of events. An event can be defined as a significant change in the state of an object within a system[1]. For example, when a customer/supplier/employee (<EM><STRONG>business object</STRONG></EM>) is created/updated/deleted (<SPAN>&nbsp;</SPAN><EM><STRONG>action</STRONG></EM>) in a system. Translating this to the SAP world, when a Business Partner is created/changed in SAP S/4HANA (<EM><STRONG>source system</STRONG></EM>), SAP S/4HANA can notify that there was a change in a business object and<SPAN>&nbsp;</SPAN><EM><STRONG>target system(s)</STRONG></EM><SPAN>&nbsp;</SPAN>interested in the Business Partner object can then react and trigger follow-up activities in their systems.</P><H3 id="toc-hId-920414689">How do source and target systems communicate?</H3><P class="">Now, if the source system lets other systems know of any changes happening in its business objects, it will not be sustainable to create a new programming routine within the source system every time we want to notify a new target system of any changes. Traditionally we would have some form of middleware, e.g. SAP Cloud Integration, and configure our source system, an SAP S/4HANA system, to send notifications of these events to the middleware and then use the middleware to distribute these messages, e.g. we would add target system(s) as needed. Now, we are moving the problem from the source system to a sort of middleware but ideally, there will be a way for the source system to notify others without the need to make any changes. Enter the<SPAN>&nbsp;</SPAN><STRONG>event broker</STRONG>.</P><P class="" data-unlink="true"><EM>An event broker is message-oriented middleware that enables the transmission of events between different components of a system, acting as a mediator between publishers and subscribers. It is the cornerstone of event-driven architecture, and all event-driven applications use some form of event broker to send and receive information</EM>[2].</P><P class="">By introducing an event broker in our landscapes, we can configure our source systems to<SPAN>&nbsp;</SPAN><STRONG>publish</STRONG><SPAN>&nbsp;</SPAN>their events to this message-oriented middleware. The source system will specify the class of the message (aka<SPAN>&nbsp;</SPAN><STRONG>topic</STRONG>). Then, systems interested in the changes happening, e.g. in a particular business object in the source system, can<SPAN>&nbsp;</SPAN><STRONG>subscribe</STRONG><SPAN>&nbsp;</SPAN>to the event(s), via the event broker, by specifying the topic they are interested (<FONT face="courier new,courier">topic-based filtering</FONT>) in or it can also be based on the content of the message (<FONT face="courier new,courier">content-based filtering</FONT>). There are two keywords important here, publish and subscribe (PubSub), this is a well-known messaging pattern used to decouple systems/applications and allow asynchronous communication between them.</P><H3 id="toc-hId-723901184">What is the PubSub messaging pattern?</H3><P class="" data-unlink="true"><EM>Publish-subscribe is a communication pattern that is defined by the decoupling of applications, where applications publish messages to an intermediary broker rather than communicating directly with consumers (as in point-to-point)</EM>[3]<SPAN>. In a way, publishers and consumers do not need to know each other; they simply publish (produce) or consume (receive) the events. When following this messaging pattern we move from the traditional polling mechanism to know if there have been any changes in the source system to reacting to real-time events (notifications) the moment something happens in the source system.</SPAN></P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CloudEvents-PubSub.drawio.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71583i0F3F672E1A5281D9/image-size/large?v=v2&amp;px=999" role="button" title="CloudEvents-PubSub.drawio.png" alt="CloudEvents-PubSub.drawio.png" /></span><SPAN>&nbsp;</SPAN></P><P class="" data-unlink="true"><SPAN>A subscriber (consumer), is generally only interested in a subset of the messages published. Normally, a message-oriented middleware will provide subscribers with a mechanism to set filters on the data that they want to receive. There are two common ways of filtering: topic-based and content-based</SPAN>[4]<SPAN>.</SPAN></P><H4 id="toc-hId-656470398">Topic-based filtering</H4><P class="">We mentioned before how target systems can subscribe to events by specifying a topic they are interested in.... some event brokers will allow subscribers to subscribe to topics by using wildcards (*) and they will be able to receive only the events they are interested in, which can be for different topics. For example, let's assume we have an SAP S/4HANA with the name<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">S4D</FONT><SPAN>&nbsp;</SPAN>and it publishes the Business Partner create and change on the following topics:<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">sap/S4HANAOD/S4D/ce/sap/s4/beh/businesspartner/v1/BusinessPartner/Created/v1</FONT><SPAN>&nbsp;</SPAN>and<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">sap/S4HANAOD/S4D/ce/sap/s4/beh/businesspartner/v1/BusinessPartner/Changed/v1</FONT>. A subscriber system could subscribe to both topics using a wildcard, e.g.<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">sap/S4HANAOD/S4D/ce/sap/s4/beh/businesspartner/v1/BusinessPartner/*/v1</FONT><SPAN>&nbsp;</SPAN>and receive the messages for both event types. In this case, we are filtering the message by topics.</P><H4 id="toc-hId-459956893">Content-based filtering</H4><P class="">In some other cases, the event broker will allow the subscriber to specify which messages they want to receive, based on the attributes or content of the message. For example, the message sent to the event broker can contain attributes that describe the message and we can do some filtering based on the values of those attributes.<SPAN>&nbsp;</SPAN><EM>Note: An example is shared later, on how attributes in a message (CloudEvent) can be used to define filters.</EM></P><BLOCKQUOTE dir="auto"><P class="">SAP offers different services that can act as event brokers. We will discuss this further in the<SPAN>&nbsp;</SPAN><A title="./cloud-event-at-sap.md#saps-event-driven-portfolio" href="https://file+.vscode-resource.vscode-cdn.net/Users/I503541/repos/github.tools.sap/cloud-events-at-sap/cloud-event-at-sap.md#saps-event-driven-portfolio" target="_blank" rel="noopener nofollow noreferrer">SAP's event-driven portfolio</A><SPAN>&nbsp;</SPAN>section.</P></BLOCKQUOTE><P class="">With many systems in our landscapes and each one being developed by different vendors/teams, it would be good if there was a standard way of structuring these events to simplify how systems create/handle/process these messages right? Enter<SPAN>&nbsp;</SPAN><A title="https://CloudEvents.io/" href="https://cloudevents.io/" target="_blank" rel="noopener nofollow noreferrer">CloudEvents</A>.</P><H2 id="toc-hId-5277950">What is CloudEvents?</H2><P align="center"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CloudEvents-logo.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71576i1C2B02966BEF3BB4/image-size/small?v=v2&amp;px=200" role="button" title="CloudEvents-logo.png" alt="CloudEvents-logo.png" /></span></P><P class="">Today's system landscapes are very complex and we need to deal with many systems communicating with each other, ideally as close to real-time as possible. Nowadays, a system can publish events to notify other systems of the changes happening within the objects of their system. Given that we are talking of many systems, ideally, there will be a common way of describing the data produced by these systems. The CloudEvents specification can help us with this. We can leverage it to provide a consistent way for how our systems can communicate with others about these events.</P><P class="">As mentioned on the<SPAN>&nbsp;</SPAN><A title="https://CloudEvents.io/" href="https://cloudevents.io/" target="_blank" rel="noopener nofollow noreferrer">CloudEvents website</A>...<SPAN>&nbsp;</SPAN><EM>CloudEvents is a specification for describing event data in a common way. It's goal is to simplify event declaration and delivery across services, platforms and beyond! The specification is now under the<SPAN>&nbsp;</SPAN><A title="https://cncf.io/" href="https://cncf.io/" target="_blank" rel="noopener nofollow noreferrer">Cloud Native Computing Foundation</A></EM>.</P><P class="">Below is an example of what a CloudEvent message will look like:</P><PRE><SPAN class="">{</SPAN> <SPAN class="">"specversion"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"1.0"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"type"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"com.github.pull_request.opened"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"source"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"https://github.com/cloudevents/spec/pull"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"subject"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"123"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"id"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"A234-1234-1234"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"time"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"2018-04-05T17:31:00Z"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"comexampleextension1"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"value"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"comexampleothervalue"</SPAN><SPAN class="">:</SPAN> <SPAN class="">5</SPAN><SPAN class="">,</SPAN> <SPAN class="">"datacontenttype"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"text/xml"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"data"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"&lt;much wow=\"xml\"/&gt;"</SPAN> <SPAN class="">}</SPAN></PRE><P class="">You'll notice that the example above is composed of many attributes, the event context. The context describes the event and is independent of the event data. Meaning that we can somehow process/inspect the event without needing to process its data. Now, let's dive a bit into the message itself.</P><BLOCKQUOTE dir="auto"><P class="">For more information on the history, development and design rationale behind the specification, see the<SPAN>&nbsp;</SPAN><A title="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/primer.md" href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/primer.md" target="_blank" rel="noopener nofollow noreferrer">CloudEvents Primer</A><SPAN>&nbsp;</SPAN>document.</P></BLOCKQUOTE><H2 id="toc-hId--191235555">CloudEvents message format</H2><P class="">A CloudEvent message is mainly composed of context attributes and data.</P><H3 id="toc-hId--258666341">Context Attributes</H3><P class=""><SPAN>A number of attributes can be included within the message, these attributes are known as&nbsp;</SPAN><A title="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#context-attributes" href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md#context-attributes" target="_blank" rel="noopener nofollow noreferrer">Context Attributes</A><SPAN>&nbsp;and the idea is that these context attributes can be used to describe the event. We can think of these context attributes as the header information of our event that can be used for filtering and routing. Let's explore some of the attributes available.<BR /><BR /></SPAN></P><TABLE><TBODY><TR><TD><STRONG>Name</STRONG></TD><TD><STRONG>Required</STRONG></TD><TD><STRONG>Description</STRONG></TD><TD><STRONG>Example</STRONG></TD></TR><TR><TD>id</TD><TD><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD>Identifies the event. Producers MUST ensure that source + id is unique for each distinct event.</TD><TD>63d6a150-c6a1-4c5b-bcc3-27d90c07941c</TD></TR><TR><TD>source</TD><TD><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD>Identifies the context in which an event happened.</TD><TD>/default/sap.s4.beh/244572008</TD></TR><TR><TD>specversion</TD><TD><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD>The version of the CloudEvents specification which the event uses.</TD><TD>1.0</TD></TR><TR><TD>type</TD><TD><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">✅</span></TD><TD>Describes the type of the event</TD><TD>sap.s4.beh.businesspartner.v1.BusinessPartner.Changed.v1</TD></TR><TR><TD>datacontenttype</TD><TD>&nbsp;</TD><TD>Content type of the value in data.</TD><TD>application/json</TD></TR></TBODY></TABLE><H4 id="toc-hId--326097127">Extension Context Attributes</H4><P class="">A CloudEvent message may also include additional context attributes, which are not defined as part of the specification. These additional attributes are known as "extension attributes" and can be used by the producer systems or intermediaries to include additional metadata to an event, similar to how we can use HTTP custom headers.</P><P class="">For example, in the<SPAN>&nbsp;</SPAN><A title="https://hub.sap.com/event/SAPDigitalVehicleHubBusinessEvents_SAPDigitalVehicleHubBusinessEvents" href="https://hub.sap.com/event/SAPDigitalVehicleHubBusinessEvents_SAPDigitalVehicleHubBusinessEvents" target="_blank" rel="noopener noreferrer">SAP Digital Vehicle Hub Business Events package</A>, we can see that the event raised when a vehicle changes -<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">sap.dmo.dvh.Vehicle.Changed.v1</FONT>, contains the extension context attribute<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">sappassport</FONT>, which is an SAP specific tracing identifier.</P><PRE><SPAN class="">{</SPAN> <SPAN class="">"specversion"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"1.0"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"type"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"sap.dmo.dvh.Vehicle.Changed.v1"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"source"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"/eu10/sap.dmo.dvh"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"subject"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"808E6E30B65149978A443429B29FB300"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"id"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"a823e884-5edc-4194-a81a-f3a3632417ee"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"time"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"2018-04-08 08:31:00"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"datacontenttype"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"application/json"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"sappassport"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"string"</SPAN><SPAN class="">,</SPAN> .... <SPAN class="">}</SPAN></PRE><H3 id="toc-hId--651693351">Data</H3><P class="">A CloudEvent message may include a payload but this is not required. If included it will be in the format specified in the<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">datacontenttype</FONT><SPAN>&nbsp;</SPAN>context attribute. Although it is not required, we will generally have a payload in messages. Below we can see an example of an event message that contains a payload. In this case, a Business Partner changed event generated by an SAP S/4HANA Cloud Public Edition.</P><PRE><SPAN class="">{</SPAN> <SPAN class="">"type"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"sap.s4.beh.businesspartner.v1.BusinessPartner.Changed.v1"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"specversion"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"1.0"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"source"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"/default/sap.s4.beh/244572008"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"id"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"63d6a150-c6a1-4c5b-bcc3-27d90c07941c"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"time"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"2024-02-26T10:53:06Z"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"datacontenttype"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"application/json"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"data"</SPAN><SPAN class="">:</SPAN> <SPAN class="">{</SPAN> <SPAN class="">"BusinessPartner"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"1000667"</SPAN> <SPAN class="">}</SPAN> <SPAN class="">}</SPAN> </PRE><BLOCKQUOTE dir="auto"><P class="">Check out the Business Partner changed event in the SAP Business Accelerator Hub -<SPAN>&nbsp;</SPAN><A title="https://hub.sap.com/event/CE_BUSINESSPARTNEREVENTS/resource" href="https://hub.sap.com/event/CE_BUSINESSPARTNEREVENTS/resource" target="_blank" rel="noopener noreferrer">https://hub.sap.com/event/CE_BUSINESSPARTNEREVENTS/resource</A>.</P></BLOCKQUOTE><H2 id="toc-hId--630035218">SAP's adoption of CloudEvents</H2><P class="">SAP is an<SPAN>&nbsp;</SPAN><A title="https://github.com/cloudevents/spec/blob/main/docs/contributors.md" href="https://github.com/cloudevents/spec/blob/main/docs/contributors.md" target="_blank" rel="noopener nofollow noreferrer">active contributor</A><SPAN>&nbsp;</SPAN>to the CloudEvents specification and one of its many<SPAN>&nbsp;</SPAN><A title="https://cloudevents.io/" href="https://cloudevents.io/" target="_blank" rel="noopener nofollow noreferrer">adopters</A>. Evidence of that is the different products (<A title="https://hub.sap.com/content-type/Events/events/packages" href="https://hub.sap.com/content-type/Events/events/packages" target="_blank" rel="noopener noreferrer">event packages</A>) that we can find documented in the<SPAN>&nbsp;</SPAN><A title="https://hub.sap.com/content-type/Events/events/events" href="https://hub.sap.com/content-type/Events/events/events" target="_blank" rel="noopener noreferrer">SAP Business Accelerator Hub &gt; Events category</A>.</P><P class="">The products listed below document their events in the form of event packages in the<SPAN>&nbsp;</SPAN><A title="https://hub.sap.com/" href="https://hub.sap.com/" target="_blank" rel="noopener noreferrer">SAP Business Accelerator Hub</A>. All their events follow the CloudEvents specification:</P><UL class=""><LI>SAP Agricultural Origination Portal</LI><LI>SAP Batch Release Hub for Life Sciences</LI><LI>SAP Cell and Gene Therapy Orchestration</LI><LI>SAP Cloud for Utilities Foundation</LI><LI>SAP Digital Vehicle Hub</LI><LI>SAP GRC Cloud - Issue Management and Remediation Service</LI><LI>SAP Industry Process Framework</LI><LI>SAP Intelligent Clinical Supply Management for Operations</LI><LI>SAP Intelligent Clinical Supply Management for Planning</LI><LI>SAP Landscape Management Cloud</LI><LI>SAP Marketing Cloud</LI><LI>SAP Order Management Foundation</LI><LI>SAP S/4HANA</LI><LI>SAP S/4HANA Cloud Public Edition</LI><LI>SAP S/4HANA Utilities for Customer Engagement</LI><LI>SAP S/4HANA for Procurement Planning Cloud</LI><LI>SAP Subscription Billing</LI></UL><P class="">SAP's flagship ERP products, SAP S/4HANA Cloud Public edition and SAP S/4HANA, expose more than 600+ events combined. As you might have noticed from the events that we use as examples above, these events follow the CloudEvents specification. Below we can see the BusinessPartner Created event generated by an SAP S/4HANA Cloud Public Edition and we can see how it follows the CloudEvents specification.</P><PRE><SPAN class="">{</SPAN> <SPAN class="">"type"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"sap.s4.beh.businesspartner.v1.BusinessPartner.Created.v1"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"specversion"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"1.0"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"source"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"/default/sap.s4.beh/244572008"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"id"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"194780e0-b5db-1ede-b58a-4550178dff9e"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"time"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"2024-02-26T09:50:00Z"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"datacontenttype"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"application/json"</SPAN><SPAN class="">,</SPAN> <SPAN class="">"data"</SPAN><SPAN class="">:</SPAN> <SPAN class="">{</SPAN> <SPAN class="">"BusinessPartner"</SPAN><SPAN class="">:</SPAN> <SPAN class="">"1000667"</SPAN> <SPAN class="">}</SPAN> <SPAN class="">}</SPAN> </PRE><H3 id="toc-hId--1119951730">Kyma</H3><P align="center"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="kyma-runtime.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74741i0A6BD127C635814D/image-size/small?v=v2&amp;px=200" role="button" title="kyma-runtime.png" alt="kyma-runtime.png" /></span></P><P class="" data-unlink="true">Kyma contains an<SPAN>&nbsp;</SPAN><A title="https://kyma-project.io/#/06-modules/README" href="https://kyma-project.io/#/06-modules/README" target="_blank" rel="noopener nofollow noreferrer">Eventing module</A>, which provides functionality to publish and subscribe to CloudEvents. It follows the PubSub messaging pattern and all events in Kyma conform to the CloudEvents specification[5]. At the moment, NATS (provided by the NATS module) and SAP Event Mesh are<SPAN>&nbsp;</SPAN><A title="https://help.sap.com/docs/btp/sap-business-technology-platform/choose-backend-for-kyma-eventing" href="https://help.sap.com/docs/btp/sap-business-technology-platform/choose-backend-for-kyma-eventing" target="_blank" rel="noopener noreferrer">supported as backends</A><SPAN>&nbsp;</SPAN>for eventing and it is recommended to use the CloudEvents specification for sending and receiving events. Even the legacy events are automatically converted to CloudEvents.</P><H2 id="toc-hId--1023062228">SAP's event-driven portfolio</H2><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CloudEvents-EDA.drawio.png" style="width: 902px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/75003iB7EF108189955A38/image-size/large?v=v2&amp;px=999" role="button" title="CloudEvents-EDA.drawio.png" alt="CloudEvents-EDA.drawio.png" /></span></P><P>&nbsp;<SPAN>SAP offers various services that can help customers embrace event-driven architectures. The different offerings can meet customers where they are in their EDA adoption/implementation journey. These are:</SPAN></P><UL class=""><LI>SAP Event Broker for SAP cloud applications</LI><LI>SAP Event Mesh</LI><LI>SAP Integration Suite, advanced event mesh</LI></UL><H3 id="toc-hId--1512978740"><A title="https://discovery-center.cloud.sap/serviceCatalog/sap-event-broker?region=all&amp;service_plan=standard&amp;commercialModel=cpea" href="https://discovery-center.cloud.sap/serviceCatalog/sap-event-broker?region=all&amp;service_plan=standard&amp;commercialModel=cpea" target="_blank" rel="noopener nofollow noreferrer">SAP Event Broker for SAP cloud applications</A></H3><P align="center"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sap-event-broker.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71577i92E5DFD201DBFCE5/image-size/small?v=v2&amp;px=200" role="button" title="sap-event-broker.png" alt="sap-event-broker.png" /></span></P><P class="">SAP Event Broker is the latest service released by SAP that focuses on event-driven architecture and it supports event-based integration between SAP cloud and BTP-based applications. It is a fully managed cloud service that allows SAP cloud applications to communicate asynchronously through events. Meaning it can be used to distribute events between SAP cloud applications. For example, this service can be leveraged to enable seamless integration between<SPAN>&nbsp;</SPAN><A title="https://help.sap.com/docs/CLOUD_TO_CASH_OD/559eeb1cc256428c9bb3b9cf9f3480ba/6407b895ff9f4be6a4d417db2226eae4.html?locale=en-US" href="https://help.sap.com/docs/CLOUD_TO_CASH_OD/559eeb1cc256428c9bb3b9cf9f3480ba/6407b895ff9f4be6a4d417db2226eae4.html?locale=en-US" target="_blank" rel="noopener noreferrer">SAP S/4HANA Cloud public edition and SAP Subscription Billing</A>. When an integration scenario leverages SAP Event Broker, it eliminates having to configure an event storage or infrastructure such as customer-defined topics or queues to enable the event-based integration between systems.</P><P align="center"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CloudEvents-SeamlessIntegration.drawio.png" style="width: 896px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71578iB7FE19342DF4A492/image-size/large?v=v2&amp;px=999" role="button" title="CloudEvents-SeamlessIntegration.drawio.png" alt="CloudEvents-SeamlessIntegration.drawio.png" /></span><I>Integration between SAP S/4HANA Cloud and SAP Subscription Billing</I></P><P class="" data-unlink="true"><SPAN>CloudEvents are first-class citizens in SAP Event Broker, as events that are distributed between SAP cloud applications using SAP Event Broker all conform to the&nbsp;</SPAN><A title="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md" href="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md" target="_blank" rel="noopener nofollow noreferrer">CloudEvent Specification</A>[6]<SPAN>. Evidence of this is how we can&nbsp;</SPAN><A title="https://help.sap.com/docs/event-broker/event-broker-service-guide/filtering-sap-event-subscriptions?locale=en-US" href="https://help.sap.com/docs/event-broker/event-broker-service-guide/filtering-sap-event-subscriptions?locale=en-US" target="_blank" rel="noopener noreferrer">filter SAP event subscriptions</A><SPAN>&nbsp;by defining filters based on the CloudEvent context attributes, e.g. by filter by&nbsp;</SPAN><A title="https://help.sap.com/docs/event-broker/event-broker-service-guide/event-filter-examples?locale=en-US" href="https://help.sap.com/docs/event-broker/event-broker-service-guide/event-filter-examples?locale=en-US" target="_blank" rel="noopener noreferrer">type, subject, or extension context attribute</A><SPAN>.&nbsp;</SPAN><EM>Note: This is an example of content-based filtering taking place in the message-oriented middleware.</EM></P><P class="">If all your event needs are within the SAP cloud world, e.g. exchange events between SAP cloud applications and SAP BTP, this service can fulfill your needs.</P><H3 id="toc-hId--1709492245"><A title="https://discovery-center.cloud.sap/serviceCatalog/event-mesh?region=all" href="https://discovery-center.cloud.sap/serviceCatalog/event-mesh?region=all" target="_blank" rel="noopener nofollow noreferrer">SAP Event Mesh</A>&nbsp;</H3><P align="center"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="event-mesh.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74749i37C69531B37CBA59/image-size/small?v=v2&amp;px=200" role="button" title="event-mesh.png" alt="event-mesh.png" /></span></P><P class="">SAP Event Mesh allows applications to communicate through asynchronous events. It can be used to publish and consume business events from SAP and non-SAP sources across hybrid landscapes from the digital core (ERP products, e.g. SAP S/4HANA Cloud public edition and SAP S/4HANA) to extension applications through event-driven architecture. It is a fully managed<SPAN>&nbsp;</SPAN><A title="https://help.sap.com/docs/event-mesh/event-mesh/event-mesh-default-plan-concepts?locale=en-US" href="https://help.sap.com/docs/event-mesh/event-mesh/event-mesh-default-plan-concepts?locale=en-US" target="_blank" rel="noopener noreferrer">centralised event-oriented</A><SPAN>&nbsp;</SPAN>service part of SAP BTP.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="event-mesh-diagram.png" style="width: 725px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74745i794E3B023534DE7A/image-size/large?v=v2&amp;px=999" role="button" title="event-mesh-diagram.png" alt="event-mesh-diagram.png" /></span></P><P class="">The<SPAN>&nbsp;</SPAN><A title="https://help.sap.com/docs/event-mesh/event-mesh/rest-apis-for-events?locale=en-US" href="https://help.sap.com/docs/event-mesh/event-mesh/rest-apis-for-events?locale=en-US" target="_blank" rel="noopener noreferrer">service supports the use of REST APIs for Events</A>, for publishing and consuming events that are compliant with the CloudEvents specification. Related to event-based integrations, events that flow through SAP Event Mesh between SAP applications must all conform to the CloudEvents specification.</P><BLOCKQUOTE dir="auto"><P class="">You can check out how to enable the consumption of SAP S/4HANA Cloud public edition events in your SAP BTP account -<SPAN>&nbsp;</SPAN><A title="https://youtu.be/4LspIL3NxqQ" href="https://youtu.be/4LspIL3NxqQ" target="_blank" rel="noopener nofollow noreferrer">https://youtu.be/4LspIL3NxqQ</A></P></BLOCKQUOTE><H3 id="toc-hId--1906005750"><A title="https://discovery-center.cloud.sap/serviceCatalog/advanced-event-mesh?region=all" href="https://discovery-center.cloud.sap/serviceCatalog/advanced-event-mesh?region=all" target="_blank" rel="noopener nofollow noreferrer">SAP Integration Suite, advanced event mesh</A><SPAN>&nbsp;</SPAN>(AEM)</H3><P align="center"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="advanced-event-mesh.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74750iA47C04BE158A2CC7/image-size/small?v=v2&amp;px=200" role="button" title="advanced-event-mesh.png" alt="advanced-event-mesh.png" /></span></P><P class="">SAP Integration Suite, advanced event mesh (AEM) is a complete event streaming, event management, and monitoring platform that incorporates best practices, expertise, and technology for event-driven architecture (EDA) on a single platform. With AEM you can deploy event broker services, create event meshes, and optimise and monitor your event-driven system.</P><P class="">AEM offers these categories of services:</P><UL class=""><LI><P class=""><STRONG>Event Streaming</STRONG>: It provides event streaming services and gives you access to event broker services that provide advanced features like the publish-subscribe messaging pattern, queuing, streaming, replay, and request-reply, while doing all the heavy lifting to dynamically deploy, upgrade, patch, and operate the service. It extends beyond the cloud and supports infrastructure and EDAs across hybrid cloud solutions and your on-premises deployments.</P><BLOCKQUOTE dir="auto"><P class="">Event brokers can be deployed to: public clouds administered by SAP (Public Regions or Dedicated Regions) and customer's own regions in the cloud or on-premises (Customer-Controlled Regions)</P></BLOCKQUOTE></LI><LI><P class=""><STRONG>Event Management</STRONG>: It provides event management services. The Event Portal provides powerful tools to create, design, share, and manage various aspects of your EDA based on event brokers or other streaming technologies. It fully supports the AsyncAPI 2.0.0 specification so that you can generate code, documentation, validate events, and apply API management policies for applications in your EDA.</P><BLOCKQUOTE dir="auto"><P class="">You might have noticed that some event specification in the SAP Business Accelerator Hub are documented using the AsyncAPI specification, e.g.<SPAN>&nbsp;</SPAN><A title="https://hub.sap.com/event/CE_MARKETINGCAMPAIGNEVENTS/overview" href="https://hub.sap.com/event/CE_MARKETINGCAMPAIGNEVENTS/overview" target="_blank" rel="noopener noreferrer">Marketing Campaign Events</A><SPAN>&nbsp;</SPAN>part of SAP Marketing Cloud.</P></BLOCKQUOTE></LI><LI><P class=""><STRONG>Event Monitoring and Insights</STRONG>: Availability out-of-the-box of dashboards and easy-to-understand visualizations based on historical and real-time metrics, and timely notifications about the event broker services deployed.</P></LI></UL><P class="">Similar to SAP Event Mesh, it can be used to publish and consume business events from SAP and non-SAP sources across hybrid landscapes. Meaning, if your event data needs to exit the SAP cloud world, you can use any of these two services.</P><HR /><P class="">Thanks for making it this far, we've covered a lot in this blog post and I hope it gives you a general understanding of CloudEvents, its importance in the SAP world, how it can enable integration across SAP applications and the different SAP offerings that can enable your EDA journey.</P><DIV><DIV>&nbsp;</DIV><DIV><SPAN>Special thanks to Klaus Deissner (<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/243873">@klaus_deissner</a>) for reviewing and contributing to this blog post.</SPAN></DIV></DIV><HR /><OL class=""><LI><P class="">Event-Driven architecture:<SPAN>&nbsp;</SPAN><A title="https://en.wikipedia.org/wiki/Event-driven_architecture" href="https://en.wikipedia.org/wiki/Event-driven_architecture" target="_blank" rel="noopener nofollow noreferrer">link</A><SPAN>&nbsp;<span class="lia-unicode-emoji" title=":right_arrow_curving_left:">↩️</span></SPAN></P></LI><LI><P class="">What is an event broker?:<SPAN>&nbsp;</SPAN><A title="https://solace.com/what-is-an-event-broker/" href="https://solace.com/what-is-an-event-broker/" target="_blank" rel="noopener nofollow noreferrer">link</A>&nbsp;<span class="lia-unicode-emoji" title=":right_arrow_curving_left:">↩️</span><SPAN>&nbsp;</SPAN></P></LI><LI><P class="">What is the publish-subscribe messaging pattern?:<SPAN>&nbsp;</SPAN><A title="https://solace.com/blog/publish-subscribe-messaging-pattern/" href="https://solace.com/blog/publish-subscribe-messaging-pattern/" target="_blank" rel="noopener nofollow noreferrer">link</A><SPAN>&nbsp;<span class="lia-unicode-emoji" title=":right_arrow_curving_left:">↩️</span></SPAN></P></LI><LI><P class="">Publish-subscribe pattern - Message filtering:<SPAN>&nbsp;</SPAN><A title="https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern" href="https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern" target="_blank" rel="noopener nofollow noreferrer">link</A><SPAN>&nbsp;<span class="lia-unicode-emoji" title=":right_arrow_curving_left:">↩️</span></SPAN></P></LI><LI><P class="">Eventing module in Kyma:<SPAN>&nbsp;</SPAN><A title="https://kyma-project.io/#/eventing-manager/user/README" href="https://kyma-project.io/#/eventing-manager/user/README" target="_blank" rel="noopener nofollow noreferrer">link</A><SPAN>&nbsp;<span class="lia-unicode-emoji" title=":right_arrow_curving_left:">↩️</span></SPAN></P></LI><LI><P class="">SAP Event-Driven integrations:<SPAN>&nbsp;</SPAN><A title="https://help.sap.com/docs/event-broker/event-broker-service-guide/event-driven-integrations?locale=en-US%3Fversion%3DCloud" href="https://help.sap.com/docs/event-broker/event-broker-service-guide/event-driven-integrations?locale=en-US%3Fversion%3DCloud" target="_blank" rel="noopener noreferrer">link</A><SPAN>&nbsp;<span class="lia-unicode-emoji" title=":right_arrow_curving_left:">↩️</span></SPAN></P></LI></OL><HR /><P class="">Originally published at <A href="https://ajmaradiaga.com/cloud-events-at-sap/" target="_blank" rel="noopener nofollow noreferrer">ajmaradiaga.com</A>.</P><P>&nbsp;</P><P>&nbsp;</P> 2024-03-04T07:13:27.857000+01:00 https://community.sap.com/t5/enterprise-architecture-blog-posts/unleash-the-power-of-real-time-business-insights-with-sap-advanced-event/ba-p/13646287 Unleash the Power of Real-Time Business Insights with SAP Advanced Event Mesh 2024-03-26T03:57:44.968000+01:00 Nallam_97 https://community.sap.com/t5/user/viewprofilepage/user-id/1423382 <P>&nbsp;</P><P><SPAN><STRONG>Unleash the Power of Real-Time Business Insights with SAP Advanced Event Mesh</STRONG></SPAN></P><P><SPAN><BR />In today's ever-changing business landscape, being able to respond quickly is crucial. SAP Business Technology Platform (BTP) lays the groundwork for this agility by providing a comprehensive integration platform. But what if you could harness the power of instant reactions to every customer interaction? That's where SAP Advanced Event Mesh (AEM) comes in - a revolutionary tool that unlocks the true potential of SAP BTP. By utilizing the event-driven architecture championed by SAP BTP, AEM empowers businesses to make real-time, data-driven decisions - a vital capability in today's fast-paced environment.</SPAN></P><P><SPAN>Imagine a world where every customer interaction triggers an immediate response, enabling businesses to make informed choices in real-time. This is the power of SAP Advanced Event Mesh (AEM), a revolutionary tool that transforms how businesses react to events and unlock hidden opportunities&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .</SPAN></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Nallam_97_0-1711483863565.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86952i16E613984B8AA697/image-size/medium?v=v2&amp;px=400" role="button" title="Nallam_97_0-1711483863565.png" alt="Nallam_97_0-1711483863565.png" /></span><SPAN>(Image Source: SAP)</SPAN></P><P style=" text-align: center; ">&nbsp;</P><P><SPAN><STRONG>The Grocery Store Scenario: A Glimpse into the Future of Inventory Management</STRONG></SPAN></P><P><SPAN><BR />Consider a grocery store whe­re every purchase­ instantly triggers an event that is re­layed to a central system. This e­liminates the nee­d for traditional end-of-day reports, allowing for immediate­ insights into:</SPAN></P><UL><LI><SPAN><STRONG>Product popularity:</STRONG> Identify fast-selling items and e­nsure they are always in stock.</SPAN></LI><LI><SPAN><STRONG>Inve­ntory optimization:</STRONG> Replenish stock as soon as it runs low, preve­nting lost sales and customer frustration. </SPAN></LI></UL><P><SPAN>This is just one e­xample of how AEM streamlines busine­ss processes and enable­s proactive decision-making across various industries.</SPAN></P><P><SPAN><STRONG>&nbsp;Ke­y Features of SAP AEM:</STRONG></SPAN></P><UL><LI><SPAN><STRONG>Event-drive­n communication:</STRONG> Respond to events as the­y happen, creating a dynamic and responsive­ system.</SPAN></LI><LI><SPAN><STRONG>Scalability and flexibility:</STRONG> Easily adapt to changing business ne­eds and data volumes. </SPAN></LI><LI><SPAN><STRONG>Unified e­vent management:</STRONG></SPAN><SPAN> Gain ce­ntralized control and visibility over all eve­nts within your SAP landscape. </SPAN></LI><LI><SPAN><STRONG>Seamless inte­gration:</STRONG></SPAN><SPAN> Integrate seamle­ssly with SAP and Non-SAP solutions.<BR /><BR /></SPAN><SPAN><STRONG>Components of SAP AEM:</STRONG></SPAN></LI></UL><P><SPAN><STRONG>&nbsp; &nbsp; &nbsp; &nbsp;Mission Control:</STRONG></SPAN><SPAN> Easily de­ploy and manage event broke­rs, monitor their performance, and visualize­&nbsp; &nbsp; &nbsp; &nbsp;your event-driven archite­cture.</SPAN></P><P><SPAN><STRONG>&nbsp; &nbsp; &nbsp; &nbsp;Event Portal:</STRONG></SPAN><SPAN> Design your e­vent-driven setup using a full se­t of tools, including an overview, designe­r, catalog, and event manager for running e­vents. </SPAN></P><P><SPAN><STRONG>&nbsp; &nbsp; &nbsp; Insights:</STRONG></SPAN><SPAN> Get real-time­ insights into the health and performance­ of your event network, ensuring your applications work well.</SPAN></P><P><SPAN><BR /></SPAN><SPAN><STRONG>&nbsp; &nbsp; &nbsp; Deployment Options:</STRONG> </SPAN></P><P><SPAN><BR />&nbsp; &nbsp; &nbsp; You can choose from diffe­rent deployment options for SAP AEM: </SPAN></P><UL><LI><SPAN><STRONG>Public Re­gions:</STRONG> This allows you to use the infrastructure manage­d by SAP, which is simple and easy to use. </SPAN></LI><LI><SPAN><STRONG>De­dicated Regions:</STRONG></SPAN><SPAN> This gives you more­ control and isolation within a dedicated SAP cloud environme­nt. </SPAN></LI><LI><SPAN><STRONG>Customer-Controlled Regions:</STRONG></SPAN><SPAN> This le­ts you deploy AEM on your own Kubernete­s cluster, giving you ultimate customization and control<BR /><STRONG><BR />&nbsp;Security:</STRONG> </SPAN></LI></UL><P><SPAN>&nbsp; &nbsp; &nbsp; &nbsp;SAP AEM take­s security very seriously at e­very level, with fe­atures like: </SPAN></P><UL><LI><SPAN>Secure­ cloud architecture with various deployme­nt options.</SPAN></LI><LI><SPAN>VPC/VNet isolation for keeping data se­gregated secure­ly.</SPAN></LI><LI><SPAN>Multi-factor authentication and authorization to have comprehe­nsive access control.</SPAN></LI></UL><P>&nbsp;</P> 2024-03-26T03:57:44.968000+01:00 https://community.sap.com/t5/application-development-blog-posts/march-developer-challenge-cloudevents-it-s-a-wrap/ba-p/13654243 March Developer Challenge - CloudEvents: It's a wrap! 2024-04-01T06:08:23.211000+02:00 ajmaradiaga https://community.sap.com/t5/user/viewprofilepage/user-id/107 <DIV><DIV><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CloudEvents-Developer-Challenge.drawio.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/76098i60480142BAFD3A00/image-size/medium?v=v2&amp;px=400" role="button" title="CloudEvents-Developer-Challenge.drawio.png" alt="CloudEvents-Developer-Challenge.drawio.png" /></span></SPAN></DIV><DIV>&nbsp;</DIV><DIV><SPAN>Yesterday, we concluded March's developer challenge in the SAP Community - All about CloudEvents and event-driven architectures. Thanks to everyone who took part in it :-). I hope you had as much fun participating in the challenge as I had preparing it. </SPAN></DIV><DIV>&nbsp;</DIV><BLOCKQUOTE><DIV><SPAN>In case you missed the developer challenge but you are interested in knowing what it was all about... you can get started here: <A href="https://community.sap.com/t5/application-development-discussions/march-developer-challenge-cloudevents-week-1/td-p/13629129" target="_self">March Developer Challenge - CloudEvents: Week 1</A>.</SPAN></DIV></BLOCKQUOTE><DIV><SPAN>If you want to learn more about CloudEvents and event-driven integrations, I would recommend keeping an eye on the content of the Event-driven integration CodeJam - <A href="https://github.com/SAP-samples/events-driven-integrations-codejam" target="_blank" rel="noopener nofollow noreferrer">https://github.com/SAP-samples/events-driven-integrations-codejam</A>, which is now close to being finalised :-). Also, remember that you can request/host an SAP CodeJam event in your city or company, and we will be happy to help you run it - <A href="https://community.sap.com/t5/sap-codejam-blog-posts/so-you-want-to-host-a-codejam-everything-you-need-to-know/ba-p/221415" target="_blank">https://community.sap.com/t5/sap-codejam-blog-posts/so-you-want-to-host-a-codejam-everything-you-need-to-know/ba-p/221415</A>.</SPAN></DIV><DIV>&nbsp;</DIV><BLOCKQUOTE><DIV><SPAN><SPAN>Are you wondering about what will be April's Developer challenge? It is live now <span class="lia-unicode-emoji" title=":rocket:">🚀</span>... April (Citizen) Developer Challenge – SAP Build Apps: Task 0 - </SPAN></SPAN><SPAN><A href="https://community.sap.com/t5/sap-builders-discussions/april-citizen-developer-challenge-sap-build-apps-task-0/m-p/13654312" target="_blank">https://community.sap.com/t5/sap-builders-discussions/april-citizen-developer-challenge-sap-build-apps-task-0/m-p/13654312</A><BR /></SPAN></DIV></BLOCKQUOTE><DIV><SPAN>Now, some cool stats on community members' participation:<BR /></SPAN></DIV><UL><LI><SPAN>A total of 36 SAP Community members took part in the challenge.</SPAN></LI><LI>Unique SAP community members participation per week:<BR /><TABLE border="1"><TBODY><TR><TD width="50%"><STRONG>Week</STRONG></TD><TD width="50%"><STRONG>Total submissions</STRONG></TD></TR><TR><TD width="50%">Week 1</TD><TD width="50%">31</TD></TR><TR><TD width="50%">Week 2</TD><TD width="50%">26</TD></TR><TR><TD width="50%">Week 3</TD><TD width="50%">23</TD></TR><TR><TD width="50%">Week 4</TD><TD width="50%">16</TD></TR><TR><TD><STRONG><EM>Total</EM></STRONG></TD><TD><STRONG><EM>96</EM></STRONG></TD></TR></TBODY></TABLE></LI><LI><SPAN><SPAN>Total submissions per week. <EM>Note: In week 2 a couple of participants submitted more than one solution and in weeks 3 and 4, I'm counting as valid submissions any valid message received. Many participants submitted more than one message.</EM><BR /></SPAN></SPAN><TABLE border="1" width="100%"><TBODY><TR><TD width="50%"><STRONG>Week</STRONG></TD><TD width="50%"><STRONG>Total submissions</STRONG></TD></TR><TR><TD width="50%">Week 1</TD><TD width="50%">31</TD></TR><TR><TD width="50%">Week 2</TD><TD width="50%">28</TD></TR><TR><TD width="50%">Week 3</TD><TD width="50%">70</TD></TR><TR><TD width="50%">Week 4</TD><TD width="50%">98</TD></TR><TR><TD><EM><STRONG>Total</STRONG></EM></TD><TD><EM><STRONG>227</STRONG></EM></TD></TR></TBODY></TABLE></LI><LI>Last but certainly not least... a special mention to all the SAP Community members who completed the challenge every single week <span class="lia-unicode-emoji" title=":party_popper:">🎉</span><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/45643">@Alpesa1990</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/11471">@MatLakaemper</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/789">@MioYasutake</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1395282">@Nagarajan-K</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/3763">@PriyankaChak</a>&nbsp;<BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/120859">@Ruthiel</a>&nbsp;<BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/151481">@ajos</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/43545">@emiliocampo</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/9180">@geek</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/874945">@pamoli_banerjee</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/38628">@r00k13d3v</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/125253">@saitgunacorel</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/162022">@spirit2681</a><BR /><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/171996">@xavisanse</a></LI></UL><P>If you are interested in the event-driven integrations/architectures topic....&nbsp;<span class="lia-unicode-emoji" title=":television:">📺</span> stay tuned as there is way more coming later this year in this space.</P></DIV> 2024-04-01T06:08:23.211000+02:00