[QFJ-620] Problem validating Fix 4.4. TradeCaptureReport 35='AE' Created: 19/Jul/11  Updated: 14/Oct/16  Resolved: 14/Oct/16

Status: Closed
Project: QuickFIX/J
Component/s: Message Generation
Affects Version/s: 1.5.0
Fix Version/s: None

Type: Bug Priority: Default
Reporter: Alwyn Donnell Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 0
Labels: None
Environment:

linux - RHEL 5.0


Issue Links:
Duplicate
is duplicated by QFJ-585 TradeCaptureReport.NoSides parsing fail Closed

 Description   

Trying to construct TradeCaptureReport using QuickFixJ 1.5.0

There seems to be a problem validating the fields for the TrdCapRptSideGrp repeating group .

In my message I have defined the following fields for that particular repeating group i.e. only those that are mandatory:
552=1<SOH>54=2<SOH>37=1280622950453<SOH>

When I attempt to send it I get the following reject message :
8=FIX.4.4<SOH>9=123<SOH>35=3<SOH>34=53<SOH>49=BLP<SOH>52=20110718-11:18:10.459<SOH>56=CMF<SOH>45=53<SOH>58=Tag not defined for this message type<SOH>371=37<SOH>372=AE<SOH>373=2<SOH>10=196

I know it is a mandatory field , but I tried removing it and tried sending it again to get the following error :

8=FIX.4.4<SOH>9=123<SOH>35=3<SOH>34=56<SOH>49=BLP<SOH>52=20110718-11:19:22.707<SOH>56=CMF<SOH>45=56<SOH>58=Tag not defined for this message type<SOH>371=54<SOH>372=AE<SOH>373=2<SOH>10=201

I also know that tag 54 is mandatory for this message, but I removed it anyway and of course got this error which makes sense :
8=FIX.4.4<SOH>9=134<SOH>35=3<SOH>34=59<SOH>49=BLP<SOH>52=20110718-11:19:53.589<SOH>56=CMF<SOH>45=59<SOH>58=Incorrect NumInGroup count for repeating group<SOH>371=552<SOH>372=AE<SOH>373=16<SOH>10=060

It looks like there is a problem around the validation of this repeating group. Tags 54 and 37 are manadatory for this message type, so should'nt be reporting
'Tag not defined for this message type' for these tags.



 Comments   
Comment by Michael Daloia [ 25/May/12 ]

I too am having the same issue. I send a TradeCaptureReport message (35=AE) to my simulator built with quickfix 1.13.3

Here is the TCR message being sent:
DEBUG PID:8236 05/25 11:14:58.135 trf.py 909 8=FIX.4.49=39235=AE34=249=LQNTSWXTR52=20120525-15:14:58.13456=SWXLQNTTR15=CHF22=431=10.5232=100048=CH002340545655=[N/A]60=20110613-15:15:15.23475=20120525207=LQNT487=0552=254=137=NONE453=1448=9234447=D452=7802=1523=13173803=25528=R6520=LN IP54=237=NONE453=1448=9209447=D452=17802=1523=60584803=25570=N571=_LN45768=1769=20110613-15:15:14.222770=1856=0880=LN343434310=193

The msg is being rejected by my quickfix simulator
DEBUG PID:8236 05/25 11:14:58.135 trf.py 140 toAdmin message: 8=FIX.4.49=12735=334=249=SWXLQNTTR52=20120525-15:14:58.13556=LQNTSWXTR45=258=Tag not defined for this message type371=37372=AE373=210=176

My FIX xml file for TradeCaptureReport is below. It has OrderID defined in the NoSides repeating group. It's as if the NoSides repeating groups isn't being handled properly by quickfix:

<message name='TradeCaptureReport' msgcat='app' msgtype='AE'>
<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='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' />
<field name='Currency' required='Y' />
<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' />
<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>
<field name='CopyMsgIndicator' required='N' />
<field name='PublishTrdIndicator' required='N' />
<field name='ShortSaleReason' required='N' />
</group>
</message>

Here are my quickfix settings:

UseDataDictionary=Y
ValidateUserDefinedFields=N
ValidateFieldsHaveValues=N
ValidateFieldsOutOfOrder=N
AllowUnknownMsgFields=Y

Comment by Christoph John [ 14/Oct/16 ]

Had a similar case like this today. The bottom line was that there was an unknown/user-defined field at the end of the NoSides repeating group that caused the error. So the data dictionary just needed that adaption.

Will close this issue unless there is a complete test which proves otherwise.

Generated at Sat Nov 23 07:24:44 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.