Business Rules Engine

Project Resources

Mentor 
Contributor 
StatusSEEKING A VOLUNTEER OR PARTNER TO DEVELOP

Project Status

Currently listed as an idea for Google Summer of Code 2014 - building out use cases and seeking an intern.

Background and Need

As financial inclusion providers grow more sophisticated and face more regulations, they need better control and automation of these business rules within their system. Implementation of a business rules engine within Mifos X would allow the system admin (usually an MFI manager) to easily set up and configure these business rules without having to edit the source code itself, so a solution that allows a non-technical user to easily set up and change rules would be ideal. Most users access Mifos X from the Community App UI, so we should consider this UI as the primary use case and surface business rules there.

Based on the conditions defined in these rules, the system will automatically restrict or allow permissions, trigger certain workflows, generate alerts, etc. 

Description

A business rule system enables these financial institutions policies and other operational decisions to be defined, tested, executed. Rule engines typically support rules, facts, priority (score), mutual exclusion, preconditions, and other functions.

This module will enable MFI admin to add, remove or modify the business rule against pre-defined workflows in the application.

Business Rules may be applied to the following entities:

S.No.

Entity

Description

Priority

a)       

Clients

Rules to be applied when creating/updating clients

High

b)       

Groups

Rules to be applied when creating/updating a group or adding/closing members in a group

High

c)        

Loan Accounts

Rules to be applied when creating, approving and disbursing loans

High

d)       

Staff

Rules to be applied when Clients/Accounts are approved by Staff

High

e)       

Loan Officers

Rules to be applied when

-          Clients/Groups/Centers are assigned to a LO

-          Clients are added to Groups

-          Groups are added to Centers

High

f)        

Savings Accounts

Rules to be applied when opening or making transactions on Savings accounts

Medium

g)       

Accounts

Rules to be applied when opening a new account or doing transactions on accounts. The rules may operate across different types of accounts (Loans, savings etc.)

Medium

h)       

Branches

Rules to be applied when adding a new member or new loan account to a branch

Low

 

Examples

  • Insurance company does not provider insurance to any person above 65 age. In that case in the MIS if users tries to attach a insurance feed to a client's loan account whose age is more than 65 years then "business rule engine" should prevent that action with appropriate message.

Specific examples for each of the Entities listed above

  • Clients

Clients must be between 18 and 70

  • Groups

An active group must have at least 4 members and cannot have more than 20 members

A group’s (Self Help Group) total outstanding should not exceed 90% of the sum of their total deposits and total interest collected till date

  • Loan Accounts Specific

Home Loans (a Loan Product) cannot be the first loan taken by any client. (i.e. a client has to take another loan product and prove their repayment capability before taking a home loan

Only Clients with age between 25 and 55 may take a home loan product

Setting Loan amount limits based on data tables - for example different affordabiity limits for Married and Employed types (Married Employed people can take 40% of their Income - where marital status, employment status and income are captured as attributes in data tables)

Limit loan amounts by loan purpose - for example,

      • for tailoring shop, max 10,000
      • for small shop, max 15,000
  • Staff

A branch manager is allowed to approve loans upto 30,000. Loans beyond this amount must be approved by an Operations Manager from Head Office

  • Loan Officers

One loan officer should not handle more than 200 clients in a day and not handle more than 50,000 in collections in a day

  • Savings Accounts Specific

An active client must save at least 25 per week or 100 per month for six months, before allowing withdrawals

If the savings account holder is a guarantor for any loan, then withdrawals should not be allowed if balance falls below 80% of the outstanding loan amount

  • Accounts

A client can take a loan with amount upto 20 times the last 6 month’s average monthly closing balance of their savings account(s)

In Savings accounts – a client must maintain a minimum balance of at least 2 installments of their weekly dues on loans

  • Groups/Branches

New loans of Products X, Y and Z, are not allowed for branches which have more than 10% overdues

A branch should not have more than 50% members belonging to the same community

See Also