Id: | 21108 |
Product: | finPOWER Connect |
Type: | NEW |
Version: | 4.01.00 |
Opened: | 13/12/2023 |
Closed: | 23/01/2024 |
Released: | 29/04/2024 |
Job: | J032627 |
![]() |
|
![]() |
Process Direct Debit Payments; new Execute Commit process added
The current Process Direct Debit Payments wizard may cause database locking and timeouts, especially where the process takes a long time. This is because the current commit processes all Direct Debits in one database transaction.
A new Execute Commit process has been added that does not lock the database for the entire commit and therefore has better data concurrency. Each Bank Transaction is created in its own database transaction - but this means it is an important breaking change.
Note, because this is an important breaking change the new commit must be specifically turned on, and if there are any issues the older commit can be used. It also does not support all script events, see later.
This must be turned on for each Bank Account. Under Admin, Bank Accounts, Options page, Other Options section, check "Use the new Direct Debit Execute process?".
WARNING: We strongly suggest you test this new option before using it in your production environment.
This change has the side effect that if the execute commit returns false, i.e. a failure, one or more Bank Transactions may still have successfully processed are committed. Previously, if anything caused a failure the whole commit would be rolled back.
- Scripting Events
- ExecuteCommitPre event is still supported with no changes.
- ExecuteCommitPostInTransaction event is NO LONGER supported.
- If you use this event you will need to change to the ExecutCommitPost event or keep using the current Execute Commit.
- ExecuteCommitPost event is still supported with the following change:
- Previously this event only fired if the overall commit succeeded.
- Now some Direct Debits may have been processed and committed to the database then a failure occurs. Therefore this event will fire if any Bank Transactions have been processed.
- You can check AccountDirectDebit.Processed to see those items that have been processed.
- Alternatively use another event like the BatchBankPostCommit event and check the Source of the batch is isefinTransactionSource.ProcessDirectDebits.