[
https://issues.apache.org/jira/browse/FINERACT-2907?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adam Saghy updated FINERACT-2907:
---------------------------------
Fix Version/s: 1.16.0
> GET /clients/{clientId} does not return clientNonPersonDetails for entity
> clients
> ---------------------------------------------------------------------------------
>
> Key: FINERACT-2907
> URL: https://issues.apache.org/jira/browse/FINERACT-2907
> Project: Apache Fineract
> Issue Type: Bug
> Reporter: chinmaya samantara
> Assignee: chinmaya samantara
> Priority: Minor
> Fix For: 1.16.0
>
>
> For a client with Legal Form = Entity, the legal entity details
> (constitution, main business line, incorporation number, incorporation
> validity date, remarks) are saved, but GET /clients/\{clientId\} never
> returns them. Front ends that edit the client (e.g. the Mifos web app) show
> these fields empty, so a user who saves the edit form can't see the existing
> values.
> Steps to reproduce:
> 1. Create a client with Legal Form = Entity:
> {code}
> POST /fineract-provider/api/v1/clients
> {
> "officeId": 1, "legalFormId": 2, "fullname": "Acme Traders", "active":
> false,
> "submittedOnDate": "01 October 2026", "dateFormat": "dd MMMM yyyy",
> "locale": "en",
> "clientNonPersonDetails": {
> "constitutionId": <a Constitution code value id>,
> "mainBusinessLineId": <a Main Business Line code value id>,
> "incorpNumber": "INC-001", "remarks": "Test entity",
> "incorpValidityTillDate": "31 December 2030",
> "dateFormat": "dd MMMM yyyy", "locale": "en"
> }
> }
> {code}
> 2. GET /fineract-provider/api/v1/clients/\{clientId\}
> Actual result: the response has no clientNonPersonDetails (it is null). The
> row is in the database:
> {code}
> select client_id, constitution_cv_id, main_business_line_cv_id, incorp_no
> from m_client_non_person;
> 1 | 23 | 24 | INC-001
> {code}
> Expected result: the response includes clientNonPersonDetails (constitution,
> mainBusinessLine, incorpNumber, incorpValidityTillDate, remarks), as the
> client data already supports.
> Cause:
> ClientReadPlatformServiceImpl.retrieveOne() builds the response with
> ClientMapper.map(client), and ClientMapper has
> {code}
> @Mapping(target = "clientNonPersonDetails", ignore = true)
> {code}
> (fineract-provider/src/main/java/org/apache/fineract/portfolio/client/mapper/ClientMapper.java).
> Nothing else in retrieveOne() sets the field, so it is always null. The SQL
> row mapper used elsewhere in ClientReadPlatformServiceImpl still builds
> ClientNonPersonData. The single-client path seems to have lost it when
> ClientMapper was added (FINERACT-1760).
> Related symptom (same class): GET
> /groups/\{groupId\}/meetings/template?calendarId=\{id\} fails with 400 "No
> serializer found for class
> org.apache.fineract.portfolio.client.data.ClientNonPersonData and no
> properties discovered to create BeanSerializer (through reference chain:
> MeetingData["clients"]->...->ClientData["clientNonPersonDetails"])". So
> ClientNonPersonData itself can't be serialized at the moment, which may be
> why the mapper ignores it.
> Possible fix: map clientNonPersonDetails from the client's ClientNonPerson in
> ClientMapper (or set it in retrieveOne), and add an integration test that
> creates an entity client and checks the GET response.
> Found on: Fineract develop (7ac7801, local Docker), and the code is unchanged
> on develop f9c2fcd (2026-10-07).
> Reported in the Mifos web app by Victor Romero; web-app ticket:
> https://mifosforge.jira.com/browse/WEB-1298
--
This message was sent by Atlassian Jira
(v8.20.10#820010)