Skip to main content

Fundraising Kit for Salesforce NPSP v1.38.1 - Backend Upgrades v1.19.0

Release Date February 28 2024

This upgrade provides performance improvements for payments processed from bank integrations. Payment records are no longer processed individually, but instead are transferred in bulk to Salesforce.

Highlights in this release:

tip

Backend upgrades are deployed automatically to all customer installations that meet the minimum requirements. This upgrade requires the installation of the RaiseNow Digital Fundraising Kit v1.38 from the Salesforce AppExchange. Contact RaiseNow support for the installation link.

Bulk Transfer for Direct Debit Payments

Direct Debit payments for the payments methods

  • ch_ta (LSV+ Switzerland)
  • ch_dd (debit direct from PostFinance Switzerland)
  • SEPA DirectDebit

are now transferred in bulk. Opportunities are identified in Salesforce by querying Salesforce for Opportunity.RaiseNow__Invoice_Identifier__c. According to the reported payment status in the camt file, Opportunity StageNames will be updated to either

  • Closed Won
  • Reversed Lost

Opportunities, npe01__OppPayment__c and RaiseNow__Transaction__c will be created for the identified Opportunities in bulk requests.

Bulk Transfer for Referenced Payments

Before processing referenced payments, RaiseNow will build collections of certain payment types. These collections will be processed in bulk requests to reduce the number of API requests required and increase the performance of the operations. The process is always:

  1. Query RaiseNow__Business_Process_Reference__c.RaiseNow__Payment_Reference__c to determine the types of payments contained in the collection.
  2. Build payment collections for each identified payment type and execute bulk processes for these collections.

Referenced Opportunity Collection

If RaiseNow__Business_Process_Reference__c.RaiseNow__Business_Process_Type__c is Payment for Online Pledge an Opportunity will be returned from the initial query for each such payment. Depending on the StageName of the Opportunity different actions will be taken.

  • Pledged: Update Opportunity StageName to Closed Won and create npe01__OppPayment__c, RaiseNow__Bank_Account__c and RaiseNow__Transaction__c
  • Closed Lost: Update Opportunity StageName to Closed Won and create npe01__OppPayment__c, RaiseNow__Bank_Account__c and RaiseNow__Transaction__c
  • Closed Won: Create new Opportunity for the identified contact with StageName Closed Won and create npe01__OppPayment__c, RaiseNow__Bank_Account__c and RaiseNow__Transaction__c

Referenced Campaign Member Payment Collection

If RaiseNow__Business_Process_Reference__c.RaiseNow__Business_Process_Type__c is Payment for Direct Marketing Campaign initiated outside RaiseNow an Opportunity will be created for the Contact and Campaign specified in the corresponding object in Salesforce.

  • The StageName for the created Opportunity will be set to Closed Won and the Opportunity will reference the Campaign
  • A npe01__OppPayment__c object will be created for the Opportunity.
  • A RaiseNow__Bank_Account__c according to the debtor bank account specified in the payment will be created or updated.
  • A RaiseNow__Transaction__c will be created for the Opportunity, linking to the RaiseNow__Bank_Account__c

Referenced Recurring Donation Payment Collection

If RaiseNow__Business_Process_Reference__c.RaiseNow__Business_Process_Type__c is Recurring Donation Payment Slip Pledge initiated by RaiseNow the linked npe03__Recurring_Donation__c will be queried for Opportunities

  • Opportunities with StageNames in 'Pledged', 'Payment Requested' will be retrieved from Salesforce and the returned Opportunity with the oldest CloseDate will be selected for the identified payment.
  • If no Opportunity can be identified for the npe03__Recurring_Donation__c an Opportunity for that npe03__Recurring_Donation__c will be created.
  • The StageName for the selected Opportunity will be updated to Closed Won
  • A npe01__OppPayment__c object will be created for the Opportunity.
  • A RaiseNow__Bank_Account__c according to the debtor bank account specified in the payment will be created or updated.
  • A RaiseNow__Transaction__c will be created for the Opportunity, linking to the RaiseNow__Bank_Account__c

Referenced Unmatched Payment Collection

warning

There is a breaking change in this implementation. The previous version of this process would also create RaiseNowBusiness_Process_Referencec object containing the reference used. However, this lead to problems when the same reference was used repeatedly.

If no RaiseNow__Business_Process_Reference__c.RaiseNow__Business_Process_Type__c can be identified for the reference provided in the payment, individual contacts are created with the data provided in the payment. If Salesforce duplicate rules detect an existing contact, that contact is used.

  • An opportunity will be created based on the data retrieved from the camt file
  • A npe01__OppPayment__c object will be created for the Opportunity. Note that the payment will have the reference in npe01__OppPayment__c.npe01__Check_Reference_Number__c
  • A RaiseNow__Bank_Account__c according to the debtor bank account specified in the payment will be created or updated.
  • A RaiseNow__Transaction__c will be created for the Opportunity, linking to the RaiseNow__Bank_Account__c

Referenced Unpersonalized Campaign Payment Collection

note

To use this new feature, follow these steps:

  • When upgrading the package from an earlier version, you need to manually add a picklist field value Non-Personalized Campaign Reference to RaiseNow__Business_Process_Reference__c.RaiseNow__Business_Process_Type__c
  • You need to add the campaignReferenceNumberGenerator LWC to the campaign page
  • Ensure you add "Static Payment Option 1" & "Static Payment Option 2" to your campaign page layout in Salesforce.

If RaiseNow__Business_Process_Reference__c.RaiseNow__Business_Process_Type__c is Non-Personalized Campaign Reference new contacts are created with the data provided in the payment. If Salesforce duplicate rules detect an existing contact, that contact is used.

  • An opportunity with StageName Closed Won will be created based on the data retrieved from the camt file. The Opportunity will link to the Campaign specified in RaiseNow__Business_Process_Reference__c.RaiseNow__Campaign__c
  • A npe01__OppPayment__c object will be created for the Opportunity. Note that the payment will have the reference in npe01__OppPayment__c.npe01__Check_Reference_Number__c
  • A RaiseNow__Bank_Account__c according to the debtor bank account specified in the payment will be created or updated.
  • A RaiseNow__Transaction__c will be created for the Opportunity, linking to the RaiseNow__Bank_Account__c

Processing of Acquirer Payouts

This process has been rewritten to better account for situations in which not all payments referenced in the reconciliation report are present in Salesforce. In this case, the process used to fail, requiring manual error resolution by transferring the missing payments and retriggering the process. The new mechanism will query Salesforce first to identify which payments can safely be processed. These payments will be updated in bulk, setting the following fields:

  • Opportunity: RaiseNow__Transaction_Identifier__c,RaiseNow__Value_Date__c,RaiseNow__Acquirer_Payout_Received__c,RaiseNow__Gross_Amount__c,RaiseNow__Net_Amount__c
  • RaiseNow__Transaction__c: RaiseNow__Acquirer_Fees__c,RaiseNow__Acquirer_Transaction_ID__c,RaiseNow__Original_Currency__c,RaiseNow__Reconciliation_Report_Identifier__c,RaiseNow__Value_Date__c,RaiseNow__Original_Amount__c,RaiseNow__Gross_Amount__c,RaiseNow__Net_Amount__c,RaiseNow__Original_Gross_Amount__c,RaiseNow__RaiseNow_Fees__c,RaiseNow__Transfer_Amount__c,RaiseNow__Opportunity__c

After processing these payments, the process will end in a transient error state with a message specifying which payments (RaiseNow UUIDs) could not be matched. A transient error states indicates that RaiseNow will attempt this process again. Retries will be executed automatically every hour for 12 hours. After that the process will go into a permanent error state but may be re-triggered from the business process monitor.