Status

IN PROGRESS

Owner
Stakeholders 



Best Practices and Guidelines for Custom Integration Development in Icertis

Introduction

Custom integrations in Icertis Contract Intelligence (ICI) extend the platform’s capabilities to connect with external systems—such as ERP, CRM, e-signature, or analytics tools.

These integrations often handle critical business events like agreement publish, execution, or status change, so a structured approach is vital to ensure consistency, error recovery, and maintainability across implementations.

This document captures the recommended patterns, coding standards, and operational guidelines to follow when developing or maintaining custom integration tasks within Icertis.


Scope and Objectives

Scope

This document applies to:

  • All custom integration tasks triggered from Icertis workflows or agreement events (Publish, Execute, Amend, etc.).

  • All retry and logging mechanisms related to external API communication.

  • Implementations performed by internal or partner teams on the Icertis platform.

It does not cover product-level configurations, UI customizations, or core Icertis upgrades.

Objectives

  • Define standard design principles for building reliable and reusable integration tasks.

  • Ensure clear separation of logic between task layers, helper methods, and event handlers.

  • Establish fault-tolerant retry and logging frameworks for predictable behavior during system or API failures.

  • Encourage consistent development practices across projects for maintainability and easier audits.

  • Provide a reference for new developers and solution architects joining ongoing Icertis implementations.


1. Failure Handling

  • Internal Exceptions

    • When a task fails due to internal exceptions within the Icertis system, mark the task as IsSuccessful = 0 .

    • This lets the Icertis task framework automatically retry the operation based on its built-in retry logic.

  • External API Failures

    • For failures caused by third-party APIs, implement a custom exponential back-off retry mechanism .

    • Include progressive backoff intervals and a maximum retry threshold to prevent overload or throttling.

2. Task Design Principles

  • Helper Method Pattern

    • Encapsulate all logic inside helper methods rather than directly inside task methods.
    • This ensures reusability—other tasks or statuses can call the same business logic without duplication.
  • Event-Based Task Separation

    • Every Publish  event for an agreement should have its own dedicated custom task.
    • Every  Executed event for an agreement should also have a separate task.
    • Avoid combining event logic within a single task unless necessary.
  • Shared Logic Across Events

    • If one integration serves both Publish and Executed events, create two distinct custom integration tasks that both call a shared helper method  for the common logic.
  • Multiple Integrations on Publish

    • If multiple integrations trigger on the same Publish event, use the Chain of Responsibility  pattern.
    • Each integration should execute sequentially, and the final state of the Agreement object should be persisted only  after  all integrations complete successfully.


3. Logging Strategy

Centralized Master Data for Logs

  • Maintain a master data table for logging
  • This approach aligns with current Icertis best practices and newer implementations.
  • Include metadata such as:
    • Integration name
    • Task ID
    • Execution time
    • Status (Success/Failure)
    • Error message or exception trace
    • Retry count

4. Recommended Implementation Standards

Code Organization

  • Keep helper methods under a consistent namespace or class (e.g., IntegrationHelper or TaskUtils ).
  • Ensure every integration task has its own configuration key or metadata entry for easy toggling and monitoring.

Testing

  • Validate retry mechanisms using mock failures in both internal (Icertis API) and external (3rd-party API) contexts.
  • Use sandbox API endpoints wherever available.

Error Propagation

  • Only raise exceptions after retries are exhausted.
  • When logging, include stack trace and request/response payloads (masking any sensitive data).


5. Summary


Area

Best Practice

Purpose

Internal Failures

IsSuccessful = 0

Enables auto-retry by Icertis

3rd-Party Failures

Exponential retry

Prevents API throttling

Code Placement

Helper methods

Promotes reuse and clarity

Task Setup

Separate per event

Ensures clean responsibility

Multiple Integrations

Chain of responsibility

Maintains sequence and integrity

Logging

Master data-based

Simplifies traceability

  • No labels