Legacy System Modernization
Node.js and TypeScript services that give a modern enterprise app secure access to decades of historical data on a legacy Oracle platform. REST and integration layers bridge the two data models without a full migration, with tuned queries, connection pooling, and document retrieval for high volume.
- Node.js
- TypeScript
- Express.js
- Oracle
- Apache Solr
- NATS JetStream
- Docker
- OpenShift
Private project, demo on request
This is client or employer work, so the source code is confidential. I can't share screenshots or credentials publicly, but I'm happy to walk you through it on a call: a live demo, the architecture and selected code.
Architecture
Overview
An enterprise document platform needed its users to reach decades of historical documents that still live in a legacy Oracle system. A full data migration would have been slow and risky, so I built Node.js and TypeScript services that sit between the modern application and the legacy data, and expose it through REST APIs with the same permissions users have in the new system.
System
Modern enterprise application
│ sign-in via ADFS (OAuth 2.0 + PKCE) · permission-aware requests
▼
Node.js / Express integration services (Docker · OpenShift)
├──► Apache Solr document metadata search
├──► Oracle (legacy) authoritative records, previews, BLOB/CLOB content
└──► NATS JetStream events between distributed servicesKey design decisions
Bridge the data models instead of migrating them. The legacy and modern systems describe documents differently. Rather than converting decades of data up front, the integration layer translates between the two models at the API boundary, so the modern app gets a consistent shape and the legacy system keeps working unchanged.
Search in Solr, read the truth from Oracle. Searching document metadata is a full-text, high-volume job, so it goes to Apache Solr. Oracle stays the system of record for document previews and the binary and text content itself (BLOB/CLOB), so what a user opens is always the authoritative version.
Permissions travel with every request. Users sign in through the organisation's ADFS using OAuth 2.0 with PKCE, and every document request is checked against what that user is allowed to see. The legacy archive doesn't become a side door around access control.
Tuned for enterprise volume. Oracle queries, connection pooling, concurrency limits and the document retrieval path were all tuned for many users opening large documents at once.
Backward compatible by default. The services run alongside other distributed services on OpenShift and communicate over NATS JetStream, so changes ship without breaking existing consumers.
Stack
- Services: Node.js, TypeScript, Express
- Data: Oracle (legacy system of record), Apache Solr (search)
- Auth: ADFS, OAuth 2.0 with PKCE
- Messaging: NATS JetStream
- Platform: Docker, OpenShift
Key Implementation Highlights
Built Node.js and TypeScript services giving a modern enterprise app secure access to decades of legacy Oracle data
BackendDesigned REST APIs and integration layers that bridge the legacy and modern data models without a full migration
ArchitectureIntegrated Apache Solr for document metadata search, with Oracle kept authoritative for previews and BLOB/CLOB retrieval
IntegrationImplemented ADFS sign-in with OAuth 2.0 and PKCE, with permission-aware access to every document
SecurityTuned Oracle queries, connection pooling, concurrency and document retrieval for high-volume enterprise use
PerformanceShipped containerised services on Docker and OpenShift, communicating with other services over NATS JetStream
DevOps
Interested in the technical details?
Let's Talk