| Status | |
|---|---|
| Owner | |
| Stakeholders | |
| Jira Request ID | |
| Jira Development ID |
| Parameter | Value |
|---|---|
| Application System (Source) | Syniti |
| Application System ( Target) | Icertis |
| Business Process Reference | 03.03.04.05. Manage Contract Master Data |
Syniti, the source system for currency conversion master data, will be integrated with Icertis to create and update currency exchange master data records in a custom Currency Exchange 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.
The exchange rates maintained in Icertis will be used to convert local currency values into Euros in agreements.
Records will be created or updated daily in Icertis. The objective of this FS is to create Currency Exchange Masterdata in Icertis so that the currency exchange rates can be maintained.
Functional Scope:
This document outlines the functional configuration required in Icertis to support the creation and maintenance of currency exchange master data sourced from Syniti.
Scope Includes:
Functional Objectives:
Ensure Accurate Currency Conversion
Maintain Data Integrity
Enable Auditability and Traceability

Minimize Manual Intervention
Out of Scope:

Step | Description | Comment |
|---|---|---|
1 | CPI will call the Icertis Currency API daily, upon receiving data from Syniti, to create or update the currency exchange 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 |
We will be using different users for CPI integration, IAG integration, Ariba Integration. All the users will be placed under Integration User security group |
| 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
| 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 |
| 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 |
Create a currency exchange rate masterdata CT in Icertis which will store the currency exchange rates from Syniti.
Data Structure
The following fields will be configured 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 Field | Y | String |
API Fields Mapping:
| Field Name | Description | Value |
|---|---|---|
| ContractTypeName | Name of the Masteredata | 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
Not Applicable -
Not Applicable
| ID | Condition | Expected Results |
|---|---|---|
| TC1 | For the initial load, create new exchange rate masterdata. Valid exchange rate data for Source to EUR currency pairs is pushed from CPI to Icertis | Records are successfully created in Icertis. |
| TC2 | For subsequent loads, update the existing masterdata records from CPI to Icertis | All records 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 rejected; error logged; An email notification alert is triggered in CPI |
Not Applicable
Not Applicable
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
Sample payload:
{
"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
}
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.
