Enriching Integration Events with Temenos Transact Subroutine or API Results
You can create an API definition based enrichment for any exit point except for Inflow.
This additional feature allows you to call an API by associating its parameters with the fields of the Flow Enrichments tab and add the response to the Integration Framework event.
- Create an exit point and its associated flow of any type other than Banking Framework Event or Delivery Message. Read Defining the Flow for more information.
- Click the API Definition tab that is at the bottom of the Flow editor page.
- Expand the API Component Input section and API Component Enrichments.
- Decide whether you wish to call an external or internal API.
- To call an internal API:
- Select the Internal Component check box when an internal API is required to be called from the Event Designer project.
The Operation Name drop-down list is enabled and populated with the API names added to the IF.FLOW.API table.
To add an API and use this Transact table, you must have the appropriate PGM.FILE, SS, and FILE.CONTROL entries. - Select an entry from the Operation Name drop-down list.
- Select the Internal Component check box when an internal API is required to be called from the Event Designer project.
- To call an external API:
- Leave the Internal Component check box cleared.
The Operation Name drop-down list is enabled with the available operation names populated in it added from the IF.FLOW.API table and EXTERNAL record.
To add an external API and use this Transact table, you must have the appropriate IF.FLOW.API table entry EXTERNAL record with the OPERATION.NAME field populated in it. - Select the expected operation name.
The Component Parameters box is populated with the parameters of the chosen API along with their directions listed as IN or OUT.
The Add to Input and Add to Output buttons are disabled initially. These buttons are enabled when you select a parameter based on its specified direction (IN or OUT).
Do not select all the parameter and click Add to Input or Add to Output as this would lead to inconsistent flow definition and eventually the event XML.
- Leave the Internal Component check box cleared.
- To call an internal API:
- Select a parameter from the Component Parameters list box.
The two tables below get populated with the actual parameter name and type. Each table has three columns.
The second column Parameter Type has a drop-down list that is populated with the complex type.variable format for complex data types and just with the data type for simple data types.
The third column of each table also has a drop-down list that is populated with the fields to be associated in the Flow Enrichments tab.
- After you have added all the parameters and you have associated the corresponding fields, click Add to Flow to add the requested API parameters to the API enrichments section.
- Expand the API Component Enrichments section.
- Save the event and flow.
- Publish the event to Transact.
If any API with the output parameter of complex data type is added to the flow, a new schema is added to the schemas folder in the Integration project.
The same complex data type of the API output parameter is added among the namespaces of the master schema as well.
The schema for the field associated with any of the API output parameters has the application tag value replaced with the API name and the output parameter name replaced in the field tag.
The structure of the polled XML file obtained by adding the API definition has the namespace added in the appropriate field tags.
Internal Component supports only one input and output parameter. The input parameter can be mapped to one single flow field. Value markers separate the output parameter values. The input parameter is optional.


This section has a table with four columns: Service Name, Operation Name, Input Params and Output Params. These columns gets populated with the values chosen from the API Component Input section.
TIP: Click Remove to remove the selected rows from the table. When you click the Remove button after selecting a row, the associated fields present in that row are simultaneously removed from the Flow Enrichments tab.
The flow is updated with the ApiFields attribute.
TIP: To view the values, click the Source tab.
Complex Type Parameters for Internal API
The IF.COMPLEX.TYPE table is available to define the complex type, that is, the record ID. The table below describes the following fields:
Field Name | Description |
---|---|
FIELD.NAME | It is the name of a field in the complex type. It starts with an alphabet and allows only _ (underscore) as a special character |
FIELD.TYPE | Defines the associativity of the complex type. It can be empty or XX., XX<, XX> |
DATA.TYPE | Defines the data type. It can be an integer, string or Temenos Transact date |
HAS.SUBVALUE | It is a non-editable field with the field values as YES (Y) or NO (N). Select Y, if any of the field type is defined with the field type XX< |
TYPE.STRUCTURE | It is a no input field and used to store the structure of the complex type as dynamic array |
TYPE.SCHEMA | It is a no input field and used to store the structure of the complex type as dynamic schema |
You can create a record in IF.FLOW.API table with the subroutine name as the record ID and provide values for the following fields:
Field Name | Description |
---|---|
PARAM.NAME | It is the name of a parameter. |
PARAM.TYPE | Defines the type of a parameter. It can be a simple type, such as, string, numeric, date or a complex type. In case of complex type, the value provided should be a valid record ID in IF.COMPLEX.TYPE |
IF.INT.DIRECTION | Indicates the direction of the parameter. The field value can be IN or OUT |
EB.API.HOOK | Holds the EB API Hook name to allow Java based routine |
Defining Flows with Complex Type Parameter
To define the flows, follow the steps below:
- Navigate to API Definition tab to add the API to the flow.
- Select Internal Component to add an internal component to the flow.
- Select the required API from the Operation Name field drop-down.
- In the Component Parameters section:
- Click Add to Input to add the required input parameters, which needs to be mapped to a flow field.
- Click Add to Output to add the required output parameters, whose value needs to be added to the Integration Event.
- Map the flow field with the input parameter.
- Click Add to Flow.
- Save and publish the flow.
After the API selection, you can see the parameters listed below in the Component Parameters drop-down.
Sample Schemas
The sample schemas below are for your understanding.
Common-EventCommon.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.temenos.com/T24/event/Common/EventCommon" elementFormDefault="qualified" targetNamespace="http://www.temenos.com/T24/event/Common/EventCommon"> <xsd:complexType name="EventCommon"> <xsd:sequence> <xsd:element name="application" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="companyId" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="operator" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="today" type="xsd:date" minOccurs="0" maxOccurs="1" /> <xsd:element name="transactionStage" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="eventId" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="creationTime" type="xsd:dateTime" minOccurs="0" maxOccurs="1" /> <xsd:element name="customCommon" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="name" type="xsd:string" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:schema>
INTERNAL.API.TEST-TestingInternalParam.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.temenos.com/T24/TestingInternalParam/TestingInternalParamType" elementFormDefault="qualified" targetNamespace="http://www.temenos.com/T24/TestingInternalParam/TestingInternalParamType"> <xsd:complexType name="TestingInternalParamType"> <xsd:sequence> <xsd:element name="TestingField1" type="xsd:string" minOccurs="0" /> <xsd:element name="TestingField2List" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="TestingField2" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="TestingField3Group" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:sequence> <xsd:element name="TestingField3" type="xsd:string" minOccurs="0" /> <xsd:element name="TestingField4" type="xsd:string" minOccurs="0" /> <xsd:element name="TestingField5" type="xsd:string" minOccurs="0" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:schema>
TestingComplexType-BatchInternalAPIFlow.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.temenos.com/T24/event/TestingComplexType/BatchInternalAPIFlow" xmlns:ins="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow" xmlns:batch="http://www.temenos.com/T24/event/TestingComplexType/BatchInternalAPIFlow"> <xsd:import namespace="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow" schemaLocation="TestingComplexType-InternalAPIFlow.xsd" /> <xsd:complexType name="BatchInternalAPIFlowType"> <xsd:sequence> <xsd:element ref="ins:InternalAPIFlow" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> <xsd:element name="BatchInternalAPIFlow" type="batch:BatchInternalAPIFlowType" /> </xsd:schema>
TestingComplexType-InternalAPIFlow.xsd
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow" elementFormDefault="qualified" targetNamespace="http://www.temenos.com/T24/event/TestingComplexType/InternalAPIFlow" xmlns:ns0="http://www.temenos.com/T24/event/Common/EventCommon" xmlns:ns1="http://www.temenos.com/T24/INTERNAL.API.TEST/TestingInternalParam"> <xsd:import namespace="http://www.temenos.com/T24/event/Common/EventCommon" schemaLocation="Common-EventCommon.xsd" /> <xsd:import namespace="http://www.temenos.com/T24/INTERNAL.API.TEST/TestingInternalParam" schemaLocation="INTERNAL.API.TEST-TestingInternalParam.xsd" /> <xsd:element name="InternalAPIFlow"> <xsd:complexType> <xsd:sequence> <xsd:element ref="eventCommon" minOccurs="1" maxOccurs="1" /> <xsd:element ref="id" minOccurs="0" maxOccurs="1" /> <xsd:element ref="name1List" minOccurs="0" maxOccurs="1" /> <xsd:element ref="sector" minOccurs="0" maxOccurs="1" /> <xsd:element ref="shortNameList" minOccurs="0" maxOccurs="1" /> <xsd:element ref="language" minOccurs="0" maxOccurs="1" /> <xsd:element ref="TestingOutParam" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="eventCommon" type="ns0:EventCommon" /> <xsd:element name="id" type="xsd:string"> <xsd:annotation> <xsd:appinfo> <t24source application="CUSTOMER" field="@ID" /> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="name1List"> <xsd:complexType> <xsd:sequence> <xsd:element name="name1" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:appinfo> <t24source application="CUSTOMER" field="NAME.1" /> <fieldPiiAttribute value="DIRECT" /> <fieldPiiPurpose value="LEGITIMATE" /> <fieldPiiEraseOption value="ALPHA" /> <fieldPiiAccessibility value="ACCESS PORTABLE" /> </xsd:appinfo> </xsd:annotation> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="language" type="xsd:string" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sector" type="xsd:decimal"> <xsd:annotation> <xsd:appinfo> <t24source application="CUSTOMER" field="SECTOR" /> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="shortNameList"> <xsd:complexType> <xsd:sequence> <xsd:element name="shortName" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:appinfo> <t24source application="CUSTOMER" field="SHORT.NAME" /> <fieldPiiAttribute value="DIRECT" /> <fieldPiiPurpose value="LEGITIMATE" /> <fieldPiiEraseOption value="ALPHA" /> <fieldPiiAccessibility value="ACCESS PORTABLE" /> </xsd:appinfo> </xsd:annotation> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="language" type="xsd:string" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="language" type="xsd:decimal"> <xsd:annotation> <xsd:appinfo> <t24source application="CUSTOMER" field="LANGUAGE" /> </xsd:appinfo> </xsd:annotation> </xsd:element> <xsd:element name="TestingOutParam" type="ns1:TestingInternalParam"> <xsd:annotation> <xsd:appinfo> <t24source application="INTERNAL.API.TEST" field="TestingOutParam" /> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:schema>
Supported Complex Structure and the Sample XML Structures
The complex type structure samples are given below:
- ^ — Field Marker (FM)
- ] — Value Marker (VM)
- \ — Subvalue marker (SM)
Complex Type 1
It is similar to XX<XX. and XX>XX field structure.
The value for this output parameter is expected as:
ACCMGMTFEE\ACCCRINTEREST\ACCCRINTEREST\DEBIT]1\2\3\4^ ACCMGMTFEE\ACCCRINTEREST\ACCCRINTEREST\DEBIT]1\2\3\4
This represents a multi-value list in a associated multi-value (XX-XX.) (XX<XX-FIELD1, XX>XX-FIELD2).
Follow the similar way for externalised components.
Complex Type 2
It is similar to XX<, XX- and XX> combination. In the below sample, only two fields are shown but there can be any number of fields in a set.
The value for this output parameter is expected as:
ACCMGMTFEE]1^DEBIT]2
This represents the structure XX<field1, XX-field2 and XX>field3.
Follow the similar way for externalised components.
Complex Type 3
It is similar to XX<, XX-, XX-XX.and XX> combination. In the below sample, only two fields are shown but there can be any number of fields in a set.
The value for this output parameter is expected as:
ACCMGMTFEE]1]1\2^DEBIT]2]1\2
This represents the structure XX<field1, XX-field2 and XX>XX.field3. In this type, the field names needs to be appended as a FM separated list
Follow the similar way for externalised components.
Complex Type 4
It is similar to XX<XX< and XX>XX> combination. These, XX-XX., XX-, XX-XX- are the other types supported within this structure. The occurrence of the complex structure within this parameter is one.
The value for this output parameter is expected as:
ACCMGMTFEE^1^1\2]1\2
This represents the structure XX<field1, XX-field2 and XX-XX<field3 and XX-XX>field4.
Follow the similar way for externalised components.
In this topic