MOND EAI/ESB by ConnectGlobalOne

Parsing a FPML Execution Advice

How do others do it?

Before looking into the MOND Semantic approach, lets take a look at how other tools parse and create messages.

Data Transformation using other tools

The industry has realized that manual, field to field mapping is time consuming and costly.

The MOND approach saves more than 80% time compared to traditional tools, improves quality and time to market, and enables agile development.

Semantic FPML Parser

MOND EAI/ESB uses a Semantic Repository to parse/create any structured document. This concept is completely different from any of the EAI/ESB tools available today.

This separates the business logic from the data format, enabling rapid and seamless transformation from one format to another.

Once the message is parsed, the values can be accessed using individual Business terms and can be used in business rules, in creating target messages etc.

The same concept can be used to parse messages from different banks/entities by using a different Definition template provided by MOND or its partners.

The logs below show the result of parsing a FPML Execution Advice message


Parsing message...
<<
<?xml version="1.0" encoding="UTF-8"?>
<executionAdvice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.fpml.org/FpML-5/confirmation" xsi:schemaLocation="http://www.fpml.org/FpML-5/confirmation fpml-main-5-3.xsd" fpmlVersion="5-3">
	<header>
		<messageId messageIdScheme="http://www.schemename.com/coding-scheme/message-id">1304873</messageId>
		<sentBy>OrigEntityName</sentBy>
		<sendTo>DestEntityName</sendTo>
		<sendTo>DestSystemName</sendTo>
		<creationTimestamp>2014-05-16T04:57:07</creationTimestamp>
	</header>
	<validation validationScheme="http://www.schemename.com/OTC/validation/InternalID">123456</validation>
	<validation validationScheme="http://www.schemename.com/OTC/validation/LegId1">Leg1ID01</validation>
	<validation validationScheme="http://www.schemename.com/OTC/validation/SYS_KEY">N</validation>
	<isCorrection>false</isCorrection>
	<correlationId correlationIdScheme="http://www.schemename.com/coding-scheme/correlation-id">123456.12</correlationId>
	<sequenceNumber>1</sequenceNumber>
	<trade>
		<tradeHeader>
			<partyTradeIdentifier>
				<partyReference href="Originator"/>
				<versionedTradeId>
					<tradeId tradeIdScheme="http://www.swift.com/coding-scheme/contract-id">SWPTRN RTP 9MAY14 CPTY1</tradeId>
					<version>13048731</version>
				</versionedTradeId>
			</partyTradeIdentifier>
			<tradeDate>2013-11-01</tradeDate>
		</tradeHeader>
		<swaption id="Leg1ID01">
			<productType productTypeScheme="http://www.schemename.com/OTC/product-type">SWAPTION</productType>
			<buyerPartyReference href="Originator"/>
			<sellerPartyReference href="Counterparty"/>
			<premium>
				<payerPartyReference href="Originator"/>
				<receiverPartyReference href="Counterparty"/>
				<paymentAmount>
					<currency>USD</currency>
					<amount>0.0</amount>
				</paymentAmount>
				<paymentDate>
					<adjustedDate>2013-11-05</adjustedDate>
				</paymentDate>
				<paymentType>PREMIUM</paymentType>
			</premium>
			<europeanExercise>
				<expirationDate>
					<adjustableDate>
						<unadjustedDate>2014-05-09</unadjustedDate>
						<dateAdjustments>
							<businessDayConvention>FOLLOWING</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
								<businessCenter>USNY</businessCenter>
							</businessCenters>
						</dateAdjustments>
					</adjustableDate>
				</expirationDate>
				<earliestExerciseTime>
					<hourMinuteTime>09:00:00</hourMinuteTime>
					<businessCenter>GBLO</businessCenter>
				</earliestExerciseTime>
				<expirationTime>
					<hourMinuteTime>11:00:00</hourMinuteTime>
					<businessCenter>GBLO</businessCenter>
				</expirationTime>
			</europeanExercise>
			<physicalSettlement>
				<clearedPhysicalSettlement>false</clearedPhysicalSettlement>
			</physicalSettlement>
			<swaptionStraddle>false</swaptionStraddle>
			<swap>
				<productType productTypeScheme="http://www.schemename.com/OTC/product-type">VANILLA</productType>
				<swapStream id="PayLeg">
					<payerPartyReference href="Originator"/>
					<receiverPartyReference href="Counterparty"/>
					<calculationPeriodDates id="PayLegCalcPeriodDates">
						<effectiveDate>
							<unadjustedDate>2014-05-13</unadjustedDate>
							<dateAdjustments>
								<businessDayConvention>MODFOLLOWING</businessDayConvention>
								<businessCenters>
									<businessCenter>GBLO</businessCenter>
									<businessCenter>USNY</businessCenter>
								</businessCenters>
							</dateAdjustments>
						</effectiveDate>
						<terminationDate id="PayLegTerminationDate">
							<unadjustedDate>2024-05-13</unadjustedDate>
							<dateAdjustments>
								<businessDayConvention>MODFOLLOWING</businessDayConvention>
								<businessCenters>
									<businessCenter>GBLO</businessCenter>
									<businessCenter>USNY</businessCenter>
								</businessCenters>
							</dateAdjustments>
						</terminationDate>
						<calculationPeriodDatesAdjustments>
							<businessDayConvention>MODFOLLOWING</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
								<businessCenter>USNY</businessCenter>
							</businessCenters>
						</calculationPeriodDatesAdjustments>
						<calculationPeriodFrequency>
							<periodMultiplier>6</periodMultiplier>
							<period>M</period>
							<rollConvention>13</rollConvention>
						</calculationPeriodFrequency>
					</calculationPeriodDates>
					<paymentDates id="PayLegPayment">
						<calculationPeriodDatesReference href="PayLegCalcPeriodDates"/>
						<paymentFrequency>
							<periodMultiplier>6</periodMultiplier>
							<period>M</period>
						</paymentFrequency>
						<firstPaymentDate>2014-11-13</firstPaymentDate>
						<payRelativeTo>CalculationPeriodEndDate</payRelativeTo>
						<paymentDatesAdjustments>
							<businessDayConvention>MODFOLLOWING</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
								<businessCenter>USNY</businessCenter>
							</businessCenters>
						</paymentDatesAdjustments>
					</paymentDates>
					<calculationPeriodAmount>
						<calculation>
							<notionalSchedule>
								<notionalStepSchedule>
									<initialValue>500000</initialValue>
									<currency currencyScheme="http://www.fpml.org/ext/iso4217">USD</currency>
								</notionalStepSchedule>
							</notionalSchedule>
							<fixedRateSchedule>
								<initialValue>0.0312</initialValue>
							</fixedRateSchedule>
							<dayCountFraction>30/360</dayCountFraction>
						</calculation>
					</calculationPeriodAmount>
				</swapStream>
				<swapStream id="ReceiveLeg">
					<payerPartyReference href="Counterparty"/>
					<receiverPartyReference href="Originator"/>
					<calculationPeriodDates id="ReceiveLegCalcPeriodDates">
						<effectiveDate>
							<unadjustedDate>2014-05-13</unadjustedDate>
							<dateAdjustments>
								<businessDayConvention>MODFOLLOWING</businessDayConvention>
								<businessCenters>
									<businessCenter>GBLO</businessCenter>
									<businessCenter>USNY</businessCenter>
								</businessCenters>
							</dateAdjustments>
						</effectiveDate>
						<terminationDate id="ReceiveLegTerminationDate">
							<unadjustedDate>2024-05-13</unadjustedDate>
							<dateAdjustments>
								<businessDayConvention>MODFOLLOWING</businessDayConvention>
								<businessCenters>
									<businessCenter>GBLO</businessCenter>
									<businessCenter>USNY</businessCenter>
								</businessCenters>
							</dateAdjustments>
						</terminationDate>
						<calculationPeriodDatesAdjustments>
							<businessDayConvention>MODFOLLOWING</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
								<businessCenter>USNY</businessCenter>
							</businessCenters>
						</calculationPeriodDatesAdjustments>
						<calculationPeriodFrequency>
							<periodMultiplier>3</periodMultiplier>
							<period>M</period>
							<rollConvention>13</rollConvention>
						</calculationPeriodFrequency>
					</calculationPeriodDates>
					<paymentDates id="ReceiveLegPayment">
						<calculationPeriodDatesReference href="ReceiveLegCalcPeriodDates"/>
						<paymentFrequency>
							<periodMultiplier>3</periodMultiplier>
							<period>M</period>
						</paymentFrequency>
						<firstPaymentDate>2014-08-13</firstPaymentDate>
						<payRelativeTo>CalculationPeriodEndDate</payRelativeTo>
						<paymentDatesAdjustments>
							<businessDayConvention>MODFOLLOWING</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
								<businessCenter>USNY</businessCenter>
							</businessCenters>
						</paymentDatesAdjustments>
					</paymentDates>
					<resetDates id="ReceiveLegResetDates">
						<calculationPeriodDatesReference href="ReceiveLegCalcPeriodDates"/>
						<resetRelativeTo>CalculationPeriodStartDate</resetRelativeTo>
						<fixingDates>
							<periodMultiplier>-2</periodMultiplier>
							<period>D</period>
							<dayType>Business</dayType>
							<businessDayConvention>NONE</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
							</businessCenters>
							<dateRelativeTo href="ReceiveLegResetDates"/>
						</fixingDates>
						<resetFrequency>
							<periodMultiplier>3</periodMultiplier>
							<period>M</period>
						</resetFrequency>
						<resetDatesAdjustments>
							<businessDayConvention>MODFOLLOWING</businessDayConvention>
							<businessCenters>
								<businessCenter>GBLO</businessCenter>
								<businessCenter>USNY</businessCenter>
							</businessCenters>
						</resetDatesAdjustments>
					</resetDates>
					<calculationPeriodAmount>
						<calculation>
							<notionalSchedule>
								<notionalStepSchedule>
									<initialValue>500000</initialValue>
									<currency currencyScheme="http://www.fpml.org/ext/iso4217">USD</currency>
								</notionalStepSchedule>
							</notionalSchedule>
							<floatingRateCalculation>
								<floatingRateIndex>USD-LIBOR-BBA</floatingRateIndex>
								<indexTenor>
									<periodMultiplier>3</periodMultiplier>
									<period>M</period>
								</indexTenor>
								<spreadSchedule>
									<initialValue>0.0</initialValue>
								</spreadSchedule>
							</floatingRateCalculation>
							<dayCountFraction>ACT/360</dayCountFraction>
						</calculation>
					</calculationPeriodAmount>
				</swapStream>
			</swap>
		</swaption>
	</trade>
	<party id="Originator">
		<partyId partyIdScheme="http://www.fpml.org/ext/iso9362">OrigEntityName</partyId>
		<partyName>OrigEntityName</partyName>
	</party>
	<party id="Counterparty">
		<partyId partyIdScheme="http://www.fpml.org/ext/iso9362">CPTY1</partyId>
		<partyName>Counter Party 1 Name</partyName>
	</party>
	<account id="id_accountOriginator">
		<accountId>987654321</accountId>
		<accountName>REF_ACCNT_NAME</accountName>
		<accountBeneficiary href="Originator"/>
	</account>
</executionAdvice>
<<

Keyword: $mondDocumentRoot Value: executionAdvice
Keyword: MessageIdScheme Value: http://www.schemename.com/coding-scheme/message-id
Keyword: MessageId Value: 1304873
Keyword: SenderId Value: OrigEntityName
Keyword: ReceiverId[1] Value: DestEntityName
Keyword: ReceiverId[2] Value: DestSystemName
Keyword: DocumentDateTimeStamp Value: 2014-05-16T04:57:07
Keyword: ValidationScheme[1] Value: http://www.schemename.com/OTC/validation/InternalID
Keyword: ValidationScheme[2] Value: http://www.schemename.com/OTC/validation/LegId1
Keyword: ValidationScheme[3] Value: http://www.schemename.com/OTC/validation/SYS_KEY
Keyword: Validation[1] Value: 123456
Keyword: Validation[2] Value: Leg1ID01
Keyword: Validation[3] Value: N
Keyword: CorrectionFlag Value: false
Keyword: CorrelationScheme Value: http://www.schemename.com/coding-scheme/correlation-id
Keyword: CorrelationIdentifier Value: 123456.12
Keyword: SequenceNumber Value: 1
Keyword: TradeIdentifierPartyReference Value: Originator
Keyword: TradeIdScheme Value: http://www.swift.com/coding-scheme/contract-id
Keyword: TradeIdentifier Value: SWPTRN RTP 9MAY14 CPTY1
Keyword: VersionNumber Value: 13048731
Keyword: TradeDate Value: 2013-11-01
Keyword: TradeDateTime Value: 2013-11-01
Keyword: SwaptionId Value: Leg1ID01
Keyword: ProductTypeScheme Value: http://www.schemename.com/OTC/product-type
Keyword: ProductTypeName Value: SWAPTION
Keyword: BuyerPartyReference Value: Originator
Keyword: SellerPartyReference Value: Counterparty
Keyword: PremiumPayerPartyReference Value: Originator
Keyword: PremiumReceiverPartyReference Value: Counterparty
Keyword: PremiumPaymentCurrency Value: USD
Keyword: PremiumPaymentAmount Value: 0.0
Keyword: PremiumPaymentDate Value: 2013-11-05
Keyword: PremiumPaymentDateTime Value: 2013-11-05
Keyword: PremiumPaymentType Value: PREMIUM
Keyword: EuropeanExerciseExpirationDate Value: 2014-05-09
Keyword: EuropeanExerciseExpirationDateTime Value: 2014-05-09
Keyword: EuropeanExerciseExpirationDateBusinessDayConvention Value: FOLLOWING
Keyword: EuropeanExerciseEarliestExerciseTime Value: 09:00:00
Keyword: EuropeanExerciseEarliestExerciseTimeBusinessCenter Value: GBLO
Keyword: EuropeanExerciseExpirationTime Value: 11:00:00
Keyword: EuropeanExerciseExpirationTimeBusinessCenter Value: GBLO
Keyword: IsClearedPhysicalSettlement Value: false
Keyword: IsSwaptionStraddle Value: false
Keyword: SwapProductTypeScheme Value: http://www.schemename.com/OTC/product-type
Keyword: SwapProductTypeName Value: VANILLA
Keyword: PayLegSwapStreamId Value: PayLeg
Keyword: PayLegSwapStreamPayerPartyReference Value: Originator
Keyword: PayLegSwapStreamReceiverPartyReference Value: Counterparty
Keyword: PayLegCalculationPeriodDatesId Value: PayLegCalcPeriodDates
Keyword: PayLegEffectiveUnadjustedDate Value: 2014-05-13
Keyword: PayLegEffectiveUnadjustedDateTime Value: 2014-05-13
Keyword: PayLegEffectiveDateBusinessDayConvention Value: MODFOLLOWING
Keyword: PayLegTerminationDateId Value: PayLegTerminationDate
Keyword: PayLegTerminationUnadjustedDate Value: 2024-05-13
Keyword: PayLegTerminationUnadjustedDateTime Value: 2024-05-13
Keyword: PayLegTerminationDateBusinessDayConvention Value: MODFOLLOWING
Keyword: PayLegCalculationPeriodDateAdjustmentBusinessDayConvention Value: MODFOLLOWING
Keyword: PayLegCalculationPeriodFrequencyPeriodMultiplier Value: 6
Keyword: PayLegCalculationPeriodFrequencyPeriod Value: M
Keyword: PayLegCalculationPeriodFrequencyRollConvention Value: 13
Keyword: PayLegPaymentDateId Value: PayLegPayment
Keyword: PayLegPaymentDateCalculationPeriodDateReference Value: PayLegCalcPeriodDates
Keyword: PayLegPaymentDatePaymentFrequencyPeriodMultiplier Value: 6
Keyword: PayLegPaymentDatePaymentFrequencyPeriod Value: M
Keyword: PayLegPaymentDateFirstPaymentDate Value: 2014-11-13
Keyword: PayLegPaymentDateTime Value: 2014-11-13
Keyword: PayLegPaymentDatePayRelativeTo Value: CalculationPeriodEndDate
Keyword: PayLegPaymentDateAdjustmentBusinessDayConvention Value: MODFOLLOWING
Keyword: PayLegNotionalStepScheduleInitialValue Value: 500000
Keyword: PayLegNotionalStepScheduleCurrencyScheme Value: http://www.fpml.org/ext/iso4217
Keyword: PayLegNotionalStepScheduleCurrency Value: USD
Keyword: PayLegFixedRateScheduleInitialValue Value: 0.0312
Keyword: PayLegDayCountFraction Value: 30/360
Keyword: ReceiveLegSwapStreamId Value: ReceiveLeg
Keyword: ReceiveLegSwapStreamPayerPartyReference Value: Counterparty
Keyword: ReceiveLegSwapStreamReceiverPartyReference Value: Originator
Keyword: ReceiveLegCalculationPeriodDatesId Value: ReceiveLegCalcPeriodDates
Keyword: ReceiveLegEffectiveUnadjustedDate Value: 2014-05-13
Keyword: ReceiveLegEffectiveUnadjustedDateTime Value: 2014-05-13
Keyword: ReceiveLegEffectiveDateBusinessDayConvention Value: MODFOLLOWING
Keyword: ReceiveLegTerminationDateId Value: ReceiveLegTerminationDate
Keyword: ReceiveLegTerminationUnadjustedDate Value: 2024-05-13
Keyword: ReceiveLegTerminationUnadjustedDateTime Value: 2024-05-13
Keyword: ReceiveLegTerminationDateBusinessDayConvention Value: MODFOLLOWING
Keyword: ReceiveLegCalculationPeriodDateAdjustmentBusinessDayConvention Value: MODFOLLOWING
Keyword: ReceiveLegCalculationPeriodFrequencyPeriodMultiplier Value: 3
Keyword: ReceiveLegCalculationPeriodFrequencyPeriod Value: M
Keyword: ReceiveLegCalculationPeriodFrequencyRollConvention Value: 13
Keyword: ReceiveLegPaymentDateId Value: ReceiveLegPayment
Keyword: ReceiveLegPaymentDateCalculationPeriodDateReference Value: ReceiveLegCalcPeriodDates
Keyword: ReceiveLegPaymentDatePaymentFrequencyPeriodMultiplier Value: 3
Keyword: ReceiveLegPaymentDatePaymentFrequencyPeriod Value: M
Keyword: ReceiveLegPaymentDateFirstPaymentDate Value: 2014-08-13
Keyword: ReceiveLegPaymentDateTime Value: 2014-08-13
Keyword: ReceiveLegPaymentDatePayRelativeTo Value: CalculationPeriodEndDate
Keyword: ReceiveLegPaymentDateAdjustmentBusinessDayConvention Value: MODFOLLOWING
Keyword: ReceiveLegResetDateId Value: ReceiveLegResetDates
Keyword: ReceiveLegResetDateCalculationPeriodDateReference Value: ReceiveLegCalcPeriodDates
Keyword: ReceiveLegResetDateResetRelativeTo Value: CalculationPeriodStartDate
Keyword: ReceiveLegFixingDatePeriodMultiplier Value: -2
Keyword: ReceiveLegFixingDatePeriod Value: D
Keyword: ReceiveLegFixingDateDayType Value: Business
Keyword: ReceiveLegFixingDateBusinessDayConvention Value: NONE
Keyword: ReceiveLegFixingDateBusinessCenter Value: GBLO
Keyword: ReceiveLegFixingDateRelativeToReference Value: ReceiveLegResetDates
Keyword: ReceiveLegResetFrequencyPeriodMultiplier Value: 3
Keyword: ReceiveLegResetFrequencyPeriod Value: M
Keyword: ReceiveLegResetDateAdjustmentsBusinessDayConvention Value: MODFOLLOWING
Keyword: ReceiveLegNotionalStepScheduleInitialValue Value: 500000
Keyword: ReceiveLegNotionalStepScheduleCurrencyScheme Value: http://www.fpml.org/ext/iso4217
Keyword: ReceiveLegNotionalStepScheduleCurrency Value: USD
Keyword: ReceiveLegFloatingRateIndex Value: USD-LIBOR-BBA
Keyword: ReceiveLegFloatingperiodMultiplier Value: 3
Keyword: ReceiveLegFloatingperiod Value: M
Keyword: ReceiveLegSpreadScheduleInitialValue Value: 0.0
Keyword: ReceiveLegDayCountFraction Value: ACT/360
Keyword: OriginatorPartyId[1] Value: Originator
Keyword: OriginatorPartyId[2] Value: Originator
Keyword: OriginatorPartyIdentifierScheme[1] Value: http://www.fpml.org/ext/iso9362
Keyword: OriginatorPartyIdentifierScheme[2] Value: http://www.fpml.org/ext/iso9362
Keyword: OriginatorPartyIdentifier[1] Value: OrigEntityName
Keyword: OriginatorPartyIdentifier[2] Value: OrigEntityName
Keyword: OriginatorPartyName[1] Value: OrigEntityName
Keyword: OriginatorPartyName[2] Value: OrigEntityName
Keyword: CounterpartyPartyId[1] Value: Counterparty
Keyword: CounterpartyPartyId[2] Value: Counterparty
Keyword: CounterpartyPartyIdentifierScheme[1] Value: http://www.fpml.org/ext/iso9362
Keyword: CounterpartyPartyIdentifierScheme[2] Value: http://www.fpml.org/ext/iso9362
Keyword: CounterpartyPartyIdentifier[1] Value: CPTY1
Keyword: CounterpartyPartyIdentifier[2] Value: CPTY1
Keyword: CounterpartyPartyName[1] Value: Counter Party 1 Name
Keyword: CounterpartyPartyName[2] Value: Counter Party 1 Name
Keyword: AccountIdentifier Value: 987654321
Keyword: AccountName Value: REF_ACCNT_NAME
Keyword: AccountBeneficiaryReference Value: Originator

Benefits of this approach

  • By having the parsed values in each keyword, it can be used to create business rules.

  • The business rules can be developed and maintained by analysts, architects, without requiring programming expertiese.

  • The parsed data can be stored in data warehousing tables

  • The parsed values can be used to create the target message in a different format