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


Summary

The integration solution is designed to solve a coordination and rate-limit management problem between Ariba and Keelvar APIs used in Sourcing Processes. 

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 APIs primarily, and to a lesser extent Keelvar Intake and Export APIs, are reached, causing interfaces 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 JMS Queues, where required, shared across interfaces using the mentioned APIs
  2. Use of singleton processing via Router IFlows  that process messages sequentially and synchronously from each JMS Queue
  3. Use of dedicated "Connectors" to Ariba and Keelvar APIs that are rate-limit aware and 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 four interfaces that currently (as of 09 April 2026) 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
ERP-224Synchronisation of Suppliers updated in Ariba to Keelvar


Description

Ariba APIs contain both intake and export endpoints supporting the Ariba Strategic Sourcing Platform to read, create and update Sourcing events, Scenarios, Awards and Suppliers.

Three Ariba APIs are part of this solution - Event Management API, Master Data Retrieval API for Sourcing, and Surrogate Bidding API. There is no documented rate-limit for Surrogate Bidding API; however, Event Management API and Master Data Retrieval API for Sourcing requests are rate-limit controlled as shown below:


Three Keelvar APIs are also used in these integrations, each with its own rate-limits:


In addition, Keelvar provides a Webhook management API which is utilised in the Event Management Orchestration between Ariba and Keelvar. However, this API does not have a published rate-limit control and is described in NFR-2006.

To manage the constraint enforced by the rate-limits, 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 and service unavailability.

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. After defining the parameters (headers) necessary, including the ProcessDirect path for processing at Provider IFlow, the message is passed to the JMS Queue. Ideally, this IFlow will not contain any calls to Ariba or Keelvar APIs. 
2The JMS Sender Adapter reads the messages and processes them synchronously. 
3Based on the ProcessDirect path defined in the message parameters, the Router IFlow forwards the message directly to the Provider IFlow.
4The Provider IFlow executes calls to Ariba APIs as required, using a dedicated Connector IFlow. This Provider IFlow sets the parameters required by the Connector to call the API 
5The Provider IFlow executes any API calls to Keelvar, using the Keelvar Connector IFlow. This Provider IFlow sets the parameters required by the Connector to call the API.
6Optionally, the Provider IFlow triggers additional messages to the JMS Queue.


Key Components of the JMS Solution

ComponentArtefact NameDescription
JMS Sourcing QueuearibaEventMgtQueueCentral component for Event and Award Scenarios. 
JMS Master Data QueuearibaMasterDataQueueCentral component for Supplier Synchronisation Scenarios. 
JMS Events Router IFlowJMS_Events_RouterThe singleton IFlow that directly reads from the JMS Sourcing Queue. This is single threaded, controlled via standard JMS Sender Configuration. 
JMS Master Data Router IFlowJMS_MasterData_RouterThe singleton IFlow that directly reads from the JMS Master Data Queue. This is single threaded, controlled via standard JMS Sender Configuration. 
Ariba Event Management API ConnectorAriba_Event_Management_API_ConnectorHandles all API requests to Ariba Event Management API. Errors are logged but also returned to the calling IFlow. 
Ariba Surrogate Bidding API ConnectorAriba_Surrogate_Bidding_API_ConnectorHandles all API requests to Ariba Surrogate Bidding API. Errors are logged but also returned to the calling IFlow.
Ariba Master Data API ConnectorAriba_Master_Data_API_ConnectorHandles all API requests to Ariba Master Data Retrieval API for Sourcing. Errors are logged but also returned to the calling IFlow
Keelvar Events API ConnectorKeelvar_ConnectorHandles all API requests to Keelvar Intake and Export APIs. Errors are logged but also returned to the calling IFlow
Keelvar Supplier API ConnectorKeelvar_Supplier_API_ConnectorHandles all API requests to Keelvar Supplier API. Errors are logged but also returned to the calling IFlow



Technical Details

Invoker IFlow Configurations

IFlows that write entries into the JMS Queues need to provide the following parameters

ObjectValueDescription
Header ValuejmsProcessDirectPathThe ProcessDirect path of the Provider IFlow. Externalised field
Queue Name in JMS Receiver Adapter Configuration
 
aribaEventMgtQueueName of the JMS Events Queue. Externalisable field
aribaMasterDataQueueName of the JMS Supplier Queue. Externalisable field


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

ObjectValueDescription
Access TypeNon-ExclusiveEach JMS Queue entry will process independently of each other due to the Design Principles applied
Retention Threshold for Alerting2 daysThe number of days to hold the message in the queue to raise a Stale message alert. Default value of 2 days. In this solution, this has no relevance as the messages are pushed to DLQ after the defined number of retries
Expiration Period30 daysThe period a message can be fetched and reprocessed from the queue. Default value of 30 days is used. In this solution, the parameter has no relevance as the messages are pushed to DLQ after the defined number of retries.

JMS Routers

Externalised Parameters

ObjectValue JMS Event RouterValue JMS Master Data RouterDescription
Sender Queue NamearibaEventMgtQueuearibaMasterDataQueueThe source JMS Queue to retrieve messages
Maximum Retries Allowed55The messages are gracefully pushed to a defined separate "Dead Letter Queue" (DLQ) used for error handling. No further processing will be done after the configured number of retries.
Dead Letter Queue for Error HandlingDLQ_aribaEventMgtQueueDLQ_aribaMasterDataQueueThe name of the Dead Letter Queue that persists messages when the number of processing times reaches the maximum Retry Limit

Sender Adapter JMS Configurations - Common to both JMS Routers

ObjectValueDescription
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 minuteThe initial duration between the retry attempts
Exponential BackoffTicked (true)The retry interval is doubled with each subsequent attempt
Maximum Retry Interval60 minutesThe maximum allowed retry interval with exponential backoff. In this solution, this parameter is relevant if the number of allowed retries is increased to over 7
Dead Letter QueueTicked (true)

In case of out-of-memory issues by the worker node, the messages are moved to a separate queue. If needed, the messages can be unlocked for reprocessing.

Note: this Dead Letter Queue is the default JMS Sender behaviour. 

Receiver Adapter JMS Configuration - For Dead Letter Queue 

ObjectValueDescription
Access TypeNon-ExclusiveSince messages are not automatically reprocessed from this queue, this value is not relevant for the solution
Retention Threshold for Alerting 2 daysThe number of days to hold the message in the queue to raise a Stale message alert. Default value of 2 days. An alert will be raised if the message is not removed within this period. 
Expiration Period30 daysThe period a message can be fetched and reprocessed from the queue. Default value of 30 days is used. 
Compress Stored MessagesTicked (true)Messages are compressed to reduce memory usage, although the messages are atomic in nature.
Encrypt Stored MessagesTicked (true)Messages are encrypted in Datastore. 
Transfer Exchange PropertiesTickedThe message properties are kept for error handling processes

Provider IFlows Configuration Requirements

Ariba Event Management API Connector IFlow

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

Ariba Event Management 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&passwordAdapter=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 combined with the Base URL to construct the API endpoint
Query ParametersaribaUrlQueryThe additional Query Parameters that must be combined with the the common query parameters defined in the Adapter

Additional Parameters

ObjectDescriptionValue DevValue 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_EventMgmtAPIOAuth_Ariba_Sourcing_EventMgmtAPIOAuth_Ariba_Sourcing_EventMgmtAPI
Ariba API DelayThe Delay to be implemented when the remaining API count is zero2 seconds2 seconds2 seconds
Ariba Password AdapterPassword Adapter defined for Technical Users in AribaThirdPartyUserThirdPartyUserThirdPartyUser
Ariba RealmAriba tenant ID745255310-SS-T744368466-T744368466
Ariba UserTechnical User for SAP CPI to extract eventsR_BTP_ARB_ADMINR_BTP_ARB_ADMINR_BTP_ARB_ADMIN
Ariba API KeySecurity Credential Name containing the API Key for Ariba Event ManagementAPIKEY_AribaEventManagement_CPI_DevAPIKEY_AribaEventManagement_CPI_QAAPIKEY_AribaEventManagement_CPI_Prod

Ariba Surrogate Bidding API Connector IFlow

Similar to Event Management API Connector, the Ariba Surrogate Bidding API Connector also constructs the URL and the Authentication Parameters based on values passed from the calling IFlow and configurable parameters in the Connector. The construct is shown below:

Ariba Surrogate Bidding URL

Construction of the URL with an example:

METHODhttps://<Ariba Base URL><Ariba URL Path>?<Connector Defined Query Parameters>
POSThttps://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=7452####-SS-T&user=R_XXXXXXXX&passwordAdapter=XXXXXXXXX


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 combined with the Base URL to construct the API endpoint

Additional Parameters

ObjectDescriptionValue Dev & TestValue 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_SurrogateBiddingAPIOAuth_Ariba_Sourcing_SurrogateBiddingAPIOAuth_Ariba_Sourcing_SurrogateBiddingAPI
Ariba API DelayThe Delay to be implemented when the remaining API count is zero2 seconds2 seconds2 seconds
Ariba Password AdapterPassword Adapter defined for Technical Users in AribaThirdPartyUserThirdPartyUserThirdPartyUser
Ariba RealmAriba tenant ID745255310-SS-T744368466-T744368466
Ariba UserTechnical User for SAP CPI to extract eventsR_BTP_ARB_ADMINR_BTP_ARB_ADMINR_BTP_ARB_ADMIN
Ariba API KeySecurity Credential Name containing the API Key for Ariba Event ManagementAPIKEY_AribaSurrogateBidding_CPI_DevAPIKEY_AribaSurrogateBidding_CPI_QAAPIKEY_AribaSurrogateBidding_CPI_Prod

Ariba Master Data API Connector IFlow

Similar to Event Management API Connector, the Ariba Master Data API Connector also constructs the URL and the Authentication Parameters based on values passed from the calling IFlow and configurable parameters in the Connector. The construct is shown below:

Ariba Master Data API for Sourcing 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-mds-search/v1/prod/entities/organizations?realm=7452####-SS-T&user=R_XXXXXXXX&passwordAdapter=XXXXXXXXX
$top=500&$filter=(TimeUpdated gt '2026-04-15 17:12:25.000')&$includeInactive=true


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 combined with the Base URL to construct the API endpoint
Query ParametersaribaUrlQueryThe additional Query Parameters that must be combined with the the Common Query parameters defined in the Adapter

Additional Parameters

ObjectDescriptionValue Dev & TestValue 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_MasterDataAPIOAuth_Ariba_Sourcing_MasterDataAPIOAuth_Ariba_Sourcing_MasterDataAPI
Ariba API DelayThe Delay to be implemented when the remaining API count is zero2 seconds2 seconds2 seconds
Ariba Password AdapterPassword Adapter defined for Technical Users in AribaThirdPartyUserThirdPartyUserThirdPartyUser
Ariba RealmAriba tenant ID745255310-SS-T744368466-T744368466
Ariba UserTechnical User for SAP CPI to extract eventsR_BTP_ARB_ADMINR_BTP_ARB_ADMINR_BTP_ARB_ADMIN
Ariba API KeySecurity Credential Name containing the API Key for Ariba Event ManagementAPIKEY_AribaMasterData_CPI_DevAPIKEY_AribaMasterData_CPI_QAAPIKEY_AribaMasterData_CPI_Prod

Keelvar Event 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 provide the following 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 combined 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_DevKeelvarToken_Prod

Keelvar Supplier 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>
GEThttps://test.keelvar.dev/api/manage/suppliers


An IFlow calling the Keelvar Connector must provide the following 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 combined 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_DevKeelvarToken_Prod


Error Handling & Retry Strategy


ScenarioAction
Retry Limit ReachedPause for the configured duration until the rate-limits are reset
Permanent API Error (HTTP 400/401/404)Provider IFlow logs the error in MPL and push back to the 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 Dead Letter Queue (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