Skip to content

Legacy to Inspire

Three of the five cores are migrations; one is a deliberate greenfield; one has not started. Which situation a core is in explains most of why its code looks the way it does.

flowchart LR
    A["Compass 2000<br/>Centura, VB6, T-SQL, COBOL"] --> B["inspire-group<br/>group insurance"]
    C["iCLIPS<br/>VB.NET, ASP.NET WebForms"] --> D["inspire-cl<br/>credit life"]
    E["RPAS<br/>VB6, SQL Server"] --> F["inspire-pension<br/>pension"]
    G["no legacy<br/>greenfield by decision"] --> H["inspire-gi<br/>general insurance"]
Core Legacy system Client Legacy stack Legacy volume
Group Compass 2000 (1996–2009, v5.37) AIA Centura/Gupta UI, VB6 (HSD, renewal), 3,046 T-SQL procs (1.15M lines), 1,287 triggers, 958K lines of Micro Focus COBOL batch, 5 report engines, SQL Server 2000-era, no foreign keys 15,230 files archived, read-only forever
Credit Life iCLIPS — VB.NET / ASP.NET WebForms + SQL Server 1.7 GB of source, .bak dumps and Word specs, shared out-of-band
Pension RPAS Avrist VB6 client, SQL Server (RDPTS_UAAT06), Java 7-era reporting An 862-table database dump plus configuration docs
GI none — — ADR 0003: no legacy migration — no in-force book to bring across

These are standing rules, not aspirations — they are why the new code contains things that look odd until you know the reason.

legacy/ is read-only forever. Nothing in a migration may modify the archive. It is the evidence base; the Compass archive is also sensitive (plaintext credentials and a committed AES key live in it — never copy any of it forward).

Translation-only porting. Ported business rules keep the legacy system’s exact messages, status values, and money precision (DECIMAL(13,5) / DECIMAL(38,5) were bug fixes — naive two-decimal mapping breaks premium reconciliation), and even flagged legacy bugs are carried, marked, on purpose. Behaviour first, tidiness later.

Single generic baseline. Compass was deployed per country with code forks; the migration collapses nine country variants into one configurable system. Variant rules are recorded but not ported.

Schema is regenerated, not redesigned (credit life). inspire-cl’s 113 sql/010-tables/ files are generated from the restored legacy databases by sql/tools/generate-ddl.sh; entities mirror legacy result sets name-for-name. Schema changes belong in sql/migrations/.

The platform absorbs the plumbing. Both migrated cores ride the same platform as everything else — code tables, autonumbering, approvals, queues, the response envelope — so the migration work concentrates on business behaviour.

Spec first, then code, in waves. The group migration runs as a loop (“gauntlet”): every module gets a spec (docs/04-module-specs/, 24 modules, ~22 written) before code, each task gated on dotnet build and npm run build passing. Progress is tracked task by task, not estimated.

Each repo carries a live tracker — read it before believing anything else, including these pages:

Repo Tracker What it records
inspire-gi docs/13-build-tracker.md 157 vertical slices with dependencies and verification; which blocks (product, UW, policy, billing, GL, claims, reinsurance, UI) are closed
inspire-group docs/05-tasks-checklist.md The loop state — spec rows and code rows done against the plan, with the current task number
inspire-cl the code itself The README understates progress; count the controllers and web modules

As this page was written: GI’s core modules are complete and the UI CRUD phase is open; group has finished its specification waves with implementation just beginning; credit life has its domain modules landing; pension has no modern code.

  • Statuses and codes you don’t recognise are probably legacy. Compass’s "DR"→VAL→"AC"→TRM→"TM"→RAC record lifecycle, message codes like E0553 from TMSGTBL, and soft delete via RCDSTS all survive as behaviour to preserve.
  • Two dialects of plumbing coexist in inspire-cl — raw ADO SqlAccess / sp_get wrappers from the legacy side and EF-era services; also dual service namespaces (Inspire.Core.Services plural, Inspire.Core.Service singular). Match the dialect of the file you are editing.
  • GI kept its pre-rebrand names: database nxgi, response-code prefix NXGI-#### (ADR 0007 — renamed to Inspire, kept the codes).
  • Compass’s source-of-truth matrix (inspire-group/docs/00-legacy-overview.md) maps questions to legacy assets: user manuals for screens, per-program PS specs for behaviour, 17 data dictionaries for tables, the message catalog for rules.