Generating Excel Templates and Importing Bulk Data - Using simple servlet and Apache POI.
Travis
- Before you run the application, you need to have gradle installed and create a file dataimport.properties directly under your home directory. It should have the following 4 parameters:-
mifos.endpoint=https://demo.openmf.org/mifosng-provider/api/v1/
mifos.user.id=mifos
mifos.password=password
mifos.tenant.id=default
-
Use the command "gradle clean tomcatRunWar" to run the application and access it at localhost:8070/DataImportTool.
-
If you are hosting the data import tool in the cloud, you need to ssh into the system to create the dataimport.properties file.
-
If you are hosting both this tool and the backend in the same system, you can change the debug port in gradlew.bat under mifosng-provider to listen in on a different port instead of 8005:- set DEFAULT_JVM_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8006,server=y,suspend=n
-
If you accidentally run out of heap size when running both in the same system, make sure your _JAVA_OPTIONS in Environment variables is set to -Xms512m -Xmx512m -XX:MaxPermSize=512m and it is getting picked up by gradle.
-
Download template.
-
Open the downloaded template.
-
Enter the required data.
-
Upload the entered data.
-
In case of erroneous entries in some rows.
-
See the error report, fix it and re-upload.
After the tool gets up and running, here is a sample workflow :-
- Enter your offices and staff through the UI provided with MifosX.
- Import clients.
- Import groups and meetings.
- Enter your Currency Configuration, Funds, Charges, Loan Product configuration (Administration -> Organisation) and Payment Types (Administration -> System -> View Code ->Add/Edit Code Value) through the UI.
- Import loans along with approval and disbursement information. For quick import of outstanding balances, enter the total amount repaid in this workbook or proceed to next step for maintaining complete repayment history.
- (Optional) Import complete loan repayment history.
- Enter your Savings Product configuration (Administration -> Organisation) through the UI.
- Import savings accounts along with approval and activation information. For quick import of current balances of each savings account, enter the current balance as Minimum Required Opening Balance or proceed to next step to maintain complete transaction history.
- (Optional) Import complete savings transaction history.
-
Default entries to fields in loan and savings import worksheets are set for the first 1000 rows. After that data validation rules still apply, but default filling of fields on selecting the product does not work.
-
The group import sheet format right now has a maximum upper limit of 100 clients per group.
-
Special characters in names (such as office name, client name, staff name, loan product name) will break the naming conventions used in Excel and no data can be entered which refers to these names.
-
In some cases, where the name itself starts with a number or special character, the template cannot be generated and results in a download error.
Changes in MifosX at these endpoints might directly affect the fuctionality of the tool:-
- /offices
- /staff
- /clients
- /loanproducts
- /funds
- /codes/12/codevalues
- /loans
- /loans/{loanId}?command=approve
- /loans/{loanId}?command=disburse
- /loans/{loanId}/transactions?command=repayment
- /savingsproducts
- /savingsaccounts
- /savingsaccounts/{savingsId}?command=approve
- /savingsaccounts/{savingsId}?command=activate
- /savingsaccounts/{savingsId}/transactions?command={withdrawal/deposit}
- /groups
- /groups/{groupId}/calendars
-
Import Class Diagram.
-
Sample Import Sequence Diagram.
-
Populator Class Diagram.
-
Sample Populate Sequence Diagram.
-
Populator DTOs diagram.
- Transaction support for group loans and group savings -> (Blocker) Can't find an endpoint which returns all loan accounts or all loan accounts associated with groups. /loans returns only individual loans.
- Better workbook populator unit tests which will use FormulaEvaluator to evaluate if the data validation formulas and in-cell formulas embedded as Strings are not broken due to shifting of columns.
- Minor improvements to group related features once the release is stable (like sync repayments with meetings).