ECSTP
A complex enterprise workflow and integration platform.
ECSTP
Emergency & Continuity Services Tracking Program, migrated from a standalone MS Access application to a full-stack Java EE web platform serving CRA's business continuity operations.
At a glance
Access → Java EE migration · 84 JPA entities · 241 Angular components · 127 Liquibase migrations · 11 BRD states · 3 external integrations · Hibernate Envers audit across 67 entities
ECSTP is CRA's Emergency & Continuity Services Tracking Program. Originally built as a Microsoft Access desktop application with embedded VBA logic, it was migrated to a Java EE web application with an Angular frontend, Spring Boot backend, and Oracle database. The system tracks emergency events across the agency, manages Business Recovery Declarations (BRDs) through an 11-state lifecycle, and integrates with three government infrastructure services (CSI, E502, GCDocs).
By the Numbers
84
JPA Entities
241
Angular Components
~30
REST Controllers
127
Liquibase Migrations
11
BRD States
3
External Integrations
Key Architectural Decisions
T1 — Foundation
Migrated from a Microsoft Access desktop application to a Java EE relational web application — 84 entities, 241 Angular components, Oracle backing store
Line of thinking
Why: The original ECSTP was a standalone MS Access database application with embedded VBA logic, no concurrent multi-user support, and no audit trail. Moving to a Java EE web application with an Oracle database gave us proper concurrency, role-based access control, server-side validation, and the ability to integrate with other government systems (GCDocs, CSI). The migration involved reverse-engineering every Access form and query into JPA entities and Angular components.ESMD Coordinators
Manage BRDs, agreements & projects
CRA Clients
Self-serve status, notifications & info
HTTPS
ECSTP System
Angular 17 SPA
TypeScript + Angular Material + CKEditor 5
241 components
Angular MaterialCKEditor 5@ngx-translate (EN/FR)rccr-corerccr-matCRA design-system
Base href:
/ecstp/REST API / JWT
Spring Boot 2.7 WAR
Java + WildFly + Hibernate
~30 controllers
~30 REST ControllersSpring Data REST (84 entities)Event Engine (21 subtypes)Rules ServicesEmail Generators
SecuritySPNEGO filter → LDAP → JWT
JDBC / JPA
PostgreSQL
60 domain tables + 67 Envers audit mirrors = ~127 tables
Per-developer schema isolation
External Integrations
CSI
LDAP
Employee directory lookup
E502
SOAP / REST
SSC work-order integration
GCDocs
REST API
Government document storage
Single WAR deployed to WildFly — Angular assets bundled into
static/, base href /ecstp/1 / 3
Led the migration of CRA's Emergency & Continuity Services Tracking Program from a standalone MS Access application to a full-stack Java EE platform with 84 JPA entities, 241 Angular components, 127 Liquibase migrations, an 11-state BRD workflow, and Hibernate Envers audit across 67 entities. Integrated with three government systems (CSI, E502, GCDocs) behind circuit breakers, and enforced quality via Jenkins + SonarQube with a mandatory quality gate.