Introduction to Outward Messaging Framework
The process of outward payment generation using outward message flow is described below.
Hover on each component to understand their function

Configuring Outward Messaging Framework
This topic describes the configuration of Outward Message Flow.

Using the Max Trx/ Bulk, Max Bulks/ File and Max Files/ Cycle fields, the user can configure the number of files in a clearing cycle, the number of bulks in a file and the number of transactions in a bulk for the outward file generation.
Based on the clearing frequency, the transactions are grouped and references are created which is later bulked in the middleware. Using the physical file name, the name of the file can be configured.

By using Enrich out Message API in PP.CLEARING
, the emitted events with TPH details can be enriched as per the requirement.
Refer Sample Outward Mapping for more information.

Every message flow has a configurable Properties text file which can be used to configure different properties of the framework in the middleware.
The Properties text file is available in ESBProjects > PP > ESB_SOURCE > PP_ESBOutward > <Flow name> > ESBUtility > Schema path.
The table given below lists the configurable properties in outward middleware:
Inward Flows |
Queue Configuration(.properties) |
---|---|
Instant Outward flow |
QueueConfigPO |
Credit Transfer flow |
QueueConfigCT |
Direct Debit flow |
QueueConfigDD |
Customer Status report flow |
QueueConfigCSR |
Agent Banking Outward flow |
QueueConfigCT_IP |
Agent Banking DD flow | QueueConfigDD_IP |
Instant Customer Status report flow |
QueueConfigInstCSR |
Instant DD flow | QueueConfigInstOutDD |
CBPR Outward Flow | QueueConfigSWMXCT |
RequestToPay Inward flow | QueueConfigRTP |
#Configuration to disable XSDVALIDATION clearing wise UKFPS-XSDVALIDATION = FALSE SAINST-XSDVALIDATION = FALSE
When there is an error in the outward file due to XSD validation, the error is captured in the PPT.SENTFILEDETAILS
application as shown in the screenshot below. This application stores the file-level XSD validation errors and PP.OUT.CT.TRANSACTION
stores the bulk-level or transaction-level XSD validation errors.

The system provides a capability to perform an end-to-end integrity check for all outgoing messages. This check can be turned on or off using the following Message Integrity properties. Configurable API can be used to attach the signature to the outgoing message. This signature is generated based on the Compliance and Key store.
The two level of integrity checks are:
- Integrity check after receiving neutral format in camel layer
- Adding signature to target outward message
The table below lists the configurable integrity in the outward middleware:
Outward Flows |
TPH layer integrity properties name |
Clearing integrity properties name |
---|---|---|
Instant Outward flow |
PPINST_InstantOutwardXML_O utwardIntegrity |
PPINST_InstantOutwardXML_T 24Outward |
Credit Transfer flow |
PP_CreditTransfer_OutwardInt egrity |
PP_CreditTransfer_T24Outwar d |
Direct Debit flow |
PP_DirectDebit_OutwardIntegr ity |
PP_DirectDebit_T24Outward |
Customer Status report flow |
PP_CustomerStatusReport_Ou twardIntegrity |
PP_CustomerStatusReport_T24 Outward |
Agent Banking Outward flow |
PPIPCL_InwardXMLIPFlow_Inw ardIntegrity |
PPIPCL_InwardXMLIPFlow_T24 Inward |
Agent Banking DirectDebit flow | PPIPCL_DirectDebitIP_OutwardIntegrity | PPIPCL_DirectDebitIP_T24Outward |
Instant DirectDebit Flow | PPINST_InstantDirectDebit_OutwardIntegrity | PPINST_InstantDirectDebit_T24Outward |
Instant Customer Status report flow |
PP_InstantCustomerStatusRep ort_OutwardIntegrity |
PP_InstantCustomerStatusRep ort_T24Outward |
CBPR Outward Flow | PPSWMX_SwiftMXCreditTransfer_OutwardIntegrity | PPSWMX_SwiftMXCreditTransfer_T24Outward |
RequestToPay Outward flow | RF_RequestToPay_OutwardIntegrity |
EBAINST-IntegrityRequired=FALSE EBAINST-Compliance= EBAINST-APIName=
An API can be used to add the signature to the target message according to the compliance configured
T24-IntegrityRequired=FALSE T24-Compliance=
The message after received into the camel layer from TPH, can be checked for integrity by enabling the configuration.

Sending different payments to an external system or Clearing is the prime responsibility of the outward framework. Since there is always a need to consume or send payments from or to external system by different means, the framework provides an option to configure input or output folders or queue.
Queue Properties file can be used to configure either folders or queues and its names.
RoutingChannel-BACS=FILESYSTEM-BACS RoutingChannel -COELSAACH=QUEUE-COELSAACH RoutingChannel -MASAV=FILESYSTEM-MASAV RoutingChannel-SIC=FILESYSTEM-SIC RoutingChannel -BECS=FILESYSTEM-BECS RoutingChannel-BPAY=FILESYSTEM-BPAY
If the Routing Channel is configured as FILE SYSTEM, the generated message is routed to folder and if it is configured as QUEUE message it is routed to a Queue as configured below:
#Output folders to write the bulked files - Clearing wise BACSCTOutput=BACSCTOutput COELSACTOutput=COELSACTOutput
#Output queues to write the bulked files - Clearing wise TPH. BECS.CT.OUT. QUEUE=TPH. BECS.CT. OUT. QUEUE TPH. BACS.CT.OUT. QUEUE=TPH. BACS. CT.OUT.QUEUE TPH.COELSA.CT OUT.QUEUE=TPH. COELSA.OUT .QUEUE

As an out-of-the-box solution, the inward framework is built to work using Apache Camel as the ESB. In case of using other ESBs, few steps needs to be followed to configure and establish connection with Transact.
The steps to implement Outward framework in any ESB other than Camel are as follows:
- Transact adapters for various ESBs are available at Temenos. This should be obtained and deployed. This adapter polls IF (Integration Framework) events. If no adapter is available for the ESB, queues can be used for consuming the IF events.
- Message flow explained above needs to be amended, so that it is compatible with any ESB.
The Outward Java APIs to be used as part of the message flow is given below:
Action | Method Name | Input | Output | |
---|---|---|---|---|
Node 1 - Retreive XSLT name and tranform using XSLT | ||||
Return the attributes of the polled If event to be used for processing | HashMap<String, String> com.temenos.PP.PP_ESBOutward_OutwardVariables.setGlobalVariables(Document document) | Incoming message (polled if event) as a document |
"Return Values will be available as a name value pair . (OutgoingMessageType pacs.008,ClearingChannel STEP2, FTNumber, SendersReference,FileRefrence,BulkReference,BulkCount,TransactionCount" |
Store all the returned named value pairs in local variables so that it can be used further on for the message processing |
Retreive the XSLT name | String com.temenos.PP.PP_ESBOutward_OutwardVariables.getBodyXSLT(Document document) | Incoming message (polled if event) as a document | Returns the name of the XSLT |
"Use the XSLT name retrieved in the specific ESB layer so that the transformation can be done dynamically.The XSLT name will be as follows OutgoingMessageFormat-ClearingTransactionType-CleairngID pacs.008-CT-STEP2, pacs.003-DD-STEP2 " |
Node 2 - XSL Transformation Node | ||||
NA | NA | NA | NA | NA |
Node 3 - To be invoked when there is a failure in Node2 | ||||
This method should be called only if there is failure in schema validation. | String updateBlobAndSentFile(HashMap<String,String> globalvariables) | To the existing Node 1's name value pairs stored in local variables (refer row 3 above) , add new name value pair with the name Has Exception with a value Yes and pass it as input | Output returned from this method will be in the sent to the OutboundNode(Temenos). | Based on the input sent to this method, the output will be formed to pass as input to the T24Outbound Node. |
Node 4 - To be invoked when Node2 is successful | ||||
Get the transformed XML | "HashMap<String, Document> com.temenos.PP.PP_ESBOutward_OutwardVariables.getBody(Document document, HashMap<String, String> globalvariables) " | Incoming message as a document and Node 1's name value pairs stored in local variables (refer row 3 above) | Returns the Body of the XML message as a name value pair with Name Body | "Output needs to be stored in a local variable Body so that the transformed transaction stored can be used later during bulking of transactions/bulks." |
"Check if file exists (Incase a message within the file has been processed before, then, it denotes that the file exists. Else, it does not)" | ||||
Case 1 : Assume file does not exist | ||||
"This method is not required if header is not applicable for the incoming message" | String com.temenos.PP.PP_ESBOutward_OutwardVariables.getHeaderXSLT(HashMap<String, String> globalvariables) | Node 1's name value pairs stored in local variables (refer row 3 above) | XSLT name of the header |
"From here pass control to XSL tramsformation node to transform the header using the XSLT which we have received as output.The name of the xslt will follow the below naming convention ClearingId+ClearingTransactionType STEP2CT.xslt STEP2DD.xslt |
"HashMap<Document, HashMap<String, Boolean>> com.temenos.PP.PP_ESBOutward_OutwardVariables.formSingleFile(Document document, HashMap<String, String> globalvariables) " | Transformed header from previous node as a document and Node 1's name value pairs stored in local variables (refer row 3 above) | "Formed file with one transaction's information(including header). Name value pair holding Variabe 'FileStatus' and Value True or False " | "Value True indiciates that the file is complete and it is to be sent out. Value False indicates that the file is incomplete and transactions for the file are yet to be processed. In this case, the file will be stored in a temporary directory. This temporary directory needs to be defined in the ESB.The method will look for a property file to refer tags to form the file. The details of the property file is given in the document" | |
Case 2 : Assume file exists | HashMap<Document,HashMap<String,Boolean>> formFile(HashMap<String,String> globalvariables,String StoredFilepath) | Node 1's name value pairs stored in local variables (refer row 3 above) and the path where the file has been stored temporarily | "Formed file with transaction(s) information. Name value pair holding Variabe 'FileStatus' and Value True or False " | "Value True indicates that the file is complete and it is to be sent out. Value False indicates that the file is incomplete and transactions for the file are yet to be processed. In this case, the file will be stored in a temporary directory. This temporary directory needs to be defined in the ESB." |
String getFileReference(HashMap<String,String> globalvariables) | Node 1's name value pairs stored in local variables (refer row 3 above) | Returned FileReference (unique for each file) | The fileReference returned from this method can be used in the ESB layer to set the name of the file getting generated. This filename can be used to store the outputXMLin OutputFolder | |
String updateBlobAndSentFile(HashMap<String,String> globalvariables) | Node 1's name value pairs stored in local variables (refer row 3 above) | Output returned from this method will be in the sent to the OutboundNode(Temenos). | Based on the input sent to this method, the output will be formed to pass as input to the T24Outbound Node. | |
public static String validateXMLAgainstXsd(HashMap<String,String> globalVar,byte[] inputXmlPath) | Node 1's name value pairs stored in local variables (refer row 3 above) and the incoming message in byte array | Success or failure msg of xsd validation | Output msg appended with 1@@@ indicates the xml file is valid with respect to xsd and Value 0@@@ indicates either xsd validation failure or xsd path not configured or xsd folders or files are not available. The name of the xsd folder formed will be as follows ClearingId+ClearingTransactionType.XSD should be placed in the folder for the method to take and do the validation.ExampleFolderName-STEP2CT | |
public static String getFileReferenceWithExcepHandled(HashMap<String,String> globalvariables) | Node 1's name value pairs stored in local variables (refer row 3 above) | Filename appended with -ERROR | Output needs to be stored in local variable and passed as a file name for File Output node |
In this topic