Release Notes - July '25
ย ย ย Our release communication aims to inform you early of upcoming releases. Please keep in mind that the scope of a release is subject to change prior to the production release date.
Important Dates:
- Release to sandboxes: June 29, 2025
- Release webinar: July 4, 2025
- Release to production: July 27, 2025
Reminder - classic permission sets end-of-life
With the May '25 release, we announced the FinDock classic permission sets reach end-of-life (EOL) with the November '25 release to production. After EOL, the classic permission sets are no longer updated by FinDock, becoming unmanaged permission sets you can keep or unassign. FinDock users should be assigned FinDock permission set groups.
Enhanced FinDock Setup to GA
We are happy to announce the enhanced FinDock Setup moves to General Availability (GA) with the July '25 release. We are grateful for all your insightful and constructive feedback. It has helped us identify many key improvements that are included in this release.
The new FinDock Setup sees many changes, big and small, frontend and backend, as we move to GA. These include:
- You can install required packages, such as ProcessingHub, and the optional Additional Setup, which adds tabs and related permissions for Inbound Reports and Installments, directly from FinDock Setup.
- Implemented new checks and alerts for settings, including target configuration, that require a working ProcessingHub connection
- Reduced page loading time
- More deep links between related settings
- Numerous fixes and improvements to the visual design of different page elements to improvement usability and design consistency
- Improved performance of components to e.g. reduce spinner times and smooth out loading behavior
- Improved structuring and presentation of settings through e.g. table sorting, more use of tabs and cards to better separate settings areas and reduce scrolling
ย ย ย The Enforce Payment Profile Uniqueness setting was not automatically enabled as intended for new installs (since September โ24). This setting is now always automatically enabled. If you have installed FinDock prior to July '25 and want to enforce Payment Profile uniqueness, please contact FinDock Support for assistance.
Classic setup deprecated
The classic setup with reach end-of-life (EOL) with the September '25 release. We begin this process in the current release with the following changes:
- The Setup tab is removed for new installations., replaced by the FinDock Setup tab.
- The Setup tab only shows a link to Manual Review (deprecated) and guidance to use the new FinDock Setup tab; Visualforce pages from the classic Setup remain in the org for now. These pages are available only for single to multi-merchant migrations.
- The classic Deploy config process can no longer be triggered through the classic Setup. The old deployment mechanism is replaced by the more robust and secure framework of the enhanced FinDock Setup, where deployments can be manually triggered when needed.
Mandate settings incorrectly displayed
Issue: When Core mandate settings are changed in the FinDock Setup, such as toggling on or off the auto-create option, the settings are updated, but the UI does not display the updated state.
Solution: We have identified and fixed the bug that caused the issue so that the UI correctly reflects the current, saved state of mandate settings.
Authorize.net to Beta
After a successful piloting phase, we are happy to announce that our integration with Authorize.net is now in beta and open to all customers.
The beta release includes several enhancements and improvements as described in the following sections.
Void captured but not yet settled transactions
FinDock already handles notifications from Authorize.net for refunds of settled transactions. With this release, FinDock now also handles notifications on transactions that are voided after they have been captured, but before the transactions have been settled.
Ordering of notification handling
Issue: In some scenarios, FinDock may get notifications from Authorize.net about a new payment before FinDock has finished processing the initial payment intent message. This results in failed inbound reports for follow-up notifications about that payment intent.
Solution: Weโve implemented new notification handling steps that we use with other PSPs that puts follow-up notification processing on hold until the payment intent inbound report has been processed. In addition, we corrected how the date of inbound report events is defined so that it reflects the date and time of the handling event on Notification Gateway instead of the date the notification was received.
Bank Feed (Beta)
FinDock Heart Beat reminder
The FinDock Heart Beat job needs to be scheduled in order for Bank Feed to automatically fetch transactions. To ensure it is scheduled, we have added to the Bank Feed setup page a callout that reminds you to schedule the heart beat if it isnโt already.
Guided Matching for transaction sets with over 200 transactions
Issue: In certain scenarios, such as the FinDock Heart Beat job framework, if a transaction set received through Bank Feed had over 200 transactions, Guided Matching would not process all transactions, stopping instead after the configured job size for the Guided Matching setup.
Solution: We have refactored how batches and queues are handled in the FinDock Heart Beat. With this update, Guided Matching supports large numbers of records from transaction sets and inbound reports.
Giving Pages
Enhanced accessibility
We conducted a 3rd party audit of FinDock Giving Pages to assess our compliance with the Web Content Accessibility Guidelines (WCAG) 2.1. Based on the findings, we have made several adjustments to improve Giving Pages accessibility. The enhancements are wide-ranging, from default colors and better visual indicators, to improving error prevention. Together, the changes bring Giving Pages into full compliance with the WCAG 2.1 level AA requirements.
MOTO
ACH Direct Debit (US) payments through Stripe
We have further expanded the payment processor and method combinations supported by the FinDock Payments component for accepting virtual terminal (MOTO) payments. You can now accept ACH direct debits through Stripe, as well as through Authorize.net.
Core
Security enhancements
This release includes a major refactor of the FinDock Core code base to strengthen security and implement the latest Salesforce best practices. The changes impact the way FinDock queries and updates Salesforce data. While significant, they do not modify FinDock features and functionality.
Salesforce API version update
Salesforce platform API versions in all FinDock packages for Apex classes and triggers, Visualforce components, Lightning Web Components, etc. have been updated to version 64.0 to support the Salesforce Summer '25 release.
Guided Matching retry enhancement
Issue: When retrying Guided Matching rules on certain types of inbound reports, the retry can fail with the error: You have uncommitted work pending. Please commit or rollback before calling out.
Solution: We have reworked the underlying mechanisms for the retry-and-continue and process-and-continue actions in Guided Matching. The logic remains as before, but we have eliminated the root cause of the uncommitted-work situation.
Guided Matching enhanced rule management
In certain cases, such as migrating Guided Matching rule sets to a new org or merging existing rule sets, you can manually implement the changes by directly modifying the JSON file on the Guided Matching Setup record.
However, this manual approach could lead to incorrect rule execution sequencing, something that is automatically checked and recalculated when using the Guided Matching Setup user interface. In this release, we have added those same checks and recalculation steps when working directly with Guided Matching Setup records.
ProcessingHub Manager improvements
To make it easier to self-manage business processes that use ProcessingHub for file generation and file extraction, weโve implemented several improvements to the ProcessingHub Manager:
- It is now possible to view more than the previous limit of 100 processes with the Load More option in ProcessingHub Manager. This helps Salesforce orgs that ran many processes - or in fully automated environments that allow for a hands-off approach - where it was otherwise impossible to find a process that failed some time ago due to view limits.
- Weโve added filtering to the process view to make it easier to get an overview of processes in different states and quickly find failed or running processes.
ProcessingHub Manager process loading
Issue: In some cases, the list of processes in ProcessingHub Manager would not load, making it impossible to monitor and analyze file-based processes.
Solution: This issue usually arose when a single process generated a very large number of logs. To significantly reduce the chances of process not loading, weโve implemented two enhancements:
- Improved performance of loading logs for each process
- Introduced new pagination of logs to prevent Salesforce from loading all logs at the same time
ProcessingHub
Performance enhancement
Issue: Queries to the Salesforce Bulk API can be very slow and unstable when permissions are incorrectly configured in the org.
Solution: We have improved query handling to fail processes quicker with clear error messages pointing to permission-related issues. This significantly improves overall performance by avoiding retries of queries that cannot succeed due to missing or misconfigured permissions.
Gift Aid
Tax rate metadata updated
The Gift Aid Tax Rates custom metadata type (GiftAid_Tax_Rates__mdt
) is used to determine the applicable tax rate for Gift Aid claims in payment schedule runs. The metadata type has a defined End Date that was approaching, so we have updated the End Date in this release to a future date to ensure Gift Aid payment schedules continue to function as expected.
NPSP
Closed Lost syncing to status Pending recollection
Issue: When an opportunity is updated to Closed Lost, the related installment status is not updated if the current status is Pending recollection.
Solution: Weโve added support for syncing the Closed Lost status change on Opportunity to the Pending recollection status on Installment. This sync used to only be supported for the New status on Installment.
Access PaySuite (SmartDebit)
Payment schedule closes too soon
Issue: In some cases, FinDock closes a payment schedule run before ProcessingHub has completed pushing updated data back to Salesforce, potentially leading to an incorrect status on installments.
Solution: The issue was caused by related processes running in parallel on ProcessingHub. We have introduced new control measures to ensure related processes running on ProcessingHub are completed in the expected sequence.
Adyen
Payment profiles created for failed Google pay payments
Issue: If a payer tried to pay with a credit card brand that is not supported by the merchantโs Adyen contract or account, the payment would fail but FinDock still created a Payment Profile record for the payer. This could lead to invalid Payment Profile records in the org.
Solution: We have enhanced the handling of Google Pay payments so that FinDock now no longer creates a payment profile when a Google Pay payment fails due to an unsupported credit card.
GoCardless
Guided Matching setup
Weโve made a minor backend change to how the Guided Matching rules for GoCardless are updated when installs are made. This change does not impact the rules themselves.
Permissions update
Issue: Connecting a merchant account in FinDock to GoCardless required sysadmin level permissions.
Solution: The issue was caused by a missing Apex permission for AccountSettingsRestResource in the FinDock GoCardless Setup permission set. This group is now updated so that regular Salesforce user profiles with the FinDock Administrator permission set group can connect to GoCardless as expected.
Norway
Giro (KID) payment reference
Issue: In the Nov. 24 release scope, we modified how FinDock handles customer Id generation and limited the action to the AvtaleGiro payment method. The limitation prevented payment references from being generated for Giro (KID) payments for payers without an existing customer Id (which is required for reference generation). New Giro (KID) installments would not get a payment reference, and contacts without a customer Id were skipped in Payment Request Generator runs for Giro (KID).
Solution: Weโve built a new path for Giro (KID) reference generation to enable generation on installments for payers who do not yet have a customer Id. When used, the customer Id segment of the newly generated KID reference is copied from the installment to the payerโs Contact record. This also applies to Payment Request Generator runs where contacts without an existing customer Id are no longer skipped but get a reference and customer Id as expected.
Saferpay
Duplicate Mandate records
Issue: In some scenarios, a successful recurring payment through Saferpay would lead to two Mandate records. Both would have the correct reference from Saferpay, but only one would be attached to the recurring payment record. This does not impact collections. However, we recommend removing the orphaned duplicate Mandate records.
Solution: The issue occurred when two processes creating the same type of inbound report run at the same time. FinDockโs typical mechanisms protecting against duplicate record creation could not determine which process to halt. We resolved the issue by eliminating one of these processes that was an unnecessary alternative to the primary process that relies on webhook notifications from Saferpay.
To clean your org of unnecessary records, you can find and delete the unused, duplicate mandates by running the below SOQL query in your developer console. Replace cpm__Recurring_Payment__c
in the query with your source-specific recurring object as needed, e.g. npe03__Recurring_Donation__c
for NPSP or GiftCommitment
for NPC.
SELECT Id FROM cpm__Mandate__c WHERE Id NOT IN (SELECT cpm__Mandate__c FROM cpm__Recurring_Payment__c) AND cpm__Payment_Processor__c = 'Six-Saferpay-for-FinDock'
SEPA
Processing error with multi-currency targets
Issue: When processing payments for SEPA targets that have multi-currency enabled, ProcessingHub may fail with the error Undefined array key "MULTI_CURRENCY"
.
Solution: This issue was caused by how target settings are synced between ProcessingHub and Salesforce which in some situations resulted in ProcessingHub deleting the multi-currency setting for SEPA targets (added with the Nov. '24-Jan. '25 release). The underlying bug has been resolved so the multi-currency setting is maintained for SEPA targets as expected.
Stripe
Permissions update
Issue: Regular users assigned the FinDock Administrator permission set group could not disconnect a Stripe account in the Stipe for FinDock payment extension setup. The action required sysadmin permissions.
Solution: The issue was cause by how FinDock handled custom settings changes related to the disconnect action. This has now been modified so regular Salesforce user profiles with FinDock Administrator permissions can disconnect a Stripe account as expected. In addition, we added the Apex permission for AccountSettingsRestResource to the FinDock Stripe Setup permission set.
Worldpay
Failed inbound report when holder name is empty
Issue: Inbound reports for Google Pay and Apple Pay authorization do not include a holder name. When empty, Guided Matching would fail the inbound report because the matching assumed a holder name value is always present.
Solution: We have updated the inbound report handling to allow for an empty holder name since this is not required for wallet payment profiles. Along side this update, we also implemented an additional parameter to the checkout URL to resolve an issue where Google Pay may not appear on the hosted payment page even when it is a valid payment method option.
General maintenance
Heroku app maintenance
This release includes version upgrades for software components used in FinDock apps on Heroku. These updates apply to ProcessingHub, WebHub, Notification Gateway, as well as FinDock installation and access management frameworks.