Status

Owner
StakeholdersThe business stakeholders involved in making, reviewing, and endorsing this decision. Type @ to mention people by name
Jira Request ID

Jira Development ID

High- Level Specification

Application System (Source)Keelvar
Application System ( Target)Ariba Guided Sourcing
Source System InterfaceStandard Keelvar Webhooks and APIs
Target System InterfaceStandard Ariba APIs
Business Process Reference03.03.03.01. Manage Sourcing Projects

Functional Overview

Ariba Guided Sourcing is used as the single entry point for all Sourcing Events. If the users can select the Keelvar template to create an Event in Ariba Guided Sourcing, the details of the Event are replicated to Keelvar and any change in Keelvar reflects the status of the Event in Ariba Guided Sourcing. When the user awards one or multiple Bidders or Suppliers in Keelvar, the awarded Bid(s) and Keelvar Bid Sheet must be sent back to Ariba Guided Sourcing.

Scope and Objectives

The scope of this Functional Specification is to describe the interface between Keelvar and Ariba Guided Sourcing. When an award scenario and awarded bid sheet(s) are created in Keelvar and the event is closed in Keelvar, a Webhook in Keelvar will notify SCPI about the award. After that, SCPI will send the award scenario and awarded bid sheet(s) back to the event in Ariba Guided Sourcing. If any new Bidder is added in Keelvar, the new Bidder and Bidder Contact must also be created in Ariba Guided Sourcing.

Process Flow Diagram


Step

Description

Comment

1

User awards one or more suppliers or bidders in Keelvar and closes the Event in Keelvar.


2

A webhook is triggered from Keelvar to SCPI notifying the change along with the Ariba Event ID


3

SCPI extracts Sourcing Event Feed and Award Feed details from Keelvar Export API


4

SCPI extracts Keelvar bid sheet and converts it into a CSV file


5

SCPI sets Ariba event status to Draft


6

If an awarded Bidder has been added directly in Keelvar, SCPI adds the new bidder is added to the Ariba event.


7

SCPI adds the Keelvar Bid Sheet Item to the Ariba Event


8

SCPI sets the Ariba Guided Souring Event status to Publish

 

9

SCPI posts surrogate bid(s) for awarded bidder(s) to Ariba Guided Sourcing Event along with the Bid Sheet as attachment

 

10

SCPI sets the Ariba Guided Sourcing Event status to Pending Selection

 

11

SCPI creates an Award Scenario with the above sent Bid(s) in Ariba Guided Sourcing Event

 

12

User logs into Ariba, awards the bid and creates a contract.

 

Assumptions

  • When the event status changes to CLOSED in Keelvar, the same is notified in SCPI via Webhook API
  • The users must not reopen the event after they have awarded the Event in Ariba Guided Sourcing. Otherwise, the new award cannot be linked to Ariba Guided Sourcing.
  • Ariba APIs use Pacific Standard Time zone as the default time zone for all concerned APIs.

Dependencies

Security, Integrity and Controls

The following are the Security and Authorization considerations for this interface:

  • Access to Ariba and Keelvar APIs is limited via a shared secret to secure End Point connection
  • Access to API authorization in SAP Ariba Sourcing are being addressed by Ariba standard security controls. Only authorized persons with Ariba administrator’s role can access/ change API OAuth Keys.
  • Similarly, access to API authorization in Keelvar are being addressed by Keelvar standard security controls. Only authorized persons with Keelvar Organization User role can access/ change the Keelvar authorization token.

Configuration Requirements

In order to activate the SAP Ariba API for Event Management, following steps need to be completed:

  1. Sign in to the SAP Ariba Developer Portal.
  2. Click Create application from the home page.
  3. Fill out the Create a new application form by entering an application name and description, then click Submit.
  4. This generates an Application key that identifies your application within the system. Every API request your application makes must include this key as the value of the apiKey parameter.
  5. Ask your organization admin to request API access for your application by displaying the application in My applications and clicking Actions  Ask your admin to request API access.
  6. A user with the Organization Admin role requests approval for API access.
  7. SAP Ariba assesses the request, and once processed and approved, the Organization Admin user receives email with an OAuth client ID for the application.
  8. A user with the Organization Admin role generates the OAuth secret and base64-encoded client and secret.

In order to activate Keelvar API, following steps need to be completed:

  1. Log into Keelvar Portal
  2. Go to Account settings and navigate to API Keys section
  3. Click New token button and provide the name and Expiration of the token. Click create to get the token details.

Ariba Guided Sourcing configuration details are described as under:



Supplementary

Test

Production

Ariba Technical User

R_BTP_ARB_ADMIN



Ariba Realm ID

745255310-SS-T

745255310-T

745255310

OAuth URL

https://api-eu.ariba.com/v2/oauth/token

https://api-eu.ariba.com/v2/oauth/token

https://api-eu.ariba.com/v2/oauth/token

Request URL

Surrogate Bidding API - https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod

Event Management API - https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/

Surrogate Bidding API - https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod

Event Management API - https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/

Surrogate Bidding API - https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod

Event Management API - https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/


Keelvar configuration is described below:

Request URL

https://test.keelvar.dev/api

https://my.keelvar.app/api

A webhook for Sourcing Event Feed must be created in Keelvar to receive of the following changes in Sourcing Event:

  • The event is closed after all bidding rounds have been completed

A request must be sent to support@keelvar.com and make a whitelist request for the domain of the SCPI system to which the HTTP notifications will be sent.

Creation of Webhook in Keelvar for Sourcing Event Feed requires sending a request as under:

curl -X POST https://my.keelvar.app/api/webhooks \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer <YOUR_API_KEY>' \
    -d '{
          "name": "Sourcing Event Feed Webhook",
          "description": "Keelvar Sourcing Event Feed Webhook",
          "signing_alg": "HMAC_SHA256",
          "signing_key": "(Signing Key)",
          "triggers": "[SOURCING_EVENTS_FEED_UPDATED]",
          "url": (SCPI webhook listener URL),
        }'

Keelvar will send the response with the Webhook UUID as under:

'description':'Keelvar Sourcing Event Feed Webhook',
'name':'Sourcing Event Feed Webhook',
'signing_alg':'HMAC_SHA256',
'signing_key': '(Signing Key)',
'triggers':'[SOURCING_EVENTS_FEED_UPDATED]',
'url':(SCPI webhook listener URL),
'uuid':'4a55a230-307b-4bab-ac53-e95186b88968'

Special Requirements

Not applicable


Design Rationale

Since Sourcing Events are originally initiated in SAP Ariba Guided Sourcing and integrated to Keelvar, when the award scenario is completed and awarded bid sheet are created in Keelvar, they must be automatically sent back in SAP Ariba Guided Sourcing.

API use

Creation of API Applications in Ariba API is executed in the EU tenant.

SAP Ariba APIs Portal

Data Structure

Source Structure

The following Keelvar fields will be used to provide the required information for this interface:

FieldDescription
tags/{name=Ariba Event ID}/valueThe Ariba Event ID
suppliers/external_idThe System ID of the Bidder or Supplier
awards/share_awardedThe decimal value of the share awarded to the Bidder or the supplier. The range is between 0 and 1.
sourcing_eventThe UUID of the Keelvar Sourcing Event
fields/Contact IDThe Contact ID of the Bidder or Supplier Contact


Target Structure

The following Keelvar fields will be used to provide the required information for this interface:

FieldDescription
eventId or supplierBids/eventIdThe Ariba Event ID
supplierBids/winningSplitValueThe decimal value of the share awarded to the Bidder or the supplier. The range is between 0 and 1.
actionNameThe name of the operation to change the state of the Ariba Event.
organization/systemIDThe System ID of the Bidder or Supplier
contacts/uniqueName or supplierId or supplierBids/invitationIdThe Contact ID of the Bidder or Supplier Contact
supplierBids/itemIdThe Item ID of the Bid sheet from Keelvar item


           

Mapping and Calculation

The following Mapping Table is used to update the status of the Ariba Event. The Ariba Event Management API is used for all requests:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
Static ValueStatic Value = Ariba Technical UserYTechnical User Name/jobsuserYTechnical User Name

Static ValueStatic Value = ThirdPartyUserYTechnical User PasswordAdapter/jobsPasswordAdapterYTechnical User PasswordAdapter

Static ValueStatic Value = Realm IDYThe Ariba Guided Sourcing Realm ID/jobsrealmYThe Ariba Guided Sourcing Realm ID

Static ValueStatic Value = EVENTYThe type of object for which the status has to be updated/jobsresourceTypeYThe type of object for which the status has to be updated

Static Value

Static Value = Supported options:

  1. EDIT
  2. PUBLISH
  3. STOP
YThe name of the operation/jobsactionNameYThe name of the operation

/feeds/sourcing-eventstags/{name=Ariba Event ID}/valueYThe Ariba Event ID/jobsids/eventIdYThe Ariba Event ID


The following Mapping Table is used to add a new supplier invitation (new bidder) to the Ariba Event. The Ariba Event Management API is used for all requests:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
/feeds/sourcing-eventstags/{name=Ariba Event ID}/valueYThe Ariba Event IDevents/{eventID}/items/supplierInvitationseventIDYThe Ariba Event ID

Static ValueStatic Value = Ariba Technical UserYTechnical User Nameevents/{eventID}/items/supplierInvitationsuserYTechnical User Name

Static ValueStatic Value = ThirdPartyUserYTechnical User PasswordAdapterevents/{eventID}/items/supplierInvitationsPasswordAdapterYTechnical User PasswordAdapter

Static ValueStatic Value = Realm IDYThe Ariba Guided Sourcing Realm IDevents/{eventID}/items/supplierInvitationsrealmYThe Ariba Guided Sourcing Realm ID

/feeds/sourcing-eventssuppliers/external_idYThe System ID of the Bidder or Supplierevents/{eventID}/items/supplierInvitationsorganization/systemIDYThe System ID of the Bidder or Supplier

/feeds/sourcing-eventsfields/Contact ID YThe Contact ID of the Bidder or Supplier Contactevents/{eventID}/items/supplierInvitationscontacts/uniqueNameYThe Contact ID of the Bidder or Supplier Contact

Static ValueStatic Value = SourcingSupplierUserYSupplier User PasswordAdapterevents/{eventID}/items/supplierInvitationscontacts/PasswordAdapterYSupplier User PasswordAdapter


The following Mapping Table is applicable to add Keelvar Bid Sheet Item to Ariba Guided Sourcing Event. The Ariba Event Management API is used for all requests:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
/feeds/sourcing-eventstags/{name=Ariba Event ID}/valueYThe Ariba Event IDevents/{eventID}/itemseventIDYThe Ariba Event ID
connection
Static ValueStatic Value = Ariba Technical UserYTechnical User Nameevents/{eventID}/itemsuserYTechnical User Name
connection
Static ValueStatic Value = ThirdPartyUserYTechnical User PasswordAdapterevents/{eventID}/itemsPasswordAdapterYTechnical User PasswordAdapter
connection
Static ValueStatic Value = Realm IDYThe Ariba Guided Sourcing Realm IDevents/{eventID}/itemsrealmYThe Ariba Guided Sourcing Realm ID
connection
Static ValueStatic Value = Keelvar Bid SheetYThe Name of the Bid Sheet itemevents/{eventID}/itemstitleYThe Name of the Bid Sheet item
payload
Static ValueStatic Value = 4YThe Type of the Bid Sheet item (Line Item Type)events/{eventID}/itemsitemTypeYThe Type of the Bid Sheet item (Line Item Type)
payload
Static ValueStatic Value =Award PercentageYThe Term name for Award Percentageevents/{eventID}/itemsterms/titleYThe Term name for Award Percentage
payload
Static ValueStatic Value = BidYThe Term name for Bidevents/{eventID}/itemsterms/titleYThe Term name for Bid
payload
Static ValueStatic Value = 100YThe initial value for quantityevents/{eventID}/itemsterms/value/quantityValue/amountYThe initial value for quantity
payload
Static ValueStatic Value = P1Ythe unit of measure of quantity (Percentage)events/{eventID}/items

terms/value/quantityValue/unitofMeasure

Ythe unit of measure of quantity (Percentage)
payload
Static ValueStatic Value = Keelvar Bid Sheet AttachmentYThe Term Name for Bid Sheet attachmentevents/{eventID}/itemsterms/titleYThe Term Name for Bid Sheet attachment
payload

The following Mapping Table is applicable to trigger a Job required to send a Surrogate Bid to Ariba Guided Sourcing Event. The Surrogate Bidding API is used for all requests:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
Static ValueStatic Value = Ariba Technical UserYTechnical User NamejobsuserYTechnical User Name
connection
Static ValueStatic Value = ThirdPartyUserYTechnical User PasswordAdapterjobsPasswordAdapterYTechnical User PasswordAdapter
connection
Static ValueStatic Value = Realm IDYThe Ariba Guided Sourcing Realm IDjobsrealmYThe Ariba Guided Sourcing Realm ID
connection
Static Value

Static Value = Allowed Operation are:

  1. EXPORT
  2. IMPORT
  3. ADD_ATTACHMENT_RESPONSE
  4. SUBMIT
YThe Operation which has to be done for the Surrogate BiddingjobsoperationYThe Operation which has to be done for the Surrogate Bidding
connection
/feeds/awardstags/{name=Ariba Event ID}/valueYThe Ariba Event IDjobseventIdYThe Ariba Event ID
connection -URL
manage/suppliersfields/Contact IDYAriba Bidder Contact IDjobssupplierIdYAriba Bidder Contact ID
payload
Previous RequestBase64 encoded fileYThe Exported Bid Sheet from Keelvar which has been converted into a CSV filejobsfileYThe Exported Bid Sheet from Keelvar which has been converted into a CSV file
payload
Static ValueStatic Value = "1"YThe Item Number for the Keelvar Bid Sheet ItemjobsitemNumberYThe Item Number for the Keelvar Bid Sheet Item
payload

The following Mapping Table is applicable to get the status of the Job required to send a Surrogate Bid to Ariba Guided Sourcing Event. The Ariba Event Management API is used for all requests:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
Previous RequestjobIdYThe Job ID retrieved from the previous requestjobs/{jobId}jobIdYThe Job ID retrieved from the previous request

Static ValueStatic Value = Ariba Technical UserYTechnical User Namejobs/{jobId}userYTechnical User Name

Static ValueStatic Value = ThirdPartyUserYTechnical User PasswordAdapterjobs/{jobId}PasswordAdapterYTechnical User PasswordAdapter

Static ValueStatic Value = Realm IDYThe Ariba Guided Sourcing Realm IDjobs/{jobId}realmYThe Ariba Guided Sourcing Realm ID

The following Mapping Table is applicable to export the Surrogate Bid response file:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
Previous RequestjobIdYThe Job ID retrieved from the previous requestjobs/{jobId}jobIdYThe Job ID retrieved from the previous request

Previous RequestfileIdYThe File ID retrieved from the previous requestjobs/{jobId}fileIdYThe File ID retrieved from the previous request

Static ValueStatic Value = Ariba Technical UserYTechnical User Namejobs/{jobId}userYTechnical User Name

Static ValueStatic Value = ThirdPartyUserYTechnical User PasswordAdapterjobs/{jobId}PasswordAdapterYTechnical User PasswordAdapter

Static ValueStatic Value = Realm IDYThe Ariba Guided Sourcing Realm IDjobs/{jobId}realmYThe Ariba Guided Sourcing Realm ID

The following Mapping Table is applicable to create a manual Award Scenario in Ariba Guided Sourcing Event. The Ariba Event Management API is used for all requests:

API or Portlet NameSource FieldRequired (Y/N)DescriptionAPI or Portlet NameTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
/feeds/awardstags(name="Ariba Document ID")/valueYThe Ariba Event ID/events/{eventId}/scenarioseventIdYThe Ariba Event ID

/feed/awardsConcatenation of Static value = "Keelvar Scenario" and rounds/nameYName of the Manual Scenario/events/{eventId}/scenariostitleYName of the Manual Scenario

Static ValueStatic value = "0"YScenario Type i.e Manual/events/{eventId}/scenariosscenarioTypeYScenario Type i.e Manual

Static ValueStatic value = "Primary"YBid Type/events/{eventId}/scenariossupplierBids/bidTypeYBid TypeLoopLoop for each awarded bidder in case of split bid
event={EventID}itemID{title="Bid sheet from Keelvar"}YThe Item ID of the Bid sheet from Keelvar item/events/{eventId}/scenariossupplierBids/itemIdYThe Item ID of the Bid sheet from Keelvar itemLoopLoop for each awarded bidder in case of split bid
/feeds/awardstags(name="Ariba Document ID")/valueYThe Ariba Event ID/events/{eventId}/scenariossupplierBids/eventIdYThe Ariba Event IDLoopLoop for each awarded bidder in case of split bid
manage/suppliersfields/Contact IDYContact ID of the Bidder/events/{eventId}/scenariossupplierBids/invitationIdYContact ID of the BidderLoopLoop for each awarded bidder in case of split bid
Static ValueStatic value = "2"YAward By Quantity/events/{eventId}/scenariossupplierBids/winningSplitTypeYAward By QuantityLoopLoop for each awarded bidder in case of split bid
/feeds/awardsawards/share_awardedYPercentage Award/events/{eventId}/scenariossupplierBids/winningSplitValueYPercentage AwardLoop; MultipleLoop for each awarded bidder in case of split bid; Multiply Keelvar value with 100

Processing Logic

Processing within Source

A webhook should be triggered to complete Event closure activities which are described as under:

  1. Set the status to draft (EDIT operation) to add the Keelvar Bid Sheet Item
  2. Add the Supplier Invitation to the Ariba Event (if applicable)
  3. Add Keelvar Bid Sheet to the Ariba Event
  4. Set the status to publish when the Bid Sheet Item have been added to the event
  5. Submit the surrogate Bid(s)
  6. Set the status to Pending Selection (STOP operation) once the Surrogate Bid has been submitted
  7. Create award scenario in Ariba Guided Sourcing

Processing within Middleware

Trigger for Sourcing Event Feed Webhook in Keelvar

Once webhook is triggered in Keelvar, the SCPI should receive a notification as under:

{"trigger": "AWARD_FEED_UPDATED",
"timestamp": "2024-11-04T11:13:56.619494Z",
"payload": {
  "sourcing_event": "19e44441-81c1-11f0-b2f5-f884135dd221",
  "status": "CLOSED",
  "name": "My Event",
  "sourcing_requests": ["c819a007-bac7-4172-eb1d-272a9933f1a2"],
  "tags":[
    {
      "name": "Commodity",
      "value": "0005 OFFICE FURNITURE"
    },
    {
      "name": "GBU",
      "value": "TS & MATERIALS"
    },
    {
       "name": "Ariba Event ID",
       "value": "Doc123456789"
       }
  ]
}}

Then, a request has to be made to Keelvar to fetch Sourcing Event Details using the Sourcing Event UUID from the above notification as under:

curl --location 'https://test.keelvar.dev/api/feeds/sourcing-events?id= request UUID from above>' \
--header 'Authorization: Bearer YOUR_API_TOKEN';

The response from Keelvar should contain the Sourcing Event Details which will be used as source in the subsequent process.

Sample JSON for Payload is available here:

Edit Event Status in Ariba Guided Sourcing

SCPI must create a payload based on the Mapping Table above to update the status of the Ariba Guided Sourcing Event.

Sample JSON for Payload is available here:

Edit - 

Publish -

Stop -

 Then, a sample request to update the Job Status in Ariba Guided Sourcing is as below:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event/v2/prod//jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'apiKey: <API KEPY>' \
--header 'Authorization: Bearer 514cfd69-907a-4765-b240-8a4b07489c8d' \
--data 'based on JSON above'

Add Supplier Invitation to Event in Ariba Guided Sourcing

SCPI must create a payload based on the Mapping Table above to add the Supplier Invitation to the Ariba Guided Sourcing Event. This needs to be done only if the Bidder has been added to the Keelvar Event directly in Keelvar.

Sample JSON for Payload is available here:


Then, a sample request to add the supplier Invitation in Ariba Guided Sourcing is as below:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event/v2/prod/events/$eventID/items/supplierInvitations?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'apiKey: <API KEPY>' \
--header 'Authorization: Bearer 514cfd69-907a-4765-b240-8a4b07489c8d' \
--data 'based on JSON above'


Add Keelvar Bid Sheet to Event in Ariba Guided Sourcing

SCPI must create a payload based on the Mapping Table above to add the Bid Sheet Item to the Ariba Guided Sourcing Event.

Sample JSON for Payload is available here:

Then, a request to add Bid Sheet Item to Ariba Guided Sourcing must be made as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event/v2/prod//events/Doc2698789795/items?showTotal=true&inheritTerms=false&inheritCommodityAndRegion=true&removeEmptyOwnerTerms=false&realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \

--header 'apiKey: ARIBA_API_KEY';

--header 'Authorization: Bearer ARIBA_TOKEN';
--data ' As per Payload above'

Download the Keelvar Bid Sheet and Convert it into csv file

A request is made to retrieve Award feed from Keelvar for the Sourcing Event from the Webhook Trigger Notification as under:

curl --location 'https://test.keelvar.dev/api/feeds/awards?sourcing_event=$event_uuid' \
--header 'Authorization: Bearer Bearer API_TOKEN';

The response from Keelvar is similar to this:

This response must be converted into a csv file. For each object in the award feed a row-entry should be added in the csv file. The CSV file should have following columns:

  1. Lot Name
  2. Awarded Supplier (The award feed contains only the UUID of the supplier. The external _id (Ariba ID) of the supplier should be retrieved from Sourcing Event feed response using the Supplier UUID)
  3. share_awarded
  4. Each column under the bid_sheet_values object (except the Lot Name)


Submit a Surrogate Bid to the Event in Ariba Guided Sourcing

Surrogate Bids must be submitted for each of the Bidders that have been awarded in Keelver. The processing of a Surrogate Bid to Ariba is described below. The Ariba Event ID is needed for each of the following steps:

  1. An Export Job must be created in Ariba to export the Bid response sheet. Ariba send the Export Job ID as the response
  2. Check the status of the Export Job. Ariba sends the status of the Export Job ID as well as the File ID as the response
  3. If the Job is completed, send a request to Download the Bid response sheet. This request requires the Export Job ID as well as File ID as a part of the request parameter. Ariba sends a Base 64 encoded file as response.
  4. An Import Job must be created in Ariba to import the Bid response sheet. The above downloaded file must be added in the body of the request. Ariba sends the Import Job ID as the response.
  5. Check the status of the Import Job. 
  6. If the Job is completed, send a request to Add attachment to the Event Item. Send the Keelvar Bid Sheet which has been converted into a csv file as a part of the body of this request. Ariba sends the Add Attachment Job ID as the response.
  7. Check the status of the Add AddAttachment Job
  8. If the Job is completed, send a request to submit the Surrogate Bid. Ariba will send the Submit Job ID as response.
  9. Check the status of the Submit Job.

 #1

The request for Export, Import, Add Attachment and Submit Jobs must be sent in a form format. The form details for each of the above steps are provided here:

The request for Jobs to be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';

In response, Ariba sends back the Id of the Job.

#2

The request for Job status can be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';

 In response, Ariba send back the Id of the Job. It also includes the FileId if the operation of the Job request was Export.

#3

The request to download the Ariba Bid response sheet can be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId/files/$fileId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';

#4

The request to Import Ariba Bid Response Sheet  must be sent in a form format. The form details for each of the above steps are provided here:

The request for Jobs to be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';

#5

The request for Job status can be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';

 In response, Ariba send back the status of the Job. If the Import is successful, move on to the next step.

#6

The request to Add Attachment (Keelvar Bid Sheet) to Ariba Bid must be sent in a form format. The form details for each of the above steps are provided here:

 

The request for Jobs to be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';

In response, Ariba sends back the Id of the Job.

#7

The request for Job status can be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';

 In response, Ariba send back the status of the Job. If the Import is successful, move on to the next step.

#8

The request to Submit Bid must be sent in a form format. The form details for each of the above steps are provided here:

The request for Jobs to be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--form 'form Data as described above';

In response, Ariba sends back the Id of the Job.

#9

The request for Job status can be sent as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/jobs/$jobId?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';

 In response, Ariba send back the status of the Job. If the status is successful, the surrogate bid has been submitted

Create award scenario in Ariba Guided Sourcing

Then, the payload for Award Scenario creation must be done based on the Mapping Table above. The payload should be similar to this one:

In order to create an award scenario, a request must be sent to Ariba Event Management API as under:

curl --location 'https://eu.openapi.ariba.com/api/sourcing-event-bid/v1/prod/events/$eventId/scenarios?realm=$realmId&user=$aribaTechnicalUser&passwordAdapter=ThirdPartyUser' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'apiKey: ARIBA_API_KEY';
--header 'Authorization: Bearer ARIBA_TOKEN';
--data 'as per payload described above';


Processing within Target

Not Applicable

Interface Dependency

Interface Constraints

Rate Limit for Ariba Surrogate Bid API - No specific API limits in place for this API but dynamic run time throttling is in effect.

Rate Limit for Ariba Event Management API - (Requests): 5/second, 80/minute, 3500/hour

Rate Limit for Keelvar api/feeds/awards - Burst (60/min), sustained (43,200/day)

Rate Limit for Keelvar api/feeds/sourcing-events - Burst (60/min), sustained (43,200/day)

Delivery Requirements

Not Applicable

Delta or Full Load Requirements

All requests for creation and update of sourcing events are done via delta load since last run.

Interface Alert & Monitoring

The following should be monitored:

  • API endpoints are available.
  • Keelvar token expiration.
  • Failures on inbound processing and outbound side need to be handled . Please check the Error Handling section.
  • Messages are processed in reasonable time (XX elapse time).

Interface Reporting

Not Applicable

Language Requirements

Not Applicable

User Interface Requirements

Not Applicable


Volumetrics

10 events per day


Performance Consideration

Not Applicable


Error Handling

  • SAP Cloud ALM (CALM) will be used to capture integration execution errors. 
  • To correct the errors, the administrator must ensure that the data inconsistency is resolved in the concerned system and then must resend the request again to the target system.
  • Refer to the link below to troubleshoot Error Messages Returned by the Event Management API.

Error Messages Returned by the Event Management API

  • Refer to the Link below to troubleshoot Error Message Returned by Keelvar API

Open API specification

Testing

How to Test

  • Create and select Award Scenario in Keelvar
  • Close event in Keelva

Test Conditions and Expected Results

IDConditionExpected Results
1

Create a RFP in Ariba Guided Sourcing includes populating all required header fields and inviting suppliers/bidders into the event

Header fields of RFP are populated and suppliers/bidders are added into event

2

Publish RFP in Ariba Guided Sourcing

RFP is published in Ariba Guided Sourcing with “Published” state and open for editing


RFP is integrated to Keelvar via API

3

Open the event linked to RFP created in Ariba

The event is opened

4

Create Bid sheet and Cost Calculation in Keelvar

Bid sheet and Cost Calculation are created in Keelvar

5

Add new bidders directly in the event in Keelvar

New bidders are added into event in Keelvar

6

Publish event in Keelvar

Event status is “Published” in Keelvar


RFP state in Ariba Guided Sourcing is “Published”, but locked for editing

7

Bidders submit bid in Keelvar

Receive bid for the event in Keelvar

8

Create Award Scenario in Keelvar

Award Scenario is created in Keelvar

9

Select Award Scenario in Keelvar and award bidders (includes new added bidders in Keelvar)

Award Scenario is selected in Keelvar

10

Close event in Keelvar

Event status is changed to “Closed” in Keelvar

11

New awarded Bidder Organization and Organization User are automatically created in Ariba Guided Sourcing via API

New Bidder Organization and Organization User are created in Ariba Guided Sourcing

12

Awarded Bid sheet in Keelvar is automatically sent to event in Ariba Guided Sourcing as Surrogate Bid via API

Awarded Bid sheet is added for awarded suppliers/bidder in Ariba Guided Sourcing

13

Event status is changed to “Stop” in Ariba Guided Sourcing via API

Event is automatically stopped in Ariba Guided Sourcing

14

Award Scenario in Keelvar is integrated to the event in Ariba Guided Sourcing via API

Award Scenario is automatically created in Ariba Guided Sourcing

15

Award Supplier/Bidder in Ariba Guided Sourcing

Supplier/Bidder is awarded in Ariba Guided Sourcing

16

Event status is changed to “Completed” in Ariba Guided Sourcing

Event is completed in Ariba Guided Sourcing

Test Considerations/Dependencies



Other Information

Not Applicable

Development Details

Package

Package NameParent Package




Other Development Objects

Object TypeObject NamePurpose/High Level LogicDesign Rationale Reference









Appendix


See also

Insert links and references to other documents which are relevant when trying to understand this decision and its implications. Other decisions are often impacted, so it's good to list them here with links. Attachments are also possible but dangerous as they are static documents and not updated by their authors.


Change log