[QFJ-585] TradeCaptureReport.NoSides parsing fail Created: 08/Apr/11  Updated: 20/Dec/13  Resolved: 20/Dec/13

Status: Closed
Project: QuickFIX/J
Component/s: Engine
Affects Version/s: None
Fix Version/s: None

Type: Other Priority: Default
Reporter: Cédric Jeanroy Assignee: Unassigned
Resolution: Duplicate Votes: 0
Labels: None
Environment:

Linux, quickfixj 1.5.0, FIX44


Issue Links:
Duplicate
duplicates QFJ-620 Problem validating Fix 4.4. TradeCapt... Closed

 Description   

Dear all,

We are implementing connectivity with the SWX market using the quickfixj library but we've got a problem with TradeCaptureReport messages.

We receive the following TradeCaptureReport message from SWX test platform :
8=FIX.4.4^A9=437^A35=AE^A34=14^A49=SwxRcg1.M01^A50=SwxObe.M01.1.1^A52=20110407-09:07:04.219^A56=SQBCH-02.M01^A369=1280^A15=CHF^A17=EFR1_A568775_0O621059_2^A22=4^A31=51.1^A32=124^A37=NONE^A48=CH0010675863^A54=2^A55=[N/A]^A60=20110407-09:07:03.899^A75=20110407^A150=0^A207=XSWX^A423=2^A447=D^A448=7698^A452=17^A453=1^A487=0^A570=N^A571=NONE^A572=157598^A856=1^A6520=D^A552=1^A54=1^A37=NONE^A453=1^A448=7698^A447=D^A452=7^A802=1^A523=12589^A803=25^A576=1^A577=0^A768=1^A769=20110407-07:06:00.000^A770=1^A10=176^A

The message seems to be well formed but we first have the following warn message :
Warn: incomming message with incorrect field: 552=2:

And when we try to call the method tradeCaptureReport.getGroup(2, noSidesGroup); we get :
quickfix.FieldNotFound: 552, index=2
at quickfix.FieldMap.getGroup(FieldMap.java:684)

We have the following FIX44.xml configuration:
<message name="TradeCaptureReport" msgtype="AE" msgcat="app">
<field name="TradeReportID" required="Y" />
<field name="TradeReportTransType" required="N" />
<field name="TradeReportType" required="N" />
<field name="TradeRequestID" required="N" />
<field name="TrdType" required="N" />
<field name="TrdSubType" required="N" />
<field name="SecondaryTrdType" required="N" />
<field name="TransferReason" required="N" />
<field name="ExecType" required="N" />
<field name="TotNumTradeReports" required="N" />
<field name="LastRptRequested" required="N" />
<field name="UnsolicitedIndicator" required="N" />
<field name="SubscriptionRequestType" required="N" />
<field name="TradeReportRefID" required="N" />
<field name="SecondaryTradeReportRefID" required="N" />
<field name="SecondaryTradeReportID" required="N" />
<field name="TradeLinkID" required="N" />
<field name="TrdMatchID" required="N" />
<field name="OrigTrdMatchID" required="N" />
<field name="ExecID" required="N" />
<field name="OrdStatus" required="N" />
<field name="SecondaryExecID" required="N" />
<field name="ExecRestatementReason" required="N" />
<field name="PreviouslyReported" required="Y" />
<field name="PriceType" required="N" />
<component name="Instrument" required="Y" />
<component name="FinancingDetails" required="N" />
<component name="OrderQtyData" required="N" />
<field name="QtyType" required="N" />
<component name="YieldData" required="N" />
<group name="NoUnderlyings" required="N">
<component name="UnderlyingInstrument" required="N" />
</group>
<field name="UnderlyingTradingSessionID" required="N" />
<field name="UnderlyingTradingSessionSubID" required="N" />
<field name="LastQty" required="Y" />
<field name="LastPx" required="Y" />
<field name="LastParPx" required="N" />
<field name="LastSpotRate" required="N" />
<field name="LastForwardPoints" required="N" />
<field name="LastMkt" required="N" />
<field name="TradeDate" required="Y" />
<field name="ClearingBusinessDate" required="N" />
<field name="AvgPx" required="N" />
<component name="SpreadOrBenchmarkCurveData" required="N" />
<field name="AvgPxIndicator" required="N" />
<component name="PositionAmountData" required="N" />
<field name="MultiLegReportingType" required="N" />
<field name="TradeLegRefID" required="N" />
<group name="NoLegs" required="N">
<component name="InstrumentLeg" required="N" />
<field name="LegQty" required="N" />
<field name="LegSwapType" required="N" />
<component name="LegStipulations" required="N" />
<field name="LegPositionEffect" required="N" />
<field name="LegCoveredOrUncovered" required="N" />
<component name="NestedParties" required="N" />
<field name="LegRefID" required="N" />
<field name="LegPrice" required="N" />
<field name="LegSettlType" required="N" />
<field name="LegSettlDate" required="N" />
<field name="LegLastPx" required="N" />
</group>
<field name="TransactTime" required="Y" />
<component name="TrdRegTimestamps" required="N" />
<field name="SettlType" required="N" />
<field name="SettlDate" required="N" />
<field name="MatchStatus" required="N" />
<field name="MatchType" required="N" />
<group name="NoSides" required="Y">
<field name="Side" required="Y" />
<field name="OrderID" required="Y"/>
<field name="SecondaryOrderID" required="N" />
<field name="ClOrdID" required="N" />
<field name="SecondaryClOrdID" required="N" />
<field name="ListID" required="N" />
<field name="TradeTypeCodeList" required="N" />
<component name="Parties" required="N" />
<field name="Account" required="N" />
<field name="AcctIDSource" required="N" />
<field name="AccountType" required="N" />
<field name="ProcessCode" required="N" />
<field name="OddLot" required="N" />
<group name="NoClearingInstructions" required="N">
<field name="ClearingInstruction" required="N" />
</group>
<field name="ClearingFeeIndicator" required="N" />
<field name="TradeInputSource" required="N" />
<field name="TradeInputDevice" required="N" />
<field name="OrderInputDevice" required="N" />
<field name="Currency" required="N" />
<field name="ComplianceID" required="N" />
<field name="SolicitedFlag" required="N" />
<field name="OrderCapacity" required="N" />
<field name="OrderRestrictions" required="N" />
<field name="CustOrderCapacity" required="N" />
<field name="OrdType" required="N" />
<field name="ExecInst" required="N" />
<field name="TransBkdTime" required="N" />
<field name="TradingSessionID" required="N" />
<field name="TradingSessionSubID" required="N" />
<field name="TimeBracket" required="N" />
<component name="CommissionData" required="N" />
<field name="GrossTradeAmt" required="N" />
<field name="NumDaysInterest" required="N" />
<field name="ExDate" required="N" />
<field name="AccruedInterestRate" required="N" />
<field name="AccruedInterestAmt" required="N" />
<field name="InterestAtMaturity" required="N" />
<field name="EndAccruedInterestAmt" required="N" />
<field name="StartCash" required="N" />
<field name="EndCash" required="N" />
<field name="Concession" required="N" />
<field name="TotalTakedown" required="N" />
<field name="NetMoney" required="N" />
<field name="SettlCurrAmt" required="N" />
<field name="SettlCurrency" required="N" />
<field name="SettlCurrFxRate" required="N" />
<field name="SettlCurrFxRateCalc" required="N" />
<field name="PositionEffect" required="N" />
<field name="Text" required="N" />
<field name="EncodedTextLen" required="N" />
<field name="EncodedText" required="N" />
<field name="SideMultiLegReportingType" required="N" />
<group name="NoContAmts" required="N">
<field name="ContAmtType" required="N" />
<field name="ContAmtValue" required="N" />
<field name="ContAmtCurr" required="N" />
</group>
<component name="Stipulations" required="N" />
<group name="NoMiscFees" required="N">
<field name="MiscFeeAmt" required="N" />
<field name="MiscFeeCurr" required="N" />
<field name="MiscFeeType" required="N" />
<field name="MiscFeeBasis" required="N" />
</group>
<field name="ExchangeRule" required="N" />
<field name="TradeAllocIndicator" required="N" />
<field name="PreallocMethod" required="N" />
<field name="AllocID" required="N" />
<group name="NoAllocs" required="N">
<field name="AllocAccount" required="N" />
<field name="AllocAcctIDSource" required="N" />
<field name="AllocSettlCurrency" required="N" />
<field name="IndividualAllocID" required="N" />
<component name="NestedParties2" required="N" />
<field name="AllocQty" required="N" />
</group>
</group>
<field name="CopyMsgIndicator" required="N" />
<field name="PublishTrdIndicator" required="N" />
<field name="ShortSaleReason" required="N" />
<field name="Currency" required="N" />
</message>

Is this a bug of the quickfixj library or is there something misconfigured on our side ?

Thanks for your help



 Comments   
Comment by Jörg Thönnes [ 11/Apr/11 ]

According to the provided FIX message the fiels 552/NoSides is set to the value 1.
Therefore, this repeating group has one member and getting the second member using
tradeCaptureReport.getGroup(2, noSidesGroup) is expected to fail since the 2nd member
does not exist.

What do you expect?

Comment by Cédric Jeanroy [ 11/Apr/11 ]

Thanks for you reply. I just realized I don't send the good FIX message within the issue.

I firstly have the following log. The message contain the field 552=2.
[11/04/11 11:50:42.690] INFO [IoProcessor-0.0] [incoming] FIX.4.4:SQBCH-02.M01->SwxRcg1.M01: 8=FIX.4.4^A9=438^A35=AE^A34=865^A49=SwxRcg1.M01^A56=SQBCH-02.M0
1^A52=20110411-09:50:42.686^A50=SwxObe.M01.1.1^A369=2299^A15=CHF^A17=EFR1_A571495_0O622614_2^A22=4^A31=51.1^A32=203^A48=CH0010675863^A55=[N/A]^A60=20110411-0
9:50:42.380^A75=20110411^A150=0^A207=XSWX^A423=2^A487=0^A570=N^A571=NONE^A572=158477^A856=1^A552=2^A54=1^A37=NONE^A453=1^A448=7698^A447=D^A452=7^A802=1^A523=
12589^A803=25^A576=1^A577=0^A6520=D^A54=2^A37=NONE^A453=1^A448=7698^A447=D^A452=17^A768=1^A769=20110411-06:50:00.000^A770=1^A10=209^A

Then just after I get the following log. This is the same message, the only difference is tag 552=1. I supposed this second message is generated by the quickfix library after some parsing. Is it right ?
[11/04/11 11:50:42.887] ERROR [ssage Processor] [errorEvent] FIX.4.4:SQBCH-02.M01->SwxRcg1.M01: Warn: incomming message with incorrect field: 552=2: 8=FIX.4.
4^A9=438^A35=AE^A34=865^A49=SwxRcg1.M01^A50=SwxObe.M01.1.1^A52=20110411-09:50:42.686^A56=SQBCH-02.M01^A369=2299^A15=CHF^A17=EFR1_A571495_0O622614_2^A22=4^A31
=51.1^A32=203^A37=NONE^A48=CH0010675863^A54=2^A55=[N/A]^A60=20110411-09:50:42.380^A75=20110411^A150=0^A207=XSWX^A423=2^A447=D^A448=7698^A452=17^A453=1^A487=0
^A570=N^A571=NONE^A572=158477^A856=1^A6520=D^A552=1^A54=1^A37=NONE^A453=1^A448=7698^A447=D^A452=7^A802=1^A523=12589^A803=25^A576=1^A577=0^A768=1^A769=2011041
1-06:50:00.000^A770=1^A10=208^A

So, my question is why this tag has been changed from 552=2 to 552=1 ?
As you explain in your previous post this is the reason why I get quickfix.FieldNotFound exception.

Thanks in adavance for your help.

Generated at Sun Apr 28 10:58:07 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.