According to documentation, I have a group inside group. The group called "NoPositionsGroup" contains 2 groups:
- NoPosKeysGroup - contains tags 5026 and 5027
- NoPosItemsGroup - contains tags 5029 and 5030
The problem is when I recive a message from Fix server (see Incoming message below) My application response "Reject" message becouse don`t understand that tag 5026 contains inside child group.
I think that I mistaken in my dictionary description, but don`t understand where is the mistake. Please suggest me correct way to describe it. I think that the problem in description nested groups.
My message description inside dictionary is following:
<message name='PositionReport' msgcat='app' msgtype='AP'>
<field name='PosMaintRptID' required='N'/>
<field name='PosReqID' required='N'/>
<field name='PosReqType' required='N'/>
<field name='SubscriptionRequestType' required='N'/>
<field name='TotalNumPosReports' required='N'/>
<field name='UnsolicitedIndicator' required='N'/>
<field name='PosReqResult' required='N'/>
<field name='ClearingBusinessDate' required='N'/>
<field name='SettlSessID' required='N'/>
<field name='SettlSessSubID' required='N'/>
<field name='NoPartyIDs' required='N'/>
<component name='Parties' required='Y'/>
<field name='NoPositions' required='N'/>
<group name='NoPositionsGroup' required='N'>
<field name='PosType' required='N'/>
<field name='PosUpdateAction' required='N'/>
<field name='NoPosKeys' required='N'/>
<group name='NoPosKeysGroup' required='N'>
<field name='PosKeyType' required='N'/>
<field name='PosKeyValue' required='N'/>
</group>
<field name='NoPosItems' required='N'/>
<group name='NoPosItemsGroup' required='N'>
<field name='PosItemType' required='N'/>
<field name='PosItemValue' required='N'/>
</group>
</group>
<field name='StreamPhaseIndicator' required='N'/>
<field name='Account' required='N'/>
<field name='AcctIDSource' required='N'/>
<field name='AccountType' required='N'/>
<component name='Instrument' required='N'/>
<field name='Currency' required='N'/>
<field name='SettlPrice' required='N'/>
<field name='SettlPriceType' required='N'/>
<field name='PriorSettlPrice' required='N'/>
<component name='InstrmtLegGrp' required='N'/>
<component name='PosUndInstrmtGrp' required='N'/>
<component name='PositionQty' required='N'/>
<component name='PositionAmountData' required='N'/>
<field name='RegistStatus' required='N'/>
<field name='DeliveryDate' required='N'/>
<field name='Text' required='N'/>
<field name='EncodedTextLen' required='N'/>
<field name='EncodedText' required='N'/>
<field name='MatchStatus' required='N'/>
<field name='PriceType' required='N'/>
<field name='SettlCurrency' required='N'/>
<field name='MessageEventSource' required='N'/>
</message>
Inside Fields section I descrided groups and tags:
<field number='20000' name='NoPositionsGroup' type='NUMINGROUP'/>
<field number='5024' name='PosUpdateAction' type='CHAR'>
<value enum='0' description="NEW"/>
<value enum='1' description="CHANGE"/>
<value enum='2' description="DELETE"/>
</field>
<field number='5025' name='NoPosKeys' type='INT'/>
<field number='20001' name='NoPosKeysGroup' type='NUMINGROUP'/>
<field number='5026' name='PosKeyType' type="STRING"/>
<field number='5027' name='PosKeyValue' type='STRING'/>
<field number='5028' name='NoPosItems' type='INT'/>
<field number='20002' name='NoPosItemsGroup' type='NUMINGROUP'/>
<field number='5029' name='PosItemType' type='STRING'/>
<field number='5030' name='PosItemValue' type='FLOAT'/>
<field number='5110' name='StreamPhaseIndicator' type='STRING'/>
Incoming message:
<Incoming> 8=FIXT.1.1
9=680
35=AP
49=TestSenderId
56=TestTargetId
34=6
52=20230321-12:20:56
710=My Unic request Id
721=RfPA4
724=0
325=N
715=20230321
453=2
448=SPBFUT000000
447=D
452=13
448=SPBFUT00036
447=D
452=38
702=1
703=FL
5024=0
5025=2
5026=CUR
5027=SUR
5026=FLT
5027=DEPOSIT_MONEY_FOREIGN_CURR_RUB
5028=12
5029=LIQUID_FACTOR
5030=0.000000
5029=PREV_OPEN_POS_LIM
5030=-120.000000
5029=CUR_OPEN_POS_LIM
5030=-120.000000
5029=CUR_NET_POS
5030=0.000000
5029=CUR_NET_POS_ORD
5030=0.000000
5029=CUR_NET_POS_OPEN_POS
5030=0.000000
5029=PLAN_NET_POS
5030=0.000000
5029=VAR_MARGIN
5030=0.000000
5029=ACCRUED_INT
5030=0.000000
5029=OPTION_PREMIUM
5030=0.000000
5029=TS_COMM
5030=0.000000
5029=KGO
5030=0.000000
10=203
Outсoming message:
<Outcoming> 8=FIXT.1.1
9=125
35=3
34=6
49=TestTargetId
52=20230321-12:20:56.362
56=TestSenderId
45=6
58=Tag appears more than once
371=5026
372=AP
373=13
10=023
<Outcoming> 8=FIXT.1.1
9=125
35=3
34=7
49=TestTargetId
52=20230321-12:45:28.511
56=TestSenderId
45=7
58=Tag appears more than once
371=5029
372=AP
373=13
10=030