Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Status

Page Status

Owner
Stakeholders
Jira Request ID

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-101

Jira Development ID

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-289

High-Level Specification

ParameterValue
Application System (Source)
Syniti
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 requirement objective of this specification is to build the middleware integration process that manages both inbound and outbound interfaces between Syniti and ICertis. It is responsible for:

  • Receiving currency/exchange rate data from Syniti (via FS-288).
  • Mapping and transforming this data to match the requirements of ICertis APIs.
  • create a custom integration that facilitates the transmission of Currency Exchange Rate Master data from SAP ECC (PRS, PF2-050) to Icertis so that currency exchange rates can be synchronized smoothly.

    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 job scheduled in ECC to ensure that Icertis consistently receives the most recent exchange-rate information required for contract evaluation and

    Orchestrating the data flow, ensuring successful transmission and error handling. This integration is triggered by business events such as monthly currency rate updates, ensuring that ICertis always has the latest exchange rates for contract

    processing.

    Scope and Objectives

    • Scope:
      This request covers the end-to-end integration logic required to fetch, transform , and deliver create/update currency / exchange rate data from Syniti to ICertisflowing 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 Icertis API specifications.
      • Handle exceptions and retries for robust data delivery.Address gaps in SAP Standard, which does not natively support direct integration between Syniti and ICertis for currency master data. This interface fills that gap by providing custom mapping and orchestration, retries and monitoring to ensure the process runs reliably.

    Process Flow Diagram

    draw.io Diagram
    bordertrue
    diagramNameECC_CPI_Icertis_CurrencyExRate
    simpleViewerfalse
    width
    linksauto
    tbstyletop
    lboxtrue
    diagramWidth541
    height141
    revision2
    Image Removed


    StepDescriptionComment
    1

    Trigger integration (scheduled or event-based)

    E.g., monthly batch or on-demand

    2

    Fetch currency/exchange rate data from Syniti

    Uses FS-288 interface

    3

    Transform and map data to Icertis API format

    Data mapping, validation, enrichment

    4

    Orchestrate data transmission to Icertis

    API calls, error handling, logging

    5

    Receive response from ICertis

    Success/failure, process feedback

    6

    Log results and handle exceptions

    Retry logic, alerting, audit trail

    Assumptions

    • Syniti provides clean, validated currency/exchange rate data.
    • ICertis APIs are available and documented for currency master data ingestion.
    • Middleware platform supports secure API calls, error handling, and logging.
    • Performance requirements are met (e.g., data transfer completes within batch window).
    • Exception handling is in place for failed transmissions or data mismatches.

    Dependencies

    SAP ECC(PRS, PF2-050) will send the latest currency exchange rate xml data to CPI. 

    Daily batch job will send the data from SAP ECC to CPI via Proxy adapter

    Refer ERP-110 for more details.

    2CPI retrieves the existing data from Icertis via GET call and append the Icertis sysId for the existing records.

    CPI invokes the Icertis API via GET call to retrieve existing currency exchange rate records along with their SysIds.

    CPI compares the fromCurrency value from Icertis records with the fromCurrency records received from SAP ECC.

    If a match is found, CPI appends the corresponding SysId, to the outbound payload for create/update operation.

    3CPI create/update the new/existing currency exchange rate records in IcertisCreate/Update of the currency exchange rate records in Icertis will be done using POST API call.

        

    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
    • Availability of FS-288 (Syniti interface) and FS-290 (ICertis interface).
    • Access to Syniti and ICertis environments for development and testing.
    • Timely updates to currency/exchange rate data in Syniti.
    • Coordination with SAP and ICertis teams for API changes or enhancements.
    • Batch jobs or triggers in Syniti must run before FS-289 executes.

    Security, Integrity and Controls

    • Secure authentication for middleware to access Syniti and ICertis (API keys, certificates).
    • Audit logging for all integration transactions.

    Configuration Requirements

    • 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

    • API endpoints and credentials for Syniti and ICertis.
    • Data mapping rules (currency codes, exchange rate formats).
    • Scheduling configuration for batch triggers.
    • Error handling and retry parameters.
    • Logging and monitoring setup
      • .

    Design Rationale

    This interface is designed to facilitate enable seamless integration between Syniti (source) and Icertis (target) for currency/exchange 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.

    draw.io Diagram
    bordertrue
    diagramNameCurrency ExRate Upload To Icertis from ECC
    simpleViewerfalse
    width600
    linksauto
    tbstyletop
    lboxtrue
    diagramWidth747
    height630
    revision2

    Data Structure

    Source Structure

    The following fields will be used to

    provide

    define the required data structure of the interface:

    Schema File:

    ExchangeRateSourceCurrencyCurrency code of the local currencyYStringExchangeRateTargetCurrencyCurrency code of the target currency (EUR)YStringExchangeRateRateConversion rate from source to targetYDecimalExchangeRateEffectiveDateDate the rate is valid fromYDateExchangeRateSourceSystemSystem providing the rate (Syniti)YStringExchangeRateLastUpdatedTimestamp of last updateYDateTime

    Calculation and Validation

    ExchangeRateRateValidationMust be > 0ExchangeRateEffectiveDateValidationMust be the last day of the previous monthExchangeRateSourceCurrencyValidationMust be a valid ISO currency codeExchangeRateTargetCurrencyValidationMust be 'EUR'ExchangeRateLastUpdatedCalculationAuto-populated during integration

    Processing Logic

    • The integration job runs on the 1st of each month.
    • It fetches exchange rates from Syniti for the last day of the previous month.
    • The data is transformed into the required format and pushed to Icertis via the Business API.
    • The API performs bulk upsert: updates existing records or creates new ones.
    • Errors are logged and flagged for manual review.

    Delta or Full Load Requirements

    • Full Load:
      • The interface always pushes the complete set of exchange rates for all supported currencies.
      • No delta tracking is required since the data is refreshed monthly.

    Language Requirements

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

    User Interface Requirements

    Not Applicable

    Volumetrics

    Not Applicable

    Performance Consideration

    Scheduling and Execution Window

    • The integration job should be scheduled during off-peak hours (e.g., early morning on the 1st of each month) to avoid contention with other system processes.

     ExchangeRateSchemaECC.xsd

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

    FromCurrencyToCurrencyRateIdentifierValidFromRate
    USDEURUSD:EUR2025-11-10
    0.8700000000
    SGDEURSGD:EUR2025-11-10
    0.6600000000

    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 Direct conversion rates.

    Code Block
    languagexml
    themeConfluence
    titleSample Payload from SAP ECC
    <?xml version="1.0" encoding="UTF-8"?>
    <ExchangeRates xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ExchangeRate>
            <FromCurrency>USD</FromCurrency>
            <ToCurrency>EUR</ToCurrency>
            <RateIdentifier>USD:EUR</RateIdentifier>
            <ValidFrom>2025-11-10</ValidFrom>
            <Rate>0.8700000000</Rate>
        </ExchangeRate>
        <ExchangeRate>
            <FromCurrency>SGD</FromCurrency>
            <ToCurrency>EUR</ToCurrency>
            <RateIdentifier>SGD:EUR</RateIdentifier>
            <ValidFrom>2025-11-10</ValidFrom>
            <Rate>0.6600000000</Rate>
        </ExchangeRate>
    </ExchangeRates>

    Target Structure

    FieldDescription
    ContractTypeNameName of the Masterdata.
    NextStateIndicates the state of the contract type. For currency exchange rate as there is no next state.
    RequestIdentifierUse “RequestIdentifier” to uniquely identify each item on the result endpoint’s response.
    EndpointVersionEndpointVersion” don’t have any default value set. Ensure to set it to a number.
    UseExternalIdunique identifier for entities getting created from external systems.
    SysIdUnique technical identifier of the record.
    NameIndicates from to currency pair.
    ICMFromCurrencySpecifies the source currency for the exchange rate.
    ICMToCurrencySpecifies the target currency for the exchange rate.
    ICMRateSource to Target currency Exchange rate.
    HasMoreData
    Indicates if there is more data that can be accessed by going to next page.


    Mapping and Calculation

    Transformation in CPI (Icertis required format):

    Source TableSource FieldRequired (Y/N/O)DescriptionTarget FieldRequired (Y/N)DescriptionRule TypeRule Instruction
    NANANANAContractTypeNameYName of the MasterdataFixed ValueICMCurrencyExchangeRate
    NANANANANextStateYindicates the state of the contract type. For currency exchange rate as there is no next state, pass always blank.Fixed ValueBlank/Empty
    NANANANARequestIdentifierYUse “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 JobIncrementAuto Increment (E.g.: 1,2,3)
    NANANANAEndpointVersionY“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.Fixed Value3
    NANANANAUseExternalIdYunique identifier for entities getting created from external systemsFixed Valuefalse
    Icertis-GET APISysidOUnique Identifier of the existing currency exchange rate record.SysIdYUnique technical identifier of the recordConditional
    • Blank when creating the master data
    • 32 characters Sysid generated at Icertis for update
    NARateIdentifierYConcatenated string of the two currency codes separated by by a colon. NameYindicates from to currency pair e.g. SGD:EURCopyDirect mapping
    NAFromCurrencyYSpecifies the source currency for the exchange rateICMFromCurrencyYSpecifies the source currency for the exchange rateCopyDirect mapping
    NAToCurrencyYSpecifies the target currency for the exchange rateICMToCurrencyYSpecifies the target currency for the exchange rateCopyDirect mapping
    NARateYSource to Target currency Exchange rateICMRateYSource to Target currency Exchange rateCopyDirect mapping
    NANANANA
    HasMoreData
    YIndicates if there is more data that can be accessed by going to next pageFixed Valuefalse


    For retrieving the existing currency exchange rate data from Icertis,

    below GET API is used

    https://{icertis api host name}/api/v1/masterdata/{contractTypeName}

    where contractTypeName = ICMCurrencyConversion.


    For updating the currency exchange rate master data, the following BULK update API is used 

    https://{icertis api host name}/api/v1/bulk/masterdata.

    The sample request body for the Icertis bulk upsert is as below.


    Code Block
    languagejs
    themeConfluence
    titleSample Payload To Icertis API
    {
        "Data": {
            "JobItems": [
                {
                    "SysId": "96c08d87-3c89-4b7d-b075-e360bb41db07",
                    "UseExternalId": "false",
                    "NextState": "",
                    "EndPointVersion": "3",
                    "RequestIdentifier": "1",
                    "RequestBody": {
                        "ICMFromCurrency": "USD",
                        "ICMRate": "0.8700000000",
                        "Name": "USD:EUR",
                        "ICMToCurrency": "EUR"
                    }
                },
                {
                    "SysId": "5449222c-3d3a-4044-baae-a17165381ed1",
                    "UseExternalId": "false",
                    "NextState": "",
                    "EndPointVersion": "3",
                    "RequestIdentifier": "2",
                    "RequestBody": {
                        "ICMFromCurrency": "SGD",
                        "ICMRate": "0.6600000000",
                        "Name": "SGD:EUR",
                        "ICMToCurrency": "EUR"
                    }
                }
            ],
            "HasMoreData": "false",
            "ContractTypeName": "ICMCurrencyExchangeRate"
        }
    }


    Processing Logic

    • SAP CPI receives the inbound currency exchange rate file from SAP ECC (PRS, PF2-050)
    • CPI filters exchange rate records with EUR target (To Currency) currency.
    • It applies the transformation rules, including mapping the source fields to the target structure required by the Icertis API. 
    • The processed data is transmitted to the Icertis API, using secure OAuth2 communication. 
    • 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.

    Delta or Full Load Requirements

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

    Error Handling

    1. Validation Errors

    • Cause: Missing mandatory fields, invalid currency codes, negative exchange rates.
    • Handling:
      • Reject the record.
      • Log the error with detailed message.
      • Notify integration support team via email or dashboard.
      • Continue processing remaining records.

    2. API Failures

    • Cause: Icertis Business API is unavailable, authentication failure, timeout.
    • Handling:
      • Retry up to 3 times with exponential backoff.
      • If retries fail, log the failure and raise an alert.
      • Notify support team with error code and timestamp.

    3. Data Load Failures

    • Cause: Payload formatting issues, bulk upsert failure.
    • Handling:
      • Validate payload structure before submission.
      • Use staging logs to identify failed records.
      • Allow manual reprocessing of failed records.

    4. Partial Success

    • Cause: Some records succeed, others fail due to validation or API issues.
    • Handling:
      • Log both successful and failed records.
      • Generate a summary report for review.
      • Provide reprocessing option for failed records.

    5. Missing Data from Syniti

    • Cause: Exchange rate data not available on schedule.
    • Handling:
      • Alert business users and integration team.
      • Optionally use previous month’s rates (if approved by business).
      • Flag contracts that rely on missing data for manual review.

    6. Monitoring and Alerts

    • Tools: Integration monitoring dashboard, email notifications, log files.
    • Recipients: Integration support team, business operations team.
    • Alert Types:
      • Job success/failure
      • Record-level validation errors
      • API connectivity issues
      • Missing or delayed data
     

    Interface Alert & Monitoring

    • Alerts should be configured for:
      • API failures
      • Missing or incomplete data
      • 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.

    In the event of an error, the subsequent day’s scheduled job will update the latest currency exchange rates.



    Testing

    Test Conditions and Expected Results

    TC1Valid Currency and exchange rate data for multiple currency pairsmaster data is received from SAP ECC as part of the initial loadEUR-based currency exchange rate records are successfully created Record is successfully created or updated in Icertis.
    TC2Full load of 100+ records.All records processed successfully; API response confirms success.
    TC3Missing mandatory field.Record is rejected; error logged; alert triggered
    TC4Invalid currency codeValidation error; record rejected
    Currency 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 endTC5Negative exchange rateValidation error; record rejected.

    Test Considerations/Dependencies

    Development Details

    Package

    Package NameParent Package
    Currency Conversion Distribution


    Other Development Objects

    Object TypeObject NamePurpose/High Level LogicDesign Rationale Reference
    iFlowECC_to_Icertis_CurrencyExRateUpload
    • Receive the Currency ExRate data.
    • Filter out EUR Records.
    • check whether the received records exist via GET API call
    • Submit the creation/updation request via API to Icertis.
    For creation/update of currency ExRate Records.
    iFlowIcertis_OAuthToken_Generator
    • Generates the OAuth Token for the Icertis API Calls as implicit option available at the adapter doesn't support due to scope parameter.
    Generates the OAuth Token for API Calls.
    iFlowIcertis_CurrencyExRateUpload_CommonScripts
    • Collection of scripts for reusability.
    Reusable Scripts.
    iFlowCPI_To_Icertis_CurrencyJobStatusCheck
    • Check the status of the Job based on the Job id submitted as part of the iFlow iFlow ECC_to_Icertis_CurrencyExRateUpload
    check the Job status.


    Object NameConfigured/Externalized ParametersValue
    Icertis_OAuthToken_Generatorclient_id46def968-e3b3-4141-9652-d98fadfcff1d
    client_secretRefer to onepass 
    grant_typeclient_credentials
    scope

    api://46def968-e3b3-4141-9652-d98fadfcff1d/.default

    tenant-id

    5e60f7a7-d410-4d38-b875-93ca12adc30e
    ECC_to_Icertis_CurrencyExRateUploadIcertis Business API URL

    syensqo-dev-business-api.icertis.com/api/v1

    Appendix


    See also


    Attachments
    previewfalse
    patterns^(?!.*\.(png|jpg|jpeg|svg)$).*
    sortOrderdescending

    Change log

    Change History
    limit10