| Status |
| ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Owner | |||||||||||||
| Stakeholders | |||||||||||||
| Jira Request ID |
| ||||||||||||
| Jira Development ID |
|
High- Level Specification
| Implementing System | Icertis |
|---|---|
| Invoked by | ERP-289 |
| Parameter | Value |
| Application System (Source) | Syniti |
| Application System ( Target) | Icertis |
| Business Process Reference | Masterdata Conversion03.03.04.05. Manage Contract Master Data |
Functional Overview
Syniti which is the source of Currency Conversion Master Data SAP ECC, the source system for currency conversion master data, will be integrated with Icertis to create and update currency exchange masterdata master data records in Icertis a custom Currency Exchange masterdata table using Master Data table within Icertis.
This integration will be executed via SAP CPI, which will invoke the Icertis Business API to perform bulk upsert operations.
This Exchange rateThe exchange rates maintained in Icertis will be used to convert
thelocal
Valuecurrency values into Euros
to identify the DOA approversin
agreementagreements.
In Icertis, recordsRecords will be created
/or updated
in bulk once in a month preferably 1st of every month and it will take the rate of last date of the previous monthdaily in Icertis. The objective of this FS is to create Currency Exchange Masterdata in Icertis so that the currency exchange rates can be maintained.
Scope and Objectives
Functional Scope:
This interface facilitates the monthly integration of currency exchange rates from Syniti into Icertis Contract Intelligence (ICI) to support accurate financial calculations and DOA (Delegation of Authority) logic in contractsdocument outlines the functional configuration required in Icertis to support the creation and maintenance of currency exchange master data sourced from SAP ECC.
Scope Includes:
Source System:
- Syniti as the master source for currency exchange rates.
Target System:
- Icertis, with a custom Currency Exchange Master Data table.
Integration Mechanism:
- CPI will call Icertis Business API used for bulk creation and update of masterdata records.
Data Elements Transferred:
- From Currency
- Unique Name
- To Currency
- Rate
Frequency:
- Daily after Syniti to CPI batch job is completed.
Operation Type:
- Bulk Upsert (create new or update existing records).
Usage in Icertis:
- Used to convert local currency values to Euros.
- Enables correct DOA approver identification based on Euro thresholds.
- Creation and update of currency exchange master data in Icertis.
- Daily update of exchange rates.
Functional Objectives:
Ensure Accurate Currency Conversion
- Maintain up-to-date exchange rates for converting local values to Euros in contracts.
Support DOA Logic in Agreements
- Enable automated identification of approvers based on Euro-converted contract values.
Maintain Data Integrity
- Prevent outdated or duplicate exchange rate records.Ensure historical accuracy by using the rate from the last day of the previous month.
Enable Auditability and Traceability
- Ensure all exchange rate records are timestamped and sourced for compliance and audit purposes. In Icertis when the masterdatas record is created, system automatically generates the Modified Date and time stamp as displayed below
Minimize Manual Intervention
- Automate the monthly daily currency exchange masterdata update process to reduce errors and improve efficiency.
Out of Scope:
- Deletion of any existing currency exchange masterdata record
- De-activating any existing currency exchange masterdata record
API Information
Get bulk api prepare for masterdata
POST/v{version}/bulk/masterdata/prepare
Sample Request
POST/{{baseUrl}}/{{version}}/bulk/masterdata/prepare
{
"Data": {
"ContractTypeName": "ICMOtherPartyMaster",
"SelectedAttributes": []
}
}
Create or update masterdata records in Bulk
POST/v{version}/bulk/masterdata
Process Flow Diagram
Process Flow Diagram
| draw.io Board Diagram | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2
Step | Description | Comment |
|---|---|---|
1 |
The execution of the interface is triggered as per the defined job schedule
CPI will call the Icertis |
Currency API daily, upon receiving data from SAP ECC, to create |
or update the currency exchange |
Assumptions
- Syniti will provide validated and complete exchange rate data for all required currency pairs.
- Only conversion rates from each source currency to EUR will be extracted and exported.
- The exchange rate for the last day will be available in Syniti.
- Icertis Business API will support bulk upsert operations without performance degradation.
- The Icertis custom Currency Exchange master table is already configured and accessible via API.
- Exchange rates will be used only for DOA logic and not for financial reporting or invoicing.
- No real-time updates are required; monthly sync is sufficient.
- Error handling and logging will be managed by the middleware or integration layer.
- The integration will be triggered by a scheduled job or batch process in the CPI daily after Syniti to CPI batch job is executed.
Dependencies
- Syniti Data Availability: Exchange rate data must be finalized and accessible by the 1st of each month.
- Icertis API Availability: Business API must be operational and accessible during the integration window.
- Middleware/ETL Tool: A tool or service must be in place to extract data from Syniti and push it to Icertis.
- Authentication Setup: Secure tokens or credentials must be configured for API access.
- Schedule Dependency: This interface must run after Syniti’s daily currency update job completes.
Security, Integrity and Controls
- Authentication: API access to Icertis must use secure OAuth tokens or API keys.
- Authorization: Only designated integration service accounts should have write access to the Currency Exchange master table.
- Encryption: Data in transit must be encrypted using HTTPS/TLS.
- Audit Logging: All API calls and data changes must be logged for audit purposes.
- Data Validation: Exchange rates must be validated for completeness and correctness before pushing to Icertis.
Configuration Requirements
master data. It will send only the Source-to-EUR direct rates and update the existing currency exchange master data records accordingly | CPI to Icertis |
Assumptions
- Not Applicable.
Dependencies
- Not Applicable.
Security, Integrity and Controls
- Authentication: Access to Create Masterdata Contract Type (CT)
- A new security group to be created for the Integration Users with manage access to Currency Exchange Master CT. The new security group title will be "Integration User"
| Info | ||
|---|---|---|
| ||
We will be using different users for CPI integration, IAG integration, Ariba Integration. All the users will be placed under Integration User security group |
Configuration Requirements
- Configure Currency Exchange Masterdata CT in Icertis with below details:
| Parent | Field | Description | Mandatory (Y/N) | Data Type |
|---|---|---|---|---|
| ICMCurrencyExchangeRate | SourceCurrency | Currency code of the local currency | Y | String |
| ICMCurrencyExchangeRate | TargetCurrency | Currency code of the target currency (EUR) | Y | String |
| ICMCurrencyExchangeRate | Rate | Conversion rate from source to target | Y | Number - Decimal upto 4 points. Eg: 01.8228 01.0003 01.3001 |
| ICMCurrencyExchangeRate | Unique Name | Name Field | Y | String |
Following Technical Configuration is required to enable integration between CPI & Icertis using ICI Business API
OAuth Setup
- Microsoft Identity Platform
- Register application in Microsoft Identity Platform
- Capture the following details from IDP
- Microsoft Identity Platform
| Information | Description |
|---|---|
| Application (client) ID | Application Id for the App created for accessing ICI API’s |
| Directory (tenant) ID | Tenant Id for the App created for accessing ICI API’s |
| Object ID | Object Id for the App created for accessing ICI API’s |
| OpenID Connect metadata document | Metadata document URL for the App created for accessing ICI API’s |
- Redirect URI to be configured - https://syensqo-dev.icertis.com
- Implicit Grant: Access Tokens
Icertis Side Configuration
- Configure new masterdata CT in Icertis to store currency exchange rates
- Create an Integration User (CPI Integration User) in Icertis with Admin access.
- Create Security Group "Integration User" with Manage access to Currency Exchange Rate CT.
- Configure the following OAuth keys in Icertis json file:
| Key | Values |
|---|---|
| Core.API.OAuth.STSDiscoveryEndpoint | https://login.microsoftonline.com/{Directory (tenant) ID}/v2.0/.well-known/openid-configuration |
| Core.API.OAuth.ValidAudiences | api://{Client ID} |
| Core.API.OAuth.ValidIssuer | https://sts.windows.net/{Directory (tenant) ID}/ |
| Core.API.OAuth.ExternalUpnClaimUri | http://schemas.microsoft.com/identity/claims/objectidentifier |
Special Requirements
- Localization: Ensure currency formats comply with regional standards (e.g., decimal separators).
Design Rationale
Icertis will consume data from CPI middleware via a scheduled integration that uses the Icertis Business API to create or update currency exchange master data records.
The API will be used to:
- Push monthly exchange rates from Syniti to middleware to Icertis.
- Ensure that the latest rates are available for contract value conversion and DOA logic.
API Use
- System Consuming API: Icertis
- System Providing API: Syniti (or middleware extracting from Syniti)
Create a currency exchange rate master data CT in Icertis which will store the currency exchange rates
Data
DataStructure
The following fields will be
usedconfigured in Icertis to provide the required data structure of the interface:
| Parent | Field | Description | Mandatory (Y/N) | Data Type | |||
|---|---|---|---|---|---|---|---|
| ICMCurrencyExchangeRate | SourceCurrency | Currency code of the local currency | Y | String | |||
| ICMCurrencyExchangeRate | TargetCurrency | Currency code of the target currency (EUR) | Y | String | |||
| ICMCurrencyExchangeRate | Rate | Conversion rate from source to target | Y | Number - Decimal upto 4 points. Eg: 01.8228 01.0003 01.3001 | |||
| ICMCurrencyExchangeRate | Unique Name | Name | Date the rate is valid from | Y | StringField | Y | String |
API Fields Mapping:
| 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 | Pass Unique Name of the Currency Pairs |
| ICMFromCurrency | Get the To-currency from ECC extract | FromCurrency (Eg: USD, CAD) |
| ICMAgreementCode | Unique masterdata code | |
| ICMToCurrency | Get the From currency from ECC extract | ToCurrency - Static Value EUR |
| ICMRate | -Replace comma with period (.). -Remove the forward slash / (-1) | Rate (1.07) |
| TemplateSelection | Static Value: none | |
| EndPointVersion | Static Value: 1 |
Calculation and Validation
Not Applicable
Processing Logic
- The integration job runs daily.
- It fetches exchange rates from Syniti.
- 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.
- Currency Conversion rates are pushed from a system interface to Icertis via CPI.
Delta or Full Load Requirements
- Full Load:
- The interface always pushes the complete set of exchange rates for all supported currencies, for a given date. This does not process historical data.
- No delta tracking is required since the data is refreshed daily.
- Full Load:
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. - Not Applicable as this FS objective is to create a masterdata CT in Icertis
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- See the appendix for the list of Currencies which needs to be converted to Euros
Performance Consideration
Scheduling and Execution Window
- The integration job should be scheduled during off-peak hours daily to avoid contention with other system processes.
- The priority of the jobs will be decided based on the other jobs mentioned in the list DD-TEC-130 R2 Batch Jobs Register and Schedule
Error Handling
No error handling is possible in Icertis and it is expected in Syniti as per FS-288 and in the middleware as per FS-289Not Applicable
Testing
Test Conditions and Expected Results
| ID | Condition | Expected Results |
|---|---|---|
| TC1 | For the initial load, create new exchange rate masterdata. Valid exchange rate data for multiple Source to EUR currency pairs is pushed from CPI to Icertis | Records are Record is successfully created or updated in Icertis. |
| TC2Full load of 100+ records. | For subsequent loads, update the existing masterdata records from CPI to Icertis | All records processed updated successfully; API response confirms success. |
| TC3 | Missing mandatory field .in the data load sent from CPI to Icertis | Status of batch job should be Record is rejected; error logged; An email notification alert triggered |
| TC4 | Invalid currency code | Validation error; record rejected |
| TC5 | Negative exchange rate | Validation error; record rejected. |
| is triggered in CPI |
Test Considerations/Dependencies
Not Applicable
Other Information
Not Applicable
Development Details
Package
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
Appendix
Sample payload:
| Code Block | |
|---|---|
|
{
| |
{ "Messages": |
null, "Data": { |
"ContractTypeName": "ICMCurrencyExchangeRate", |
"JobItems": [ |
{ |
"NextState": "", |
"RequestIdentifier": |
1, "EndpointVersion": |
null, "UseExternalId": |
true, "SysId": "5449222c-3d3a-4044-baae-a17165381ed1", |
"RequestBody": { |
"ICMUniqueName": "AUD:EUR", |
"Name": "Masterdata_1_created", |
"ICMFromCurrency": "AUD", |
"ICMAgreementCode": "ICMCurrencyExchangeRate_19", |
"ICMToCurrency": "EUR", |
"ICMRate": "0.59", |
} |
}, |
"TemplateSelection": "none", |
"EndPointVersion": |
3 }, |
{ |
"NextState": "", |
"RequestIdentifier": |
2, "EndpointVersion": |
null, "UseExternalId": |
false, "SysId": "96c08d87-3c89-4b7d-b075-e360bb41db07", |
"RequestBody": { |
"ICMUniqueName": "INR:EUR", |
"Name": "Masterdata_2_created", |
"ICMFromCurrency": "INR", |
"ICMAgreementCode": "ICMCurrencyExchangeRate_20", |
"ICMToCurrency": "EUR", |
"ICMRate": "0.0099", |
} |
}, |
"TemplateSelection": "none", |
"EndPointVersion": |
3 } |
] |
}, |
"HasMoreData": |
false, "PagingData": null } |
| View file | ||||
|---|---|---|---|---|
|
See also
| Attachments | ||||||
|---|---|---|---|---|---|---|
|
Change log
| Change History | ||
|---|---|---|
|
