Difference between defining payment method on the level of strategy vs on beneficiary level
Difference between defining payment method on the level of strategy vs on beneficiary level
Initial setup for example:
There’s one Individual named John that is assigned to 3 programmes: Programme A, Programme B, Programme C
Programme A has following payment methods:
On site payment
Bank Transfer
Cheques
Programme B has following payment methods:
Mobile payment
Programme C has following payment methods:
On site payment
Bank Transfer
John’s data was submitted through 2 forms
first:
First | Second | DOB | Bank_Account | Poverty | Household_No |
John | Doe | 1990-01-01 | 0000 0000 0000 0000 | 1 | 10 |
Second:
First | Second | DOB | MobileNumber | Mobile_Provider | Location | No_Goats |
John | Doe | 1990-01-01 | +21 123 456 789 | Vodafone | Dodoma | 3 |
Third:
First | Second | DOB | Account | Location | Disability |
John | Doe | 1990-01-01 | 0000 0000 0000 0000 | Dodoma | 0 |
For the first benefit John has bank transfer for the latter mobile payment
Scenario when payment method is determined on the basis of strategy
User create a payrolls:
Programme A, Payment Adaptor: BankTransfer(Bank_Account), Condition: Household =< 20
Programme A, Payment Adaptor: Cheque(cheque), Condition: Household =< 20
Programme B, Payment Adaptor: MobilePayment(MobileNumber, Mobile_Provider), Condition: Location == Dodoma
Programme C, Payment Adaptor: BankTransfer(Account), Condition: Location==Dodoma
For John 3 relevant reconciliations processes are generated:
Programme A
Programme B
Programme C
As the adaptors are Payroll oriented they are managed as such, process is triggered for each Payroll separately
When 3rd party system finishes processing it informs IMIS about the results and the payroll can be reconciled
Scenario when payment method is determined on the beneficiary (defined as being enrolled in the programme)
We can assume following conditions:
Bank Transfer Adaptor expects field account_number
Mobile Expects fields mobile_phone_number and mobile_provider
With each new programme added ETL process have to be normalized, as adaptors rely on specific fields from the schema, so in John’s case:
ETL for Programme 1 has to rename Bank_Account column to the account_number
Payload for Programme 3 has to rename Account to account_number
Payload for Programme 2 has to rename number and provider accordingly
For each Programme User create a payrolls:
Programme A, Condition: Household =< 20
Programme B, Condition: Location == Dodoma
Programme C, Condition:
For John 3 reconciliations processes are generated:
Programme A
Programme B
Programme C
As the adaptors are not Payroll oriented they are different payment methods in scope of one Payroll
When 3rd party system finishes processing it informs IMIS about the results and part of the bills in scope of payroll change at the time
Until all processes are finished it’s not possible to reconcile payroll
Biggest drawback of this approach is that with each new programme:
The ETL pipeline has to be updated with additional data transformation - could cause consistency issues in case of reusable ETLs that serve more than one programme
ORNew ETL process has to be defined for every new programme - could be a bottleneck as defining ETL is a programming task that would require knowledge of openIMIS and Payment Adaptor requirements. It’s also harder to maintain in the long term.
Adding new Adaptors could cause trouble with backward compatibility, if new Adaptor would be added with intention to use in existing systems then data for each Programme would have to be upgraded using yet another ETL process.
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/