| Status | |
|---|---|
| Owner | ROWLINSON-ext, Kerry |
| Stakeholders | The business stakeholders involved in making, reviewing, and endorsing this decision. Type @ to mention people by name |
| Jira Request ID | |
| Jira Development ID |
| Parameter | Value |
|---|---|
| Application System (Source) | Icertis Contract Intelligence |
| Application System ( Target) | SAP ERP (PF2) & SAP ERP (WP2) |
| Business Process Reference | 03.04.04.01. Manage Outline Agreements (R2) |
Icertis Contract Intelligence is the contract management and authoring application for Syensqo's purchase contracts. Purchase orders are created in S/4 HANA with reference to purchase contracts (outline agreements). The key information from the legal contract which is relevant for procurement forms the basis of the purchase contract or outline agreement in S/4 HANA. For release 4, the integration between Icertis and S/4 HANA will be more complete and automated. However, for release 2 the option for a 'light' integration was decided due to the limitations of the two SAP ECC systems and in particular the substantial existing custom logic which needed to remain unaffected by any changes.
The 'light' integration consists of three main parts:
When an agreement in Icertis is executed an event in ICertis is initiated and the stream event payload is received to CPI (Cloud Platform Integration). CPI then uses key fields from that payload to make a call to Icertis to retrieve the complete contract record payload from Icertis. A subset of the total fields provided are then mapped to fields in a custom table in both SAP ECC systems (PF2 and WP2) where the data is stored.
Events for Amendment Execution, Renewal and Termination require development within Icertis in order to be initiated and for a custom event job to send the default payload to CPI.
The objective of the interface for release 2 is to provide a functional relationship between the Icertis Contract and the SAP outline agreement to enable consistency of the data to be reported and therefore maintained. The business users will manually create and change the outline agreements as a result of contract executions, amendments, renewals and contract terminations.
The entry and update of the contract data in the custom table enables:
Without this integration there is no place where the hierarchical structure of Icertis Master Service Agreements & associated Sub Agreements, Standalone Agreements, Non-Disclosure Agreements, Amendments & their parent agreements can be viewed with their association to the outline agreements in SAP ECC. It provides a mechanism to ensure the purchase contract content common to both systems remains aligned despite the reliance on manual entry by business users in SAP.
The linking of the documents in this way acts as a starting point for data enrichment for release 4, allowing the identification of outline agreements which do not have a legal purchase contract. The data will be the foundation for the conversion of open outline agreements in release 4.
Step | Description | System | Comment |
|---|---|---|---|
1 | A purchase contract is executed in Icertis | Icertis | A legal purchase contract is executed in Icertis |
2 | Line items are downloaded from Icertis | Icertis | The user downloads the line item details from Icertis to assist in the future upload of the outline agreement |
3 | New entry in custom table for the Icertis Contract | SAP ECC | Integration automatically creates the Icertis Contract record in custom table in both SAP ECC systems (WP2 & PF2) with the Icertis Contract ID and the relevant data fields from the contract header. |
4 | An amendment to a contract in Icertis is executed | Icertis | An amendment for an existing contract is executed in Icertis. |
5 | Change entry in custom table for the parent contract of the amendment | SAP ECC | The existing entry in the table for the parent agreement of the amendment is located and the relevant fields in the table are overwritten with the values provided in the amendment. |
6 | A renewal of an existing contract in Icertis is made. | Icertis | An existing purchase contract in Icertis is renewed which updates the overall value and the validity end date. |
7 | The entry in the custom table for the contract is updated. | SAP ECC | The existing entry in the table for the purchase contract is updated to reflect the changes to the overall value and the validity end date. |
8 | An existing purchase contract in Icertis subject to automatic renewal is renewed. | Icertis | An existing purchase contract in Icertis is renewed automatically when the renewal date comes due which updates the validity end date. |
9 | The entry in the custom table for the contract is updated. | SAP ECC | The existing entry in the table for the purchase contract is updated to reflect the changes to the validity end date. |
10 | An existing purchase contract in Icertis is terminated. | Icertis | An existing purchase contract in Icertis is terminated which updates the validity end date and the status in Icertis. |
11 | The entry in the custom table for the contract is updated. | SAP ECC | The existing entry in the table for the purchase contract is updated to reflect the changes to the validity end date. |
There are no specific assumptions identified.
The following two enhancement requests in Icertis are required to fully support the integration of the purchase contracts to the custom table in SAP ECC.
ERP-151 : Small adjustment based on DOA changes
In order to correctly fill the target value ERP-151 enhancement is being made in Icertis to consolidate the total value of the amendments. In addition to ensure the currency of the contract is passed to SAP, the logic is being adjusted so that it uses the local agreed currency instead of defaulting to EURO.
This is required in order for the target value field for the contract in the custom table to be tested in all scenarios.
ERP-470: Enhancement Request for Icertis Integration to CPI
Configure a custom event job to send the default payload (equal to the stream event payload) to SAP CPI from Icertis. This enhancement should support the following event types:
Amendment Executed
Renewal
Termination
This development in Icertis is required in order for integration to be tested for event types other than Agreement Execution.
There are no specific security, integrity or controls required for the processing of the interface.
There are no specific configuration requirements for this interface.
As the interface is one-way from Icertis to SAP ECC there are no special requirements, security or authentication considerations to take into account.
The diagram below shows the data flow between Icertis Contract Management and SAP ECC.

Below is the out-of-the-box payload sent from Icertis to CPI on the events:
Below is an example of the type of file received for the call to Icertis using the Contract Type Name and the System ID. The returned fields shown are just an example and are dependent on the configuration of the metadata in Icertis for Syensqo.


| Field | Field Label | Description | Length/Format |
|---|---|---|---|
| ICM Tenant ID | Tenant ID | **Confirm with Dhiraj format and length and how we define - specific client for purchasing contracts; Dhiraj to check with Wytse; and whether it belongs in the source structure here | TBA |
| ActionName | n/a | The ActionName is provided in the payload from the events which are sent to CPI. The content denotes whether the event is a creation, a renewal, a termination or an amendment. Termination of a contract "Terminated" Renewal of a contract "Renewed" Amendment executing "AmendmentExecuted" Agreement creation "Executed" | n/a |
| CONTRACTTYPENAME | Icertis Agreement Type | Possible values are: ICMMasterAgreement ICMSupportingAgreement ICMSubAgreement ICMStandaloneAgreement ICMBaselineAgreement ICMMasterAgreementAmendment ICMSupportingAgreementAmendment ICMSubAgreementAmendment ICMStandaloneAgreementAmendment (supporting agreement is the NDA; no amendments possible for Baseline Agreements) | 224 CHAR |
| NAME | Name | Still to be determined how the NAME field is going to be used but it is expected to be descriptive and therefore a useful addition to the report to help users identify what the contract is for (eg. where there are multiple for a supplier and our report will have no line items for context. Still under discussion for formatting rules and length (Action tracker item 116) | 1000 CHAR |
| ICMAGREEMENTCODE | Agreement Code | The naming convention for Icertis Agreements is defined; characters describe the type and the fact it is amendment may be in the structure of the code. The contract number starts at 1,2,3,4 etc. ICMMasterAgreement_nnnnnnnnnn ICMSupportingAgreement_nnnnnnnnnn ICMSubAgreement_nnnnnnnnnn ICMStandaloneAgreement_nnnnnnnnnn ICMMasterAgreementAmendment_nnnnnnnnnn ICMSupportingAgreementAmendment_nnnnnnnnnn ICMSubAgreementAmendment_nnnnnnnnnn ICMStandaloneAgreementAmendment_nnnnnnnnnn ICMBaselineAgreement_nnnnnnnnnn | 224 CHAR |
| SYSID | System ID | Along with CONTRACTTYPENAME, SYSID is the key with which CPI makes the call to Icertis to retrieve the complete header contract field details. This is important to have from Icertis in addition to the agreement code - used in backend table mapping in Icertis and is important to keep the relationship to the agreement code. | 36 CHAR |
| PARENT SYS ID | Parent System ID | An amendment in Icertis is assigned a new ICMAGREEMENTCODE and a new SYSID. But the original agreement code that the amendment is for is in the PARENT CONTRACT field, and the original system id is in the PARENT SYS ID field. The parent contract and parent sys id are required in order to identify the existing contract record in the custom table which needs to be updated in the case of amendments. | 36 CHAR |
| PARENT CONTRACT | Parent Contract | An amendment in Icertis is assigned a new ICMAGREEMENTCODE and a new SYSID. But the original agreement code that the amendment is for is in the PARENT CONTRACT field, and the original system id is in the PARENT SYS ID field. So the format of the Parent Contract field will be the format of the original agreement code field: ICMMasterAgreement_nnnnnnnnnn ICMSupportingAgreement_nnnnnnnnnn ICMSubAgreement_nnnnnnnnnn ICMStandaloneAgreement_nnnnnnnnnn The parent contract and parent sys id are required in order to identify the existing contract record in the custom table which needs to be updated in the case of amendments. | 224 CHAR |
| ICMSUPPLIERSAPID | Supplier's Account Number | The supplier numbers will be the same as the ECC supplier numbers. NDA's may not necessarily have a supplier id as it is possible to define an NDA for a bidder supplier only. Cannot be validated as the supplier records do not exist in both SAP systems. | 224 CHAR |
| ICMEFFECTIVEDATE | Start of Validity Period | "YYYY-MM-DDTHH:MM:SS" | DATE |
| ICMEXPIRY | End of Validity Period | "YYYY-MM-DDTHH:MM:SS" | DATE |
| ICMTOTALCONTRACTVALUE | Target Value for Header Area per Distribution | It needs to be the total value of the contract (in ECC it is target value at header level) In the case of amendments, it needs to be the updated overall total Renewals may also update the overall value. ERP-203 Icertis: Total Contract Value calculation with multiple amendments to enable ECC Integration | INT(15 including 2 decimals) |
| ICMCURRENCY | Currency Key | Confirmed the currency codes in Icertis are aligned to SAP codes | 5 CHAR |
| ICMLEGALENTITYCODE | Company Code | Organizational data - company code, purchasing group, purchasing org are being aligned in Icertis to ECC - it is the 4 char code for company code which matches SAP | 1000 CHAR |
| ICMPURCHASEGROUPCODE | Purchasing Group | Organizational data - company code, purchasing group, purchasing org are being aligned in Icertis to ECC - it is the 3 char code for purchasing group which matches SAP | 1000 CHAR |
| ICMPURCHASEORGCODE | Purchasing Org | Organizational data - company code, purchasing group, purchasing org are being aligned in Icertis to ECC- it is the 4 char code for purchasing organisation which matches SAP | 1000 CHAR |
| ICMREGION | Region | Icertis has values for each region which will be useful for the consolidation report to enable filtering of the Icertis Z table records by region. Possible values are: WW, EMEA, APAC, AMS (world-wide, Europe, Asia Pacific, Americas) | 4 CHAR |
| ICMPRIMARYOWNERNAME | Contract Owner | **Amit to check the field name in Icertis and the length likely to be used; Use for filtering in the report on Z table so owners can find their own to work on First name, last name and email id in one field Action: Amit to check the number of characters and the value** | 224 CHAR |
| ICMINCOTERMCODE | Incoterms | Incoterms are being aligned to correspond between Icertis and ECC This field in Icertis is the 3 char code for the terms | 224 CHAR |
| ICMPAYMENTTERMSCODE | Payment Terms | Payment terms are being aligned to correspond between Icertis and ECC This is the 4 char code that matches to SAP's codes in ECC | 224 CHAR |
| ICMTERMINATIONDATE | Termination Date | When a termination message is received, the expiry date field remains same in ICertis but the termination date will have to become the expiry date | DATE |
The following fields will be used to provide the required information for this interface.
Note: Although some of the Icertis fields correspond directly to fields in SAP, it is not possible to use these fields for validation due to the two separate SAP ECC systems. The intention is to have the same content filled in the custom table in both systems, regardless of whether the company code, purchasing organization, supplier etc. are defined in that system. All fields therefore have to be text-based fields.
Field labels are to correspond with the Icertis field labels.
Apart from the fields which are defined to be the key for the table and will therefore be (i) available for all events (ii) considered mandatory, all other fields are optional entry in the custom table.
Parent System ID and Parent Contract are not relevant to store in the custom table. The situation where these fields are filled from Icertis is when the Agreement Type is an amendment. These will only be used in the middleware to determine which entry in the custom table requires updating.
Icertis Amendments will not be stored in the custom table. Amendment events received will make the call to Icertis to obtain the amendment contract data, but the update of the table entries will the values retrieved will be made for the Parent Contract and Parent System ID.
The key of the table will be Icertis Agreement Type and System ID which corresponds to the fields used in the call to Icertis, and it is these two fields which form a unique record.
| Field | Field Label | Description | Length/Format |
|---|---|---|---|
| Z* | Tenant ID | Tenant ID to identify the Icertis system the record has come from | TBA |
| Z* | Icertis Agreement Type | Possible values are: ICMMasterAgreement ICMSupportingAgreement ICMSubAgreement ICMStandaloneAgreement ICMBaselineAgreement ICMMasterAgreementAmendment ICMSupportingAgreementAmendment ICMSubAgreementAmendment ICMStandaloneAgreementAmendment (supporting agreement is the NDA; no amendments possible for Baseline Agreements) | 224 CHAR |
| Z* | Name | Description given to the contract (useful for reporting) | 1000 CHAR |
| Z* | Agreement Code | The agreement code is the contract number in Icertis and is preceded by the agreement type. Example: ICMMasterAgreement_nnnnnnnnnn This value from Icertis will be stored on the header of the outline agreement in SAP ECC. | 224 CHAR |
| Z* | System ID | Along with CONTRACTTYPENAME, SYSID is the key with which CPI makes the call to Icertis to retrieve the complete header contract field details. Example: 1343f2e0-9386-4fa7-aa5b-22abba04d35a (36 chars) | 36 CHAR |
| Z* | Supplier's Account Number | The supplier numbers will be the same as the ECC supplier numbers. NDA's may not necessarily have a supplier id as it is possible to define an NDA for a bidder supplier only. Cannot be validated as the supplier records do not exist in both SAP systems. | 224 CHAR |
| Z* | Start of Validity Period | YYYYMMDD | DATE |
| Z* | End of Validity Period | YYYYMMDD | DATE |
| Z* | Target Value for Header Area per Distribution | It needs to be the total value of the contract (in ECC it is target value at header level) In the case of amendments, it needs to be the updated overall total Renewals may also update the overall value. ERP-203 Icertis: Total Contract Value calculation with multiple amendments to enable ECC Integration | INT(15 including 2 decimals) |
| Z* | Currency Key | Confirmed the currency codes in Icertis are aligned to SAP codes | 5 CHAR |
| Z* | Company Code | Organizational data - company code, purchasing group, purchasing org are being aligned in Icertis to ECC - it is the 4 char code for company code which matches SAP | 1000 CHAR |
| Z* | Purchasing Group | Organizational data - company code, purchasing group, purchasing org are being aligned in Icertis to ECC - it is the 3 char code for purchasing group which matches SAP | 1000 CHAR |
| Z* | Purchasing Org | Organizational data - company code, purchasing group, purchasing org are being aligned in Icertis to ECC- it is the 4 char code for purchasing organization which matches SAP | 1000 CHAR |
| Z* | Region | Icertis has values for each region which will be useful for the consolidation report to enable filtering of the Icertis Z table records by region. Possible values are: WW, EMEA, APAC, AMS (world-wide, Europe, Asia Pacific, Americas) | 4 CHAR |
| Z* | Contract Owner | Use for filtering in the report on Z table so owners can find their own to work on First name, last name and email id in one field | 224 CHAR |
| Z* | Incoterms | Incoterms are being aligned to correspond between Icertis and ECC This field in Icertis is the 3 char code for the terms | 224 CHAR |
| Z* | Payment Terms | Payment terms are being aligned to correspond between Icertis and ECC This is the 4 char code that matches to SAP's codes in ECC | 224 CHAR |
| Z* | Termination Date | When a termination message is received, the expiry date field remains same in ICertis but the termination date will have to become the expiry date | DATE |
Note: For all field values from Icertis, remove any blank spaces from the beginning and end of the value and the remaining content is to go into the target field. Icertis has many text-based fields ranging from 224 to 1000 chars which are able to be input by users. We cannot control that the contents will fit into a fixed length field on the target system.
Field lengths for the custom fields in SAP ECC will have to correspond to the length of the fields in Icertis.
The ActionName field in the initial event received to CPI is the key controlling information which determines whether a new line item in the custom table is required, or an existing line is to be updated. The values in this field are:
"Terminated" (update existing entry)
"Renewed" (update existing entry)
"AmendmentExecuted" (update existing entry, but for the Parent Contract and Parent System ID)
"Executed" (create a new entry)
| Source Table | API or Portlet Name | Source Field | Required (Y/N) | Description | Target | API or Portlet Name | Target Field | Required (Y/N) | Description (Label in SAP) | Rule Type | Rule Instruction |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Z* | Y | Tenant ID | To be defined what the value is and how it is identified | ||||||||
N/A | CONTRACTTYPENAME | Y | Contract Type Name | Z* | CONTRACTTYPENAME | Y | Contract Type Name | If ActionName is 'Executed', then a new entry is made in the Z table for CONTRACTYPENAME and SYSID If ActionName is 'Renewed' or 'Terminated', then the existing entry is updated for the CONTRACTTYPENAME and SYSID If the ActionName is 'AmendmentExecuted' then the existing entry for PARENT CONTRACT and PARENT SYS ID is updated. | |||
| N/A | SYSID | Y | System ID | Z* | SYSID | Y | System ID | If ActionName is 'Executed', then a new entry is made in the Z table for CONTRACTYPENAME and SYSID If ActionName is 'Renewed' or 'Terminated', then the existing entry is updated for the CONTRACTTYPENAME and SYSID If the ActionName is 'AmendmentExecuted' then the existing entry for PARENT CONTRACT and PARENT SYS ID is updated. | |||
| N/A | NAME | N | Description | Z* | NAME | N | Description | Direct Mapping | |||
| N/A | ICMAGREEMENTCODE | Y | ICM Agreement Code | Z* | ICMAGREEMENTCODE | Y | ICM Agreement Code | Direct Mapping | |||
| N/A | PARENT SYS ID | N | Parent System ID | Used for amendments to determine which existing record in the Z table is to be updated. Field is not stored in the Z-table. | |||||||
| N/A | PARENT CONTRACT | N | Parent Contract | Used for amendments to determine which existing record in the Z table is to be updated. Field is not stored in the Z-table. | |||||||
| N/A | ICMSUPPLIERSAPID | N | Supplier Number | Z* | ICMSUPPLIERSAPID | N | Supplier Number | Direct Mapping | |||
| N/A | ICMEFFECTIVEDATE | N | Effective from date | Z* | ICMEFFECTIVEDATE | N | Effective from date | Format received is YYYY-MM-DDTHH:MM:SS Remove the HH:MM:SS and 'dashes' to store in the Z table as YYYYMMDD | |||
| N/A | ICMEXPIRY | N | Expiry date | Z* | ICMEXPIRY | N | Expiry date | Format received is YYYY-MM-DDTHH:MM:SS If ActionName is 'Executed', 'Renewed' or 'Amendment Executed', direct mapping. If ActionName 'Terminated', fill with the value from ICMTERMINATIONDATE. The format of the contents also need to be updated to remove the time and dashes to be | |||
| N/A | ICMTOTALCONTRACTVALUE | N | Target Value | Z* | ICMTOTALCONTRACTVALUE | N | Target Value | Direct Mapping | |||
| N/A | ICMCURRENCY | N | Currency Key | Z* | ICMCURRENCY | N | Currency Key | Direct Mapping | |||
| N/A | ICMLEGALENTITYCODE | N | Legal Entity Code | Z* | ICMLEGALENTITYCODE | N | Legal Entity Code | Direct Mapping | |||
| N/A | ICMPURCHASEGROUPCODE | N | Purchasing Group | Z* | ICMPURCHASEGROUPCODE | N | Purchasing Group | Direct Mapping | |||
| N/A | ICMPURCHASEORGCODE | N | Purchasing Organization | Z* | ICMPURCHASEORGCODE | N | Purchasing Organization | Direct Mapping | |||
| N/A | ICMREGION | N | Region | Z* | ICMREGION | N | Region | Direct Mapping | |||
| N/A | ICMPRIMARYOWNERNAME | N | Primary Contract Owner | Z* | ICMPRIMARYOWNERNAME | N | Primary Contract Owner | Direct Mapping | |||
| N/A | ICMINCOTERMCODE | N | Incoterms | Z* | ICMINCOTERMCODE | N | Incoterms | Direct Mapping | |||
| N/A | ICMPAYMENTTERMSCODE | N | Terms of Payment | Z* | ICMPAYMENTTERMSCODE | N | Terms of Payment | Direct Mapping | |||
| N/A | ICMTERMINATIONDATE | N | Termination Date | Z* | Used for | ||||||
Describe the processing requirement from Source System
check with Wytse if there is any in Icertis
Describe the processing requirement within Middleware Layer
refer to the mapping sheet
Describe the processing requirement from Target System
not applicable
Please describe any dependency to other interfaces, e.g. messages of interface x need to be processed before message processing of interface y can start.
Please describe any limitations on source and targets. i.e. target system can only accept maximum 100mb files, first-in-first-out, etc.
Please describe delivery requirements driven by business. i.e. real time, batch, scheduled, synchronous, triggering requirement, push or pull, etc.
Please describe change tracking requirements, i.e. transferring only delta, or always full load
Please describe any alert & monitoring requirement for business users and support organization
Please describe any reporting requirement that is expected to be provided in support of this interface
Specify multi language requirements
Capture the requirements for the user interface (UI) associated with the interface. It should provide a clear description of how users will interact with the interface and how information will be presented to ensure usability and accuracy.
Provide volumetrics details: Initial load volumes, Number of Records, Expected Frequency, Expected Long term Growth)
Specify if there are any specific performance factors that need to be taken into consideration during development i.e. interface must be able to handle 100 posting per-hour, etc.
Detail how errors will be handled: Notification, Restart/ Recovery and Re-Processing Procedures
Please provide some guidance and/or test data to help the developer unit test the interface. Please include both positive and negative testing (to validate error situations handling)
The developer will need to test repeatedly, so where appropriate provide instructions to reverse the actions performed so the test may be run again, or explain how to create new input data to the test. In particular, the developer will need logons for test users representing the various roles within the approval process.
| ID | Condition | Expected Results |
|---|---|---|
List any considerations essential for application test planning (e.g., test this before ABC along with DEF separate from GHI). If the development encompasses a user interface, explain how to test it. List any insights as to how this component could be tested the most efficiently.
| Package Name | Parent Package |
|---|---|
Other Development Objects
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
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.
