Skip to content

CBMS — Identified Gaps Quick Reference

Date: 2026-06-10


Architecture Stand — Confirmed

Business logic stays in PostgreSQL. Java = thin JDBC wrapper only. Reason: Oracle→PostgreSQL migration already done, orafce handles compatibility, report customization is bank-specific and must work without code changes.


Gaps

GAP 1 — Package Schemas Not in Flyway

Impact: Fresh deployment breaks at runtime Flyway V7 covers alappaddemo only. Functions inside it call pkgdayend, pkgtrans, pkg_fin_rpt, pkgreports, pkggenreports, pkg_reports_general, pkgschedule, pkg_app_exec, pkg_app_valdate, pkg_gn_pbk — none of these have migration scripts. Action: DBA provides pg_dump --schema-only for each. Dev creates Flyway V8–V17.


GAP 2 — orafce Extension Not Verified

Impact: oracle.nvl() and Oracle built-ins fail on any new server oracle.* calls exist in delivered Java code and inside PL/pgSQL bodies. orafce must be installed before any Flyway migrations run. Action: DBA runs CREATE EXTENSION orafce; on dev, staging, and production.


GAP 3 — No Jasper Reports Integration

Impact: Reports cannot be served through microservices Reports use Jasper templates fed by pkg_fin_rpt / pkgreports functions. No integration point exists in the current microservice setup. Action: Team Lead evaluates Jasper Report Server deployment. Recommended approach — Jasper Report Server REST API called from microservices. Preserves zero-code-change report workflow for bank customizations.


GAP 4 — No Strategy for Heavy Report Queries

Impact: Reports returning 1000s of rows will block JDBC connections Synchronous REST calls for large reports cause timeouts and connection pool exhaustion. Action: Async report generation design needed. Long-running report → background job → result fetched when ready. Connection pool sizing to be reviewed.


GAP 5 — Package Schema Functions Not in BackendBusinessProcess.java

Impact: Day-end, transactions, and reports not callable from Java Current wrappers cover alappaddemo only. pkgdayend, pkgtrans, pkg_fin_rpt functions are not yet mapped to any microservice. Action: After Gap 1 resolved, map package functions to respective services.


GAP 6 — Multi-Bank Report Customization Strategy Undefined

Impact: No clear path for managing per-bank variations as bank count grows Each bank needs custom report formats and calculations. Currently handled at DB level — but no formal strategy for isolating bank-specific customizations. Action: Team Lead defines approach — separate schema per bank, separate DB per bank, or configuration-driven single schema.


GAP 7 — No Test Coverage for Financial Functions

Impact: Any PL/pgSQL change carries regression risk with no safety net 640+ financial functions have no automated tests. Interest calculations, day-end procedures, GL postings — any modification is unverified. Action: Define minimum test plan for critical functions before production.


Priority Order

Priority Gap Owner Blocker?
1 GAP 2 — orafce verification DBA Yes — must be done first
2 GAP 1 — Package schema dumps DBA Yes — needed before GAP 5
3 GAP 3 — Jasper integration design Team Lead Yes — reports won't work
4 GAP 4 — Heavy query strategy Team Lead + Java Dev Yes — performance risk
5 GAP 5 — BackendBusinessProcess for pkg schemas Java Dev After GAP 1
6 GAP 6 — Multi-bank strategy Team Lead + Manager Planning level
7 GAP 7 — Test coverage plan Team Lead Risk management

Full details: docs/Architecture_Decision_DB_Functions_vs_Java.md CBMS Project · 2026-06-10