Juro Core Banking — System Administration Manual¶
Purpose¶
This manual is for banking system administrators who configure and manage Juro Core Banking through the REST API or the Juro X Web App front end. It covers tenant setup, product configuration, office hierarchy, user and role management, and Close of Business operations.
Platform engineers and DevOps administrators should refer to docs/ADMINISTRATOR_GUIDE.md for deployment and infrastructure operations.
1. Concepts¶
1.1 Multi-tenancy¶
Juro Core Banking supports multiple tenants in a single deployment. Each tenant has:
- a unique tenant ID (e.g.
default) - its own isolated database schema
- its own users, roles, products, offices, and client data
When making API calls, always include the Jurocore-Platform-TenantId header:
Jurocore-Platform-TenantId: default
1.2 Authentication¶
All API calls require authentication via Basic Auth or OAuth2.
Default development credentials (change before any non-local deployment):
- Username:
mifos - Password:
password
Basic Auth header: Authorization: Basic bWlmb3M6cGFzc3dvcmQ=
1.3 Base URL pattern¶
https://<host>:8443/juro-core-provider/api/v1/<resource>
Example:
curl --insecure \
https://localhost:8443/juro-core-provider/api/v1/clients \
--header 'Jurocore-Platform-TenantId: default' \
--header 'Authorization: Basic bWlmb3M6cGFzc3dvcmQ='
1.4 Juro X Web App¶
All system configuration tasks described in this manual can also be performed through the Juro X Web App (_push_jurox) UI. The UI calls the same REST API. For bulk or automated operations, use the API directly.
2. Office Hierarchy¶
Offices represent branches or regional units. All clients, staff, and accounts are attached to an office.
2.1 Creating an office¶
API:
POST /juro-core-provider/api/v1/offices
{
"name": "Head Office",
"openingDate": "01 January 2024",
"locale": "en",
"dateFormat": "dd MMMM yyyy"
}
Juro X Web App:
- Navigate to Organization \u2192 Offices.
- Click New Office.
- Enter the office name, parent office (if a sub-office), and opening date.
- Save.
2.2 Office hierarchy rules¶
- Every deployment must have at least one root office (no parent).
- Sub-offices inherit some settings from their parent.
- Clients, staff, and accounts are assigned to a specific office; queries can be filtered or aggregated by office.
3. Staff and Loan Officers¶
Staff records represent employees who are assigned to offices and linked to clients or groups as loan officers.
3.1 Creating a staff member¶
Juro X Web App:
- Navigate to Organization \u2192 Staff.
- Click New Staff.
- Enter first name, last name, and the office they belong to.
- Mark as Loan Officer if they will be assigned to clients.
- Save.
API:
POST /juro-core-provider/api/v1/staff
{
"officeId": 1,
"firstname": "Jane",
"lastname": "Doe",
"isLoanOfficer": true
}
4. Users and Roles¶
4.1 Roles¶
Roles define what a user can do. Default roles include:
| Role | Access |
|---|---|
| Super User | Full access |
| Admin | Administration and user management |
| Loan Officer | Client and loan management |
| Teller | Cash transactions |
| Read Only | View only |
To create a custom role:
API:
POST /juro-core-provider/api/v1/roles
{
"name": "Reporting Analyst",
"description": "Read-only access plus report execution"
}
After creating the role, assign permissions via:
PUT /juro-core-provider/api/v1/roles/<roleId>/permissions
{
"permissions": {
"READ_CLIENT": true,
"READ_LOAN": true,
"EXECUTE_REPORT": true
}
}
Juro X Web App:
- Navigate to Admin \u2192 User Management \u2192 Roles and Permissions.
- Click New Role, enter a name and description.
- After saving, click Permissions on the role and toggle the required permissions.
4.2 Creating a user¶
API:
POST /juro-core-provider/api/v1/users
{
"username": "jsmith",
"firstname": "John",
"lastname": "Smith",
"email": "jsmith@yourorg.net",
"officeId": 1,
"staffId": 5,
"roles": [2],
"sendPasswordToEmail": true
}
Juro X Web App:
- Navigate to Admin \u2192 User Management.
- Click New User.
- Fill username, name, email, and office.
- Assign one or more roles.
- Optionally link to a staff record.
- Save. A password reset email is sent if email is configured.
4.3 Disabling a user¶
Juro X Web App:
- Open the user record.
- Set status to Inactive.
- Save.
Active sessions for that user will be rejected on the next request.
4.4 Password policy¶
Minimum password length and complexity rules are configurable. Communicate the policy to users on account creation. Administrators can trigger a password reset from the user management panel or API.
5. Loan Products¶
Loan products define the default parameters for all loans of a given type.
5.1 Creating a loan product¶
API:
POST /juro-core-provider/api/v1/loanproducts
{
"name": "Standard Personal Loan",
"shortName": "SPL",
"currencyCode": "USD",
"digitsAfterDecimal": 2,
"inMultiplesOf": 0,
"principal": 5000,
"numberOfRepayments": 12,
"repaymentEvery": 1,
"repaymentFrequencyType": 2,
"interestRatePerPeriod": 1.5,
"interestType": 0,
"interestCalculationPeriodType": 1,
"amortizationType": 1,
"transactionProcessingStrategyCode": "mifos-standard-strategy",
"accountingRule": 1,
"locale": "en"
}
Juro X Web App:
- Navigate to Products \u2192 Loan Products.
- Click New Loan Product.
- Fill the product name, currency, principal range, term, repayment frequency, and interest settings.
- Configure accounting if general ledger integration is required.
- Save.
5.2 Editing a loan product¶
Changes to a loan product affect new loans only. Active loans retain the parameters from when they were created.
5.3 Key loan product fields¶
| Field | Description |
|---|---|
| Currency | ISO currency code |
| Principal (min/default/max) | Allowed and default disbursement amounts |
| Number of repayments | Default repayment schedule length |
| Repayment frequency | Weekly, monthly, etc. |
| Interest rate per period | Rate applied each period |
| Interest type | Flat or declining balance |
| Amortization type | Equal instalments or equal principal |
| Transaction processing strategy | How payments are applied (principal first, interest first, etc.) |
| Accounting rule | None, cash, or accrual |
6. Savings Products¶
Savings products define the parameters for savings and deposit accounts.
6.1 Creating a savings product¶
Juro X Web App:
- Navigate to Products \u2192 Savings Products.
- Click New Savings Product.
- Fill name, currency, nominal annual interest rate, and interest compounding frequency.
- Configure accounting if required.
- Save.
API: POST /juro-core-provider/api/v1/savingsproducts
6.2 Key savings product fields¶
| Field | Description |
|---|---|
| Currency | ISO currency code |
| Nominal annual interest rate | Annual rate |
| Interest compounding period | How often interest compounds |
| Interest posting period | How often interest is credited to accounts |
| Withdrawal fee | Optional flat or percentage fee on withdrawal |
| Minimum balance | Minimum required account balance |
7. Charges¶
Charges are fees applied to loans or savings accounts for events like disbursement, late payment, or early repayment.
7.1 Creating a charge¶
Juro X Web App:
- Navigate to Products \u2192 Charges.
- Click New Charge.
- Select charge applies to (loan or savings).
- Set charge type (flat, percentage of amount, percentage of outstanding).
- Set charge time type (disbursement, specified due date, installment, etc.).
- Enter the amount or percentage.
- Save.
API: POST /juro-core-provider/api/v1/charges
7.2 Associating a charge with a product¶
- Edit the loan or savings product.
- Add the charge in the Charges section.
- Save the product.
Charges added to a product become defaults for new accounts. Individual charges can also be added directly to a loan or savings account.
8. Fund Sources¶
Fund sources identify the funding provider for loans.
Juro X Web App:
- Navigate to Organization \u2192 Funds.
- Click New Fund.
- Enter the fund name.
- Save.
Loan products and individual loans can then be associated with a fund for portfolio tracking and reporting.
9. Currency Configuration¶
Juro X Web App:
- Navigate to Organization \u2192 Currencies.
- Select currencies to make available.
- Save.
Only currencies configured here are available when creating products or accounts.
10. Close of Business (COB) Operations¶
COB is the daily end-of-day processing batch that applies interest, fees, and status changes to all active loans and accounts.
10.1 COB status¶
Check whether COB has run and its status:
GET /juro-core-provider/api/v1/jobs
Look for the Loan COB job entry. Status fields indicate last run time and outcome.
10.2 Manual COB trigger¶
COB normally runs on a schedule. To trigger manually (non-production environments only):
Juro X Web App:
- Navigate to System \u2192 Scheduler Jobs.
- Find Loan COB.
- Click Run Now.
API:
POST /juro-core-provider/api/v1/jobs/execute?jobName=Loan+COB
10.3 COB catch-up¶
If COB missed one or more days, a catch-up run processes all overdue COB dates in sequence. Monitor catch-up progress in the job status API or application logs.
10.4 Partitioned COB (large deployments)¶
For deployments with millions of accounts, enable remote partitioning via ActiveMQ or Kafka. See README.md §Message Brokers and docs/ADMINISTRATOR_GUIDE.md §4.5.
11. Reports¶
11.1 Running a report via the API¶
GET /juro-core-provider/api/v1/reports/<reportName>?tenantIdentifier=default
Or use the Juro X Web App Reports module for a guided interface.
11.2 Key system reports¶
| Report | Use |
|---|---|
| Active Loans Report | All active loans by office and officer |
| Loan Repayment Schedule | Scheduled repayments for a period |
| Portfolio at Risk | Overdue loans by bucket |
| Savings Account Summary | Account balances and product breakdown |
| Collection Sheet | Expected collections for a date |
| GL Account Report | General ledger balance by account |
| Client Report | Client listing for compliance |
| User Activity Report | Admin activity audit |
11.3 Scheduled reports¶
Configure auto-email reports for recurring delivery. See Juro X Web App System \u2192 Scheduler for email report jobs.
12. Audit Trail¶
Juro Core Banking records an audit log of all write operations (creates, updates, state changes).
GET /juro-core-provider/api/v1/audits?limit=50
Filters:
actionName— e.g.CREATE,APPROVE,DISBURSEentityName— e.g.CLIENT,LOANmakerId— user who made the changefromDate/toDate— date range
Use the audit log for compliance reviews, incident investigations, and user activity monitoring.
13. Hooks and External Events¶
Juro Core Banking supports outbound webhooks and message broker events for integrating with external systems.
13.1 Webhooks¶
POST /juro-core-provider/api/v1/hooks
{
"displayName": "Loan Disbursement Notify",
"isActive": true,
"events": [{ "actionName": "DISBURSE", "entityName": "LOAN" }],
"config": {
"Endpoint": "https://your-external-service/webhook",
"Content-Type": "application/json"
}
}
13.2 Message broker events¶
When ActiveMQ or Kafka is configured, Juro Core Banking publishes business events (e.g. ClientCreated, LoanDisbursed) to the configured broker. External consumers subscribe to these topics for real-time integration.
See docs/ADMINISTRATOR_GUIDE.md §4.5 for broker configuration.
14. Document Storage¶
Juro Core Banking supports attaching documents to clients, loans, and other entities. Storage backends:
| Backend | Configuration |
|---|---|
| Filesystem | Default; documents stored in the container filesystem |
| AWS S3 | Configure S3 bucket and credentials via environment variables |
For production, use S3 or a mounted persistent volume; filesystem storage in a container is not durable across restarts.
See DOCUMENT_STORAGE_EXPLORATION.md for detailed storage module documentation.
15. Documentation Map¶
README.md— deployment quick-start and command referencedocs/ADMINISTRATOR_GUIDE.md— platform engineer and DevOps operationsdocs/USER_MANUAL.md— this file; system configuration for banking administratorsJURO_CORE_BANKING_PRODUCTION_FASTTRACK_PLAN.md— production readiness gatesJURO_CORE_BANKING_BLOCKER_BOARD.md— active production blockersPHASE_3_BOOTSTRAP_HARDENING.md— bootstrap hardening referenceDOCUMENT_STORAGE_EXPLORATION.md— file storage module reference