You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Foo Developer (Jira)" <ji...@apache.org> on 2026/07/24 13:03:00 UTC

[jira] [Created] (FINERACT-2703) Client creation incorrectly requires/rejects "Datatables" field regardless of whether a datatable check applies to the client's legal form.

Foo Developer created FINERACT-2703:
---------------------------------------

             Summary: Client creation incorrectly requires/rejects "Datatables" field regardless of whether a datatable check applies to the client's legal form.
                 Key: FINERACT-2703
                 URL: https://issues.apache.org/jira/browse/FINERACT-2703
             Project: Apache Fineract
          Issue Type: Bug
          Components: Client
            Reporter: Foo Developer


When "Entity Datatable Checks" are configured for client creation restricted to a specific legal-form sub-type (Person or Entity), client creation fails for the other sub-type with the error "Datatable cannot be empty", even though no datatable check actually applies to that sub-type.
h3. Steps to Reproduce
 # Configure a Datatable linked to the Client entity, with Entity Sub-Type = Person.
 # Under Entity Data Table Checks, mark it as required at client creation (status = CREATE).
 # Attempt to create a client with Legal Form = Entity (non-person).

h3. Expected Behavior

The client should be created successfully — the Person-scoped datatable check should not apply to an Entity client.
h3. Actual Behavior

Client creation fails with a validation error requiring a non-empty datatables array, because:
 # {{ClientDataValidator.validateForCreate(...)}} unconditionally requires the {{datatables}} JSON array to be non-empty whenever the {{datatables}} parameter is present in the request — it doesn't check whether any datatable check is actually configured/required for the submitted legal form.
 # Separately, {{EntityDatatableChecksWritePlatformServiceImpl}} looks up required datatables via {{{}entityDatatableChecksRepository.findByEntityAndStatusAndSubtype(entityName, status, entitySubtype.toUpperCase()){}}}, but the stored subtype value is not uppercase (e.g. {{{}"Person"{}}}, {{{}"Entity"{}}}), so this lookup can silently return nothing when it shouldn't.

h3. Suggested Fix
 * Remove the erroneous {{.toUpperCase()}} call so the subtype lookup matches the stored value.
 * In {{{}ClientDataValidator{}}}, only enforce the non-empty datatables array requirement when at least one {{EntityDatatableChecks}} record is actually configured (globally or for the client's specific legal-form subtype) for {{{}CLIENT{}}}/{{{}CREATE{}}}.

h3. Affected Files
 * {{fineract-provider/src/main/java/org/apache/fineract/portfolio/client/data/ClientDataValidator.java}}
 * {{fineract-provider/src/main/java/org/apache/fineract/infrastructure/dataqueries/service/EntityDatatableChecksWritePlatformServiceImpl.java}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)