FOR CURRENT MIFOS X INFORMATION, VISIT THE MIFOS X DEVELOPER ZONE Welcome to the Zone
|Table of Contents
This is for new Mifos developers. If you have experience with computer science, Java/J2EE Web applications, testing, databases, etc. but are learning Mifos for the first time, this guide is for you!
This is not a detailed, comprehensive guide. Instead, it is made to point out key concepts and areas of Mifos, leading you to further study. Think of it as an index into the most important parts of Mifos.
Core functionalities aligned with domain
loans, savings, clients
see Product Features for overview of loans, savings and client functionality
Mifos has legacy transaction manager org.mifos.framework.hibernate.helper.HibernateUtil, and some new code which uses spring based declarative transactions manager /mifos-appdomain/src/main/resources/org/mifos/config/resources/persistenceContext.xml.
org.mifos.framework.components.audit.business.AuditLogRecord (mapped to change_log_detail table)
Legacy code in Mifos uses a custom security mechanism based on RolesAndPermissions* classes. Handling of security is being transitioned to Spring Security which has been configured to run on top of the legacy security system. Spring security configuration can be found in application/src/main/webapp/WEB-INF/applicationContextSecurity.xml.
Legacy code in Mifos make use of LookupEntity, LookupValueEntity, LookupValueLocaleEntity, and LookupLabelEntity. Together these objects were supposed to fill multiple purposes including supporting static lists of localizable values, user definable lists of localizable values, user customizable labels.
More detail can be found on the LookupValueBackground page.
Mifos has many configuration settings. See mifos.org for the authoritative guide.
Some configuration settings may only be changed once! These settings must be carefully considered before entering data into a new Mifos installation.
LSIM, GLIM, locales in the db
current refactorings in progress
Presentation layer code is being migrated from Struts 1.x/JSP to SpringMVC/Webflow/Freemarker. The goal is to remove all Struts/JSP code and replace it with SpringMVC/Webflow/Freemarker. As such any new functionality added should be implemented as SpringMVC/Webflow/Freemarker.
Legacy Mifos code has business logic scattered through the code all the way up to the presentation layer including action classes and JSP pages. The goal is to remove business logic from the presentation layer and have it encapsulated inside Service Facades and Services.
Most developers use Eclipse, but it is certainly possible to use other IDEs
Time to run acceptance tests
Acceptance tests hit a running instance of Mifos, clicking through the app and filling out forms as users would.
- performance improvement of acceptance tests and performant approach for managing test data
- Running Acceptance Tests
- The Test Pyramid
- Writing Acceptance Tests
- Maven Acceptance Tests
ci server (birch) running in Seattle office
Sensitive information (like passwords) is only shared using strong encryption. Ask an existing Mifos administrator for access to the vault.
Admin contacts: Adam Monsen, Van Mittal-Henkle, Sumit Shah, Udai Gupta
internal confluence wiki
- runs on a server in the Seattle office
- admin contacts: Ed Cable, Scott Falaschi, Adam Monsen, Sumit Shah, Udai Gupta
- Mifos admins are notified of outages via email.
- Outage notifications are sent to the mifos administrators mailing list.
- OpenNMS runs on a server called "cloudboss". Ask an admin contact for access.
- Monitoring Servers With OpenNMS
- Admin contacts: Adam Monsen, Van Mittal-Henkle, Sumit Shah, Udai Gupta
Mifos administrators mailing list
- Admin contacts: Adam Monsen, Van Mittal-Henkle, Sumit Shah, Udai Gupta, Emily Tucker, Ed Cable, Kay Chau
- We regularly remotely backup data on all machines.
- BackupPC runs on a server called "cloudboss". Ask an admin contact for access.
- /wiki/spaces/MIFOSADMIN/pages/8552796 (← must be logged in to view)
Unit and Integration tests in Mifos uses Junit 4.5+ framework and only Acceptance Tests (acceptanceTests module) uses TestNG 1.5+ framework.
- Mockito http://mockito.org/
Integration Tests follows a naming convention *IntegrationTest
Struts tests are legacy tests related to struts framework and supposed to be removed once the UI Conversion in G is completed.
Selenium is used to drive the user interface for end-to-end testing. Test datasets are maintained to avoid lots of boilerplate application setup for each test.
Acceptance Tests uses Page Objects concept with Selenium.
legacy BIRT integration
/mifos-accounting module serves the purpose of getting accounting information from Mifos. Current integration was build to support Tally ERP 9.
Mifos uses Spring batch / Quartz for batch jobs which are scheduled bulk processing when system is not in use (usually midnight)
meeting schedule generation
The notion of schedules are used for loans, savings and customer-loan officer meetings in mifos.
NOTE: There is a bug in mifos whereby if you are running with LSIM on, the loan accounts schedules are changed when they shouldnt be.