Improve Mifos Configuration Process
Code
Most Mifos configuration options must be entered in the database creation scripts used to create the Mifos database at install time. This makes it difficult for non-technical users to change configuration settings. This project would improve the ease of use of setting up configuration options. It would move configuration items that need to be defined at install time into a separate file and it would build UI screens, including validation logic, for the configuration options that can be set-up and changed after the application has been installed.
Current work being done on this project can be found at: Mifos Configuration Project
Move following configurations to separate file
There are certain configuration options that need to set at install time and shouldn't be changed after the application has been set-up. These configuration options would typically be set in an "installation wizard"-- but because we dont current have a install wizard-- we want to move these items out of the mifos db creation script and into a separate configuration file. Also included in the list below are configuration items that can be changed after application set-up but which we will not being building UI screens for initially.
- `Fiscal Year </knowledge/functional-specs/configuration-options#3_1_Fiscal_year>`_
- `Accounting Rules </knowledge/functional-specs/configuration-options#3_3_Accounting_rules>`_ _ GL codes (see GL code Chart of Accounts description) _ Decimal Point precision _ Rounding rules: up/down and amount to be rounded to _ 360 or 365 interest days in a year
- `Localization </knowledge/functional-specs/configuration-options#3_2_Localization>`_
- `Country </knowledge/functional-specs/internationalization-of-mifos#4_1_Country>`_
- `Currency </knowledge/functional-specs/internationalization-of-mifos#4_2_Currency>`_
- `Time Zone </knowledge/functional-specs/internationalization-of-mifos#4_3_Time_Zone>`_
- `Language </knowledge/functional-specs/configuration-options#3_2_Language>`_
- `Date Format </knowledge/functional-specs/internationalization-of-mifos#4_5_Date_Format>`_ Question: isn't this just inherited from the user locale? Is this explicityly set in the system?
- `Process Flow/Optional States </knowledge/functional-specs/configuration-options#3_5_Process_flow_optional_states>`_
- `Client Rules </knowledge/functional-specs/configuration-options#3_6_Client_Rules>`_
- `Misc Configuration items </knowledge/functional-specs/configuration-options#3_4_Miscellaneous>`_ _ Sequence of Names _ Session time out rule _ Allow back dated payments _ Note--> Officer Titles will be included on the look-up page.
- `Lateness/Dormancy Definition </knowledge/functional-specs/configuration-options#3_7_Lateness_dormancy_definition>`_
- Configurating when Collection Sheet Data is Generated
Bugs/items not implemented based on v1.0 Configuration FS:
- Client Rules - Groups Can Apply For loans Configuration does not work in properties files (http://mifosforge.jira.com/browse/MIFOS-1644)
- Process flow - need to modify both properties files and DB in order to turn optional states off: see http://tinyurl.com/yqx9w3 for more details about how to configure this feature. see http://tinyurl.com/2c8k5o for more details about why the feature is implemented the way it is.
Create UI screen to view non-UI configurations
View Organisation Settings
The UI screen will be available in the documents ui workspace directory. Recent UI screens: `25_May_2007 <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/25_May_2007.zip>`_
- Add link on Admin screen to "View Organization Settings".
- This page lists all the items that are defined in configuration file(s). It includes all items listed above under Move following configurations to separate file
Create UI screens for selected configurations
UI Screens should be built for the following configuration items. These UI screens will be available in the documents ui-workspace directory. Recent UI screens: [`25_May_2007 <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/25_May_2007.zip>`_
Look-up Values
- Add link on Admin screen to "Define look-up options".
- New look-up options can be added at any time.
- Once a look-up option is added, though, it should not be removed-- since it might be in use.
- Existing look-up options can be edited. User clicks "edit" button on look-up value screen, and the value is moved into the edit box. When user clicks "Add" the edited value replaces the existing value.
- Refer to the `FS for look-up values </knowledge/functional-specs/configuration-options#3_9_Look_up_options>`_
- Permissions must be added for this page
- `Officer titles </knowledge/functional-specs/configuration-options#3_4_Miscellaneous>`_ should also be included in this list
- UI Mock-up: Click here to download the UI screens (NB: `20_Feb_07 UI Screens are now available <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/20_Feb_07.zip>`_.) Click on Admin tab and look for "Define look-up options" link under "Data display and rules".
Accepted Payment Types
- Add link on Admin screen to "Define Accepted Payment Types".
- Accepted payment types can be changed at any time-- changes impact only the options a user has for specifying the payment type. Changing these options won't change payment types for previous transactions.
- Refer to the FS for Accepted Payment Types.
- Permissions must be added for this page
- UI Mock-up: Click here to download UI screens. (NB: 20_Feb_07 UI Screens are now available.) Click on Admin tab and look for "Define Accepted Payment Types" link under "Organizational Preferences".
Custom Fields
Flow - Define additional fields
- Add link on Admin screen to "Define additional fields".
- Any default value added must match the data type selected. ie, if the data type is "integer", then the default value must also be an integer.
- Once a additional field is defined, he will be allowed to change only the label, default value or mandatory status of the additional field.
- Refer to the FS for `Custom Fields </knowledge/functional-specs/configuration-options#3_12_Custom_fields>`_.
- Permissions must be added for this page
- Recent UI Mockup: `29_May_2007 <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/29_May_2007.zip>`_. Click on Admin tab and look for "Define additional fields" link under "Data Display and Rules".
Flow - View/Edit additional fields
- Add link on Admin screen to "View additional fields".
- This page lists all the categories for which additional fields are defined. A click on a category takes the user to a page where he can see the defined additional fields. He will be allowed to edit the additional field definition
Permissions must be added for this page
- Recent UI Mockup: `29_May_2007 <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/29_May_2007.zip>`_. Click on Admin tab and look for "View additional fields" link under "Data Display and Rules".
COMPLETED Work
Labels
- Add link on Admin screen to "Define labels"
- Labels can be changed at any time.
- Refer to the -knowledge-functional-specs-configuration-options
- Permissions must be added for this page
- UI Mock-up: Click here to download UI screens (NB: `20_Feb_07 UI Screens are now available <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/20_Feb_07.zip>`_.) Click on Admin tab and look for "Define labels" link under "Data display and rules".
Hidden Field
- Add link on Admin screen to "Define Mandatory/Hidden Fields".
- Mandatory option for fields can be turned on/off at any time.
- Hidden option for fields can be turned on/off at any time.
- Once a look-up option is added, though, it should not be removed-- since it might be in use.
- Existing look-up options can be edited. User clicks "edit" button on look-up value screen, and the value is moved into the edit box. When user clicks "Add" the edited value replaces the existing value.
- Refer to the `FS for Hidden & Mandatory Fields </knowledge/functional-specs/configuration-options#3_10_Hidden_Mandatory_data_field>`_
- Permissions must be added for this page
- UI Mock-up: Click here to download UI screens (NB: `20_Feb_07 UI Screens are now available <https://mifos.dev.java.net/source/browse/mifos/documents/ui-workspace/20_Feb_07.zip>`_) Click on Admin tab and look for "Define Mandatory/Hidden Fields" link under "Data display and rules".
Refactor Configuration Code
In addition to implementing the User Interface (UI) screens for configuration, there are a number of internal changes that will be made to improve the Mifos code (these changes are often referred to as "refactoring"). The primary goals of the refactoring work will be to:
Prepare Mifos for localization (translation into multiple languages)
The design goal for localization is to have localized text uniformly stored in standard external properties files. Currently web page text is in properties files while server-side text is stored in the database. This work will move localized text to properties files while having customized text (editable through the UI) stored in the database.
Reduce the time and cost of ongoing Mifos development by simplifying code
Mifos configuration related code will be simplified where possible to make it easier to understand and maintain, thus reducing the time and cost of ongoing development. The primary changes will involve eliminating database tables and related code that can be replaced by code which has been prepared for localization.
Facilitate upgrades of customized Mifos installations to new Mifos releases by restructuring Mifos configuration data
Most configuration data in Mifos currently resides in SQL database script files. For an MFI to customize Mifos they need to modify this SQL script. At the same time, improvements and updates to the Mifos default configuration data are also made in this SQL script. The result is conflicting changes that can prevent an MFI from upgrading to more recent versions of Mifos. This work will move configuration data out of the SQL script file and into configuration files structured such that these conflicts can be avoided.