Introduction to MIFID
The Treasury applications (Foreign Exchange, Non-Deliverable Forward, Forward Rate Agreements, Swaps and Derivatives) have fields that allow to capture data for Markets in Financial Instruments Directive (MIFID) regulatory reporting. The OC module (OTC Clearing) acting as the framework to:
- Collate all the reporting data required in database files (defined in TX.TXN.BASE.PARMS)
- Generate reports from the client through Data Formatting Engine (DFE)
The existing functionality (available fields) is enhanced with new fields, which helps Treasury applications to store MiFID II reportable information.
Configuring MIFID
The user needs to configure the following to enable reporting in Markets in Financial Instruments Directive (MIFID) II regulation:
Installing OC Product
To install OC Module in Temenos Transact, the user needs to ensure the following:
- OC product is added to System parameter File (SPF).

- Company records have the OC application.

Setting Up Static Parameters
The parameter tables are mandatory to enable the OTC reporting functionality. In the below screenshot, the Reporting Entity field in OC.PARAMETER is mapped to MIFID report.
Creating Database and Mapping Fields
The following records are required to create a database and map the fields:

If the file name of reporting database is OC.MIFID.DATA, then ID of PARMS record needs to have the database name (that is, OC.MIFID.DATA). The user needs to perform the following for field mapping:
1. Enter the required values in the following fields as shown in the screenshot:
- Txn Base ID.1
- Field Name.1
- Field Fmt.1
- Fld Val Rtn.1
- Prefix
2. On validation, the application automatically populates the values in field names 2, 3, 4.
Field Name | Format | Length |
---|---|---|
REPORT.STATUS | IN2A | 50L |
TRAN.REF.NUMBER | IN2A | 50L |
VENUE.UTI | IN2A | 50L |
EXEC.ENTITY.ID | IN2A | 50L |
INV.FIRM | IN2A | 50L |
REPORTING.ENTITY | IN2A | 50L |
BUYER.ID | IN2A | 50L |
BUYER.COUNTRY | IN2A | 50L |
BUYER.NAME1 | IN2A | 50L |
BUYER.NAME2 | IN2A | 50L |
BUYER.DOB | IN2A | 50L |
BUYER.DECISION.MKR | IN2A | 50L |
BUYER.DEC.MKR.NAME1 | IN2A | 50L |
BUYER.DEC.MKR.NAME2 | IN2A | 50L |
BUYER.DEC.MKR.DOB | IN2A | 50L |
SELLER.ID | IN2A | 50L |
SELLER.COUNTRY | IN2A | 50L |
SELLER.NAME1 | IN2A | 50L |
SELLER.NAME2 | IN2A | 50L |
SELLER.DOB | IN2A | 50L |
SELLER.DECISION.MKR | IN2A | 50L |
SELLER.DEC.MKR.NAME1 | IN2A | 50L |
SELLER.DEC.MKR.NAME2 | IN2A | 50L |
SELLER.DEC.MKR.DOB | IN2A | 50L |
TRANSM.ORDR | IN2A | 50L |
DATE.TIME | IN2A | 50L |
TRADING.CAPACITY | IN2A | 50L |
QUANTITY | IN2A | 50L |
QUANTITY.CCY | IN2A | 50L |
PRICE | IN2A | 50L |
PRICE.CCY | IN2A | 50L |
EXEC.VENUE | IN2A | 50L |
BRANCH.CO | IN2A | 50L |
UPFRONT.PAYM | IN2A | 50L |
UPFRONT.PAYM.CCY | IN2A | 50L |
COMPLEX.TRADE.ID | IN2A | 50L |
ISIN | IN2A | 50L |
INSTRUMENT.NAME | IN2A | 50L |
UNIQUE.PROD.ID | IN2A | 50L |
CURRENCY1 | IN2A | 50L |
CURRENCY2 | IN2A | 50L |
PRICE.MULTIPLIER | IN2A | 50L |
UNIQUE.UND.PROD.ID | IN2A | 50L |
UNDERLYING.INDEX.NAME | IN2A | 50L |
UNDERLYING.TERM | IN2A | 50L |
OPTION.TYPE | IN2A | 50L |
STRIKE.PRICE | IN2A | 50L |
STRIKE.PRICE.CCY | IN2A | 50L |
OPTION.STYLE | IN2A | 50L |
EXPIRY.DATE | IN2A | 50L |
DELIVERY.TYPE | IN2A | 50L |
INV.DECISION.MKR.ID | IN2A | 50L |
INV.DEC.MKR.CO.CODE | IN2A | 50L |
MIFID.EXEC.ID | IN2A | 50L |
MIFID.EXEC.CO.CODE | IN2A | 50L |
WAIVER | IN2A | 50L |
OTC.PRATE.IND | IN2A | 50L |
MIFID.COMMODITY.IND | IN2A | 50L |
SFTR.INDICATOR | IN2A | 50L |
3. Define all the fields required in database with the field format and field validation routine.
4. Add the following list of fields in the TX.TXN.BASE.PARMS.
5. On authorisation of TX.TXN.BASE.PARMS record, it creates standard selection record (automatically) and relevant files.
- Remove the field added in the database
- Add new fields in between existing fields (but can add it at the end)










This application enables the user to map the fields. The ID of the record needs to be in the following format: APPLICATION*OC.MIFID.DATA.
- FRA.DEAL*OC.MIFID.DATA
- ND.DEAL*OC.MIFID.DATA
- SWAP*OC.MIFID.DATA
- DX.TRADE*OC.MIFID.DATA
- FOREX*OC.MIFID.DATA
Although, transaction reporting database (OC.MIFID.DATA) is the same for all OTC applications, the user have to define the mapping record for every OTC application that needs to be reported (as required). The OC.GEN.MIFID.UNIQUE.ID routine is attached to the ID field, which generates a unique ID.
The following are the types of field mapping:
- Linear Mapping
- Routine Mapping

The user can map the fields in OC.MIFID.DATA to the fields in Treasury applications (such as FX, ND.DEAL, FRA, DX.TRADE and SWAP). The below screenshot shows the sample list of fields that can be mapped directly from the application template (ND.DEAL). According to MIFID requirement, the following fields are mapped:
- Report Status field of OC.MIFID.DATA is mapped to MIFID Report Status field of ND.DEAL
- Tran Ref Number field of OC.MIFID.DATA is mapped to Uni Tran ID field of ND.DEAL


The user can manipulate field values (based on the fields in the application) by attaching a routine to return the field values that needs to be populated.
The following are the list of field mapping routines released under core:
LINEAR.MAPPING (fields are taken from respective application) | |||||
---|---|---|---|---|---|
OC.MIFID.DATA Field | NDF | FRA | SWAP | DX.TRADE | FOREX |
REPORT.STATUS | MIFID.REPORT.STATUS | MIFID.REPORT.STATUS | MIFID.REPORT.STATUS | MIFID.REPORT.STATUS | MIFID.REPORT.STATUS |
TRAN.REF.NUMBER | UNI.TRAN.ID | UNI.TRAN.ID | UNI.TRAN.ID | UNI.TRAN.ID | UNI.TRAN.ID |
VENUE.UTI | VENUE.UTI | VENUE.UTI | VENUE.UTI | VENUE.UTI | VENUE.UTI |
TRANSM.ORDR | TRANSM.ORDR | TRANSM.ORDR | TRANSM.ORDR | TRANSM.ORDR | TRANSM.ORDR |
DATE.TIME | EXEC.TIME.STAMP | EXEC.TIME.STAMP | EXEC.TIME.STAMP | EXEC.TIME.STAMP | EXEC.TIME.STAMP |
TRADING.CAPACITY | TRADING.CAPACITY | TRADING.CAPACITY | TRADING.CAPACITY | TRADING.CAPACITY | TRADING.CAPACITY |
QUANTITY | DEAL.AMOUNT | FRA.AMOUNT | LB.PRINCIPAL | ROUTINE.MAPPING | AMOUNT.BOUGHT |
QUANTITY.CCY | DEAL.CURRENCY | FRA.CURRENCY | LB.CURRENCY | ROUTINE.MAPPING | CURRENCY.BOUGHT |
PRICE | NOTIONAL.RATE | INTEREST.RATE | ROUTINE MAPPING | PRICE.TRADED | ROUTINE MAPPING |
PRICE.CCY | NA | NA | NA | CONTRACT.CCY | CURRENCY.SOLD |
EXEC.VENUE | EXEC.VENUE | EXEC.VENUE | EXEC.VENUE | EXEC.VENUE | EXEC.VENUE |
UPFRONT.PAYM | NA | NA | NA | ROUTINE.MAPPING | NA |
UPFRONT.PAYM.CCY | NA | NA | NA | CONTRACT.CCY | NA |
COMPLEX.TRADE.ID | COMPLEX.TRADE.ID | COMPLEX.TRADE.ID | COMPLEX.TRADE.ID | COMPLEX.TRADE.ID | COMPLEX.TRADE.ID |
PRICE.MULTIPLIER | NA | NA | NA | CONTRACT.SIZE | NA |
UNIQUE.UND.PROD.ID | NA | NA | NA | ROUTINE.MAPPING | NA |
UNDERLYING.INDEX.NAME | NA | NA | NA | ROUTINE.MAPPING | NA |
UNDERLYING.TERM | NA | NA | NA | ROUTINE.MAPPING | NA |
MIFID.COMMODITY.IND | NA | NA | NA | MIFID.COMMODITY.IND | NA |
STRIKE.PRICE | NA | NA | NA | STRIKE.PRICE | NA |
STRIKE.PRICE.CCY | NA | NA | NA | CONTRACT.CCY | NA |
OPTION.TYPE | NA | NA | NA | OPTION.TYPE | NA |
OPTION.STYLE | NA | NA | NA | OPTION.STYLE | NA |
EXPIRY.DATE | NA | NA | NA | ROUTINE.MAPPING | NA |
WAIVER | WAIVER.INDICATOR | WAIVER.INDICATOR | WAIVER.INDICATOR | WAIVER.INDICATOR | WAIVER.INDICATOR |
OTC.PRATE.IND | OTC.PTRADE.IND | OTC.PTRADE.IND | OTC.PTRADE.IND | OTC.PTRADE.IND | OTC.PTRADE.IND |
SFTR.INDICATOR | SFTR.INDICATOR | SFTR.INDICATOR | SFTR.INDICATOR | SFTR.INDICATOR | SFTR.INDICATOR |
ROUTINE.MAPPING (fields are mapped through routines) | |||||
---|---|---|---|---|---|
OC.MIFID.DATA Field | NDF | FRA | SWAP | DX.TRADE | FOREX |
EXEC.ENTITY.ID | OC.UPD.EXEC.ENTITY.ID | OC.UPD.EXEC.ENTITY.ID | OC.UPD.EXEC.ENTITY.ID | OC.UPD.EXEC.ENTITY.ID | OC.UPD.EXEC.ENTITY.ID |
INV.FIRM | OC.UPD.INV.FIRM | OC.UPD.INV.FIRM | OC.UPD.INV.FIRM | OC.UPD.INV.FIRM | OC.UPD.INV.FIRM |
REPORTING.ENTITY | OC.UPD.REP.ENTITY | OC.UPD.REP.ENTITY | OC.UPD.REP.ENTITY | OC.UPD.REP.ENTITY | OC.UPD.REP.ENTITY |
BUYER.ID | OC.UPD.BUY.ID | OC.UPD.BUY.ID | OC.UPD.BUY.ID | OC.UPD.BUY.ID | OC.UPD.BUY.ID |
BUYER.COUNTRY | OC.UPD.BUY.COUNTRY | OC.UPD.BUY.COUNTRY | OC.UPD.BUY.COUNTRY | OC.UPD.BUY.COUNTRY | OC.UPD.BUY.COUNTRY |
BUYER.NAME1 | OC.UPD.BUY.NAME1 | OC.UPD.BUY.NAME1 | OC.UPD.BUY.NAME1 | OC.UPD.BUY.NAME1 | OC.UPD.BUY.NAME1 |
BUYER.NAME2 | OC.UPD.BUY.NAME2 | OC.UPD.BUY.NAME2 | OC.UPD.BUY.NAME2 | OC.UPD.BUY.NAME2 | OC.UPD.BUY.NAME2 |
BUYER.DOB | OC.UPD.BUY.DOB | OC.UPD.BUY.DOB | OC.UPD.BUY.DOB | OC.UPD.BUY.DOB | OC.UPD.BUY.DOB |
BUYER.DECISION.MKR | OC.UPD.BUY.DEC.MKR | OC.UPD.BUY.DEC.MKR | OC.UPD.BUY.DEC.MKR | OC.UPD.BUY.DEC.MKR | OC.UPD.BUY.DEC.MKR |
BUYER.DEC.MKR.NAME1 | OC.UPD.BUY.DEC.MKR.NAME1 | OC.UPD.BUY.DEC.MKR.NAME1 | OC.UPD.BUY.DEC.MKR.NAME1 | OC.UPD.BUY.DEC.MKR.NAME1 | OC.UPD.BUY.DEC.MKR.NAME1 |
BUYER.DEC.MKR.NAME2 | OC.UPD.BUY.DEC.MKR.NAME2 | OC.UPD.BUY.DEC.MKR.NAME2 | OC.UPD.BUY.DEC.MKR.NAME2 | OC.UPD.BUY.DEC.MKR.NAME2 | OC.UPD.BUY.DEC.MKR.NAME2 |
BUYER.DEC.MKR.DOB | OC.UPD.BUY.DEC.MKR.DOB | OC.UPD.BUY.DEC.MKR.DOB | OC.UPD.BUY.DEC.MKR.DOB | OC.UPD.BUY.DEC.MKR.DOB | OC.UPD.BUY.DEC.MKR.DOB |
SELLER.ID | OC.UPD.SELL.ID | OC.UPD.SELL.ID | OC.UPD.SELL.ID | OC.UPD.SELL.ID | OC.UPD.SELL.ID |
SELLER.COUNTRY | OC.UPD.SELL.COUNTRY | OC.UPD.SELL.COUNTRY | OC.UPD.SELL.COUNTRY | OC.UPD.SELL.COUNTRY | OC.UPD.SELL.COUNTRY |
SELLER.NAME1 | OC.UPD.SELL.NAME1 | OC.UPD.SELL.NAME1 | OC.UPD.SELL.NAME1 | OC.UPD.SELL.NAME1 | OC.UPD.SELL.NAME1 |
SELLER.NAME2 | OC.UPD.SELL.NAME2 | OC.UPD.SELL.NAME2 | OC.UPD.SELL.NAME2 | OC.UPD.SELL.NAME2 | OC.UPD.SELL.NAME2 |
SELLER.DOB | OC.UPD.SELL.DOB | OC.UPD.SELL.DOB | OC.UPD.SELL.DOB | OC.UPD.SELL.DOB | OC.UPD.SELL.DOB |
SELLER.DECISION.MKR | OC.UPD.SELL.DEC.MKR | OC.UPD.SELL.DEC.MKR | OC.UPD.SELL.DEC.MKR | OC.UPD.SELL.DEC.MKR | OC.UPD.SELL.DEC.MKR |
SELLER.DEC.MKR.NAME1 | OC.UPD.SELL.DEC.MKR.NAME1 | OC.UPD.SELL.DEC.MKR.NAME1 | OC.UPD.SELL.DEC.MKR.NAME1 | OC.UPD.SELL.DEC.MKR.NAME1 | OC.UPD.SELL.DEC.MKR.NAME1 |
SELLER.DEC.MKR.NAME2 | OC.UPD.SELL.DEC.MKR.NAME2 | OC.UPD.SELL.DEC.MKR.NAME2 | OC.UPD.SELL.DEC.MKR.NAME2 | OC.UPD.SELL.DEC.MKR.NAME2 | OC.UPD.SELL.DEC.MKR.NAME2 |
SELLER.DEC.MKR.DOB | OC.UPD.SELL.DEC.MKR.DOB | OC.UPD.SELL.DEC.MKR.DOB | OC.UPD.SELL.DEC.MKR.DOB | OC.UPD.SELL.DEC.MKR.DOB | OC.UPD.SELL.DEC.MKR.DOB |
PRICE | LINEAR MAPPING | LINEAR MAPPING | OC.UPD.PRICE | LINEAR MAPPING | OC.UPD.PRICE |
BRANCH.CO | OC.UPD.BRANC.CO | OC.UPD.BRANC.CO | OC.UPD.BRANC.CO | OC.UPD.BRANC.CO | OC.UPD.BRANC.CO |
UPFRONT.PAYM | NA | NA | OC.UPD.UPFRONT.PMT | OC.UPD.UPFRONT.PMT | NA |
ISIN | OC.UPD.ISN | OC.UPD.ISN | OC.UPD.ISN | OC.UPD.ISN | OC.UPD.ISN |
INSTRUMENT.NAME | OC.UPD.INSTR.NAME | OC.UPD.INSTR.NAME | OC.UPD.INSTR.NAME | OC.UPD.INSTR.NAME | OC.UPD.INSTR.NAME |
UNIQUE.PROD.ID | OC.UPD.UNIQUE.PROD.ID | OC.UPD.UNIQUE.PROD.ID | OC.UPD.UNIQUE.PROD.ID | OC.UPD.UNIQUE.PROD.ID | OC.UPD.UNIQUE.PROD.ID |
CURRENCY1 | OC.UPD.CCY.1 | OC.UPD.CCY.1 | OC.UPD.CCY.1 | OC.UPD.CCY.1 | OC.UPD.CCY.1 |
CURRENCY2 | OC.UPD.CCY.2 | NA | OC.UPD.CCY.2 | OC.UPD.CCY.2 | OC.UPD.CCY.2 |
UNIQUE.UND.PROD.ID | NA | NA | NA | OC.UPD.UNIQUE.UND.PROD.ID | NA |
EXPIRY.DATE | LINEAR MAPPING | LINEAR MAPPING | LINEAR MAPPING | OC.UPD.EXPIRY.DATE | LINEAR MAPPING |
DELIVERY.TYPE | OC.UPD.DEL.TYPE | OC.UPD.DEL.TYPE | OC.UPD.DEL.TYPE | OC.UPD.DEL.TYPE | OC.UPD.DEL.TYPE |
INV.DECISION.MKR.ID | OC.UPD.INV.DEC.MKR | OC.UPD.INV.DEC.MKR | OC.UPD.INV.DEC.MKR | OC.UPD.INV.DEC.MKR | OC.UPD.INV.DEC.MKR |
INV.DEC.MKR.CO.CODE | OC.UPD.INV.DEC.MKR.COMP | OC.UPD.INV.DEC.MKR.COMP | OC.UPD.INV.DEC.MKR.COMP | OC.UPD.INV.DEC.MKR.COMP | OC.UPD.INV.DEC.MKR.COMP |
MIFID.EXEC.ID | OC.UPD.MIFID.EXEC.ID | OC.UPD.MIFID.EXEC.ID | OC.UPD.MIFID.EXEC.ID | OC.UPD.MIFID.EXEC.ID | OC.UPD.MIFID.EXEC.ID |
MIFID.EXEC.CO.CODE | OC.UPD.MIFID.EXEC.ID.COMP | OC.UPD.MIFID.EXEC.ID.COMP | OC.UPD.MIFID.EXEC.ID.COMP | OC.UPD.MIFID.EXEC.ID.COMP | OC.UPD.MIFID.EXEC.ID.COMP |
QUANTITY | LINEAR MAPPING | LINEAR MAPPING | LINEAR MAPPING | OC.UPD.QUANTITY | LINEAR MAPPING |
QUANTITY.CCY | LINEAR MAPPING | LINEAR MAPPING | LINEAR MAPPING | OC.UPD.QUANTITY.CCY | LINEAR MAPPING |
UNDERLYING.INDEX.NAME | NA | NA | NA | OC.UPD.UNDERLYING.INDEX.NAME | NA |
UNDERLYING.TERM | NA | NA | NA | OC.UPD.UNDERLYING.TERM | NA |

A sample TX.TXN.BASE.MAPPING record for Non-Deliverable Forward (NDF) is shown in the below screenshots.






A sample TX.TXN.BASE.MAPPING record for Swaps (SW) is shown in the below screenshots.






A sample TX.TXN.BASE.MAPPING record for Forward Rate Agreements (FRA) is shown in the below screenshots.





A sample TX.TXN.BASE.MAPPING record for Derivatives (DX) is shown in the below screenshots.







A sample TX.TXN.BASE.MAPPING record for Foreign Exchange (FX) is shown in the below screenshots.







This application defines whether the database is for a particular application or needs to be updated. The ID of TX.CONDITION record is the application name. For example, FOREX, ND.DEAL, SWAP, FRA.DEAL, and DX.TRADE. Although, one application allows one TX.CONDITION record, the user can define conditions to update multiple databases.
- The TX.CONDITION record has conditions to update OC.MIFID.DATA, OC.TRADE.DATA and OC.VAL.COLL.DATA.
- The decision routines are released under core.
The user can remove the existing set of OC.TRADE.DATA and change it to the fields given in the below screenshot. This allows to generate the following reports to make the changes in OC.TRADE.DATA:
- Both the reports online
- Only European Market Infrastructure Regulation (EMIR) or Markets in Financial Instruments Directive (MIFID) report
The following are sample TX.CONDITION records:
Application | Screenshot |
---|---|
ND.DEAL |
![]() ![]() |
SWAP |
![]() ![]() |
FRA.DEAL |
![]() ![]() |
DX.TRADE |
![]() ![]() |
FOREX |
![]() ![]() ![]() ![]() ![]() ![]() |
In this topic