Many of our customers work in rural and outlying regions and need their field operations staff to be connected to their clients and their data at all times. They need access to data on and offline and to have the full power of Mifos X in their mobile devices so they can reduce the costs of serving their clients.
|Customer||Location||Description||Status||Smartphone||Tablet||Offline - Mobile||Offline-Browser|
|Financial Institution Name||Country||Overview of Requirements||Processes to be supported||Processes to be Supported||Processes...||Processes...|
|Digamber Finance||See Mobile Use Cases - Digamber Finance||Need to operate in areas of low connectivity.|
|WOCCU||AKA Musoni App|
|Esperanza International||Dominican Republic||Overview of mobile requirements|
|Global Finance Cameroon|
|Cellos Tech||Store and forward capabilities||Store and forward capabilities|
|Intrasoft||Kenya||See Mobile Use Cases - Intrasoft (Zayyad)|
|AFP (led by FINA||Laos||FINA built a offline android client and server-based solution to provide a payment mechanism to manage the delivery of cash stipends to the rural poor in Lao PDF||Completed - Production||Transactions can be captured in the field while offline and uploaded and synced with database when online once again.|
|Conflux||India||These are the implications Binny wants to be considered as one thinks about the potential for conflicting transactions when capturing data offline|
I think we are over-simplifying the problem. By treating it as a technical problem where we need to store some of the data offline. My opinion is that storing data offline is merely a technical detail and possibly the easier part to accomplish.
For me, the areas that we need to design more is – how will the process work and how will the data syncing with server be accomplished gracefully?
a) Which use cases will be available during offline operations and what is the need? – validate this with the end-user organization
b) New customers and accounts –
- Customer onboarded or loan created offline – in the offline module a customer ID is allocated (for example: new customer “Steve” was allocated an ID of 1999 in the offline) – an ID is needed as some kind of reference has to be given back to the customer or written down on their paper application form
- Before this data was synced with server, other customers were onboarded on the server – with IDs 1999 till 2004
- Now when you sync offline data with server, Steve may get an ID of 2005. How will this be synced up? Perhaps an external ID needs to be allocated. In such a case, how will we ensure that external IDs are unique across all offline use?
c) Similar issue with transaction ID – receipt issued to customer with one transaction ID or reference number, but when the transaction is synced with server, we may not be able to retain the same transaction ID
d) Reflecting the transaction date/time on the server with the same date/time when the transaction happened in the field
e) Server side validations
Example: Savings withdrawal – balance is blocked on server due to the account being part of a guarantee.
How will we ensure that withdrawal attempt fails?
f) How will we ensure that an offline savings withdrawal will not be followed by an online withdrawal by a fraudster?
See Mifos X Android App Requirements documented for GoogleServe volunteer event.
Below is a list of questions to be addressed as a result of this requirements document: