Repository navigation
Migrate PayGuard to PostgreSQL and integrate Vault - #35
Merged
Merged
Conversation
Use PostgreSQL with the jOOQ Open Source Edition to avoid requiring a commercial license for Oracle dialect support. Keep service databases and runtime/migration privileges isolated. Add vendor-specific Flyway schemas, Vault AppRole and scoped application secrets, dynamic credential pool replacement, and OTP concurrency checks. Preserve historical Oracle scripts and document cutover, key rotation, local verification and remaining limitations. Include only migration work; the separately owned Identity foundation remains a dependency.
Amir-Golmoradi
marked this pull request as ready for review
October 11, 2026 22:57
This was
linked to
issues
Oct 12, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
PayGuard's planned jOOQ development should not require a paid database-dialect license. Oracle support is provided by commercial jOOQ editions, with Professional covering full Oracle support; PostgreSQL is supported by the jOOQ Open Source Edition. This migration lets PayGuard keep explicit SQL where jOOQ is appropriate without buying a commercial jOOQ license. See the official jOOQ editions and dialect matrix.
Vault addresses a separate requirement: database passwords and application secrets need scoped access, explicit rotation and failure handling rather than static runtime credentials or a known development pepper.
Changes
Ownership and integration dependency
This commit contains only migration work. It intentionally excludes the owner's 32-file Identity domain work in PR #33, unrelated shared/Wallet nullness edits, local Git-hook/event-schema changes, and the old OTP module retirement/root module switch. The original working tree and index were preserved.
This is an integration-dependent draft. PR #33 and the remaining separately owned Identity application/port/bootstrap integration must be applied before this branch can represent the complete migrated application. The old OTP module remains selected in the migration-only parent POM because switching it was excluded owner work. Its remaining Oracle references are not presented as migrated runtime behavior. The new database/security CI job expects the Identity module to be registered by that integration.
Validation
Evidence from the complete local implementation checkout, including the separately owned Identity foundations:
verifystill exited 1 on six existing Identity typed-ID PMD naming findings; checks were not disabled.These results are not claims that this migration-only commit builds independently. On the exact isolated publication checkout, Maven
validatepassed. The unmodified pre-push hook then ran the localquality-checkworkflow successfully: Spotless, Checkstyle, PMD, SpotBugs and reactor tests all passed. Its registered reactor still contains the old OTP module; it does not run the excluded/new Identity module or the new database/security workflow. Complete Identity runtime verification remains dependent on the excluded integration. No remote CI pass is claimed.Remaining limits
Live Oracle data and approved historical identifier mappings were unavailable. Wallet lacks a SQL schema/adapter/code-generation setup; Loan/Collateral lack concrete repository adapters. No platform-wide persisted financial concurrency, production readiness, HA/auto-unseal, deployment or destructive data cutover is claimed. Durable audit/event/delivery recovery, authenticator enrollment and production operations remain separate work.
See the implementation guide, ADRs and follow-up drafts for exact commands, evidence and boundaries.
The original publication's local pre-push reactor reported 25 tests: 24 executed, 1 skipped, 0 failures and 0 errors. The skipped test belongs to the unchanged legacy Oracle integration path; it does not replace the separately reported real PostgreSQL/Vault verification.