From 480285f3e67d64d98f8b0c54a60395cfcafc2c47 Mon Sep 17 00:00:00 2001 From: Hysnije Date: Fri, 15 May 2026 12:05:56 +0200 Subject: [PATCH 1/5] FINERACT-2607: Add missing 'status' enum values for command processing results --- .../service/AuditReadPlatformServiceImpl.java | 2 +- ..._command_processing_status_enum_values.xml | 77 +++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java index 066d2c21ad0..7d0a51d9a3c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java @@ -501,7 +501,7 @@ public ProcessingResultLookup mapRow(final ResultSet rs, @SuppressWarnings("unus } public String schema() { - return " select enum_id as id, enum_message_property as status from r_enum_value where enum_name = 'status' " + return " select enum_id as id, enum_value as status from r_enum_value where enum_name = 'status' " + " order by enum_id"; } } diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml new file mode 100644 index 00000000000..7d24cab6f76 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From e8207034cd01f2f1a9ca4a68e555e8d0e3c8bba2 Mon Sep 17 00:00:00 2001 From: Hysnije Date: Fri, 15 May 2026 12:15:40 +0200 Subject: [PATCH 2/5] FINERACT-2607: Add integration test for command processing status enum values --- .../integrationtests/AuditIntegrationTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java index 234ded54df9..f25d180c009 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java @@ -80,6 +80,22 @@ public void testAuditSearchTemplate() { assertNotNull(auditSearchTemplate); assertEquals(4, auditSearchTemplate.size()); // appUsers, actionNames, entityNames, processingResults assertTrue(((List) auditSearchTemplate.get("actionNames")).size() > 0); + + // verify all command processing status enum values are present and use enum_value (not enum_message_property) + List processingResults = (List) auditSearchTemplate.get("processingResults"); + assertNotNull(processingResults); + assertEquals(6, processingResults.size()); + + List statusValues = processingResults.stream() + .map(r -> (String) r.get("processingResult")) + .collect(java.util.stream.Collectors.toList()); + + assertTrue(statusValues.contains("Invalid")); + assertTrue(statusValues.contains("Processed")); + assertTrue(statusValues.contains("Awaiting Approval")); + assertTrue(statusValues.contains("Rejected")); + assertTrue(statusValues.contains("Under Processing")); + assertTrue(statusValues.contains("Error")); } /** From cebdb21949715dd03e761002d6455116d0aa6401 Mon Sep 17 00:00:00 2001 From: Hysnije Date: Mon, 18 May 2026 10:29:40 +0200 Subject: [PATCH 3/5] FINERACT-2607: Undo migration since the values are already persisted but on a different name --- .../service/AuditReadPlatformServiceImpl.java | 6 +- ..._command_processing_status_enum_values.xml | 77 ------------------- 2 files changed, 3 insertions(+), 80 deletions(-) delete mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml diff --git a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java index 7d0a51d9a3c..3e3fdaf8c21 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/commands/service/AuditReadPlatformServiceImpl.java @@ -107,7 +107,7 @@ public String schema(final boolean includeJson, final String hierarchy) { String partSql = " aud.id as id, aud.action_name as actionName, aud.entity_name as entityName," + " aud.resource_id as resourceId, aud.subresource_id as subresourceId,aud.client_id as clientId, aud.loan_id as loanId," + " mk.username as maker, aud.made_on_date as madeOnDate, aud.made_on_date_utc as madeOnDateUTC, aud.api_get_url as resourceGetUrl, " - + "ck.username as checker, aud.checked_on_date as checkedOnDate, aud.checked_on_date_utc as checkedOnDateUTC, ev.enum_message_property as processingResult " + + "ck.username as checker, aud.checked_on_date as checkedOnDate, aud.checked_on_date_utc as checkedOnDateUTC, ev.enum_value as processingResult " + commandAsJsonString + ", " + " o.name as officeName, gl.level_name as groupLevelName, g.display_name as groupName, c.display_name as clientName, " + " l.account_no as loanAccountNo, s.account_no as savingsAccountNo , aud.client_ip as ip " @@ -116,7 +116,7 @@ public String schema(final boolean includeJson, final String hierarchy) { + " left join m_group g on g.id = aud.group_id" + " left join m_group_level gl on gl.id = g.level_id" + " left join m_client c on c.id = aud.client_id" + " left join m_loan l on l.id = aud.loan_id" + " left join m_savings_account s on s.id = aud.savings_account_id" - + " left join r_enum_value ev on ev.enum_name = 'status' and ev.enum_id = aud.status"; + + " left join r_enum_value ev on ev.enum_name = 'processing_result_enum' and ev.enum_id = aud.status"; // data scoping: head office (hierarchy = ".") can see all audit // entries @@ -501,7 +501,7 @@ public ProcessingResultLookup mapRow(final ResultSet rs, @SuppressWarnings("unus } public String schema() { - return " select enum_id as id, enum_value as status from r_enum_value where enum_name = 'status' " + return " select enum_id as id, enum_value as status from r_enum_value where enum_name = 'processing_result_enum' " + " order by enum_id"; } } diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml deleted file mode 100644 index 7d24cab6f76..00000000000 --- a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_command_processing_status_enum_values.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 2a8dfe6ec54cc255f598eeace3d7eb9f15992eb7 Mon Sep 17 00:00:00 2001 From: Hysnije Date: Mon, 18 May 2026 14:36:43 +0200 Subject: [PATCH 4/5] Add missing values --- .../db/changelog/tenant/changelog-tenant.xml | 1 + ..._missing_processing_result_enum_values.xml | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.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 e3edd8d3824..3f57e46f163 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 @@ -252,4 +252,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml new file mode 100644 index 00000000000..0e4fbda98bd --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + From 3cd17cac4b4a72af37cfcd7f21493cdfe1ff46b8 Mon Sep 17 00:00:00 2001 From: Hysnije Date: Fri, 22 May 2026 10:53:04 +0200 Subject: [PATCH 5/5] Fix pipeline --- .../0234_add_missing_processing_result_enum_values.xml | 4 +++- .../fineract/integrationtests/AuditIntegrationTest.java | 9 ++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml index 0e4fbda98bd..0af71878157 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0234_add_missing_processing_result_enum_values.xml @@ -21,7 +21,8 @@ --> + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.3.xsd"> + @@ -38,4 +39,5 @@ + diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java index f25d180c009..6dfefdbf47e 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AuditIntegrationTest.java @@ -82,12 +82,11 @@ public void testAuditSearchTemplate() { assertTrue(((List) auditSearchTemplate.get("actionNames")).size() > 0); // verify all command processing status enum values are present and use enum_value (not enum_message_property) - List processingResults = (List) auditSearchTemplate.get("processingResults"); - assertNotNull(processingResults); - assertEquals(6, processingResults.size()); + List statuses = (List) auditSearchTemplate.get("statuses"); + assertNotNull(statuses); + assertEquals(6, statuses.size()); - List statusValues = processingResults.stream() - .map(r -> (String) r.get("processingResult")) + List statusValues = statuses.stream().map(r -> (String) r.get("processingResult")) .collect(java.util.stream.Collectors.toList()); assertTrue(statusValues.contains("Invalid"));