Status

  Approved

Owner
Stakeholders
Jira Request ID

ERP-2343 - Getting issue details... STATUS

Jira Development ID

ERP-2397 - Getting issue details... STATUS

High- Level Specification

ParameterValue
Application SystemSAP ERP (PF2) & SAP ERP (WP2)
Business Process Reference03.04.04.01. Manage Outline Agreements (R2)

Functional Overview

Icertis Contract Intelligence is the contract management and authoring application for Syensqo's purchase contracts. Purchase orders are created in SAP ECC 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 SAP ECC.  The integration between Icertis and SAP ECC for release 2 is a custom table in SAP ECC to hold key header field content from Icertis (ERP-260 Integration Process - Icertis to SAP ECC Contract Data Replication & ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC). This custom table supports the main objectives:

  1. To enable a relationship between the Icertis Agreement Code and the SAP outline agreement number.
  2. To report where there are inconsistencies in the data between the two systems.

This enhancement is to create a program in SAP ECC which makes new entries in the custom table ZMM_ICMCONTRACT for legacy contracts which have been loaded into Icertis Contract Management via their legacy load tool. This method does not generate event messages to CPI in the same way that the execution of a new contract manually does. The program would be a direct update process based on the contents of a spreadsheet to make the table entries.

Once the legacy contract field values are loaded in the table in SAP, all other integration from Icertis is managed via the existing developments referenced above. This includes the execution of amendments, renewals, terminations and tracking field updates.

Scope and Objectives

The purpose of this program is to ensure that all the relevant legacy system contracts which are loaded into Icertis are available in the table in both SAP ECC systems. This ensures that:

  1. Legacy contracts can be selected for assignment on the outline agreement headers (handled by ERP-259 Enhancement for Storage of Icertis ID on OA Header)
  2. Reporting of Icertis contracts in BW and their associations to outline agreements includes the legacy migrated contracts and new ones  ERP-504 - Getting issue details... STATUS

Primarily the purpose of the program is for the load of legacy contracts where currently the expected event messages cannot be triggered to CPI to enable the operation of ERP-260 Integration Process - Icertis to SAP ECC Contract Data Replication & ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC in their current form.

Potentially this program may also provide a backup option to load multiple contract records into the table in the event of a failure in the automated interfaces from Icertis. If an event is not generated, or there is an inability to process the message in CPI (eg. Incorrect tenant id), there is no method in Icertis to resend or to retrigger a new message, nor an ability to update the message in CPI. Manual entry into the table in SAP is the only option. In the case of multiple records, this program may provide a fallback option depending on the circumstances, the volume, the ability to identify and the nature of the failures. 


Process Flow Diagram



Step

Description

Comment

1

List the legacy agreements in Icertis

Select the relevant contract types.

Select the variant to display the relevant columns for the table in SAP.
Verify the number of records selected.

2

Export the selection (Icertis)

Export the list of agreements to Excel file and confirm the number of records.

3

Prepare the load file(s) (Excel)

Various formatting, lookups, macros and checks field by field to prepare the file for loading.
If relevant, prepare the purchasing org load file.

4

Execute the load program in test mode (SAP) - ERP-2397

Validate any errors in test mode in both SAP ECC systems.

Verify number of records

5

Execute the load program in update mode (SAP) - ERP-2397

Execute the load program in update mode.

Verify any errors in the load.

Validate the number of records updated in the table.

6

If relevant execute the purchasing org table load in test mode (SAP) - ERP-2397

Validate any errors in test mode in both SAP ECC systems.

Verify number of records

7

If relevant execute the purchasing org table load in update mode (SAP) - ERP-2397

Execute the load program in update mode.

Verify any errors in the load.

Validate the number of records updated in the table.

8

Verify number of new records loaded (SAP) - ERP-2397

Verify the number of records in the tables include the expected number of new records and that the tables are consistent across both SAP systems (PF2 and WP2 for production)


Assumptions

Verified spreadsheet templates are available to prepare the data with fields correctly named and sequenced for the load program.

The relevant contracts for load can be selected in Icertis, and the relevant fields can be successfully exported from Icertis to a spreadsheet with the values for the fields which are mapped in SAP.

It is understood that multiple manual tasks will be required to prepare the exported file for load into SAP. This includes formatting, trimming of field content, formulae, lookups, manual entry of fixed values not available in Icertis and resequencing of columns. Whilst several validations can be carried out within the load program, the fields in the tables have been defined to be mostly text format fields to enable all values to be stored in both SAP systems and to accept whatever value is being passed from Icertis. Careful validation of the data in the spreadsheet will be required prior to executing a load.

Purchasing organization data is held in a separate table (ZMM_ICM_EKORG) in SAP. Whilst purchasing organizations are not assigned to the legacy contracts being loaded initially in Icertis, if this program is to be used where purchasing organizations are assigned in Icertis, an additional file and step is required in the program. They can only be loaded following the initial load of the contract into ZMM_ICMCONTRACT.

Any load into the table will have to be executed in both the PF2 and WP2 systems. The table entries are maintained in both systems by the enhancement ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC. Entries in both tables are expected to always be identical.


Dependencies

The selection of the relevant contracts and export of the relevant field values from Icertis is required prior to the loads into SAP.

Security, Integrity and Controls

Security is covered by the authorizations defined in ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC, where an authorization group is on the table to protect it from updates. Firefighter access is required for cutover and by production support in the event of needing to update the table with the exception of a few Syensqo users currently with access in the SAP Basis/Technical team.

No further security or control is required for this program.

Configuration Requirements

There are no specific configuration requirements for this enhancement.

Language Requirements

There are no language requirements for this enhancement. Screen fields and headings will be programmed only in English. As per ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC, the contract content from Icertis is predominantly text based and will therefore be shown in the language it which it was entered in Icertis.

Special Requirements

There are no special requirements identified.



Design Rationale

Functional Requirements

This custom program is to take field values from a spreadsheet plus the fixed value for several other fields determined in the program and make new entries into the tables ZMM_ICMCONTRACT or ZMM_ICM_EKORG.

The columns in the spreadsheet will have column headings which are the field names in the tables.

The initial selection screen will have a radio button to select one table at a time to be updated.  Checks and validations will be carried out prior to the updates. The user running the program must clear the errors before proceeding to load. Table records as per the spreadsheet content are updated directly.

The program will make new table entries and changes only (in the case of amendments which reference a parent agreement code and parent system id). If deletions to existing entries are required, this is carried out manually via table update in transaction SM34 using a Firefight ID for access.

The date format for the effective date and expiry date will be fixed in the program logic to expect M/D/yyyy. This is defined in the user instructions to ensure the Icertis date format is set this way before beginning to export the Icertis agreements.

Parent agreements will be loaded first, and amendments afterwards to ensure the entries to be changed will already exist. This will be managed by sorting the entries in the file.

Proposed Technology to Use

Custom ABAP program to make table updates based on a spreadsheet with the required values in each field.

Data Source Considerations

All data required for the table entries will be provided in the spreadsheet or in the initial selection screen for the program or determined within the program. The formats of the spreadsheets (one for contracts and one for the purchasing org table) are shown below and a sample file provided for unit testing.
The tenant id (relevant for both tables), and the event date time values (for the contract table) will be determined within the logic of the program. The action name field value will be provided on the initial selection screen. The client number (for the contract table) is auto populated by the program based on the client it is being executed in.

The column labels in the spreadsheet are the same as the field name in the tables.

A sample file for loading ZMM_ICMCONTRACT is available here:  ERP-2397 Sample File.xlsx - Google Sheets

A sample file for loading ZMM_ICM_EKORG is available here:  ERP-2397 Sample File ZMM_ICM_EKORG.xlsx - Google Sheets

A working file with instructions is available here: ERP-2397 UAT Working File.xlsx - Google Sheets

TableField NameComments/Calculation/Field Manipulation
ZMM_ICMCONTRACTCONTRACTTYPENAME

Same logic as load program of ERP-261 System Interface - Icertis Contract Data Replication to SAP ECC will convert the full contract type names (ICMMasterAgreement,
ICMSupportingAgreement, ICMSubAgreement, ICMStandaloneAgreement) to the abbreviations (MSA, SBA, SAA, SPA)

In the case of amendments, the contract type name remains the same. 

ZMM_ICMCONTRACTSYSIDUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMAGREEMENTCODEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMCONFIDENTIALCONTRACTThis field is always blank, spreadsheet value will be blank
ZMM_ICMCONTRACTNAMEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTASSOCIATINGTYPEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTASSOCIATINGCODEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTASSOCIATINGSYSIDUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMSUPPLIERSAPIDUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMEFFECTIVEDATEUpload file content directly into field, no manipulation.
Default from Icertis is M/d/yyyy with the extracted format being shown as 8/28/2025 12:00:00 AM
SAP will convert this format successfully for loading into a date field.
It is required that the user default settings for dates in Icertis is set to M/d/yyyy before beginning the extracts.
ZMM_ICMCONTRACTICMEXPIRYDATE

Upload file content directly into field, no manipulation.

Default from Icertis is M/d/yyyy with the extracted format being shown as 8/28/2025 12:00:00 AM
SAP will convert this format successfully for loading into a date field.
It is required that the user default settings for dates in Icertis is set to M/d/yyyy before beginning the extracts.

ZMM_ICMCONTRACTICMTOTALCONTRACTVALUEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMCURRENCYUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMLEGALENTITYCODEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMORGTEAMUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMCONTRACTOWNERUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMINCOTERMSCODEUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMINCOTERMSLOCATIONUpload file content directly into field, no manipulation
ZMM_ICMCONTRACTICMPAYMENTTERMSUpload file content directly into field, no manipulation
n/aICMPARENTENTITYINSTANCEIDIf a parent system id is provided here, the entry is an amendment and the table entry for the SYSID=ICMPARENTENTITYINSTANCEID and ICMAGREEMENTCODE=ICMPARENTCONTRACTID will have all the existing field values overwritten, with the exception of the 3 association fields: ASSOCIATINGTYPE, ASSOCIATINGCODE, ASSOCIATINGSYSID (these remain unchanged)
n/aICMPARENTCONTRACTIDAs per the parent entity instance id above.

Purchasing Org Table (ZMM_ICM_EKORG)

TableField NameComments/Calculation/Field Manipulation
ZMM_ICM_EKORGCONTRACTTYPENAMENo calculation or manipulation of value, enter the value from the spreadsheet into the field
ZMM_ICM_EKORGSYSIDNo calculation or manipulation of value, enter the value from the spreadsheet into the field
ZMM_ICM_EKORGICMAGREEMENTCODENo calculation or manipulation of value, enter the value from the spreadsheet into the field
ZMM_ICM_EKORGICMPURCHASINGORGCODENo calculation or manipulation of value, enter the value from the spreadsheet into the field

Data Validation Considerations

The following data validations are carried out in both test and update modes:

TableField NameComments/Calculation/Field Manipulation
ZMM_ICMCONTRACTCONTRACTTYPENAME

Valid value of:

ICMMasterAgreement
ICMSupportingAgreement
ICMSubAgreement
ICMStandaloneAgreement

Error: xxx invalid CONTRACTTYPENAME

Note: Contract type names for amendments are provided as above.

ZMM_ICMCONTRACT

CONTRACTTYPENAME

SYSID

ICMAGREEMENTCODE

Mandatory fields and must be in the spreadsheet 

Error: Field xxx is required entry

ZMM_ICMCONTRACTSYSID

Spreadsheet value for SYSID does not already have an entry in the table. Duplicate entries are not permitted

Error: SYSID xxx already exists

ZMM_ICMCONTRACTASSOCIATINGCODE, ASSOCIATINGTYPE, ASSOCIATINGSYSID

These fields must either all be blank, or all be filled (not one filled, one blank).

Error: Missing association details

ZMM_ICMCONTRACTASSOCIATINGTYPE

If ASSOCIATINGTYPE is filled, the value can only be MSA

Error: Incorrect ASSOCIATINGTYPE

ZMM_ICM_EKORG

CONTRACTTYPENAME

SYSID

ICMAGREEMENTCODE

ICMPURCHASINGORGCODE

Mandatory fields and must be in the spreadsheet 

Error: Field xxx is required entry

 

ZMM_ICM_EKORGSYSID & ICMPURCHASINGORGCODE

Spreadsheet value for SYSID & ICMPURCHASINGORGCODE does not already have an entry in the table ZMM_ICM_EKORG. Duplicate entries are not permitted

Error: SYSID xxx and ICMPURCHASINGORGCODE already exists

ZMM_ICM_EKORGSYSID & ICMPURCHASINGORGCODE

Spreadsheet value for SYSID must already have an entry in the table ZMM_ICMCONTRACT.

Error: SYSID xxx does not exist in ZMM_ICMCONTRACT

ZMM_ICMCONTRACT & ZMM_ICM_EKORGColumn headings

Validate that the column headings in the spreadsheet align to the fields in the table being loaded.


Custom Tables

There are no requirements for additional custom tables for this enhancement.

Master Data

There are no requirements for any master data tables for this enhancement.


FieldDescriptionData Type/LengthValidation rule/ Value Help









Configuration Table

There are no requirements for additional configuration tables for this enhancement.


FieldDescriptionData Type/LengthValidation rule/ Value Help








Selection Screen Enhancement

Field NameDescription

Select:

Data Type/LengthDefault Value/ Validation rule/ Value HelpSelection Logic
CONTRACTUPLOADICM Contract Table UploadRadio Button1Default to selected

If the 'Contract' radio button is selected, then program is to upload to the table ZMM_ICMCONTRACT

LOADFILENAMEFile Name (Contract)Select for the file name and pathLength to be specifiedDefault to blank

Selection of the dropdown and allow user to navigate to the location of the file on a local drive for the Contract Table Upload or the Purchasing Org Table upload

ACTIONNAMEAction NameText Field30 charDefault to 'Executed'

The value entered here is filled in each table entry in the ACTIONNAME field. In the case of legacy contracts, this will be 'Executed'

PURORGUPLOADICM Purchasing Org Table UploadRadio Button1Default to deselected

If the 'Purchasing Org' radio button is selected, then the program is to upload to the table ZMM_ICM_EKORG

TESTMODETest Mode UploadCheckbox1Default to selected

Select if the selected program is to be run in test mode. 
Program runs any coded checks and validations and reports error messages; or reports no errors identified.

Deselected, program will run in update mode and make changes to the table.








Processing Logic

Execute the validations in both test and update modes.

Fill the EVENTDATETIME field based on the current system date and time that the program is being run. Use format: 

2024-04-12T07:16:17.9661276Z

Determine value for TENANTID based on the SAP system where the files are being loaded:  WD2/DF2, then icertis/syensqo-dev, WQ2/QF2 then icertis/syensqo-uat and WP2/PF2 then icertis/syensqo

Fill the CLIENT field based on the SAP client number the program is being executed in.

Fill the fields in the tables based on the column labels in the spreadsheet.


Volumetrics

There are 2900 legacy purchase contracts being loaded into Icertis which are relevant for entry in the SAP table ZMM_ICMCONTRACT. There are no entries required to the purchasing organization table ZMM_ICM_EKORG for legacy contracts, but if the program is used to make contract entries as a result of an error or failure to generate an event within Icertis, entries may be required to that table as well as the main one.

Volumes for any future use of the program for the correction of missing table entries may vary depending on the circumstances. 


Performance Considerations

There are no specific performance considerations for this development as it is expected that the table update will be made quickly and there are no dependencies for the load of legacy contracts.



Error Handling

  • Any errors identifiable by the program will be reported when the program is executed in test mode. They need to be rectified prior to running in update mode.
  • Errors for any entries which could not be uploaded will be identified in the processing logs and may be reprocessed if the cause of the error can be subsequently cleared.


Testing

How to Test

Test files can be reused multiple times by changing the SYSID value to be unique, and ensuring it does not already exist in the tables.

Additional files to cover different scenarios can be produced from the Icertis extract saved searches.

Test Conditions and Expected Results

IDConditionExpected Result
1Test mode Executes validations and displays error messages.
2Update modeExecutes validations and displays error messages which need to be cleared before processing.
3Update mode processes the table updates.Table updates as per the spreadsheet are made directly in update mode.
4Load master agreements Comparison of table fields with spreadsheet fields are identical
5Load Sub Agreements with/without associationsComparison of table fields with spreadsheet fields are identical
6Load Standalone AgreementsComparison of table fields with spreadsheet fields are identical
7Load Supporting Agreements with/without associationsComparison of table fields with spreadsheet fields are identical
8

CONTRACTTYPENAME is  

ICMMasterAgreement
ICMSupportingAgreement
ICMSubAgreement
ICMStandaloneAgreement
Amendment contract names are not permitted


Error: xxx invalid CONTRACTTYPENAME
9

Missing CONTRACTTYPENAME, SYSID, or ICMAGREEMENTCODE value

Mandatory fields and must be in the spreadsheet 


Error: Field xxx is required entry
10

SYSID value in the spreadsheet already exists in the table ZMM_ICMCONTRACT. Duplicate entries are not permitted


Error: SYSID xxx already exists
11

The 3 associating fields (ASSOCIATINGCODE, ASSOCIATINGTYPE, ASSOCIATINGSYSID) must either all be blank, or all be filled (not one filled, one blank).


Error: Missing association details
12

ASSOCIATINGTYPE may only be blank or MSA.


Error: Incorrect ASSOCIATINGTYPE
13

Spreadsheet value for SYSID and ICMPURCHASINGORGCODE already exists in the table ZMM_ICM_EKORG. Duplicate entries are not permitted.


Error: SYSID xxx and ICMPURCHASINGORGCODE already exists
14

Spreadsheet value for SYSID when loading into ZMM_ICM_EKORG must already exist in ZMM_ICMCONTRACT

Error: SYSID xxx does not exist in ZMM_ICMCONTRACT
15

Load amendment examples for each contract type

Ensure the existing records for the parent contract are updated and no new entries for the amendments themselves are created.


Test Considerations/Dependencies

There are no other specific testing considerations or dependencies.


Other Information


Development Details

Package

Package NameParent Package




Enhancement Implementation

Enhancement TypeStandard Definition NameCustom Implementation NameDesign Rationale Reference









Other Development Objects

Appendix

See also


  File Modified
File Process Flow ERP-2397 draw.io diagram Mar 16, 2026 by ROWLINSON-ext, Kerry
File ~Process Flow ERP-2397.tmp draw.io Draft Mar 06, 2026 by ROWLINSON-ext, Kerry

Change log

Version Published Changed By Comment
CURRENT (v. 36) Mar 16, 2026 11:27 ROWLINSON-ext, Kerry
v. 35 Mar 12, 2026 09:00 TORRES-ext, Benedict
v. 34 Mar 12, 2026 08:59 TORRES-ext, Benedict
v. 33 Mar 12, 2026 05:25 ROWLINSON-ext, Kerry
v. 32 Mar 10, 2026 13:33 ROWLINSON-ext, Kerry
v. 31 Mar 10, 2026 12:51 ROWLINSON-ext, Kerry
v. 30 Mar 10, 2026 12:49 ROWLINSON-ext, Kerry
v. 29 Mar 10, 2026 11:47 ROWLINSON-ext, Kerry
v. 28 Mar 10, 2026 11:06 ROWLINSON-ext, Kerry
v. 27 Mar 10, 2026 10:49 ROWLINSON-ext, Kerry

Go to Page History