Please see the SAP Analytics Approach document, section 'Documentation' for more information about the context of this document.
| Status | |
|---|---|
| Functional Specification Owner | |
| Stakeholders | |
| Jira Request ID | |
| Jira Development (Build) ID | Enter the Jira development card URL here (Use the Jira macro to search and add) |
| Parameter | Value |
|---|---|
| Application System (Delivery Tool) | Icertis |
| Business Process Reference (L4) | NA |
The reconciliation mechanism ensures reliability and traceability for custom integrations (e.g., Icertis to CPI) by logging failed messages, managing scheduled retries, tracking retry attempts, and notifying stakeholders of persistent failures.
The scope of this development covers the design, implementation, and monitoring of a reconciliation mechanism for custom integrations, such as the Icertis to CPI interface. The solution encompasses:
This scope encompasses integration with both internal and external systems, covering all technical, functional, and compliance aspects necessary for reliable and transparent message processing.

Failure Logging
Master Data Table
Scheduled Retry Job
Retry Count & Failure Notification
User Visibility

Below is a step-by-step flow of how the reconciliation mechanism operates in real time:
| Column Name | Data Type | Nullable? | Description/Notes |
|---|---|---|---|
| ID | bigint | No (not null) | Likely the Primary Key, an automatically incrementing large integer identifier. |
| IntegrationType | nvarchar(150) | No (not null) | Stores the type of integration as a variable-length Unicode string, max 150 characters. |
| RequestMessage | nvarchar(max) | No (not null) | Stores the full request message (e.g., XML, JSON) as a variable-length Unicode string. |
| StartedAt | datetime | Yes (null) | Records the start time of the event. Can be null if not yet started or relevant. |
| CompletedAt | datetime | Yes (null) | Records the completion time of the event. Can be null if not yet completed. |
| AdditionalInfo | nvarchar(max) | Yes (null) | Stores extra information about the event. |
| ResponseMessage | nvarchar(max) | Yes (null) | Stores the response message received. |
| TryCount | int | Yes (null) | Counts how many attempts were made for the integration event. |
| IsSuccess | bit | Yes (null) | A Boolean flag (0 or 1) indicating if the operation succeeded. |
| ExternalIdentifier | nvarchar(400) | Yes (null) | An ID from an external system. |
| ICMIdentifier | nvarchar(400) | Yes (null) | An ID specific to "ICM" (likely an internal system). |
| EntityName | nvarchar(400) | Yes (null) | The name of the entity being processed. |
| Status | nvarchar(400) | Yes (null) | The current status of the event (e.g., 'Pending', 'Processing', 'Failed'). |
| ETag | datetime | Yes (null) | A timestamp or version indicator often used for optimistic concurrency control. |
| IsActive | int | No (not null) | An integer flag (likely 0 or 1) indicating if the log entry is active. |
This section defines the level of detail and the business entities by which the key figures and measures will be analyzed. All relevant dimensions—whether used in rows, columns, or as free characteristics—are listed below. Each field is described to ensure clarity and completeness, except where marked as optional.
| Dimension Name | Description | Source Table/Field Name | Mandatory/Optional | Example Value |
|---|---|---|---|---|
| Integration Type | Type of integration event (e.g., Icertis to CPI) | MasterData.IntegrationType | Mandatory | IcertisToCPI |
| Entity Name | Name of the business entity being processed | MasterData.EntityName | Mandatory | Contract |
| External Identifier | Reference ID from an external system | MasterData.ExternalIdentifier | Mandatory | EXT12345 |
| ICM Identifier | Internal system reference ID | MasterData.ICMIdentifier | Mandatory | ICM67890 |
| Status | Current processing status of the integration event | MasterData.Status | Mandatory | Failed |
| Started At | Timestamp when the integration event started | MasterData.StartedAt | Mandatory | 2024-06-01 10:00 |
| Completed At | Timestamp when the integration event completed | MasterData.CompletedAt | Optional | 2024-06-01 10:05 |
| Is Active | Indicates if the log entry is currently active | MasterData.IsActive | Mandatory | 1 |
| Company Code | Organizational unit for accounting (if applicable) | [To be mapped if relevant] | Optional | CS09 |
Security & Authorization
Detail the security requirements for processing this object
Datasphere
- POD Space that this model belongs in
- Dimensions relevant for data access controls / row level security
S/4
- The following objects need to have at least one authority check (either standard or custom): Custom tables, enhancement, transaction codes, programs, Web Dynpro Application, Code Data Services (CDS), Open Data Protocol (OData), BI reports, and Functional Modules. (Custom should be an exception)
- All custom tables will be maintained in a certain Authorization Group (example: ZFIN, etc.)
- Preferably, the authorization check is done at data sources such as CDS Views.
The variables defined in this section will apply all reports built on this data model. They should therefore be linked to crucial elements such as security and performance (i.e. they should not impact the reusability of the model).
E.g. if a model is secured by company code, a variable to allow the user to restrict the company code to their authorised values should be included.
If a model contains large volumes of data, restrictions should be applied to reduce the dataset returned.
Report Field Name | Mandatory/Optional | Prompt Type (Single Value, Multiple Single Values, Interval, Selection Option, Hierarchy) | Default Value(s) or Restrictions (please provide default value) | Selection Logic |
|---|---|---|---|---|
Detail the business process logic to be applied to the data. It is critical that all combination outcomes are covered and that there is no ambiguity as to how rules should be applied.
Example: Details of unions, table joins, filters, aggregations, parameterization, etc required to build the data model.
Include details for loading / blending of data with history, plans and targets. N.B. Any mapping from legacy dimension values to new SyWay system values should be done by the data migration team.
Currency Conversions: Detail 'from' and 'to' currency source fields ('to' is usually a mandatory parameter), exchange rate type and key date definition.
Unit conversions: Detail 'from' and 'to' unit source fields ('to' is usually a mandatory parameter). For material unit conversions (E.g. PC to EA) detail basis for conversion. I.e. MARM or pack specs (EWM)
Provide volumetrics details: Number of Records, Expected Frequency, Expected Long term Growth and Data Retention Period
Should the data be near-real time, daily, weekly monthly? Are snapshots of data required. If so, at what frequency? Consider all source tables.
Content Ownership: Reporting & Analytics Consultant
Specify if there are any specific performance factors that need to be taken into consideration during development i.e. report must be able to display 10000 records etc.
Please provide some guidance and/or test data to help the developer unit test the report. Please include both positive and negative testing (to validate error situations handling)
List any considerations essential for application test planning (e.g., test this before ABC along with DEF separate from GHI).
List any standard reports in the source system that can be used to do high level reconciliation e.g. Fiori apps or CDS views. Data validation will be done using the Data Analyzer report that is delivered in conjunction with this data model.
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 |
|---|---|---|
| 1 | Message fails and is logged | Entry created with status "Failed", TryCount=1 |
| 2 | Message retried successfully | Status updated to "Success", TryCount incremented |
| 3 | Message fails >3 times | Notification sent, status remains "Failed", TryCount >3 |
| 4 | User queries failed messages | Only authorized data is visible |
| 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.
Description of requirements not covered by topics above
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.
