# fitercx/fineract architecture

> Architecture diagram of the GitHub repository fitercx/fineract, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fitercx/fineract
- Repository: https://github.com/fitercx/fineract

## Overview

Fineract is an open-API core banking platform. Its principal user workflow is a financial institution submitting banking operations and queries through the application, with results returned from domain services and persisted in a tenant database. The tree also shows CredibleX extensions for loan operations, accounting, scheduled jobs, settlements, and external integrations. The README establishes the API and core-banking role; sampled sources confirm selected search and database-dispatch behavior, but do not expose enough wiring to map every banking operation end to end.

Main entry points: [`fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java`](https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java) (Banking API), [`custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/service/OdooJournalEntryService.java`](https://github.com/fitercx/fineract/blob/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/service/OdooJournalEntryService.java) (Odoo journal sync), [`fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java`](https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java) (Database dispatch), [`fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java`](https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java) (MySQL queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Platform services"]
  node_api["Banking API"]
  node_security["Tenant authentication"]
  node_search["Search service"]
  node_database_dispatch["Database dispatch"]
  node_mysql["MySQL queries"]
  node_postgres["PostgreSQL queries"]
end

subgraph group_banking["Banking operations"]
  node_loan_ops["Loan operations"]
  node_loan_schedule["Loan schedule"]
  node_loan_cob["Loan COB selection"]
  node_investor_search["Investor search"]
end

subgraph group_custom["CredibleX extensions"]
  node_accounting["Custom accounting"]
  node_account_mapping["GL account mapping"]
  node_commands["Commands and webhooks"]
end

subgraph group_integration["External integrations"]
  node_settlements["Settlements reports"]
  node_s3["Report storage"]
  node_odoo["Odoo integration"]
  node_odoo_service["Odoo journal sync"]
end

node_institution(("Institution user"))
node_tenant_db[("Tenant database")]
node_odoo_system["Odoo system"]
node_slack["Slack notifications"]

node_institution -->|"submits requests"| node_api
node_api -->|"authenticates tenant"| node_security
node_api -->|"routes queries"| node_search
node_search -->|"reads data"| node_tenant_db
node_database_dispatch -->|"delegates when supported"| node_mysql
node_database_dispatch -->|"delegates when supported"| node_postgres
node_mysql -->|"queries metadata"| node_tenant_db
node_postgres -->|"queries metadata"| node_tenant_db
node_settlements -->|"stores report"| node_s3
node_odoo -->|"syncs entries"| node_odoo_service
node_odoo_service -.->|"sends entries"| node_odoo_system
node_odoo_service -.->|"notifies failures"| node_slack

click node_api "https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java"
click node_security "https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsService.java"
click node_search "https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java"
click node_database_dispatch "https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java"
click node_mysql "https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java"
click node_postgres "https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java"
click node_loan_ops "https://github.com/fitercx/fineract/tree/develop/custom/crediblex/portfolio/loanaccount"
click node_loan_schedule "https://github.com/fitercx/fineract/blob/develop/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserService.java"
click node_loan_cob "https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/cob/loan/RetrieveLoanIdService.java"
click node_investor_search "https://github.com/fitercx/fineract/blob/develop/fineract-investor/src/main/java/org/apache/fineract/investor/service/search/ExternalAssetOwnerSearchService.java"
click node_accounting "https://github.com/fitercx/fineract/tree/develop/custom/crediblex/accounting/journalentry/src/main/java/com/crediblex/fineract/accounting/journalentry/service"
click node_account_mapping "https://github.com/fitercx/fineract/blob/develop/custom/crediblex/accounting/productaccountmapping/src/main/java/com.crediblex.fineract.accounting.productaccountmapping/service/CustomProductToGLAccountMappingWritePlatformServiceImpl.java"
click node_commands "https://github.com/fitercx/fineract/tree/develop/custom/crediblex/infrastructure/commands/src/main/java/com/crediblex/fineract/commands"
click node_settlements "https://github.com/fitercx/fineract/tree/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/settlements"
click node_s3 "https://github.com/fitercx/fineract/blob/develop/custom/crediblex/infrastructure/s3/src/main/java/com/crediblex/fineract/infrastructure/s3/service/SettlementsReportS3StorageService.java"
click node_odoo "https://github.com/fitercx/fineract/tree/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo"
click node_odoo_service "https://github.com/fitercx/fineract/blob/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/service/OdooJournalEntryService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api,node_security,node_search,node_database_dispatch,node_mysql,node_postgres,node_institution toneBlue
class node_loan_ops,node_loan_schedule,node_loan_cob,node_investor_search,node_tenant_db toneAmber
class node_accounting,node_account_mapping,node_commands toneMint
class node_settlements,node_s3,node_odoo,node_odoo_service toneRose
class node_odoo_system,node_slack toneIndigo
```

## Components

### Platform services

- [Banking API](https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java): `fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java`
- [Tenant authentication](https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsService.java): `fineract-provider/src/main/java/org/apache/fineract/infrastructure/security/service/BasicAuthTenantDetailsService.java`
- [Search service](https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java): `fineract-provider/src/main/java/org/apache/fineract/portfolio/search/service/SearchReadPlatformService.java`
- [Database dispatch](https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java): `fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/DatabaseIndependentQueryService.java`
- [MySQL queries](https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java): `fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/MySQLQueryService.java`
- [PostgreSQL queries](https://github.com/fitercx/fineract/blob/develop/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java): `fineract-core/src/main/java/org/apache/fineract/infrastructure/core/service/database/PostgreSQLQueryService.java`

### Banking operations

- [Loan operations](https://github.com/fitercx/fineract/tree/develop/custom/crediblex/portfolio/loanaccount): `custom/crediblex/portfolio/loanaccount`
- [Loan schedule](https://github.com/fitercx/fineract/blob/develop/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserService.java): `fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ProgressiveLoanInterestScheduleModelParserService.java`
- [Loan COB selection](https://github.com/fitercx/fineract/blob/develop/fineract-provider/src/main/java/org/apache/fineract/cob/loan/RetrieveLoanIdService.java): `fineract-provider/src/main/java/org/apache/fineract/cob/loan/RetrieveLoanIdService.java`
- [Investor search](https://github.com/fitercx/fineract/blob/develop/fineract-investor/src/main/java/org/apache/fineract/investor/service/search/ExternalAssetOwnerSearchService.java): `fineract-investor/src/main/java/org/apache/fineract/investor/service/search/ExternalAssetOwnerSearchService.java`

### CredibleX extensions

- [Custom accounting](https://github.com/fitercx/fineract/tree/develop/custom/crediblex/accounting/journalentry/src/main/java/com/crediblex/fineract/accounting/journalentry/service): `custom/crediblex/accounting/journalentry/src/main/java/com/crediblex/fineract/accounting/journalentry/service`
- [GL account mapping](https://github.com/fitercx/fineract/blob/develop/custom/crediblex/accounting/productaccountmapping/src/main/java/com.crediblex.fineract.accounting.productaccountmapping/service/CustomProductToGLAccountMappingWritePlatformServiceImpl.java): `custom/crediblex/accounting/productaccountmapping/src/main/java/com.crediblex.fineract.accounting.productaccountmapping/service/CustomProductToGLAccountMappingWritePlatformServiceImpl.java`
- [Commands and webhooks](https://github.com/fitercx/fineract/tree/develop/custom/crediblex/infrastructure/commands/src/main/java/com/crediblex/fineract/commands): `custom/crediblex/infrastructure/commands/src/main/java/com/crediblex/fineract/commands`

### External integrations

- [Settlements reports](https://github.com/fitercx/fineract/tree/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/settlements): `custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/settlements`
- [Report storage](https://github.com/fitercx/fineract/blob/develop/custom/crediblex/infrastructure/s3/src/main/java/com/crediblex/fineract/infrastructure/s3/service/SettlementsReportS3StorageService.java): `custom/crediblex/infrastructure/s3/src/main/java/com/crediblex/fineract/infrastructure/s3/service/SettlementsReportS3StorageService.java`
- [Odoo integration](https://github.com/fitercx/fineract/tree/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo): `custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo`
- [Odoo journal sync](https://github.com/fitercx/fineract/blob/develop/custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/service/OdooJournalEntryService.java): `custom/crediblex/integration/odoo/src/main/java/com/crediblex/fineract/integration/odoo/service/OdooJournalEntryService.java`

### Other components

- **Institution user**
- **Tenant database**
- **Odoo system**
- **Slack notifications**

## Connections

- Institution user → Banking API: submits requests
- Banking API → Tenant authentication: authenticates tenant
- Banking API → Search service: routes queries
- Search service → Tenant database: reads data
- Database dispatch → MySQL queries: delegates when supported
- Database dispatch → PostgreSQL queries: delegates when supported
- MySQL queries → Tenant database: queries metadata
- PostgreSQL queries → Tenant database: queries metadata
- Settlements reports → Report storage: stores report
- Odoo integration → Odoo journal sync: syncs entries
- Odoo journal sync → Odoo system: sends entries
- Odoo journal sync → Slack notifications: notifies failures
