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