User exits

The user exits for FTM for High Value Payments are provided by subsets of actions. These user exits are facilitated and triggered by a configuration that uses the propagate to label command within the subset of actions.

The types of functions that your user exits can do are shown in the following list.
Update the ISF that was created by an action
FTM for High Value Payments has a subset of actions that create the ISF that is used to create messages to be sent to an end point. For example, a message to a CSM, a service, or a notification or status that is sent to a channel. These actions are updated to facilitate a user exit that you can use to update the ISF that the action creates.
Validation
FTM for High Value Payments has a subset of actions that do validation on messages during the orchestration process. These actions are updated to facilitate a user exit that you can create to update the scheme that is used by the process. Or, you can use the user exit to override the validation event that is raised to a validation fail event.
Store service call results
FTM for High Value Payments has an action that checks the result of a service call. This action is updated to facilitate a user exit that you can create to store the data from the service call result in the database to use in another user exit later.

Configuring the user exits

To configure a user exit to be called, a VALUE table entry must be created for each action that you want to call a user exit from. The table entry consists of the following information.
Category
The category needs to be USER_EXITS.
Key
The key to use is different for each action. The user exit configuration tables show the value of the key to use for a specific action name.
Configuration value
Set the configuration value to the label name of a label node that is used in a message flow or subflow. This flow or subflow can link to other nodes within the flow to do the necessary function.

User exit to update the ISF

The master transaction identifier and the newly created transaction identifier for the new outbound transaction is provided to the user exit as parameters in reserved parts of the environment. These parts are called Environment.PMP.UserExit.Input.MasterTxnId and Environment.PMP.UserExit.Input.NewOutTxnId. A common procedure that your user exit can use to retrieve a reference to the ISF cache for updating is provided. This procedure is called GetIsfFromIsfCache and it is in the UserExitLib.esql module.

After the ISF is updated in the user exit, a space is reserved in the environment to notify the calling action. The space in the environment is called Environment.PMP.UserExit.Output.IsfUpdatedInCache. Set it to TRUE to notify the calling action that it needs to use the updated ISF from the user exit.

The following table shows the VALUE table entries for the actions that can facilitate a user exit call to update the ISF.
Table 1. User exit configuration to update the ISF
CATEGORY KEY VALUE Action name
USER_EXITS UX_DO_FUNDS_RESERVATION <label name> A_DoFundsReservation
USER_EXITS UX_DO_NOTIFY_CHANNEL <label name> A_DoNotifyChannel
USER_EXITS UX_DO_NOTIFY_CHANNEL_RECALL <label name> A_DoNotifyChannelRCL
USER_EXITS UX_DO_NOTIFY_CHANNEL_RETURN <label name> A_DoNotifyChannelReturn
USER_EXITS UX_DO_NOTIFY_CHANNEL_ROI <label name> A_DoNotifyChannelROI
USER_EXITS UX_DO_NOTIFY_CHANNEL_GENERIC <label name> A_DoNotifyChannelGenericTxn
USER_EXITS UX_SEND_TO_ACCOUNTING <label name> A_DoSendToAccounting
USER_EXITS UX_SEND_ACCOUNT_INQUIRY <label name> A_DoSendAccountInquiry
USER_EXITS UX_SEND_CREDIT_REVERSE_TO_ACCOUNTING <label name> A_DoSendCreditReverseToAccounting
USER_EXITS UX_SEND_DEBIT_TO_ACCOUNTING <label name> A_DoSendDebitToAccounting
USER_EXITS UX_SEND_DEBIT_REVERSE_TO_ACCOUNTING <label name> A_DoSendDebitReverseToAccounting
USER_EXITS UX_SEND_RECALL_NACK_TO_CHANNEL <label name> A_DoSendRecallNackToChannel
USER_EXITS UX_SEND_RECALL_STATUS_TO_CHANNEL <label name> A_DoSendRecallStatusToChannel
USER_EXITS UX_SEND_ROI_NACK_TO_CHANNEL <label name> A_DoSendReqRespNackToChannel
USER_EXITS UX_SEND_ROI_STATUS_TO_CHANNEL <label name> A_DoSendReqRespStatusToChannel
USER_EXITS UX_SEND_CANCEL_STATUS_TO_CSM <label name> A_DoSendCancelStatusToCSM
USER_EXITS UX_SEND_PAYMENT_TO_CSM <label name> A_DoSendPaymentToCSM
USER_EXITS UX_SEND_RECALL_TO_CSM <label name> A_DoSendRecallToCSM
USER_EXITS UX_SEND_RETURN_TO_CSM <label name> A_DoSendReturnToCSM
USER_EXITS UX_SEND_ROI_TO_CSM <label name> A_DoSendROIToCSM
USER_EXITS UX_SEND_STATUS_TO_CSM <label name> A_DoSendStatusToCSM
USER_EXITS UX_SEND_GEN_TXN_TO_CSM <label name> A_DoSendGenericTxnToCSM
USER_EXITS UX_SEND_TO_FRAUD_CHECK <label name> A_DoSendToFraudCheck
USER_EXITS UX_SEND_TO_SANCT_SCREEN <label name> A_DoSendToSanctScreen

User exit for validation

The master transaction identifier is provided to the user exit as a parameter in a reserved part of the environment. It is called Environment.PMP.UserExit.Input.MasterTxnId.

If your user exit overrides a validation pass event and instead wants the calling action to raise a validation failed event, space is reserved in the environment to notify the calling action. The space in the environment is called Environment.PMP.UserExit.Output.RaiseTransactionInvalidEvent. Set it to TRUE to notify the calling action that it needs to raise a validation fail event. Your user exit needs to add an appropriate error entry to the ERROR table because the calling action has no other way of knowing why the transaction is invalid.

If your user exit overrides the transaction scheme, space is reserved in the environment to return the new scheme. The calling action gets the values from the environment to set the new transaction scheme and update the database entry. The following list shows the values that your user exit needs to store in the environment.
  • Set Environment.PMP.UserExit.Output.Scheme to the scheme name.
  • Set Environment.PMP.UserExit.Output.SchemeOverride to TRUE.
The following table shows the VALUE table entries for the actions that can facilitate a user exit call to provide extra validation or to change the scheme.
Table 2. User exit configuration for validation
CATEGORY KEY VALUE Action name
USER_EXITS UX_VALIDATE_INCOMING_RECALL <label name> A_ValidateIncomingRecallTxn
USER_EXITS UX_VALIDATE_INCOMING_ROI <label name> A_ValidateIncomingROITxn
USER_EXITS UX_VALIDATE_RECALL <label name> A_ValidateRecallTxn
USER_EXITS UX_VALIDATE_ROI <label name> A_ValidateOutROITxn
USER_EXITS UX_VALIDATE_TRANSACTION <label name> A_DoValIP
USER_EXITS UX_VALIDATE_INCOMING_GENERIC <label name> A_ValidateIncomingGenericTxn
USER_EXITS UX_VALIDATE_OUT_GEN_TXN <label name> A_ValidateOutgoingGenericTxn

User exit for service call results

The master transaction identifier is provided to the user exit as a parameter in a reserved part of the environment. It is called Environment.PMP.UserExit.Input.MasterTxnId.

The following table shows the VALUE table entry for the action that can facilitate a user exit call to store data that is returned by a response to a service call. The action in the table is used whenever a response is returned after any of the service calls. The user exit can store some values from the response in the database (as an object value for example) to be used in another user exit that is called later.
Table 3. User exit configuration for service call results
CATEGORY KEY VALUE Action name
USER_EXITS UX_CHECK_RESULTS <label name> A_CheckPreCheckResults