//Contact Form Free Trial Pop Up //Contact Form Subscription Pop Up //Download - Licence Agreement


Rosetta

INGEST
Convert your structured documents such as XML into CDM objects

Alternatively you can contact us to learn more

Rosetta Ingest converts FpML 5.x and Rosetta Workbench Event XML messages into ISDA CDM 1.x Java objects.

FpML® (Financial products Markup Language, from fpml.org) is the open source XML standard for electronic dealing and processing of OTC derivatives.

Once converted into a CDM (Java) object, Rosetta Ingest can then further serialise it into a JSON representation, as per the following 2-step process:

Please note that you must be an ISDA member to have access to the ISDA CDM.

Example

In this example we ingest an XLM file called “ird-ex01-vanilla-swap.xml”. This file comes as part of a set of example documents within the ISDA CDM distribution package. The original input document is shown below:

ird-ex01-vanilla-swap.xml

<?xml version="1.0" encoding="utf-8"?>
<dataDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.fpml.org/FpML-5/confirmation ../../schemas/fpml-5-10/confirmation/fpml-main-5-10.xsd"
  xmlns="http://www.fpml.org/FpML-5/confirmation" fpmlVersion="5-10">
  <trade>
    <tradeHeader>
      <partyTradeIdentifier>
        <partyReference href="party1" />
        <tradeId tradeIdScheme="http://www.partyA.com/swaps/trade-id">TW9235</tradeId>
      </partyTradeIdentifier>
      <partyTradeIdentifier>
        <partyReference href="party2" />
        <tradeId tradeIdScheme="http://www.barclays.com/swaps/trade-id">SW2000</tradeId>
      </partyTradeIdentifier>
      <tradeDate>1994-12-12</tradeDate>
    </tradeHeader>
    <swap>
      <swapStream>
        <payerPartyReference href="party1" />
        <receiverPartyReference href="party2" />
        <calculationPeriodDates id="floatingCalcPeriodDates">
          <effectiveDate>
            <unadjustedDate>1994-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>NONE</businessDayConvention>
            </dateAdjustments>
          </effectiveDate>
          <terminationDate>
            <unadjustedDate>1999-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>MODFOLLOWING</businessDayConvention>
              <businessCenters id="primaryBusinessCenters">
                <businessCenter>DEFR</businessCenter>
              </businessCenters>
            </dateAdjustments>
          </terminationDate>
          <calculationPeriodDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </calculationPeriodDatesAdjustments>
          <calculationPeriodFrequency>
            <periodMultiplier>6</periodMultiplier>
            <period>M</period>
            <rollConvention>14</rollConvention>
          </calculationPeriodFrequency>
        </calculationPeriodDates>
        <paymentDates>
          <calculationPeriodDatesReference href="floatingCalcPeriodDates" />
          <paymentFrequency>
            <periodMultiplier>6</periodMultiplier>
            <period>M</period>
          </paymentFrequency>
          <payRelativeTo>CalculationPeriodEndDate</payRelativeTo>
          <paymentDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </paymentDatesAdjustments>
        </paymentDates>
        <resetDates id="resetDates">
          <calculationPeriodDatesReference href="floatingCalcPeriodDates" />
          <resetRelativeTo>CalculationPeriodStartDate</resetRelativeTo>
          <fixingDates>
            <periodMultiplier>-2</periodMultiplier>
            <period>D</period>
            <dayType>Business</dayType>
            <businessDayConvention>NONE</businessDayConvention>
            <businessCenters>
              <businessCenter>GBLO</businessCenter>
            </businessCenters>
            <dateRelativeTo href="resetDates" />
          </fixingDates>
          <resetFrequency>
            <periodMultiplier>6</periodMultiplier>
            <period>M</period>
          </resetFrequency>
          <resetDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </resetDatesAdjustments>
        </resetDates>
        <calculationPeriodAmount>
          <calculation>
            <notionalSchedule>
              <notionalStepSchedule>
                <initialValue>50000000.00</initialValue>
                <currency currencyScheme="http://www.fpml.org/coding-scheme/external/iso4217">EUR</currency>
              </notionalStepSchedule>
            </notionalSchedule>
            <floatingRateCalculation>
              <floatingRateIndex>EUR-LIBOR-BBA</floatingRateIndex>
              <indexTenor>
                <periodMultiplier>6</periodMultiplier>
                <period>M</period>
              </indexTenor>
            </floatingRateCalculation>
            <dayCountFraction>ACT/360</dayCountFraction>
          </calculation>
        </calculationPeriodAmount>
      </swapStream>
      <swapStream>
        <payerPartyReference href="party2" />
        <receiverPartyReference href="party1" />
        <calculationPeriodDates id="fixedCalcPeriodDates">
          <effectiveDate>
            <unadjustedDate>1994-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>NONE</businessDayConvention>
            </dateAdjustments>
          </effectiveDate>
          <terminationDate>
            <unadjustedDate>1999-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>MODFOLLOWING</businessDayConvention>
              <businessCentersReference href="primaryBusinessCenters" />
            </dateAdjustments>
          </terminationDate>
          <calculationPeriodDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </calculationPeriodDatesAdjustments>
          <calculationPeriodFrequency>
            <periodMultiplier>1</periodMultiplier>
            <period>Y</period>
            <rollConvention>14</rollConvention>
          </calculationPeriodFrequency>
        </calculationPeriodDates>
        <paymentDates>
          <calculationPeriodDatesReference href="fixedCalcPeriodDates" />
          <paymentFrequency>
            <periodMultiplier>1</periodMultiplier>
            <period>Y</period>
          </paymentFrequency>
          <payRelativeTo>CalculationPeriodEndDate</payRelativeTo>
          <paymentDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </paymentDatesAdjustments>
        </paymentDates>
        <calculationPeriodAmount>
          <calculation>
            <notionalSchedule>
              <notionalStepSchedule>
                <initialValue>50000000.00</initialValue>
                <currency currencyScheme="http://www.fpml.org/coding-scheme/external/iso4217">EUR</currency>
              </notionalStepSchedule>
            </notionalSchedule>
            <fixedRateSchedule>
              <initialValue>0.06</initialValue>
            </fixedRateSchedule>
            <dayCountFraction>30E/360</dayCountFraction>
          </calculation>
        </calculationPeriodAmount>
      </swapStream>
    </swap>
  </trade>
  <party id="party1">
    <partyId partyIdScheme="http://www.fpml.org/coding-scheme/external/iso9362">PARTYAUS33</partyId>
    <partyName>Party A</partyName>
  </party>
  <party id="party2">
    <partyId partyIdScheme="http://www.fpml.org/coding-scheme/external/iso9362">BARCGB2L</partyId>
  </party>
</dataDocument>
Once ingested and converted as a CDM (Java) object, it can be serialised into a JSON file. The output file is called “ird-ex01-vanilla-swap.json” and also comes as part of the ISDA CDM distribution package:

ird-ex01-vanilla-swap.json

{
  "contractIdentifier" : [ {
    "identifierValue" : {
      "identifier" : "TW9235",
      "identifierScheme" : "http://www.partyA.com/swaps/trade-id"
    },
    "partyReference" : "party1"
  }, {
    "identifierValue" : {
      "identifier" : "SW2000",
      "identifierScheme" : "http://www.barclays.com/swaps/trade-id"
    },
    "partyReference" : "party2"
  } ],
  "contractualProduct" : {
    "economicTerms" : {
      "payout" : {
        "interestRatePayout" : [ {
          "calculationPeriodDates" : {
            "calculationPeriodDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "calculationPeriodFrequency" : {
              "period" : "M",
              "periodMultiplier" : 6,
              "rollConvention" : "_14"
            },
            "effectiveDate" : {
              "adjustableDate" : {
                "dateAdjustments" : {
                  "businessDayConvention" : "NONE"
                },
                "unadjustedDate" : "1994-12-14"
              }
            },
            "id" : "floatingCalcPeriodDates",
            "terminationDate" : {
              "dateAdjustments" : {
                "businessCenters" : {
                  "businessCenter" : [ "DEFR" ],
                  "id" : "primaryBusinessCenters"
                },
                "businessDayConvention" : "MODFOLLOWING"
              },
              "unadjustedDate" : "1999-12-14"
            }
          },
          "dayCountFraction" : "ACT_360",
          "interestRate" : {
            "floatingRate" : {
              "floatingRateIndex" : "EUR_LIBOR_BBA",
              "indexTenor" : {
                "period" : "M",
                "periodMultiplier" : 6
              }
            }
          },
          "payerReceiver" : {
            "payerPartyReference" : "party1",
            "receiverPartyReference" : "party2"
          },
          "paymentDates" : {
            "calculationPeriodDatesReference" : "floatingCalcPeriodDates",
            "payRelativeTo" : "CALCULATION_PERIOD_END_DATE",
            "paymentDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "paymentFrequency" : {
              "period" : "M",
              "periodMultiplier" : 6
            }
          },
          "quantity" : {
            "notionalSchedule" : {
              "notionalStepSchedule" : {
                "initialValue" : 50000000.00,
                "currency" : "EUR",
                "currencyScheme" : "http://www.fpml.org/coding-scheme/external/iso4217"
              }
            }
          },
          "resetDates" : {
            "calculationPeriodDatesReference" : "floatingCalcPeriodDates",
            "fixingDates" : {
              "period" : "D",
              "periodMultiplier" : -2,
              "dayType" : "BUSINESS",
              "businessCenters" : {
                "businessCenter" : [ "GBLO" ]
              },
              "businessDayConvention" : "NONE",
              "dateRelativeTo" : "resetDates"
            },
            "id" : "resetDates",
            "resetDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "resetFrequency" : {
              "period" : "M",
              "periodMultiplier" : 6
            },
            "resetRelativeTo" : "CALCULATION_PERIOD_START_DATE"
          }
        }, {
          "calculationPeriodDates" : {
            "calculationPeriodDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "calculationPeriodFrequency" : {
              "period" : "Y",
              "periodMultiplier" : 1,
              "rollConvention" : "_14"
            },
            "effectiveDate" : {
              "adjustableDate" : {
                "dateAdjustments" : {
                  "businessDayConvention" : "NONE"
                },
                "unadjustedDate" : "1994-12-14"
              }
            },
            "id" : "fixedCalcPeriodDates",
            "terminationDate" : {
              "dateAdjustments" : {
                "businessCenters" : {
                  "businessCentersReference" : "primaryBusinessCenters"
                },
                "businessDayConvention" : "MODFOLLOWING"
              },
              "unadjustedDate" : "1999-12-14"
            }
          },
          "dayCountFraction" : "_30E_360",
          "interestRate" : {
            "fixedRate" : {
              "initialValue" : 0.06
            }
          },
          "payerReceiver" : {
            "payerPartyReference" : "party2",
            "receiverPartyReference" : "party1"
          },
          "paymentDates" : {
            "calculationPeriodDatesReference" : "fixedCalcPeriodDates",
            "payRelativeTo" : "CALCULATION_PERIOD_END_DATE",
            "paymentDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "paymentFrequency" : {
              "period" : "Y",
              "periodMultiplier" : 1
            }
          },
          "quantity" : {
            "notionalSchedule" : {
              "notionalStepSchedule" : {
                "initialValue" : 50000000.00,
                "currency" : "EUR",
                "currencyScheme" : "http://www.fpml.org/coding-scheme/external/iso4217"
              }
            }
          }
        } ]
      },
      "rosettaKeyValue" : "c4057420"
    },
    "productIdentification" : {
      "productQualifier" : "InterestRate_IRSwap_FixedFloat_PlainVanilla"
    }
  },
  "party" : [ {
    "id" : "party1",
    "legalEntity" : {
      "name" : "Party A"
    },
    "partyId" : [ "PARTYAUS33" ],
    "partyIdScheme" : "http://www.fpml.org/coding-scheme/external/iso9362"
  }, {
    "id" : "party2",
    "partyId" : [ "BARCGB2L" ],
    "partyIdScheme" : "http://www.fpml.org/coding-scheme/external/iso9362"
  } ],
  "tradeDate" : {
    "date" : "1994-12-12"
  }
}
The ingestion process outputs its own set of diagnostics:

Diagnostics

{
  "mappingIssues": [],
  "preValidationIssues": [],
  "validationIssues": [
    "Validation SUCCESS on [Contract] for [DATA_RULE] [DeliverableObligations_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Obligations_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [CreditEvents_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Restructuring_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [AdditionalFixedPayments_mortgages] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FloatingAmountEvents_mortgages] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [CreditEvents_mortgages] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_hedgingParty] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_determiningParty] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_barrierDerterminationAgent] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_clearedDate] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_1] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_7] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_8] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_11] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_19] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_20] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_23] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_24] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_25] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_32] ",
    "Validation SUCCESS on [Contract] for [MODEL_INSTANCE] [Contract] ",
    "Validation SUCCESS on [ContractualProduct] for [MODEL_INSTANCE] [ContractualProduct] ",
    "Validation SUCCESS on [ProductIdentification] for [MODEL_INSTANCE] [ProductIdentification] ",
    "Validation SUCCESS on [EconomicTerms] for [DATA_RULE] [Vanilla_AnnualPaymentDifferentResetFrequency] ",
    "Validation SUCCESS on [EconomicTerms] for [DATA_RULE] [Vanilla_SemiAnnualPayment_QuarterlyReset] ",
    "Validation SUCCESS on [EconomicTerms] for [DATA_RULE] [Vanilla_QuarterlyPayment_MonthlyReset] ",
    "Validation SUCCESS on [EconomicTerms] for [MODEL_INSTANCE] [EconomicTerms] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [InterestRatePayout_quantity] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [InterestRatePayout_dayCountFraction] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [InterestRatePayout_paymentDates] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [PaymentDates_payRelativeTo] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [PaymentDates_paymentDatesAdjustments] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [PaymentDates_paymentFrequency] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [FpML_cd_26_28] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [FpML_cd_27] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [FpML_cd_30] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [CalculationPeriodDates_calculationPeriodDatesAdjustments] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [CalculationPeriodDates_calculationPeriodFrequency] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [ResetDates_interestRateSwap] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [TransactedPrice_marketPrice] ",
    "Validation SUCCESS on [Payout] for [MODEL_INSTANCE] [Payout] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_futureValueNotional] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FutureValueNotional_terminationDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_actualQuantity] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_6] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_8] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_23] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_24] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InitialStub_FinalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FinalStub_lastRegularPaymentDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [SettlementProvision_settlementCurrency] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_7_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_9] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_29] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [CalculationPeriodDates_firstCompoundingPeriodEndDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FirstRegularPeriodStartDate_initialStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [LastRegularPeriodEndDate_finalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [MODEL_INSTANCE] [InterestRatePayout] ",
    "Validation SUCCESS on [ContractualQuantity] for [CHOICE_RULE] [ContractualQuantity_choice] ",
    "Validation SUCCESS on [ContractualQuantity] for [MODEL_INSTANCE] [ContractualQuantity] ",
    "Validation SUCCESS on [NotionalSchedule] for [DATA_RULE] [FpML_ird_61] ",
    "Validation SUCCESS on [NotionalSchedule] for [MODEL_INSTANCE] [NotionalSchedule] ",
    "Validation SUCCESS on [NonNegativeAmountSchedule] for [MODEL_INSTANCE] [NonNegativeAmountSchedule] ",
    "Validation SUCCESS on [ResetDates] for [DATA_RULE] [ResetDates_rateCutOffDaysOffset] ",
    "Validation SUCCESS on [ResetDates] for [DATA_RULE] [ResetFrequency_weekly] ",
    "Validation SUCCESS on [ResetDates] for [DATA_RULE] [ResetFrequency_notWeekly] ",
    "Validation SUCCESS on [ResetDates] for [MODEL_INSTANCE] [ResetDates] ",
    "Validation SUCCESS on [ResetFrequency] for [DATA_RULE] [FpML_ird_49] ",
    "Validation SUCCESS on [ResetFrequency] for [MODEL_INSTANCE] [ResetFrequency] ",
    "Validation SUCCESS on [RelativeDateOffset] for [MODEL_INSTANCE] [RelativeDateOffset] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_14] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_16] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_17] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_18] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_20] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_21] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_22] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice1] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice2] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [MODEL_INSTANCE] [CalculationPeriodDates] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_57] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_58] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_60] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [MODEL_INSTANCE] [CalculationPeriodFrequency] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [DateInstances] for [CHOICE_RULE] [DateInstances_choice] ",
    "Validation SUCCESS on [DateInstances] for [MODEL_INSTANCE] [DateInstances] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [FpML_ird_35_cd_31] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [PaymentDates_paymentDaysOffset] ",
    "Validation SUCCESS on [PaymentDates] for [CHOICE_RULE] [PaymentDates_choice] ",
    "Validation SUCCESS on [PaymentDates] for [MODEL_INSTANCE] [PaymentDates] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_period] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_periodMultiplier] ",
    "Validation SUCCESS on [Frequency] for [MODEL_INSTANCE] [Frequency] ",
    "Validation SUCCESS on [PayerReceiver] for [MODEL_INSTANCE] [PayerReceiver] ",
    "Validation SUCCESS on [InterestRate] for [MODEL_INSTANCE] [InterestRate] ",
    "Validation SUCCESS on [FloatingRateCalculation] for [MODEL_INSTANCE] [FloatingRateCalculation] ",
    "Validation SUCCESS on [Period] for [DATA_RULE] [Period_period] ",
    "Validation SUCCESS on [Period] for [MODEL_INSTANCE] [Period] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_futureValueNotional] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FutureValueNotional_terminationDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_actualQuantity] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_6] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_8] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_23] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_24] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InitialStub_FinalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FinalStub_lastRegularPaymentDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [SettlementProvision_settlementCurrency] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_7_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_9] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_29] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [CalculationPeriodDates_firstCompoundingPeriodEndDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FirstRegularPeriodStartDate_initialStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [LastRegularPeriodEndDate_finalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [MODEL_INSTANCE] [InterestRatePayout] ",
    "Validation SUCCESS on [ContractualQuantity] for [CHOICE_RULE] [ContractualQuantity_choice] ",
    "Validation SUCCESS on [ContractualQuantity] for [MODEL_INSTANCE] [ContractualQuantity] ",
    "Validation SUCCESS on [NotionalSchedule] for [DATA_RULE] [FpML_ird_61] ",
    "Validation SUCCESS on [NotionalSchedule] for [MODEL_INSTANCE] [NotionalSchedule] ",
    "Validation SUCCESS on [NonNegativeAmountSchedule] for [MODEL_INSTANCE] [NonNegativeAmountSchedule] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_14] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_16] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_17] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_18] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_20] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_21] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_22] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice1] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice2] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [MODEL_INSTANCE] [CalculationPeriodDates] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_57] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_58] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_60] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [MODEL_INSTANCE] [CalculationPeriodFrequency] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [DateInstances] for [CHOICE_RULE] [DateInstances_choice] ",
    "Validation SUCCESS on [DateInstances] for [MODEL_INSTANCE] [DateInstances] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [FpML_ird_35_cd_31] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [PaymentDates_paymentDaysOffset] ",
    "Validation SUCCESS on [PaymentDates] for [CHOICE_RULE] [PaymentDates_choice] ",
    "Validation SUCCESS on [PaymentDates] for [MODEL_INSTANCE] [PaymentDates] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_period] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_periodMultiplier] ",
    "Validation SUCCESS on [Frequency] for [MODEL_INSTANCE] [Frequency] ",
    "Validation SUCCESS on [PayerReceiver] for [MODEL_INSTANCE] [PayerReceiver] ",
    "Validation SUCCESS on [InterestRate] for [MODEL_INSTANCE] [InterestRate] ",
    "Validation SUCCESS on [Schedule] for [DATA_RULE] [FpML_ird_25] ",
    "Validation SUCCESS on [Schedule] for [MODEL_INSTANCE] [Schedule] ",
    "Validation SUCCESS on [DateInstances] for [CHOICE_RULE] [DateInstances_choice] ",
    "Validation SUCCESS on [DateInstances] for [MODEL_INSTANCE] [DateInstances] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [CHOICE_RULE] [PartyContractIdentifier_choice] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [MODEL_INSTANCE] [PartyContractIdentifier] ",
    "Validation SUCCESS on [IdentifierValue] for [MODEL_INSTANCE] [IdentifierValue] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [CHOICE_RULE] [PartyContractIdentifier_choice] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [MODEL_INSTANCE] [PartyContractIdentifier] ",
    "Validation SUCCESS on [IdentifierValue] for [MODEL_INSTANCE] [IdentifierValue] ",
    "Validation SUCCESS on [Party] for [MODEL_INSTANCE] [Party] ",
    "Validation SUCCESS on [LegalEntity] for [MODEL_INSTANCE] [LegalEntity] ",
    "Validation SUCCESS on [Party] for [MODEL_INSTANCE] [Party] "
  ],
  "qualifications": [
    "QualificationResult { SUCCESS on [EconomicTerms:InterestRate_IRSwap_FixedFloat_PlainVanilla] }"
  ]
}
Here we can observe that all Mapping Rules and Validation Rules executed as part of the ingestion process were successful. As the ingested FpML file corresponds to a Plain-Vanilla Fixed-Float IR Swap, the Qualification Rule that looks to identify the type of instrument from its economic terms was also successful. This translates into the “productQualifier” field in the JSON output to be populated with the corresponding intrument type name:

 

 

"productIdentification" : {
  "productQualifier" : "InterestRate_IRSwap_FixedFloat_PlainVanilla"
}

5 Minute Quick Start Guide

Rosetta Ingest is provided as two components:

1) a (Java) Client API, that can be pulled from REGnosys Maven repository
2) a Server side, as Docker images that can be pulled from REGnosys registry and run as a Docker container

1) Java Client API

Rosetta Ingest comes packaged with a Java Client API that provides easy access to the service.

You must add the REGnosys Maven repository to your settings.xml. You will be provided access credentials on purchase.

Sample settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <server>
      <username>[USER NAME]</username>
      <password>[ENCRYTED PASSWORD]</password>
      <id>snapshots</id>
    </server>
  </servers>

  <profiles>
    <profile>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>libs-release</name>
          <url>https://regnosys.jfrog.io/regnosys/libs-release</url>
        </repository>
        <repository>
          <snapshots />
          <id>snapshots</id>
          <name>libs-snapshot</name>
          <url>https://regnosys.jfrog.io/regnosys/libs-snapshot</url>
        </repository>
      </repositories>
      <id>artifactory</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
</settings>
  The Java Client API is simple and is a thin wrapper on top of a REST client providing quick and easy access to the ISDA CDM:

RosettaIngestService

public interface RosettaIngestService {

   /**
    * Ingests a single request
    * @param document - A RosettaIngestRequest containing a document to be ingested
    * @return An object containing the RosettaObject along with an id from the request, issues encountered ingesting and qualifications.
    * If a fatal error was encountered ingesting then the rosettaInstance may be null and errors will be contained in the validation info.
    */
   <T extends RosettaModelObject> RosettaIngestResponse<T> ingest(RosettaIngestRequest<T> document);
   
   /**
    * @see RosettaIngestService#ingest(RosettaIngestRequest)
    * @param documents - a list of requests to process
    * @return a list of the responses - see ingest for details
    */
   <T extends RosettaModelObject> RosettaIngestResponses<T> ingestMultiple(List<RosettaIngestRequest<T>> documents);

To add a dependency on Rosetta Ingest Client using Maven

 <dependency>
    <groupId>com.regnosys</groupId>
    <artifactId>rosetta-ingest-client</artifactId>
    <version>LATEST</version>
</dependency>

To add a dependency using Gradle

compile(group: 'com.regnosys', name: 'rosetta-ingest-client', version: 'LATEST')

Create a RosettaIngestService

You must specify the host and port of the Ingest Service (see section Server Install With Docker).

RosettaIngestService service = new HttpIngestServiceImpl(serverHost, serverPost)

You’re now ready to ingest your first documents and create CDM (Java) objects. There are 3 types of XML documents that you can ingest: a) FpML Contract, b) CDN JSON Contract and c) Rosetta Workbench Event.

a) Ingest an FpML Contract

File contractXml = new File("contract-example.xml");

RosettaIngestRequest<Contract> req = new RosettaIngestRequest<>(
        contractXml,                    // Input document
        RosettaIngestSourceType.FpML,   // Input type
        Contract.class);                // CDM type

RosettaIngestResponse<Contract> response = service.ingest(req); // ingest the input toContract
List<String> preValidationIssues = response.getPreValidationIssues(); // Validation issues for the FpML document
List<String> validationIssues = response.getValidationIssues(); // Validation issues for the CDM Contract
Contract contract = response.getRosettaInstance(); // validated Contract class

b) Ingest a CDM JSON Contract

File contractJson = new File("contract-example.json");

RosettaIngestRequest<Contract> req = new RosettaIngestRequest<>(
        contractJson,                   // Input document
        RosettaIngestSourceType.Json,   // Input type
        Contract.class);                // CDM type

RosettaIngestResponse<Contract> response = service.ingest(req); // ingest the input to Contract
Contract contract = response.getRosettaInstance(); // Contract class

c) Ingest a Rosetta Workbench Event

File eventXml = new File("event-example.xml");

RosettaIngestRequest<Event> req = new RosettaIngestRequest<>(
        eventXml,                       // Input document
        RosettaIngestSourceType.FpML,   // Input type
        Event.class);                   // CDM type

RosettaIngestResponse<Event> response = service.ingest(req); // ingest the input to Event
List<String> preValidationIssues = response.getPreValidationIssues(); // Validation issues for the FpML document
List<String> validationIssues = response.getValidationIssues(); // Validation issues for the CDM Event
Event event = response.getRosettaInstance(); // validated Event class

Java Client CLI

Rosetta Ingest also comes packaged with a Java Command Line Interface to provide easy access to the service. The CLI tool can be run directly from the rosetta-ingest-client-cli.jar file available from Maven.
java -jar rosetta-ingest-client.jar -h

usage: IngestFpML [-h] [-c CONTRACTS] [-e EVENTS] [-o OUTPUT] host:port

ingest FpML files into Rosetta

positional arguments:
host:port host and port of ingest service to connect to

named arguments:
-h, --help show this help message and exit
-c CONTRACTS, --contracts CONTRACTS
Name of a direcory containing contract FpML files to convert
-e EVENTS, --events EVENTS
Name of a direcory containing event FpML files to convert
-o OUTPUT, --output OUTPUT
directory to write Json serialized output objects to

2) Server Install with Docker

Rosetta Ingest Docker images can be pulled from REGnosys registry and run as a Docker container. You need to have Docker client properly installed and configured on your machine. For details about installing and using Docker, please refer to the Docker documentation.

Pulling the Docker Image

You must log into the REGnosys Docker registry. You will be provided access credentials on purchase.
To login to the docker registry, use the below command:
docker login -u [USER] -p [ENCRYPTED PASSWORD]  regnosys-docker-registry.jfrog.io
To pull the docker container, use the following command:
$ docker pull regnosys-docker-registry.jfrog.io/rosetta-ingest-service:latest
latest: regnosys-docker-registry.jfrog.io/rosetta-ingest-service
be8881be8156: Pull complete 
4b23eec42f0e: Pull complete 
Digest: sha256:689d886d22fed2a280238365718c0d771cc9cf789ffdd6966561c80473737c6b
Status: Downloaded newer image forregnosys-docker-registry.jfrog.io/rosetta-ingest-service:latest

Running the Docker Image

You can list the Docker images you have downloaded using the docker images command, which should display something like the following output:
$ docker images

REPOSITORY                                                   TAG          IMAGE ID        CREATED      SIZE
regnosys-docker-registry.jfrog.io/rosetta-ingest-service     latest       9bf3d30bdbe734  minutes ago  292MB

To run the service, run the command:

$ docker run --name rosetta-ingest -d -p 9000:5846 regnosys-docker-registry.jfrog.io/rosetta-ingest-service:latest

This will run the service in the background and expose the port 9000.

Check the Docker Logs

$ docker logs rosetta-ingest

Check if the service is running

Rosetta Ingest contains a swagger UI in order to check the available REST apis. See https://swagger.io/tools/swagger-ui. To check the service is up and running go to http://localhost:9000/api/swagger

Versions

All of the below docker commands use the ‘latest’ version of the service. To use a specific version, you can specify the version after the container name (e.g. rosetta-ingest-service:1.0.45) The latest versions of the Rosetta Ingest client and server are synchronised, with new releases consisting of new Docker images for the server and new Maven jars for the client. Even though these releases need not be synchronised with ISDA CDM releases, the latest versions of Rosetta Ingest will only be compatible with older ISDA CDM versions up to a point.

SSL

Rosetta Ingest does not provide HTTPS mode. It is recommended that a proxy is placed in front of the service to secure it. Please see https://hub.docker.com/r/jrcs/letsencrypt-nginx-proxy-companion.

coming soon

Rosetta Ingest converts FpML 5.x and Rosetta Workbench Event XML messages into ISDA CDM 1.x Java objects.

FpML® (Financial products Markup Language, from fpml.org) is the open source XML standard for electronic dealing and processing of OTC derivatives.

Once converted into a CDM (Java) object, Rosetta Ingest can then further serialise it into a JSON representation, as per the following 2-step process:

Please note that you must be an ISDA member to have access to the ISDA CDM.

Example

In this example we ingest an XLM file called “ird-ex01-vanilla-swap.xml”. This file comes as part of a set of example documents within the ISDA CDM distribution package. The original input document is shown below:

ird-ex01-vanilla-swap.xml

<?xml version="1.0" encoding="utf-8"?>
<dataDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.fpml.org/FpML-5/confirmation ../../schemas/fpml-5-10/confirmation/fpml-main-5-10.xsd"
  xmlns="http://www.fpml.org/FpML-5/confirmation" fpmlVersion="5-10">
  <trade>
    <tradeHeader>
      <partyTradeIdentifier>
        <partyReference href="party1" />
        <tradeId tradeIdScheme="http://www.partyA.com/swaps/trade-id">TW9235</tradeId>
      </partyTradeIdentifier>
      <partyTradeIdentifier>
        <partyReference href="party2" />
        <tradeId tradeIdScheme="http://www.barclays.com/swaps/trade-id">SW2000</tradeId>
      </partyTradeIdentifier>
      <tradeDate>1994-12-12</tradeDate>
    </tradeHeader>
    <swap>
      <swapStream>
        <payerPartyReference href="party1" />
        <receiverPartyReference href="party2" />
        <calculationPeriodDates id="floatingCalcPeriodDates">
          <effectiveDate>
            <unadjustedDate>1994-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>NONE</businessDayConvention>
            </dateAdjustments>
          </effectiveDate>
          <terminationDate>
            <unadjustedDate>1999-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>MODFOLLOWING</businessDayConvention>
              <businessCenters id="primaryBusinessCenters">
                <businessCenter>DEFR</businessCenter>
              </businessCenters>
            </dateAdjustments>
          </terminationDate>
          <calculationPeriodDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </calculationPeriodDatesAdjustments>
          <calculationPeriodFrequency>
            <periodMultiplier>6</periodMultiplier>
            <period>M</period>
            <rollConvention>14</rollConvention>
          </calculationPeriodFrequency>
        </calculationPeriodDates>
        <paymentDates>
          <calculationPeriodDatesReference href="floatingCalcPeriodDates" />
          <paymentFrequency>
            <periodMultiplier>6</periodMultiplier>
            <period>M</period>
          </paymentFrequency>
          <payRelativeTo>CalculationPeriodEndDate</payRelativeTo>
          <paymentDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </paymentDatesAdjustments>
        </paymentDates>
        <resetDates id="resetDates">
          <calculationPeriodDatesReference href="floatingCalcPeriodDates" />
          <resetRelativeTo>CalculationPeriodStartDate</resetRelativeTo>
          <fixingDates>
            <periodMultiplier>-2</periodMultiplier>
            <period>D</period>
            <dayType>Business</dayType>
            <businessDayConvention>NONE</businessDayConvention>
            <businessCenters>
              <businessCenter>GBLO</businessCenter>
            </businessCenters>
            <dateRelativeTo href="resetDates" />
          </fixingDates>
          <resetFrequency>
            <periodMultiplier>6</periodMultiplier>
            <period>M</period>
          </resetFrequency>
          <resetDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </resetDatesAdjustments>
        </resetDates>
        <calculationPeriodAmount>
          <calculation>
            <notionalSchedule>
              <notionalStepSchedule>
                <initialValue>50000000.00</initialValue>
                <currency currencyScheme="http://www.fpml.org/coding-scheme/external/iso4217">EUR</currency>
              </notionalStepSchedule>
            </notionalSchedule>
            <floatingRateCalculation>
              <floatingRateIndex>EUR-LIBOR-BBA</floatingRateIndex>
              <indexTenor>
                <periodMultiplier>6</periodMultiplier>
                <period>M</period>
              </indexTenor>
            </floatingRateCalculation>
            <dayCountFraction>ACT/360</dayCountFraction>
          </calculation>
        </calculationPeriodAmount>
      </swapStream>
      <swapStream>
        <payerPartyReference href="party2" />
        <receiverPartyReference href="party1" />
        <calculationPeriodDates id="fixedCalcPeriodDates">
          <effectiveDate>
            <unadjustedDate>1994-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>NONE</businessDayConvention>
            </dateAdjustments>
          </effectiveDate>
          <terminationDate>
            <unadjustedDate>1999-12-14</unadjustedDate>
            <dateAdjustments>
              <businessDayConvention>MODFOLLOWING</businessDayConvention>
              <businessCentersReference href="primaryBusinessCenters" />
            </dateAdjustments>
          </terminationDate>
          <calculationPeriodDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </calculationPeriodDatesAdjustments>
          <calculationPeriodFrequency>
            <periodMultiplier>1</periodMultiplier>
            <period>Y</period>
            <rollConvention>14</rollConvention>
          </calculationPeriodFrequency>
        </calculationPeriodDates>
        <paymentDates>
          <calculationPeriodDatesReference href="fixedCalcPeriodDates" />
          <paymentFrequency>
            <periodMultiplier>1</periodMultiplier>
            <period>Y</period>
          </paymentFrequency>
          <payRelativeTo>CalculationPeriodEndDate</payRelativeTo>
          <paymentDatesAdjustments>
            <businessDayConvention>MODFOLLOWING</businessDayConvention>
            <businessCentersReference href="primaryBusinessCenters" />
          </paymentDatesAdjustments>
        </paymentDates>
        <calculationPeriodAmount>
          <calculation>
            <notionalSchedule>
              <notionalStepSchedule>
                <initialValue>50000000.00</initialValue>
                <currency currencyScheme="http://www.fpml.org/coding-scheme/external/iso4217">EUR</currency>
              </notionalStepSchedule>
            </notionalSchedule>
            <fixedRateSchedule>
              <initialValue>0.06</initialValue>
            </fixedRateSchedule>
            <dayCountFraction>30E/360</dayCountFraction>
          </calculation>
        </calculationPeriodAmount>
      </swapStream>
    </swap>
  </trade>
  <party id="party1">
    <partyId partyIdScheme="http://www.fpml.org/coding-scheme/external/iso9362">PARTYAUS33</partyId>
    <partyName>Party A</partyName>
  </party>
  <party id="party2">
    <partyId partyIdScheme="http://www.fpml.org/coding-scheme/external/iso9362">BARCGB2L</partyId>
  </party>
</dataDocument>
Once ingested and converted as a CDM (Java) object, it can be serialised into a JSON file. The output file is called “ird-ex01-vanilla-swap.json” and also comes as part of the ISDA CDM distribution package:

ird-ex01-vanilla-swap.json

{
  "contractIdentifier" : [ {
    "identifierValue" : {
      "identifier" : "TW9235",
      "identifierScheme" : "http://www.partyA.com/swaps/trade-id"
    },
    "partyReference" : "party1"
  }, {
    "identifierValue" : {
      "identifier" : "SW2000",
      "identifierScheme" : "http://www.barclays.com/swaps/trade-id"
    },
    "partyReference" : "party2"
  } ],
  "contractualProduct" : {
    "economicTerms" : {
      "payout" : {
        "interestRatePayout" : [ {
          "calculationPeriodDates" : {
            "calculationPeriodDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "calculationPeriodFrequency" : {
              "period" : "M",
              "periodMultiplier" : 6,
              "rollConvention" : "_14"
            },
            "effectiveDate" : {
              "adjustableDate" : {
                "dateAdjustments" : {
                  "businessDayConvention" : "NONE"
                },
                "unadjustedDate" : "1994-12-14"
              }
            },
            "id" : "floatingCalcPeriodDates",
            "terminationDate" : {
              "dateAdjustments" : {
                "businessCenters" : {
                  "businessCenter" : [ "DEFR" ],
                  "id" : "primaryBusinessCenters"
                },
                "businessDayConvention" : "MODFOLLOWING"
              },
              "unadjustedDate" : "1999-12-14"
            }
          },
          "dayCountFraction" : "ACT_360",
          "interestRate" : {
            "floatingRate" : {
              "floatingRateIndex" : "EUR_LIBOR_BBA",
              "indexTenor" : {
                "period" : "M",
                "periodMultiplier" : 6
              }
            }
          },
          "payerReceiver" : {
            "payerPartyReference" : "party1",
            "receiverPartyReference" : "party2"
          },
          "paymentDates" : {
            "calculationPeriodDatesReference" : "floatingCalcPeriodDates",
            "payRelativeTo" : "CALCULATION_PERIOD_END_DATE",
            "paymentDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "paymentFrequency" : {
              "period" : "M",
              "periodMultiplier" : 6
            }
          },
          "quantity" : {
            "notionalSchedule" : {
              "notionalStepSchedule" : {
                "initialValue" : 50000000.00,
                "currency" : "EUR",
                "currencyScheme" : "http://www.fpml.org/coding-scheme/external/iso4217"
              }
            }
          },
          "resetDates" : {
            "calculationPeriodDatesReference" : "floatingCalcPeriodDates",
            "fixingDates" : {
              "period" : "D",
              "periodMultiplier" : -2,
              "dayType" : "BUSINESS",
              "businessCenters" : {
                "businessCenter" : [ "GBLO" ]
              },
              "businessDayConvention" : "NONE",
              "dateRelativeTo" : "resetDates"
            },
            "id" : "resetDates",
            "resetDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "resetFrequency" : {
              "period" : "M",
              "periodMultiplier" : 6
            },
            "resetRelativeTo" : "CALCULATION_PERIOD_START_DATE"
          }
        }, {
          "calculationPeriodDates" : {
            "calculationPeriodDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "calculationPeriodFrequency" : {
              "period" : "Y",
              "periodMultiplier" : 1,
              "rollConvention" : "_14"
            },
            "effectiveDate" : {
              "adjustableDate" : {
                "dateAdjustments" : {
                  "businessDayConvention" : "NONE"
                },
                "unadjustedDate" : "1994-12-14"
              }
            },
            "id" : "fixedCalcPeriodDates",
            "terminationDate" : {
              "dateAdjustments" : {
                "businessCenters" : {
                  "businessCentersReference" : "primaryBusinessCenters"
                },
                "businessDayConvention" : "MODFOLLOWING"
              },
              "unadjustedDate" : "1999-12-14"
            }
          },
          "dayCountFraction" : "_30E_360",
          "interestRate" : {
            "fixedRate" : {
              "initialValue" : 0.06
            }
          },
          "payerReceiver" : {
            "payerPartyReference" : "party2",
            "receiverPartyReference" : "party1"
          },
          "paymentDates" : {
            "calculationPeriodDatesReference" : "fixedCalcPeriodDates",
            "payRelativeTo" : "CALCULATION_PERIOD_END_DATE",
            "paymentDatesAdjustments" : {
              "businessCenters" : {
                "businessCentersReference" : "primaryBusinessCenters"
              },
              "businessDayConvention" : "MODFOLLOWING"
            },
            "paymentFrequency" : {
              "period" : "Y",
              "periodMultiplier" : 1
            }
          },
          "quantity" : {
            "notionalSchedule" : {
              "notionalStepSchedule" : {
                "initialValue" : 50000000.00,
                "currency" : "EUR",
                "currencyScheme" : "http://www.fpml.org/coding-scheme/external/iso4217"
              }
            }
          }
        } ]
      },
      "rosettaKeyValue" : "c4057420"
    },
    "productIdentification" : {
      "productQualifier" : "InterestRate_IRSwap_FixedFloat_PlainVanilla"
    }
  },
  "party" : [ {
    "id" : "party1",
    "legalEntity" : {
      "name" : "Party A"
    },
    "partyId" : [ "PARTYAUS33" ],
    "partyIdScheme" : "http://www.fpml.org/coding-scheme/external/iso9362"
  }, {
    "id" : "party2",
    "partyId" : [ "BARCGB2L" ],
    "partyIdScheme" : "http://www.fpml.org/coding-scheme/external/iso9362"
  } ],
  "tradeDate" : {
    "date" : "1994-12-12"
  }
}
The ingestion process outputs its own set of diagnostics:

Diagnostics

{
  "mappingIssues": [],
  "preValidationIssues": [],
  "validationIssues": [
    "Validation SUCCESS on [Contract] for [DATA_RULE] [DeliverableObligations_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Obligations_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [CreditEvents_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Restructuring_physicalSettlementMatrix] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [AdditionalFixedPayments_mortgages] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FloatingAmountEvents_mortgages] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [CreditEvents_mortgages] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_hedgingParty] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_determiningParty] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_barrierDerterminationAgent] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [Contract_clearedDate] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_1] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_7] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_8] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_11] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_19] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_20] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_23] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_24] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_25] ",
    "Validation SUCCESS on [Contract] for [DATA_RULE] [FpML_cd_32] ",
    "Validation SUCCESS on [Contract] for [MODEL_INSTANCE] [Contract] ",
    "Validation SUCCESS on [ContractualProduct] for [MODEL_INSTANCE] [ContractualProduct] ",
    "Validation SUCCESS on [ProductIdentification] for [MODEL_INSTANCE] [ProductIdentification] ",
    "Validation SUCCESS on [EconomicTerms] for [DATA_RULE] [Vanilla_AnnualPaymentDifferentResetFrequency] ",
    "Validation SUCCESS on [EconomicTerms] for [DATA_RULE] [Vanilla_SemiAnnualPayment_QuarterlyReset] ",
    "Validation SUCCESS on [EconomicTerms] for [DATA_RULE] [Vanilla_QuarterlyPayment_MonthlyReset] ",
    "Validation SUCCESS on [EconomicTerms] for [MODEL_INSTANCE] [EconomicTerms] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [InterestRatePayout_quantity] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [InterestRatePayout_dayCountFraction] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [InterestRatePayout_paymentDates] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [PaymentDates_payRelativeTo] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [PaymentDates_paymentDatesAdjustments] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [PaymentDates_paymentFrequency] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [FpML_cd_26_28] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [FpML_cd_27] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [FpML_cd_30] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [CalculationPeriodDates_calculationPeriodDatesAdjustments] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [CalculationPeriodDates_calculationPeriodFrequency] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [ResetDates_interestRateSwap] ",
    "Validation SUCCESS on [Payout] for [DATA_RULE] [TransactedPrice_marketPrice] ",
    "Validation SUCCESS on [Payout] for [MODEL_INSTANCE] [Payout] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_futureValueNotional] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FutureValueNotional_terminationDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_actualQuantity] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_6] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_8] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_23] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_24] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InitialStub_FinalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FinalStub_lastRegularPaymentDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [SettlementProvision_settlementCurrency] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_7_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_9] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_29] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [CalculationPeriodDates_firstCompoundingPeriodEndDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FirstRegularPeriodStartDate_initialStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [LastRegularPeriodEndDate_finalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [MODEL_INSTANCE] [InterestRatePayout] ",
    "Validation SUCCESS on [ContractualQuantity] for [CHOICE_RULE] [ContractualQuantity_choice] ",
    "Validation SUCCESS on [ContractualQuantity] for [MODEL_INSTANCE] [ContractualQuantity] ",
    "Validation SUCCESS on [NotionalSchedule] for [DATA_RULE] [FpML_ird_61] ",
    "Validation SUCCESS on [NotionalSchedule] for [MODEL_INSTANCE] [NotionalSchedule] ",
    "Validation SUCCESS on [NonNegativeAmountSchedule] for [MODEL_INSTANCE] [NonNegativeAmountSchedule] ",
    "Validation SUCCESS on [ResetDates] for [DATA_RULE] [ResetDates_rateCutOffDaysOffset] ",
    "Validation SUCCESS on [ResetDates] for [DATA_RULE] [ResetFrequency_weekly] ",
    "Validation SUCCESS on [ResetDates] for [DATA_RULE] [ResetFrequency_notWeekly] ",
    "Validation SUCCESS on [ResetDates] for [MODEL_INSTANCE] [ResetDates] ",
    "Validation SUCCESS on [ResetFrequency] for [DATA_RULE] [FpML_ird_49] ",
    "Validation SUCCESS on [ResetFrequency] for [MODEL_INSTANCE] [ResetFrequency] ",
    "Validation SUCCESS on [RelativeDateOffset] for [MODEL_INSTANCE] [RelativeDateOffset] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_14] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_16] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_17] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_18] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_20] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_21] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_22] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice1] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice2] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [MODEL_INSTANCE] [CalculationPeriodDates] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_57] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_58] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_60] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [MODEL_INSTANCE] [CalculationPeriodFrequency] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [DateInstances] for [CHOICE_RULE] [DateInstances_choice] ",
    "Validation SUCCESS on [DateInstances] for [MODEL_INSTANCE] [DateInstances] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [FpML_ird_35_cd_31] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [PaymentDates_paymentDaysOffset] ",
    "Validation SUCCESS on [PaymentDates] for [CHOICE_RULE] [PaymentDates_choice] ",
    "Validation SUCCESS on [PaymentDates] for [MODEL_INSTANCE] [PaymentDates] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_period] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_periodMultiplier] ",
    "Validation SUCCESS on [Frequency] for [MODEL_INSTANCE] [Frequency] ",
    "Validation SUCCESS on [PayerReceiver] for [MODEL_INSTANCE] [PayerReceiver] ",
    "Validation SUCCESS on [InterestRate] for [MODEL_INSTANCE] [InterestRate] ",
    "Validation SUCCESS on [FloatingRateCalculation] for [MODEL_INSTANCE] [FloatingRateCalculation] ",
    "Validation SUCCESS on [Period] for [DATA_RULE] [Period_period] ",
    "Validation SUCCESS on [Period] for [MODEL_INSTANCE] [Period] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_futureValueNotional] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FutureValueNotional_terminationDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InterestRatePayout_actualQuantity] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_6] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_8] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_23] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_24] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [InitialStub_FinalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FinalStub_lastRegularPaymentDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [SettlementProvision_settlementCurrency] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_7_1] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_9] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FpML_ird_29] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [CalculationPeriodDates_firstCompoundingPeriodEndDate] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [FirstRegularPeriodStartDate_initialStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [DATA_RULE] [LastRegularPeriodEndDate_finalStub] ",
    "Validation SUCCESS on [InterestRatePayout] for [MODEL_INSTANCE] [InterestRatePayout] ",
    "Validation SUCCESS on [ContractualQuantity] for [CHOICE_RULE] [ContractualQuantity_choice] ",
    "Validation SUCCESS on [ContractualQuantity] for [MODEL_INSTANCE] [ContractualQuantity] ",
    "Validation SUCCESS on [NotionalSchedule] for [DATA_RULE] [FpML_ird_61] ",
    "Validation SUCCESS on [NotionalSchedule] for [MODEL_INSTANCE] [NotionalSchedule] ",
    "Validation SUCCESS on [NonNegativeAmountSchedule] for [MODEL_INSTANCE] [NonNegativeAmountSchedule] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_14] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_16] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_17] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_18] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_20] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_21] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [DATA_RULE] [FpML_ird_22] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice1] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [CHOICE_RULE] [CalculationPeriodDates_choice2] ",
    "Validation SUCCESS on [CalculationPeriodDates] for [MODEL_INSTANCE] [CalculationPeriodDates] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_57] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_58] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [DATA_RULE] [FpML_ird_60] ",
    "Validation SUCCESS on [CalculationPeriodFrequency] for [MODEL_INSTANCE] [CalculationPeriodFrequency] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [DateInstances] for [CHOICE_RULE] [DateInstances_choice] ",
    "Validation SUCCESS on [DateInstances] for [MODEL_INSTANCE] [DateInstances] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [AdjustableDate] for [CHOICE_RULE] [AdjustableDate_choice] ",
    "Validation SUCCESS on [AdjustableDate] for [MODEL_INSTANCE] [AdjustableDate] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [FpML_ird_35_cd_31] ",
    "Validation SUCCESS on [PaymentDates] for [DATA_RULE] [PaymentDates_paymentDaysOffset] ",
    "Validation SUCCESS on [PaymentDates] for [CHOICE_RULE] [PaymentDates_choice] ",
    "Validation SUCCESS on [PaymentDates] for [MODEL_INSTANCE] [PaymentDates] ",
    "Validation SUCCESS on [BusinessDayAdjustments] for [MODEL_INSTANCE] [BusinessDayAdjustments] ",
    "Validation SUCCESS on [BusinessCenters] for [CHOICE_RULE] [BusinessCenters_choice] ",
    "Validation SUCCESS on [BusinessCenters] for [MODEL_INSTANCE] [BusinessCenters] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_period] ",
    "Validation SUCCESS on [Frequency] for [DATA_RULE] [Frequency_periodMultiplier] ",
    "Validation SUCCESS on [Frequency] for [MODEL_INSTANCE] [Frequency] ",
    "Validation SUCCESS on [PayerReceiver] for [MODEL_INSTANCE] [PayerReceiver] ",
    "Validation SUCCESS on [InterestRate] for [MODEL_INSTANCE] [InterestRate] ",
    "Validation SUCCESS on [Schedule] for [DATA_RULE] [FpML_ird_25] ",
    "Validation SUCCESS on [Schedule] for [MODEL_INSTANCE] [Schedule] ",
    "Validation SUCCESS on [DateInstances] for [CHOICE_RULE] [DateInstances_choice] ",
    "Validation SUCCESS on [DateInstances] for [MODEL_INSTANCE] [DateInstances] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [CHOICE_RULE] [PartyContractIdentifier_choice] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [MODEL_INSTANCE] [PartyContractIdentifier] ",
    "Validation SUCCESS on [IdentifierValue] for [MODEL_INSTANCE] [IdentifierValue] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [CHOICE_RULE] [PartyContractIdentifier_choice] ",
    "Validation SUCCESS on [PartyContractIdentifier] for [MODEL_INSTANCE] [PartyContractIdentifier] ",
    "Validation SUCCESS on [IdentifierValue] for [MODEL_INSTANCE] [IdentifierValue] ",
    "Validation SUCCESS on [Party] for [MODEL_INSTANCE] [Party] ",
    "Validation SUCCESS on [LegalEntity] for [MODEL_INSTANCE] [LegalEntity] ",
    "Validation SUCCESS on [Party] for [MODEL_INSTANCE] [Party] "
  ],
  "qualifications": [
    "QualificationResult { SUCCESS on [EconomicTerms:InterestRate_IRSwap_FixedFloat_PlainVanilla] }"
  ]
}
Here we can observe that all Mapping Rules and Validation Rules executed as part of the ingestion process were successful. As the ingested FpML file corresponds to a Plain-Vanilla Fixed-Float IR Swap, the Qualification Rule that looks to identify the type of instrument from its economic terms was also successful. This translates into the “productQualifier” field in the JSON output to be populated with the corresponding intrument type name:

 

"productIdentification" : {
  "productQualifier" : "InterestRate_
   IRSwap_FixedFloat
   _PlainVanilla"
}

5 Minute Quick Start Guide

Rosetta Ingest is provided as two components: 1) a (Java) Client API, that can be pulled from REGnosys Maven repository 2) a Server side, as Docker images that can be pulled from REGnosys registry and run as a Docker container

1) Java Client API

Rosetta Ingest comes packaged with a Java Client API that provides easy access to the service.

You must add the REGnosys Maven repository to your settings.xml. You will be provided access credentials on purchase.

Sample settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <server>
      <username>[USER NAME]</username>
      <password>[ENCRYTED PASSWORD]</password>
      <id>snapshots</id>
    </server>
  </servers>

  <profiles>
    <profile>
      <repositories>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>libs-release</name>
          <url>https://regnosys.jfrog.io/regnosys/libs-release</url>
        </repository>
        <repository>
          <snapshots />
          <id>snapshots</id>
          <name>libs-snapshot</name>
          <url>https://regnosys.jfrog.io/regnosys/libs-snapshot</url>
        </repository>
      </repositories>
      <id>artifactory</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>artifactory</activeProfile>
  </activeProfiles>
</settings>
  The Java Client API is simple and is a thin wrapper on top of a REST client providing quick and easy access to the ISDA CDM:

RosettaIngestService

public interface RosettaIngestService {

   /**
    * Ingests a single request
    * @param document - A RosettaIngestRequest containing a document to be ingested
    * @return An object containing the RosettaObject along with an id from the request, issues encountered ingesting and qualifications.
    * If a fatal error was encountered ingesting then the rosettaInstance may be null and errors will be contained in the validation info.
    */
   <T extends RosettaModelObject> RosettaIngestResponse<T> ingest(RosettaIngestRequest<T> document);
   
   /**
    * @see RosettaIngestService#ingest(RosettaIngestRequest)
    * @param documents - a list of requests to process
    * @return a list of the responses - see ingest for details
    */
   <T extends RosettaModelObject> RosettaIngestResponses<T> ingestMultiple(List<RosettaIngestRequest<T>> documents);

To add a dependency on Rosetta Ingest Client using Maven

 <dependency>
    <groupId>com.regnosys</groupId>
    <artifactId>rosetta-ingest-client</artifactId>
    <version>LATEST</version>
</dependency>

To add a dependency using Gradle

compile(group: 'com.regnosys', name: 'rosetta-ingest-client', version: 'LATEST')

Create a RosettaIngestService

You must specify the host and port of the Ingest Service (see section Server Install With Docker).

RosettaIngestService service = new HttpIngestServiceImpl(serverHost, serverPost)

You’re now ready to ingest your first documents and create CDM (Java) objects. There are 3 types of XML documents that you can ingest: a) FpML Contract, b) CDN JSON Contract and c) Rosetta Workbench Event.

a) Ingest an FpML Contract

File contractXml = new File("contract-example.xml");

RosettaIngestRequest<Contract> req = new RosettaIngestRequest<>(
        contractXml,                    // Input document
        RosettaIngestSourceType.FpML,   // Input type
        Contract.class);                // CDM type

RosettaIngestResponse<Contract> response = service.ingest(req); // ingest the input toContract
List<String> preValidationIssues = response.getPreValidationIssues(); // Validation issues for the FpML document
List<String> validationIssues = response.getValidationIssues(); // Validation issues for the CDM Contract
Contract contract = response.getRosettaInstance(); // validated Contract class

b) Ingest a CDM JSON Contract

File contractJson = new File("contract-example.json");

RosettaIngestRequest<Contract> req = new RosettaIngestRequest<>(
        contractJson,                   // Input document
        RosettaIngestSourceType.Json,   // Input type
        Contract.class);                // CDM type

RosettaIngestResponse<Contract> response = service.ingest(req); // ingest the input to Contract
Contract contract = response.getRosettaInstance(); // Contract class

c) Ingest a Rosetta Workbench Event

File eventXml = new File("event-example.xml");

RosettaIngestRequest<Event> req = new RosettaIngestRequest<>(
        eventXml,                       // Input document
        RosettaIngestSourceType.FpML,   // Input type
        Event.class);                   // CDM type

RosettaIngestResponse<Event> response = service.ingest(req); // ingest the input to Event
List<String> preValidationIssues = response.getPreValidationIssues(); // Validation issues for the FpML document
List<String> validationIssues = response.getValidationIssues(); // Validation issues for the CDM Event
Event event = response.getRosettaInstance(); // validated Event class

Java Client CLI

Rosetta Ingest also comes packaged with a Java Command Line Interface to provide easy access to the service. The CLI tool can be run directly from the rosetta-ingest-client-cli.jar file available from Maven.
java -jar rosetta-ingest-client.jar -h

usage: IngestFpML [-h] [-c CONTRACTS] [-e EVENTS] [-o OUTPUT] host:port

ingest FpML files into Rosetta

positional arguments:
host:port host and port of ingest service to connect to

named arguments:
-h, --help show this help message and exit
-c CONTRACTS, --contracts CONTRACTS
Name of a direcory containing contract FpML files to convert
-e EVENTS, --events EVENTS
Name of a direcory containing event FpML files to convert
-o OUTPUT, --output OUTPUT
directory to write Json serialized output objects to

2) Server Install with Docker

Rosetta Ingest Docker images can be pulled from REGnosys registry and run as a Docker container. You need to have Docker client properly installed and configured on your machine. For details about installing and using Docker, please refer to the Docker documentation.

Pulling the Docker Image

You must log into the REGnosys Docker registry. You will be provided access credentials on purchase.
To login to the docker registry, use the below command:
docker login -u [USER] -p [ENCRYPTED PASSWORD]  regnosys-docker-registry.jfrog.io
To pull the docker container, use the following command:
$ docker pull regnosys-docker-registry.jfrog.io/rosetta-ingest-service:latest
latest: regnosys-docker-registry.jfrog.io/rosetta-ingest-service
be8881be8156: Pull complete 
4b23eec42f0e: Pull complete 
Digest: sha256:689d886d22fed2a280238365718c0d771cc9cf789ffdd6966561c80473737c6b
Status: Downloaded newer image forregnosys-docker-registry.jfrog.io/rosetta-ingest-service:latest

Running the Docker Image

You can list the Docker images you have downloaded using the docker images command, which should display something like the following output:
$ docker images

REPOSITORY                                                   TAG          IMAGE ID        CREATED      SIZE
regnosys-docker-registry.jfrog.io/rosetta-ingest-service     latest       9bf3d30bdbe734  minutes ago  292MB

To run the service, run the command:

$ docker run --name rosetta-ingest -d -p 9000:5846 regnosys-docker-registry.jfrog.io/rosetta-ingest-service:latest

This will run the service in the background and expose the port 9000.

Check the Docker Logs

$ docker logs rosetta-ingest

Check if the service is running

Rosetta Ingest contains a swagger UI in order to check the available REST apis. See https://swagger.io/tools/swagger-ui. To check the service is up and running go to http://localhost:9000/api/swagger

Versions

All of the below docker commands use the ‘latest’ version of the service. To use a specific version, you can specify the version after the container name (e.g. rosetta-ingest-service:1.0.45) The latest versions of the Rosetta Ingest client and server are synchronised, with new releases consisting of new Docker images for the server and new Maven jars for the client. Even though these releases need not be synchronised with ISDA CDM releases, the latest versions of Rosetta Ingest will only be compatible with older ISDA CDM versions up to a point.

SSL

Rosetta Ingest does not provide HTTPS mode. It is recommended that a proxy is placed in front of the service to secure it. Please see https://hub.docker.com/r/jrcs/letsencrypt-nginx-proxy-companion.

coming soon

Rosetta Ingest Subscription

Rosetta Ingest is delivered as an on-prem version.

Please fill-in the form to request your unique License Key and then refer to our User Guide to install and run Rosetta Ingest with your License Key.

You will be asked to sign our Licence Agreement before we provide you with your License Key. You will have already signed those terms if you previously used our Free Trial.

CONTACT DETAILS

Q