| Status | |
|---|---|
| Owner | |
| Stakeholders | |
| Jira Request ID | |
| Jira Development ID |
The objective of this integration is to establish a robust middleware process that facilitates the automated transmission of Currency Exchange Rate Master data from SAP ECC(PRS, PF2-050) to the Icertis Contract Intelligence(ICI) platform. The integration ensures that Icertis always has up-to date currency and exchange-rate information essential for contract calculations and validations. This process performs the following functions.
This integration is triggered daily through a scheduled job to ensure that Icertis consistently receives the most recent exchange-rate information required for contract evaluation and processing.

Step | Description | Comment |
|---|---|---|
1 | SAP ECC(PRS, PF2-050) will execute the job daily to send latest currency Exchange Rate xml data to CPI | Through daily scheduled job at SAP ECC(PRS, PF2-050) side |
2 | Transform and map data to Icertis API format | Data mapping, validation, enrichment |
3 | Orchestrate data transmission to Icertis | API calls, error handling, logging |
4 | Receive response from Icertis | Success/failure, process feedback |
5 | Log results and handle exceptions by triggering an email to Support Team | No retry, data will be uploaded next day |
Secure authentication mechanisms are in place at middleware for access to both SAP ECC(PRS, PF2-050) and Icertis systems:
Azure Application Registration
Since Icertis relies on Azure Active Directory as its identity provider (IdP), an application must be registered in Azure to enable OAuth 2.0 token generation and validation. This establishes trusted access between the middleware and the Icertis APIs.
The application registration includes defining the client ID, client secret, scope, and API permissions required to access the Icertis endpoints.
This interface is designed to enable seamless integration between SAP ECC (PRS, PF2-050), source system and Icertis the target system for currency and exchange-rate master data. The middleware orchestrates the data flow, ensuring accurate mapping, necessary transformation, and reliable end-to-end delivery.
Sample Extract from SAP ECC (PRS, PF2-050):
| FromCurrency | ToCurrency | RateIdentifier | ValidFrom | Rate |
|---|---|---|---|---|
| EUR | USD | EUR:USD | 2025-10-30 | 1.1743500000 |
| EUR | SGD | EUR:SGD | 2025-10-30 | 1.5000000000 |
The currency conversion data generated by ERP-110 contains all exchange rates. Since Icertis requires only EUR-based rates, CPI filters and extracts only the EUR conversion rates.
Transformation in CPI (Icertis required format):
| Field Name | Description | Value |
|---|---|---|
| ContractTypeName | Name of the Masterdata | Static value - ICMCurrencyConversion |
| NextState | Always Blank | |
| RequestIdentifier | Use “RequestIdentifier” to uniquely identify each item on the result endpoint’s response. This can be used to track the status of each job item of a bulk Job | Auto Increment (Eg: 1,2,3) |
| EndpointVersion |
| Static value - 3 |
| UseExternalId | Static value - true | |
| SysId | Unique technical identifier of the record |
|
| ICMUniqueName | Concatenate FromCurrency and ToCurrency with ":" colon in the middle | RateIdentifier |
| ICMFromCurrency | Get the To-currency from ECC extract | FromCurrency |
| ICMAgreementCode | Unique masterdata code | |
| ICMToCurrency | Get the From currency from ECC extract | ToCurrency - EUR Always |
| ICMRate | -Replace comma with period (.). -Remove the forward slash / (-1) | Rate - 1.07 |
| TemplateSelection | Static Value - none | |
| EndPointVersion | Static Value - 1 |
Processing Logic
Inbound Trigger
Data Validation
Transformation
Routing
Error Handling
Monitoring & Logging
Delta or Full Load Requirements
Not Applicable
Error Handling
Interface Alert & Monitoring
Testing
| TC1 | Valid exchange rate data for Source to EUR currency pairs | Record is successfully created or updated in Icertis. |
| TC2 | Full load of records with valid EUR pairs | All records processed successfully; API response confirms success. |
| TC3 | Missing mandatory field. | Record is rejected; error logged; alert triggered |
| TC4 | Negative exchange rate | Validation error; record rejected. |
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
Sample payload:
{
"Data": {
"JobItems": [
{
"SysId": "96c08d87-3c89-4b7d-b075-e360bb41db07",
"UseExternalId": "false",
"NextState": "",
"EndPointVersion": "3",
"RequestIdentifier": "1",
"RequestBody": {
"ICMFromCurrency": "INR",
"ICMRate": "0.0094",
"Name": "INR:EUR",
"ICMToCurrency": "EUR"
}
},
{
"SysId": "5449222c-3d3a-4044-baae-a17165381ed1",
"UseExternalId": "false",
"NextState": "",
"EndPointVersion": "3",
"RequestIdentifier": "2",
"RequestBody": {
"ICMFromCurrency": "AUD",
"ICMRate": "0.54",
"Name": "AUD:EUR",
"ICMToCurrency": "EUR"
}
}
],
"HasMoreData": "false",
"ContractTypeName": "ICMCurrencyExchangeRate"
}
} |
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.
