As organizations accelerate their digital transformation, event-driven architecture (EDA) has emerged as a powerful approach for building scalable, real-time, and loosely coupled systems. Solutions like SAP Advanced Event Mesh serve as enterprise-grade event brokers that support asynchronous messaging patterns across hybrid and cloud-native landscapes.
On the other end of the spectrum lies SAP Process Orchestration - a robust, time-tested middleware platform still running mission-critical integrations in many enterprises. While SAP has officially announced the end-of-life of SAP Process Orchestration, with long-term support ending in the coming years, replacing it entirely is often a long, phased journey.
This blog post is not about extending the life of SAP Process Orchestration indefinitely, but rather about integrating it into your modern architecture—bridging the gap between legacy and modern systems. By connecting SAP Process Orchestration to SAP Advanced Event Mesh via JMS with JNDI, you can start to decouple systems and adopt EDA principles without a complete rip-and-replace.
We assume you're familiar with setting up scenarios in Process Orchestration, so we’ll skip over iFlow configuration and focus instead on:
- Deploying Solace JMS libraries in SAP Process Orchestration
- Configuring SAP Advanced Event Mesh for JNDI (Java Naming and Directory Interface) support
- Setting up the JMS receiver channel in Process Orchestration to connect to Advanced Event Mesh
This approach provides a low-friction way to modernize the edge of your SAP Process Orchestration integrations while planning for long-term migration. It enables you to offload responsibilities to the event broker, reduce point-to-point connections, and pave the way for loosely coupled microservices or SAP Integration Suite adoption. Let’s dive in.
Use Case
Our integration scenario is as follows:
- REST Sender Adapter receives a message from Postman or any REST client to reliably test the setup.
- Process Orchestration routes the message to a JMS Receiver Adapter.
- The JMS Receiver connects to Advanced Event Mesh via JNDI, and publishes the message to a target queue.
Prerequisites
- SAP Process Orchestration 7.5 or newer (Java-only stack preferred)
- Access to SAP Advanced Event Mesh
- Admin access to the Advanced Event Mesh Broker Manager for configuration
- SAP NetWeaver Administrator access to deploy shared libraries
Step 1: Download the Solace JMS Library
As with most integration scenarios with Advanced Event Mesh our first starting point is the Connect tab of your Cluster Manager. We are interested in using the Solace JMS API which uses the Solace Message Format (SMF) as a protocol and can find all the information we need there:

- Go to Get Started to find further documentations of the API and more importantly downloads for the sol-jms library.
- When choosing a version for the sol-jms library it is crucial to understand any required dependencies. Feel free to familiarize yourself with the Solace provided API documentation regarding supported Java environments and dependencies.
https://docs.solace.com/API/Solace-JMS-API/JMS-API-supported-environments.htm - For this blog I decided to go with a JMS 1.1 implementation which makes sol-jms-10.19.0 a good choice to keep dependencies to a minimum since as of version 10.20, the Solace Messaging API for JMS has a dependency on JMS 2.0 and would require a compatibility layer.
- Using this version, the only dependencies needed in my case were
- Apache Commons Logging (This blog uses commons-logging-1.1.3)
- A implementation of the JMS 1.1 specification for messaging in Java applications (This blog uses geronimo-jms_1.1_spec-1.1.1)
- Feel free to experiment with different versions or even a JMS 2.0 implementation, but make sure to include dependencies accordingly!
Step 2: Deploy Solace JMS Library in SAP Process Orchestration
Generally the activity of deploying external drivers such as JMS libraries into the Java stack of SAP Process Orchestration is done by Basis, so as a developer you might not necessarily have the required access and/or knowledge to perform this. The following is just an outline of the process. For more guidance refer to the following blog:
How to Deploy External JMS and JDBC drivers in SAP PO 7.5
- Package the relevant JAR files you identified in the previous section (sol-jms and dependencies) into a Software Deployment Archive (SDA). You will either need to add the JAR files to the currently deployed SDA of your Process Orchestration or deploy a new one from scratch.
- After creating your SDA deploy it to the Java stack. This can be done for example using SAP NetWeaver Developer Studio (NWDS) and requires administrator access.
- After successful deployment you should be able to find your resources in the Java Class Loader:

Step 3: Configure JNDI in SAP Advanced Event Mesh
To facilitate establishing the JMS connection between SAP Process Orchestration and SAP Advanced Event Mesh in the easiest way possible we are going to make use of JNDI. While it is most certainly possible to setup a generic JMS Receiver in Process Orchestration without JNDI it will not be covered in this blog. Instead head to your Advanced Event Mesh Console to:
- Enable JNDI Access
- Select your Broker in the Cluster Manager and open the corresponding Broker Manager.
- Navigate to Messaging > JMS JNDI.
- Enable JNDI if not yet enabled under JNDI Settings and create a JNDI Connection Factory.
- In this example I chose /JNDI/TEST for the Connection Factory
- The rest of the Connection Factory settings are left at default, but feel free to adjust transport properties as necessary.

- Define the Queue
- Go to Messaging > Queues.
- Create a Queue
- In this case I called it T28_JMS according to the ID of my SAP Process Orchestration system, adjust as necessary
- Ensure is enabled and properly permissioned.
- Bind Queue and Connection Factory to JNDI
- Under JMS JNDI > Queues, create a new JMS Queue
- The JNDI Name defines how we are going to address this queue from Process Orchestration. I chose is /JNDI/T28_JMS to keep naming consistent with the..
- Physical Name, where you select the actual queue you just created in Advanced Event Mesh

Step 4: Configure JMS Receiver Channel in SAP Process Orchestration
Here’s the setup of the JMS Receiver Adapter:

Parameters:
- Adapter Type: JMS
- Transport Protocol: Access JMS Provider with JNDI
- Message Protocol: JMS 1.x
Connection Parameters:
- Name of JNDI Initial Context Factory:
com.solacesystems.jndi.SolJNDIInitialContextFactory is the initial Context Factory provided by the sol-jms library - JNDI Lookup Name of Topic/QueueConnectionFactory & JMS Queue/Topic:
This is what we just created in the Advanced Event Mesh, in my case /JNDI/TEST and /JNDI/T28_JMS - JNDI Server Address, Logon User & Password:
You can find the Server Address and credentials for the default user solace-cloud-client under the Connect tab in the Cluster Manager of your AEM broker where we got the sol-jms library in the beginning. Be sure to include the Message VPN in the JNDI Logon User with an '@' symbol. - The solace-cloud-client user should only be used for development purposes. Be sure to create a proper client via Broker Manager > Access Control in your Advanced Event Mesh for productive use.
After configuring your JMS Receiver Adapter make sure the other parts of this scenario are ready as well and activate them.
Step 5: Test via the REST API platform of your choice
- Send a test payload to your REST endpoint. In my case I will send a very basic XML message.

- The scenario processes and routes the message to the JMS Receiver channel.

- The Message will get published to the queue specified in Advanced Event Mesh. You can monitor this by checking in the Broker Manager > Queues that your queue is receiving messages.

Troubleshooting Tips
- ClassNotFoundException: Ensure the sol-jms library and dependencies are correctly deployed.
- JNDI Lookup Failures: Confirm the JNDI names in Process Orchestration match exactly with those configured in Advanced Event Mesh.
- Security Errors: Check that the user has appropriate permissions in the Advanced Event Mesh broker.
Conclusion
Connecting SAP Process Orchestration with SAP Advanced Event Mesh using JMS and JNDI offers a powerful way to bridge synchronous process-driven integrations with event-driven systems. With Solace’s sol-jms library and proper JNDI configuration, you can seamlessly push data to Advanced Event Mesh queues and unlock real-time integration patterns across your landscape.
While this blog focused on configuring JMS and JNDI for queue-based messaging, which is ideal for point-to-point delivery and tightly scoped integrations, it’s worth noting that a topic-based architecture may be better aligned with future-facing, event-driven designs. Topics enable a publish-subscribe model, allowing multiple systems to consume the same event independently and asynchronously—an essential pattern for building scalable, loosely coupled microservices. As you modernize your integration landscape and move toward more reactive architectures, consider evolving from queue-based patterns to topic-driven messaging to fully embrace the benefits of event-driven architecture.