| Status | |
|---|---|
| Functional Specification Owner | |
| Stakeholders | |
| Jira Request ID | |
| Jira Development (Build) ID |
| 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.

Icertis Initiation (1): The process begins with "Icertis," which sends messages to the "Azure Service Bus." This is the starting point for events or data that need to be processed.
Azure Service Bus to Azure Event Grid (A1): Messages from the Azure Service Bus are then directed to the "Azure Event Grid."
Azure Event Grid to Webhook (A2): The Azure Event Grid routes these events to a Icertis Webhook. This implies that the events are being pushed to an external service or application via an HTTP callback.
Webhook to SAP (A3): The Webhook sends the information to "SAP" for sending updates or new data.
Icertis Task Service and Development Scope :
This section seems to describe a more detailed, internal process within Icertis, particularly focusing on handling events and ensuring data consistency. The "Icertis Task Service" acts as an orchestrator for the processes within the "Development Scope."
Auto Delete (B8) : Auto delete the reconciliation and reconciliation retry records older than 90 days.
Failure Logging
Reconciliation Data Tables
Scheduled Retry Job
Retry Count & Failure Notification
User Visibility

Integration Attempt
Failure Detection
Immediate Retry by Source System (Optional)
Scheduled Reconciliation Job
Logging Retry Attempts
Failure Escalation
User Monitoring
This table enables:
| Column Name | Data Type | Nullable? | Description/Notes |
|---|---|---|---|
| ID | UniqueIdentifier | No (not null) | The Primary Key, an automatically incrementing large integer identifier. |
| IntegrationType | nvarchar(150) | No (not null) | String holding the integration name. |
| EntityName | nvarchar(400) | Yes | Icertis Entity Name. |
| 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. (e.g. Incoming SAP Event/Message Id) |
| ICMIdentifier | nvarchar(400) | Yes (null) | Id from Icertis system like SysId. |
| ETag | datetime | Yes (null) | A timestamp or version indicator used for optimistic concurrency control. (default column of Icertis) |
| IsActive | int | No (not null) | An integer flag (likely 0 or 1) indicating whether the log entry is active. Inactive records are not shown in the Icertis table view UI by default. |
ReconciliationRetry Table
| Column Name | Data Type | Nullable | Description |
| RetryID | bigint | No | Primary Key. Unique identifier for the retry attempt. |
| ReconciliationID | bigint | No | Foreign Key. References the ID in your reconciliation table. |
| RetryAttemptNumber | int | No | The specific iteration (e.g., 1, 2...5). |
| Message | nvarchar(max) | Yes | Captures the specific message/error that occurred during this retry. |
| StartedAt | datetime | Yes | When this specific attempt began. |
| CompletedAt | datetime | Yes | When this specific attempt finished. |
| IsSuccess | bit | Yes | Did this specific attempt succeed? |
When to Run
Reconciliation jobs are scheduled to run at regular intervals (e.g., every 12 or 24 hours).
These jobs are triggered automatically by the system to process failed or pending integration attempts.
Users can monitor the status of integration attempts and retries through the Icertis UI or other master data interfaces.
Both the Reconciliation and ReconciliationRetry tables are accessible for review, allowing users to:
Scheduled Retry
The scheduled reconciliation job scans the Reconciliation table for entries with a status of “Pending” or “Failed.”
For each failed entry:
The job attempts to resend the message to the target endpoint.
Each retry attempt is logged in the ReconciliationRetry table, incrementing the retry count and updating the status and timestamps.
If the retry count exceeds the maximum allowed attempts (e.g., 5), an automated failure notification is sent to stakeholders.
During Scheduled Retry Jobs:
Each time the scheduled reconciliation job runs (e.g., every 12 or 24 hours), it also checks for and deletes entries older than 90 days from both tables.
Entry Identification:
The system identifies records in the Reconciliation and ReconciliationRetry tables where the creation or last update timestamp is more than 90 days old.
Automated Deletion:
These aged entries are automatically removed as part of the scheduled job, ensuring that only recent and actionable records are retained.
Audit Logging:
Deletion actions are logged for audit purposes, capturing details such as the number of records deleted and the timestamp of the operation.
No Manual Action Required:
The cleanup process is fully automated and does not require user intervention.
Data Retention Policy:
Users should be aware that records older than 90 days will no longer be available for review or audit through the UI or interfaces.
If longer retention is required for compliance or business needs, this policy should be reviewed and adjusted accordingly.
Reliability: Ensures failed integrations are not lost and are retried systematically.
Auditability: Provides a clear history of all attempts and outcomes.
Transparency: Stakeholders are notified of persistent failures, enabling timely resolution.
| Test Step ID | Test Condition/Action | Expected Result |
|---|---|---|
| 1 | Simulate a failed integration (e.g., send invalid data or disable the endpoint) | Entry created in the IntegrationReconciliation table with status "Failed" and TryCount = 1 |
| 2 | Allow the scheduled reconciliation job to run | System attempts resend; TryCount increments; status updates to "Success" if successful, else remains "Failed"/"Retried" |
| 3 | Force repeated failures until TryCount > threshold (e.g., 3) | Automated notification sent to stakeholders; record flagged for manual intervention |
| 4 | Log in as an authorized user and view the monitoring interface | All integration attempts (failed, retried, and successful) are visible with accurate details |
| 5 | Attempt unauthorized access or modification | Access is denied; security controls are enforced |
| 6 | Test with corrupted or incomplete data | System handles exceptions gracefully; error is logged appropriately |
| 7 | Reset test data and repeat tests | Process is repeatable and robust; system continues to function as expected |
| Package Name | Parent Package |
|---|---|
| Enhancement Type | Standard Definition Name | Custom Implementation Name | Design Rationale Reference |
|---|---|---|---|
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|