Status

Owner
Stakeholders
Jira Request ID

Jira Development ID

High-Level Specification

Application System (Source)SAP ECC (PRS, PF2-050)
Application System (Target)Icertis
Source System InterfaceERP-110
Target System InterfaceERP-261
Business Process Reference03.03.04.05. Manage Contract Master Data

Functional Overview

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.

  • Receives currency and exchange-rate data from SAP ECC (PRS, PF2-050) through the ERP-110 Interface.
  • Maps and transforms the data to align with the structural and validation requirements of the Icertis APIs.
  • Orchestrates the end-to-end data flow, including transmission, response handling and error management.

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.

Scope and Objectives

  • Scope:
    This request covers the end-to-end integration required to transform and create/update currency exchange rate data flowing from SAP ECC (PRS, PF2-050) to Icertis. It includes the middleware logic, data mapping, orchestration, and exception handling necessary to ensure accurate and reliable data transmission.
  • Objectives:
    • Automate the transfer of currency and exchange rate data from SAP ECC(PRS, PF2-050) to Icertis.
    • Ensure that the data is transformed and mapped according to Icertis API specifications.
    • Handle exceptions, retries and monitoring to ensure the process runs reliably.
    • Create a custom integration that connects SAP ECC (PRS, PF2-050) and Icertis so that currency exchange rates can be synchronized smoothly.

Process Flow Diagram



  1. SAP ECC(PRS, PF2-050) will send the latest currency Exchange Rate xml data to CPI via Proxy Adapter through the daily batch Job.       
<?xml version="1.0" encoding="UTF-8"?>
<ExchangeRates xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ExchangeRate>
        <FromCurrency>EUR</FromCurrency>
        <ToCurrency>USD</ToCurrency>
        <RateIdentifier>EUR:USD</RateIdentifier>
        <ValidFrom>2025-09-30</ValidFrom>
        <Rate>1.1743500000</Rate>
    </ExchangeRate>
    <ExchangeRate>
        <FromCurrency>USD</FromCurrency>
        <ToCurrency>EUR</ToCurrency>
        <RateIdentifier>USD:EUR</RateIdentifier>
        <ValidFrom>2025-09-30</ValidFrom>
        <Rate>0.8515348916</Rate>
    </ExchangeRate>
</ExchangeRates>

       2. The interface processes EUR-based currency exchange rates and updates existing records in Icertis when applicable:

    • CPI receives the inbound currency exchange rate data from SAP ECC.
    • CPI filters the dataset to retain only EUR-based currency records.
    • CPI invokes the Icertis API to retrieve existing currency exchange rate records along with their SysIds.
    • CPI compares the fromCurrency value from Icertis with the fromCurrency received from ECC.
    • If a match is found, CPI appends the corresponding SysId to the outbound payload.

        3.  CPI performs a POST call to Icertis to update the existing currency exchange rate record.

{
    "Data": {
        "JobItems": [
            {
                "SysId": "96c08d87-3c89-4b7d-b075-e360bb41db07",
                "UseExternalId": "false",
                "NextState": "",
                "EndPointVersion": "3",
                "RequestIdentifier": "1",
                "RequestBody": {
                    "ICMFromCurrency": "USD",
                    "ICMRate": "1.1743500000",
                    "Name": "USD:EUR",
                    "ICMToCurrency": "EUR"
                }
            },
            {
                "SysId": "5449222c-3d3a-4044-baae-a17165381ed1",
                "UseExternalId": "false",
                "NextState": "",
                "EndPointVersion": "3",
                "RequestIdentifier": "2",
                "RequestBody": {
                    "ICMFromCurrency": "SGD",
                    "ICMRate": "1.5000000000",
                    "Name": "SGD:EUR",
                    "ICMToCurrency": "EUR"
                }
            }
        ],
        "HasMoreData": "false",
        "ContractTypeName": "ICMCurrencyExchangeRate"
    }
}




Step

Description

Comment

1

SAP ECC(PRS, PF2-050) will execute send the latest currency Exchange Rate xml data to CPI via Proxy Adapter.

Through daily scheduled job at SAP ECC(PRS, PF2-050) side

2

CPI receives the 

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
  • Assumptions
  • SAP ECC (PRS, PF2-050) serves as the authoritative source for clean and validated currency and exchange rate data.
  • Icertis APIs for currency master data ingestion are fully configured, available, documented, and accessible for integration.
  • The middleware platform SAP CPI, reliably supports secure API communication, comprehensive error handling, and transaction-level logging.
  • Performance benchmarks are satisfied, ensuring that data transfers complete successfully within the defined batch processing window.
  • Dependencies
  • ERP-110 (Source system interface) and ERP-290 (Target system interface) must be available and operational to facilitate seamless data exchange. 
  • Currency and exchange-rate data in SAP ECC(PRS, PF2-050) must be updated in timely manner to ensure accuracy and consistency.
  • Scheduled batch job execution in SAP ECC (PRS, PF2-050) must be maintained to support timely data extraction and transmission
  • Security, Integrity and Controls
  • Secure authentication mechanisms are in place at middleware for access to both SAP ECC(PRS, PF2-050) and Icertis systems:
  • Secure HTTPS protocol is used for all data transfers between the middleware and SAP ECC, ensuring encrypted communication and protection against unauthorized access.
  • OAuth 2.0 authentication is implemented for accessing Icertis APIs via an Azure-registered application, providing token-based security and controlled access
  • Audit logging captures all integration transactions, including timestamps, request/response metadata, and error details for traceability and compliance.
  • Configuration Requirements
  • 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.

Design Rationale

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.

Data Structure

The following fields will be used to define the required data structure of the interface:

Sample Extract from SAP ECC (PRS, PF2-050):

FromCurrencyToCurrencyRateIdentifierValidFromRate
EURUSDEUR:USD2025-10-301.1743500000
EURSGDEUR:SGD2025-10-301.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 NameDescriptionValue
ContractTypeNameName of the MasterdataStatic value - ICMCurrencyConversion
NextState
Always Blank
RequestIdentifierUse “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 JobAuto Increment (E.g.: 1,2,3)
EndpointVersion
  • “EndpointVersion” don’t have any default value set. Ensure to set it to a number. The recommended value is 3 for best error handling and reporting. Supported values are 1, 2, and 3. 1 – Not recommended, 2 – Enables attribute validation, and 3 – Handles concurrency errors and enables attribute validation.
Static value - 3
UseExternalId
Static value - false
SysIdUnique technical identifier of the record
  • Blank when creating the master data
  • 32 characters Sysid generated at Icertis for update
Name

Concatenate FromCurrency

and ToCurrency with ":" colon in the middle

RateIdentifier
ICMFromCurrency

Get the To-currency

from ECC extract

FromCurrency
ICMToCurrency

Get the From currency

 from ECC extract

ToCurrency - EUR Always
ICMRate-Replace comma with period (.). 
-Remove the forward slash / (-1)
Rate  - 1.07
HasMoreData

Static Value - false


Processing Logic

CPI receives the inbound currency exchange rate file from SAP ECC (PRS, PF2-050) and processes all records. The middleware filters the EUR-based exchange rates and applies the required transformation rules, including mapping the source fields to the target structure expected by the Icertis API. CPI then transmits the processed data to the next integration step, ensuring secure communication using OAuth2. If any error occurs during transformation or routing, CPI logs the issue and stops further processing. The interface follows a full-load approach—either the entire batch is successfully processed or the batch is rejected in full.

Language Requirements

  • No multilingual support required for exchange rate data.
  • All fields are numeric or standard ISO codes.

Delta or Full Load Requirements

The integration processes all records as a complete batch; if any issue occurs, the entire batch is rejected

Interface Alert & Monitoring

  • Alerts should be configured for:
    • API failures
    • Validation errors
  • Monitoring tools (middleware logs) should notify:
    • Integration support team
    • Business users (email)
  • Retry logic should be in place for transient failures.

User Interface Requirements

Not Applicable

Volumetrics

A daily load of approximately 70 currency pairs will be created or updated in bulk. The initial load will create the currency exchange master data, and all subsequent loads will update the existing master data


Performance Consideration

Scheduling and Execution Window

  • Given that the interface processes only around 70 records, no performance impact is expected.


Error Handling

The interface incorporates robust error-handling and monitoring to ensure reliable data processing between SAP ECC and Icertis. If any failure occurs during data load, transformation, or API communication, the entire batch is rejected to maintain data integrity.

Errors are logged with detailed information, and automated alerts are sent to the integration support team for prompt action



Testing

Test Conditions and Expected Results

TC1Currency and exchange rate master data is received from SAP ECC as part of the initial loadEUR-based currency exchange rate records are successfully created in Icertis.
TC2Currency and Exchange rate master data received from SAP ECC as part of the subsequent loadEUR-based currency exchange rate records are updated successfully in Icertis.
TC3Error during the transformation, mapping at the CPI EndError is logged at CPI end.

Test Considerations/Dependencies

Development Details

Package

Package NameParent Package




Other Development Objects

Object TypeObject NamePurpose/High Level LogicDesign Rationale Reference









Appendix

Sample payload:

{
    "Data": {
        "JobItems": [
            {
                "SysId": "96c08d87-3c89-4b7d-b075-e360bb41db07",
                "UseExternalId": "false",
                "NextState": "",
                "EndPointVersion": "3",
                "RequestIdentifier": "1",
                "RequestBody": {
                    "ICMFromCurrency": "USD",
                    "ICMRate": "1.1743500000",
                    "Name": "USD:EUR",
                    "ICMToCurrency": "EUR"
                }
            },
            {
                "SysId": "5449222c-3d3a-4044-baae-a17165381ed1",
                "UseExternalId": "false",
                "NextState": "",
                "EndPointVersion": "3",
                "RequestIdentifier": "2",
                "RequestBody": {
                    "ICMFromCurrency": "SGD",
                    "ICMRate": "1.5000000000",
                    "Name": "SGD:EUR",
                    "ICMToCurrency": "EUR"
                }
            }
        ],
        "HasMoreData": "false",
        "ContractTypeName": "ICMCurrencyExchangeRate"
    }
}


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