Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CBS Nexora — Backend Schema & API Changes
Files in this directory
| File | Purpose |
|---|---|
V1__client_schema_extensions.sql |
DB migration — run on Fineract MySQL/MariaDB |
ClientEntityKyc.java |
JPA Entity for m_client_entity_kyc table |
ClientAddressIndia.java |
JPA Entity for m_client_address_india table |
ClientEntityKycRepository.java |
Spring Data repository |
ClientAddressIndiaRepository.java |
Spring Data repository |
ClientEntityKycApiResource.java |
REST controller — /clients/{id}/entity-kyc |
ClientAddressIndiaApiResource.java |
REST controller — /clients/{id}/india-address |
How to apply
Step 1: Run SQL Migration
mysql -u root -p fineract_tenantdb < V1__client_schema_extensions.sql
Step 2: Copy Java files to Fineract source
ClientEntityKyc.java → fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/
ClientAddressIndia.java → fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/
ClientEntityKycRepository.java → fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/
ClientAddressIndiaRepository.java → fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/
ClientEntityKycApiResource.java → fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/
ClientAddressIndiaApiResource.java → fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/
Step 3: Update existing Fineract Client API
In ClientApiResource.java, the POST /clients endpoint needs to accept these additional fields in the request body:
nationality,annualTurnover,creditLimitisMinor,ageYears,ageMonths,ageDaysguardianName,guardianRelation,guardianMobile,guardianIdNumber,guardianAddress
In ClientWritePlatformServiceJpaRepositoryImpl.java, map these fields to the m_client entity during create/update.
Step 4: Register new API resources
Add to fineract-provider/src/main/java/org/apache/fineract/infrastructure/core/config/FineractWebMvcConfigurer.java or equivalent Spring config.
Step 5: Rebuild Fineract
./gradlew bootRun
API Reference
Entity KYC
| Method | Endpoint | Description |
|---|---|---|
| POST | /clients/{clientId}/entity-kyc |
Create/update entity KYC + MSME |
| GET | /clients/{clientId}/entity-kyc |
Retrieve entity KYC |
| DELETE | /clients/{clientId}/entity-kyc |
Delete entity KYC |
India Address
| Method | Endpoint | Description |
|---|---|---|
| POST | /clients/{clientId}/india-address |
Save all 4 address types |
| GET | /clients/{clientId}/india-address |
Get all addresses |
| GET | /clients/{clientId}/india-address/{type} |
Get specific type (PERMANENT/CURRENT/OFFICE/CORRESPONDENCE) |
| PUT | /clients/{clientId}/india-address/{type} |
Update specific type |
| DELETE | /clients/{clientId}/india-address |
Delete all addresses |
Tables Summary
| Table | New/Modified | Records |
|---|---|---|
m_client |
Modified — 12 new columns | Guardian, nationality, minor, turnover |
m_client_non_person |
Modified — 13 new columns | MSME, CIN, enterprise PAN, signatory |
m_client_kyc |
Modified — 19 new columns | AML, freeze, form60/61, form15G/H, KYC doc |
m_client_entity_kyc |
New | Entity-specific KYC, MSME, signatory, auth doc |
m_client_address_india |
New | 4-type India address with PIN lookup fields |
m_code_value |
Modified | Added Gender: Transgender, Other |