MyFormat

A configurable format conversion engine for bidirectional transformations between SWIFT standards and proprietary formats. Define mapping rules in spreadsheets, load them from a database via JDBC, or build them programmatically — and let the engine handle the conversion.
Mapping Rules + Engine = Conversion
Define field-level mapping rules in a spreadsheet, from a database via JDBC, or programmatically in Java. The MyFormatEngine applies those rules to transform messages bidirectionally between any supported format pair.
CSV / XML / JSON / Fixed-Length
Proprietary payload
Mapping Rules
Spreadsheet / JDBC / Java API
MyFormatEngine
MT / MX
Standard payload
MT → Proprietary

MT to CSV / XML Export

Extract data from MT messages into CSV, XML, or any flat-file format. Handles repetitive sequences by generating multiple output rows, with configurable row identifiers for headers, transactions, and footers.

Map MT fields and sequences to CSV columns or XML elements
Repetitive sequence expansion (e.g., MT102 sequences B → multiple CSV rows)
Row identifiers for header/transaction/footer structure
Built-in transformations: replace, prepend, stripStart, and more
CsvFileWriter for multi-message batch processing
java
// Load mapping rules from spreadsheet
MappingTableExcelLoader loader =
    new MappingTableExcelLoader(
        getResourceAsStream(
            "/myformat/mt2csv.xls"));
MappingTable table =
    loader.load("example 1");
table.setSourceFormat(FileFormat.MT);
table.setTargetFormat(FileFormat.CSV);

// Translate
String csv =
    MyFormatEngine.translate(fin, table);

// Output:
// HR,5362/MPB,1234567890,FOOBAR CORP
// TX,123,EUR,1250.0
// TX,124,EUR,1875.0
// FR,EUR,3135.0
Proprietary → MX

CSV / XML to MX Ingestion

Transform proprietary flat files into fully typed MX (ISO 20022) messages. Map CSV columns or XML elements directly to MX message paths, with automatic schema-aware object construction.

Map CSV columns to MX element paths
Specify the target MX type and version via SetupCommand
Output is a fully typed MX model object (e.g., MxPacs00800102)
Mapping rule validation before execution
Supports all MX message types and versions
java
// Load mapping rules
MappingTable table =
    loader.load("example1");
table.setSourceFormat(FileFormat.CSV);
table.setTargetFormat(FileFormat.MX);

// Set the target MX type
table.add(new MappingRule(
    MxTypePacs.pacs_008_001_02
        .mxId().id(),
    SetupCommand.mxType.name(),
    WriteMode.SETUP));

// Source CSV row
String input = "ABCDUSXXXXX,"
    + "FAB2019051402400300005,"
    + "0037 0039 RUE BOISSIERE,"
    + "75116,PARIS";

// Translate to MX
String out =
    MyFormatEngine.translate(input, table);
MxPacs00800102 mx =
    MxPacs00800102.parse(out);
Java API

Programmatic Mapping Rules

Define mapping rules entirely in Java code for maximum flexibility. Create MappingTable instances programmatically, apply inline transformations, and process multiple messages in batch using CsvFileWriter.

MappingRule with source selector, target selector, and transformations
Inline transformations: replace, prepend, stripStart, append, and more
Sequence and line selectors (e.g., "B/32B/1", "C/72/Line[2]")
Batch processing with CsvFileWriter for multi-message output
MappingTable validation API to verify rules before execution
java
// Define mapping rules programmatically
MappingTable t = new MappingTable(
    FileFormat.MT, FileFormat.CSV);

t.add(new MappingRule("20", "0"));
t.add(new MappingRule("21", "1"));
t.add(new MappingRule("B/32B/1", "2"));
t.add(new MappingRule("B/32B/2", "3",
    new Transformation(
        Key.replace, ",", ".")));
t.add(new MappingRule("B/58A/2", "4",
    new Transformation(
        Key.prepend, "#")));
t.add(new MappingRule(
    "C/72/Line[2]", "5",
    new Transformation(
        Key.stripStart, "/")));

// Batch processing
CsvFileWriter writer =
    new CsvFileWriter(out);
for (String msg : messages) {
    writer.write(
        MyFormatEngine.translate(msg, t));
}
Supported Format Pairs
Convert between any combination of these formats using the same mapping rule engine.

CSV

Comma-separated values with configurable delimiters, quoting, and multi-row output for repetitive sequences.

XML

Arbitrary XML structures for system integration. Map between XML elements and MT/MX fields bidirectionally.

JSON

JSON output for REST API integration and modern system interoperability. MT-to-JSON conversion support.

MT (FIN)

SWIFT MT messages as both source and target. Field-level selectors with sequence, tag, and component access.

MX (ISO 20022)

ISO 20022 MX messages as both source and target. XPath-style selectors for MX element paths, all types and versions.

Fixed-Length

Position-based flat files with configurable field widths. Common for legacy banking system integration.

Configuration

Spreadsheet & JDBC Mapping Rules

Define and maintain mapping rules in standard spreadsheets (.xls), or load them from a database via JDBC. Each mapping table contains source selectors, target selectors, and optional transformations. Non-developers can configure new transformations without touching code, while enterprise deployments can centralize rules in a database.

MappingTableExcelLoader reads named sheets from spreadsheet files
JDBC-based loading for centralized, database-driven mapping rule management
Each row defines: source selector → target selector → transformations
Multiple mapping tables per workbook or database for different conversion scenarios
Validation API to check mapping rules syntax before execution
Business analysts can configure mappings without Java development

Spreadsheet mapping screenshot — coming soon

MyFormat Specifications

Capabilities

Formats: CSV, XML, JSON, MT, MX, Fixed-Length
Direction: Any-to-any format conversion
Rules: Spreadsheet, JDBC database, or programmatic Java API
Transformations: replace, prepend, append, stripStart, stripEnd, and more
Batch: Multi-message processing with CsvFileWriter

Integration

Dependency: Prowide Integrator SDK
Entry Point: MyFormatEngine.translate(input, table)
Config: MappingTable + MappingRule + Transformation
Validation: table.validate() returns List<String> with issues
Selectors: MT field paths, MX element paths, CSV column indices
Connect any format to SWIFT
Eliminate manual data conversion. Contact our team for trial access and pricing.