From 0e076889e9679e28faa953d18e834aebaea8fa4c Mon Sep 17 00:00:00 2001 From: Jaanu423 Date: Thu, 9 Jul 2026 13:35:41 +0530 Subject: [PATCH] feat(db): idempotent catch-up migrations for UAT schema gaps (0358-0367) Add 10 Liquibase catch-up changeSets covering m_client, m_client_kyc, m_family_members, m_client_nominee, m_client_msme, m_rbi_feed_item, m_savings_product, m_current_product, m_clerk_withdrawal_request, m_daily_token_counter, and misc column additions (0207-0348 range). All changeSets use preConditions (tableExists/columnExists) so they MARK_RAN if already applied. Fixes PostgreSQL startup crash in 0360 by replacing MySQL-specific INFORMATION_SCHEMA sqlCheck with Liquibase- native foreignKeyConstraintExists. Co-Authored-By: Claude Sonnet 4.6 --- .../db/changelog/tenant/changelog-tenant.xml | 9 + .../parts/0358_catchup_m_client_columns.xml | 141 ++++++++ .../0359_catchup_m_client_kyc_columns.xml | 299 ++++++++++++++++ .../0360_catchup_family_members_nominee.xml | 154 ++++++++ .../parts/0361_catchup_misc_columns.xml | 144 ++++++++ .../tenant/parts/0362_catchup_rbi_feed.xml | 61 ++++ .../0363_catchup_savings_product_enhanced.xml | 308 ++++++++++++++++ .../0364_catchup_current_product_tables.xml | 337 ++++++++++++++++++ .../0366_catchup_clerk_withdrawal_token.xml | 155 ++++++++ .../parts/0367_catchup_missing_tables.xml | 150 ++++++++ 10 files changed, 1758 insertions(+) create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0358_catchup_m_client_columns.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0359_catchup_m_client_kyc_columns.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0360_catchup_family_members_nominee.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0361_catchup_misc_columns.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0362_catchup_rbi_feed.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0363_catchup_savings_product_enhanced.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0364_catchup_current_product_tables.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0366_catchup_clerk_withdrawal_token.xml create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0367_catchup_missing_tables.xml diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml index 9e5e9231d..6d8925647 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml @@ -385,4 +385,13 @@ + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0358_catchup_m_client_columns.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0358_catchup_m_client_columns.xml new file mode 100644 index 000000000..7925317f4 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0358_catchup_m_client_columns.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0359_catchup_m_client_kyc_columns.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0359_catchup_m_client_kyc_columns.xml new file mode 100644 index 000000000..315c82976 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0359_catchup_m_client_kyc_columns.xml @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0360_catchup_family_members_nominee.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0360_catchup_family_members_nominee.xml new file mode 100644 index 000000000..1f6647065 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0360_catchup_family_members_nominee.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0361_catchup_misc_columns.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0361_catchup_misc_columns.xml new file mode 100644 index 000000000..91a108db7 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0361_catchup_misc_columns.xml @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT COUNT(*) FROM m_code WHERE code_name = 'PeriodFrequency' + + + + INSERT INTO m_code (code_name, is_system_defined) + SELECT 'PeriodFrequency', true + WHERE NOT EXISTS (SELECT 1 FROM m_code WHERE code_name = 'PeriodFrequency'); + + + + + + + SELECT COUNT(*) FROM m_code_value cv + JOIN m_code c ON c.id = cv.code_id + WHERE c.code_name = 'PeriodFrequency' + + + + INSERT INTO m_code_value (code_id, code_value, order_position) + SELECT c.id, 'Monthly', 1 FROM m_code c WHERE c.code_name = 'PeriodFrequency' + AND NOT EXISTS (SELECT 1 FROM m_code_value cv2 JOIN m_code c2 ON c2.id = cv2.code_id WHERE c2.code_name = 'PeriodFrequency' AND cv2.code_value = 'Monthly'); + + INSERT INTO m_code_value (code_id, code_value, order_position) + SELECT c.id, 'Quarterly', 2 FROM m_code c WHERE c.code_name = 'PeriodFrequency' + AND NOT EXISTS (SELECT 1 FROM m_code_value cv2 JOIN m_code c2 ON c2.id = cv2.code_id WHERE c2.code_name = 'PeriodFrequency' AND cv2.code_value = 'Quarterly'); + + INSERT INTO m_code_value (code_id, code_value, order_position) + SELECT c.id, 'Half Yearly', 3 FROM m_code c WHERE c.code_name = 'PeriodFrequency' + AND NOT EXISTS (SELECT 1 FROM m_code_value cv2 JOIN m_code c2 ON c2.id = cv2.code_id WHERE c2.code_name = 'PeriodFrequency' AND cv2.code_value = 'Half Yearly'); + + INSERT INTO m_code_value (code_id, code_value, order_position) + SELECT c.id, 'Yearly', 4 FROM m_code c WHERE c.code_name = 'PeriodFrequency' + AND NOT EXISTS (SELECT 1 FROM m_code_value cv2 JOIN m_code c2 ON c2.id = cv2.code_id WHERE c2.code_name = 'PeriodFrequency' AND cv2.code_value = 'Yearly'); + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0362_catchup_rbi_feed.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0362_catchup_rbi_feed.xml new file mode 100644 index 000000000..d50bfe653 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0362_catchup_rbi_feed.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0363_catchup_savings_product_enhanced.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0363_catchup_savings_product_enhanced.xml new file mode 100644 index 000000000..e7861bb13 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0363_catchup_savings_product_enhanced.xml @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0364_catchup_current_product_tables.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0364_catchup_current_product_tables.xml new file mode 100644 index 000000000..810e27a9a --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0364_catchup_current_product_tables.xml @@ -0,0 +1,337 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0366_catchup_clerk_withdrawal_token.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0366_catchup_clerk_withdrawal_token.xml new file mode 100644 index 000000000..f9f5d23dd --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0366_catchup_clerk_withdrawal_token.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0367_catchup_missing_tables.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0367_catchup_missing_tables.xml new file mode 100644 index 000000000..49277ca68 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0367_catchup_missing_tables.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +