Skip to content

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:

  1. Navigate to Organization \u2192 Offices.
  2. Click New Office.
  3. Enter the office name, parent office (if a sub-office), and opening date.
  4. 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:

  1. Navigate to Organization \u2192 Staff.
  2. Click New Staff.
  3. Enter first name, last name, and the office they belong to.
  4. Mark as Loan Officer if they will be assigned to clients.
  5. 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:

  1. Navigate to Admin \u2192 User Management \u2192 Roles and Permissions.
  2. Click New Role, enter a name and description.
  3. 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:

  1. Navigate to Admin \u2192 User Management.
  2. Click New User.
  3. Fill username, name, email, and office.
  4. Assign one or more roles.
  5. Optionally link to a staff record.
  6. Save. A password reset email is sent if email is configured.

4.3 Disabling a user

Juro X Web App:

  1. Open the user record.
  2. Set status to Inactive.
  3. 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:

  1. Navigate to Products \u2192 Loan Products.
  2. Click New Loan Product.
  3. Fill the product name, currency, principal range, term, repayment frequency, and interest settings.
  4. Configure accounting if general ledger integration is required.
  5. 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:

  1. Navigate to Products \u2192 Savings Products.
  2. Click New Savings Product.
  3. Fill name, currency, nominal annual interest rate, and interest compounding frequency.
  4. Configure accounting if required.
  5. 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:

  1. Navigate to Products \u2192 Charges.
  2. Click New Charge.
  3. Select charge applies to (loan or savings).
  4. Set charge type (flat, percentage of amount, percentage of outstanding).
  5. Set charge time type (disbursement, specified due date, installment, etc.).
  6. Enter the amount or percentage.
  7. Save.

API: POST /juro-core-provider/api/v1/charges

7.2 Associating a charge with a product

  1. Edit the loan or savings product.
  2. Add the charge in the Charges section.
  3. 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:

  1. Navigate to Organization \u2192 Funds.
  2. Click New Fund.
  3. Enter the fund name.
  4. 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:

  1. Navigate to Organization \u2192 Currencies.
  2. Select currencies to make available.
  3. 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:

  1. Navigate to System \u2192 Scheduler Jobs.
  2. Find Loan COB.
  3. 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, DISBURSE
  • entityName — e.g. CLIENT, LOAN
  • makerId — user who made the change
  • fromDate / 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 reference
  • docs/ADMINISTRATOR_GUIDE.md — platform engineer and DevOps operations
  • docs/USER_MANUAL.md — this file; system configuration for banking administrators
  • JURO_CORE_BANKING_PRODUCTION_FASTTRACK_PLAN.md — production readiness gates
  • JURO_CORE_BANKING_BLOCKER_BOARD.md — active production blockers
  • PHASE_3_BOOTSTRAP_HARDENING.md — bootstrap hardening reference
  • DOCUMENT_STORAGE_EXPLORATION.md — file storage module reference