| 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:
This table enables:
| 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. |
When to Run:
The reconciliation process is triggered whenever an integration attempt from Icertis to a target system fails. Additionally, a scheduled job runs at defined intervals (e.g., every 12 or 24 hours) to process unresolved failures.
How Master Data Entries Are Added:
When a failure occurs, the integration job automatically creates a new entry in the IntegrationReconciliation master data table, capturing key details such as message content, timestamps, error information, and setting the status to "Failed" with TryCount initialized to 1.
Scheduled Retry:
The scheduled job selects all active failed or pending entries and attempts to resend them. After each attempt, it updates the retry count and status. If a message fails more than the allowed number of times (e.g., 3), it triggers an automated notification to stakeholders for manual intervention.
User Monitoring:
Authorized users can view and monitor the status of all integration attempts via the Icertis UI, enabling proactive management and 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 |
|---|---|---|---|