IDNFR-2007
NameAriba Event Management Orchestration Framework
AuthorKapila Epasinghe ( kapila.epasinghe-ext@syensqo.com )
ApproverSascha Wenninger ( sascha.wenninger-ext@syensqo.com )


Summary

The integration solution is designed to solve a coordination and rate limit management problem between Ariba Event Management API and Keelvar APIs . 

During the implementation of Interfaces (see below) that require orchestration of the APIs between the two systems, it was discovered that strictly imposed rate limits in Ariba Event Management APIs mainly, but also Keelvar Intake and Export APIs, are reached, causing Integrations to fail.

To address this, an Integration Orchestration Solution is introduced using available tools in SAP CPI.  The major aspects of the solution are:

  1. Use of a single JMS Queue shared by all Interfaces utilising the mentioned APIs
  2. Use of singleton processing via a Router IFlow that sequentially and synchronously processes messages in the JMS Queue
  3. Use of Connectors to Ariba and Keelvar APIs that are rate-limit aware and automatically pause if limits are reached.

Overall, this solution provides a robust, controlled, and extensible foundation for managing multiple API-based integrations between Ariba and Keelvar, ensuring operational stability and compliance with API usage policies in Ariba and Keelvar. Furthermore, this solution can be extended if and when further Integrations need to be implemented that utilise Ariba and Keelvar APIs, in addition to the 3 interfaces that currently ( as of 24-October-2025 ) utilise this:

IDDescription
ERP-108Synchronisation of Sourcing Events created and updated in Ariba to Keelvar
ERP-137Synchronisation of Award Bids and Bid Sheets from Keelvar to Ariba
ERP-138Notification of Keelvar Event Status changes to Ariba


Description

Ariba Event Management API contains both intake and export endpoints supporting Ariba Strategic Sourcing Platform to read, create and update Sourcing events, Scenarios and Awards. The Event Management API requests are rate-limit controlled as shown below:

Time limitsNumber of Requests
Per second5
Per minute80
Per Hour3500


Keelvar Intake and Export APIs are two different sets of API Services with separated rate-limits:

In addition, Keelvar provides a Webhook management API which is utilised in the Event Management Orchestration between Ariba and Keelvar. However, this set of APIs do not have a published Rate-Limit controls and described in a separate document here.

To manage this constraint, this framework enables the orchestration of the APIs between the two systems, avoiding and recovering from rate-limiting exceptions as well as handling exceptions such as data errors, service unavailability etc.

The following guiding principles need to be applied in the IFlows pertaining to the Integration:

Solution Overview

Process Flow



StepFunction
1Invoker IFlow initiates the processing. Ideally, this IFlow will not contain any calls to Ariba or Keelvar APIs. 
2After defining the parameters (headers) necessary for processing at Provider IFlow, including the ProcessDirect Path of the Provider IFlow, the message is passed to the JMS Queue
3The Router, reads the message from the JMS Queue and routes the message directly to the ProcessDirect Path of the Provider IFlow, defined in the message
4The Provider IFlow will execute any API calls to Ariba and Keelvar. If needed The Provider IFlow can invoke further JMS Entries


Key Components of the JMS Solution

ComponentDescription
JMS QueueCentral JMS Queue
Router IFlowThe singleton IFlow that directly reads from the JMS Queue. This is single threaded, controlled via standard JMS Sender Configuration. 
Ariba Event Management API ConnectorHandles all API requests to Ariba Event Management API. Errors are logged but also returned to the calling IFlow. 
Keelvar API ConnectorHandles all API requests to Keelvar Intake and Export APIs. Errors are logged but also returned to the calling IFlow



Technical Details

Invoker IFlow Configuration Requirements

ObjectValueDescription
Header ValuejmsProcessDirectPathThe ProcessDirect path of the Provider IFlow
Queue Name in JMS Receiver Adapter ConfigurationaribaEventMgtQueueName of the JMS Queue. Externalisable value

JMS Queue

All IFlows that forwards the processing to JMS Queue should have the following configuration settings in the JMS Receiver Adapter

ObjectValueDescription
Queue NamearibaEventMgtQueueThe Unique name for the JMS Queue
Access TypeNon-ExclusiveEach JMS Queue entry will process independently of each other due to the Design Principles applied
Retention Threshold for Alerting2 days
Expiration Period30 days

JMS Events Router

Sender Adapter JMS Configuration

ObjectValueDescription
Queue Name in JMS Sender Adapter ConfigurationaribaEventMgtQueueName of the JMS Queue. Externalisable value
Number of Concurrent Processes1Note: This value is important for Singleton Instance of the IFlow. This is vital for Serialised processing of the Queue
Retry Interval1 minute
Exponential BackoffTicked
Maximum Retry Interval60 minutes
Dead Letter QueueTicked
Maximum Retry Limit5The messeges are gracefully pushed to the DLQ. No further processing will be done after the configured number of retries.

Receiver Adapter JMS Configuration - For Dead Letter Queue 

ObjectValueDescription
Queue NameDLQ_aribaEventMgtQueueAll messages after the configured number of Retries are moved to this DLQ
Access TypeNon-ExclusiveSince messages are not automatically reprocessed from this queue, this value is not relevant for the solution
Retention Threshold for Alerting 2 days
Expiration Period30 days
Compress Stored MessagesTicked
Encrypt Stored MessagesNot ticked
Transfer Exchange PropertiesTicked


Other Configurations

ObjectValueDescription
maximumRetries5After the defined number of attempts, the message is pushed to JMS Queue. The Failed messages can be found in the Monitoring

Provider IFlows Configuration Requirements

Ariba Event Management API Connector IFlow

The Ariba Connector constructs the URL and the Authentication Parameters based on valued passed from the calling IFlow and configurable parameters in the Connector. The construct is shown below:

Ariba URL

Construction of the URL with an example:

METHODhttps://<Ariba Base URL><Ariba URL Path>?<Connector Defined Query Parameters>&<Received Query Parameters>
GEThttps://eu.openapi.ariba.com/api/sourcing-events/v2/prod/events/identifiers?realm=7452####-SS-T&user=R_XXXXXXXX&passwordAdapater=XXXXXXXXX&$filter=(createDateFrom gt 1761418273 and createDateTo=1761464729)


An IFlow calling the Adapter must provide the following Header Parameters to construct the API endpoint to Ariba

ObjectHeader NameDescription
HTTP MethodaribaMethodThe HTTP Method for the API
Ariba Url PatharibaUrlPathThe Path (i.e. the endpoint) that is amalgamated with the Base URL to construct the API endpoint
Query ParametersaribaUrlQueryThe additional Query Parameters that must be amalgamated with the the Common Query parameters defined in the Adapter


Additional Parameters

ObjectDescriptionValue Dev & TestValue Prod
Ariba Base URLBase URL to Ariba Event Management APIs. eu.openapi.ariba.com/api/sourcing-event/v2/prod
Credential NameOAuth Credential Name for Ariba Endpoint in SAP CPIOAuth_Ariba_Sourcing_EventMgmtAPI
Ariba API DelayThe Delay to be implemented when the remaining API count is zero2 seconds
Ariba Password AdapterPassword Adapter defined for Technical Users in AribaThirdPartyUser
Ariba RealmAriba tenant ID745255310-SS-T
Ariba UserTechnical User for SAP CPI to extract eventsR_BTP_ARB_ADMIN
Ariba API KeySecurity Credential Name containing the API Key for Ariba Event ManagementAPIKEY_AribaSourcing_Keelvar_Dev

Keelvar API Connector IFlow

Keelvar URL

Similarly, the Keelvar Connector constructs the URL based on the values passed from the calling IFlow and configurable parameters in the Connector. 

METHODhttps://<Keelvar Base URL><Keelvar URL Path>?<Query Parameters>
GEThttps://test.keelvar.dev/api/feeds/awards?sourcing_event=$event_uuid'


An IFlow calling the Keelvar Connector must providefollowing Header Parameters to construct the API endpoint to Keelvar

ObjectHeader NameDescription
HTTP MethodkeelvarVerbThe HTTP Method for the API
Keelvar Url PathkeelvarPathThe Path (i.e. the endpoint) that is amalgamated with the Base URL to construct the API endpoint
Query ParameterskeelvarQueryThe Query Parameters


Additional Parameters

ObjectDescriptionValue Dev & TestValue Prod
Keelvar HostBase URL for Keelvar APItest.keelvar.dev/apimy.keelvar.app/api
Keelvar API KeySecurity Material in CPI containing the Keelvar API KeyKeelvarToken

Error Handling & Retry Strategy


ScenarioAction
Retry Limit ReachedPause for the configured length so that additional API calls are reached
Permanent API Error (HTTP 400/401/404)Provider IFlow logs the error in MPL and push back to JMS Queue
JMS Retry ExhaustedGracefully push the message to DLQ for analysis. 

Monitoring & Observability


ToolUsage
CPI Message MonitoringTrack message status, errors, and retries.
JMS Queue MonitorCheck pending, in-flight, and DLQ messages.
MPL LogsTrack API call results and pause events.

Future Enhancements

Use API Header driven pause 

For the current solution, based on the number of calls and the schedule, the configurable pause time limit provides adequate support for re-processing of messages. However, if further integrations are added to the package, further design analysis may be required to control the length of the pause

Reprocessing from DLQ

At the moment, the DLQ is only used as a placeholder for any messages that have failed the number of retries configured. Currently, no retry from DLQ is enabled, and this solution may be enhanced to provide the ability to reprocess the messages in the DLQ back to the JMS Queue.


Change Log