Prefunded batch and account user exit

Prefunding verifies that the accounts involved, for either an individual or a batch of payments, have the necessary funds available to successfully complete the transactions. The accounts are tested, and possibly posted, to ensure that they have the funds that are needed. Since testing or posting an account is usually done by a process external to FTM, a user exit is called.

The user exit calls back-end account management and posting applications to do the business logic necessary to handle the prefunding requests. Sample source code to use as a template for a new prefunded batch and account user exit is provided by Risk Management.

The accounts that are used for the prefunding checks are shown in the following list.
  • For account prefunding, the account number from a transaction that matches one of the prefunded account numbers for the originating partner is used.
  • For batch (ICL) prefunding, either the account that is configured for the message type of the batch (ICL) or the default account for the originator of the batch (ICL) is used.
The accounts that are used by the user exit are logged in Risk Management tracking messages.

To do account prefunding checks, the user must indicate that an account is a prefunded account when it is defined. When the Risk Management engine finds a prefunded account during transaction level checking, it calls the prefunded batch and account user exit. This user exit is used to do any business logic that is specific to the customer and to indicate whether the risk check passed or failed based on that custom logic. For more information about the order in which risk checking occurs and what happens when risk checks pass or fail, see Risk workflow.

To do batch (ICL) prefunding checks, define an exposure limit monitor as a prefunded batch monitor. Prefunded batches (ICLs) are monitored by calling the prefunded batch and account user exit. For more information about defining the monitor, see Exposure Limit Monitors Page.

Calling the prefunded batch and account user exit

The method that is called for:
  • account prefunding requests is prefundedAccountCheck
  • batch (ICL) prefunding requests is prefundedBatchCheck

When the prefunded batch and account user exit is called, it receives an instance of RiskPrefundedInterface. The RiskPrefundedInterface includes information about the batch (ICL) and the transaction that the user exit uses to determine whether its risk checking passes or fails.

The prefunded batch and account user exit returns an instance of the RiskPrefundedReturnObject, which has a pass field to indicate whether the user exit risk checks passed or failed. If the risk checking that is done by the user exit fails, the user exit returns a RiskPrefundedReturnObject with the pass field set to false and the errorCode and errorMessage fields set. If the risk checking that is done by the user exit passes, the user exit returns a RiskPrefundedReturnObject with the pass field set to true.
Note: For account prefunding requests, the overrideable flag on the error code determines whether the batch (ICL) being evaluated is rejected and whether it can be overridden by an operator.
The prefunded batch and account user exit logs tracking messages for each request and response. The message includes the accounts that were used to do the prefunding check. The messages that are logged are shown in the following list.
  • RSKPF001K - account prefunding request
  • RSKPF003K - account prefunding response
  • RSKPF002K - batch (ICL) prefunding request
  • RSKPF004K - batch (ICL) prefunding response

When the risk checking that is done by the user exit fails, the user exit returns an error code. If the error code is configured to automatically retry the prefunded user exit, the unit of work is retried. For more information, see Automated retry of Risk prefund errors.

Creating a prefunded batch and account user exit

The prefunded batch and account user exit must implement the RiskPrefundingProcessorInterface class by extending the RiskPrefundingProcessor class. Extending the RiskPrefundingProcessor class protects the user exit from any future changes to RiskPrefundingProcessorInterface.

Note: Because an implementation of SamplePrefundedAccount is included in the JAR files that are installed with Risk Management, rename any new user exits that are created from the sample. This renaming ensures that the new user exit is called instead of the one provided with Risk Management.

Installing a prefunded batch and account user exit

The fully qualified name of the prefunded batch and account user exit is specified on the general properties page of the Risk Management user interface. By default, the name of the user exit is com.ibm.paydir.risk.userexit.samples.SamplePrefundingProcessor.

The user exit must also be visible to the Risk Management engine. The JAR file for the user exit needs to be installed in the shared library path for the engine.

Note: If the compiled JAR file is copied into the directory while the Risk Management engine is running, the application server needs to be restarted to load the new JAR file.

Canceling batches (ICLs) and prefunding

When a batch (ICL) is canceled, the batch (ICL) can contain a combination of transactions that were and were not delivered. Batch (ICL) cancellation identifies the transactions that have yet to be delivered and checks to see whether batch or account prefunding requests were made.

The method that is called for canceling:
  • account prefunding requests is cancelAccountPrefunding
  • batch (ICL) prefunding requests is cancelBatchPrefunding
The prefunded batch and account user exit logs tracking messages for each cancellation request and response. The messages that are logged are shown in the folllowing list.
  • RSKPF005K - account cancellation request
  • RSKPF007K - account cancellation response
  • RSKPF006K - batch (ICL) cancellation request
  • RSKPF008K - batch (ICL) cancellation response