quickfix rejecting BZ message as value out of range

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

quickfix rejecting BZ message as value out of range

Shawn Mitchell
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/


My application is the initiator and I send a MassActionRequest to cancel all orders. The orders are canceled but my quickfix client rejects the incoming BZ message.

8=FIXT.1.19=12835=334=549=SHAZZ52=20160916-21:44:19.00056=TESTA45=458=Value is incorrect (out of range) for this tag371=35372=BZ373=510=017

But FIX50SP2.xml has

<message name='OrderMassActionReport' msgcat='app' msgtype='BZ'>
   <field name='ClOrdID' required='N' />
   <field name='SecondaryClOrdID' required='N' />
   ...

and

  <field number='35' name='MsgType' type='STRING'>
   <value enum='0' description='HEARTBEAT' />
   ...
   <value enum='BZ' description='ORDERMASSACTIONREPORT' />

All other message flows work properly, I receive ExecutionReport messages, etc.

So I'm at a loss. Any help from developers who have run into a similar situation is much appreciated!


------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers
Reply | Threaded
Open this post in threaded view
|

Re: quickfix rejecting BZ message as value out of range

Grant Birchmeier
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/


This is bizarre.

I've never seen a reject on the 35 tag before, and your DD looks correct.  Based on what you've posted, I don't see anything wrong.

Can we see your config?

On Fri, Sep 16, 2016 at 5:15 PM, Shawn Mitchell <[hidden email]> wrote:
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/


My application is the initiator and I send a MassActionRequest to cancel all orders. The orders are canceled but my quickfix client rejects the incoming BZ message.

8=FIXT.1.19=12835=334=549=SHAZZ52=20160916-21:44:19.00056=TESTA45=458=Value is incorrect (out of range) for this tag371=35372=BZ373=510=017

But FIX50SP2.xml has

<message name='OrderMassActionReport' msgcat='app' msgtype='BZ'>
   <field name='ClOrdID' required='N' />
   <field name='SecondaryClOrdID' required='N' />
   ...

and

  <field number='35' name='MsgType' type='STRING'>
   <value enum='0' description='HEARTBEAT' />
   ...
   <value enum='BZ' description='ORDERMASSACTIONREPORT' />

All other message flows work properly, I receive ExecutionReport messages, etc.

So I'm at a loss. Any help from developers who have run into a similar situation is much appreciated!


------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers



--
Grant Birchmeier
Connamara Systems, LLC
Made-To-Measure Trading Solutions.
Exactly what you need. No more. No less.

------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers
Reply | Threaded
Open this post in threaded view
|

Re: quickfix rejecting BZ message as value out of range

Shawn Mitchell
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/


Thanks Grant. I've attached the DD and settings.

On Mon, Sep 19, 2016 at 11:38 AM, Grant Birchmeier <[hidden email]> wrote:
This is bizarre.

I've never seen a reject on the 35 tag before, and your DD looks correct.  Based on what you've posted, I don't see anything wrong.

Can we see your config?

On Fri, Sep 16, 2016 at 5:15 PM, Shawn Mitchell <[hidden email]> wrote:
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/



My application is the initiator and I send a MassActionRequest to cancel all orders. The orders are canceled but my quickfix client rejects the incoming BZ message.

8=FIXT.1.19=12835=334=549=SHAZZ52=20160916-21:44:19.00056=TESTA45=458=Value is incorrect (out of range) for this tag371=35372=BZ373=510=017

But FIX50SP2.xml has

<message name='OrderMassActionReport' msgcat='app' msgtype='BZ'>
   <field name='ClOrdID' required='N' />
   <field name='SecondaryClOrdID' required='N' />
   ...

and

  <field number='35' name='MsgType' type='STRING'>
   <value enum='0' description='HEARTBEAT' />
   ...
   <value enum='BZ' description='ORDERMASSACTIONREPORT' />

All other message flows work properly, I receive ExecutionReport messages, etc.

So I'm at a loss. Any help from developers who have run into a similar situation is much appreciated!


------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers



--
Grant Birchmeier
Connamara Systems, LLC
Made-To-Measure Trading Solutions.
Exactly what you need. No more. No less.


------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers

mysettings.txt (2K) Download Attachment
FIX50SP2.xml (664K) Download Attachment
FIXT11.xml (21K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: quickfix rejecting BZ message as value out of range

Shawn Mitchell
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/


20160919-06:06:39.000 : 8=FIXT.1.1 9=137 35=BZ 49=SERVX 56=SHAWN 34=12 52=20160919-06:06:39.204 11=SHAWN:CA000000000047 1369=SHAWN:CA000000000047/_ACK 1373=3 1374=7 1375=1 533=2 10=238 
And this is the rejected message. I've lightly anonymized the COMPIDs but message should be viewable at https://fixparser.targetcompid.com/


On Mon, Sep 19, 2016 at 3:43 PM, Shawn Mitchell <[hidden email]> wrote:
Thanks Grant. I've attached the DD and settings.

On Mon, Sep 19, 2016 at 11:38 AM, Grant Birchmeier <[hidden email]> wrote:
This is bizarre.

I've never seen a reject on the 35 tag before, and your DD looks correct.  Based on what you've posted, I don't see anything wrong.

Can we see your config?

On Fri, Sep 16, 2016 at 5:15 PM, Shawn Mitchell <[hidden email]> wrote:
QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/



My application is the initiator and I send a MassActionRequest to cancel all orders. The orders are canceled but my quickfix client rejects the incoming BZ message.

8=FIXT.1.19=12835=334=549=SHAZZ52=20160916-21:44:19.00056=TESTA45=458=Value is incorrect (out of range) for this tag371=35372=BZ373=510=017

But FIX50SP2.xml has

<message name='OrderMassActionReport' msgcat='app' msgtype='BZ'>
   <field name='ClOrdID' required='N' />
   <field name='SecondaryClOrdID' required='N' />
   ...

and

  <field number='35' name='MsgType' type='STRING'>
   <value enum='0' description='HEARTBEAT' />
   ...
   <value enum='BZ' description='ORDERMASSACTIONREPORT' />

All other message flows work properly, I receive ExecutionReport messages, etc.

So I'm at a loss. Any help from developers who have run into a similar situation is much appreciated!


------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers



--
Grant Birchmeier
Connamara Systems, LLC
Made-To-Measure Trading Solutions.
Exactly what you need. No more. No less.



------------------------------------------------------------------------------

_______________________________________________
Quickfix-developers mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quickfix-developers
Reply | Threaded
Open this post in threaded view
|

Re: quickfix rejecting BZ message as value out of range

Viktor Pogrebnyak
This post was updated on .
In reply to this post by Shawn Mitchell
Hi, Shawn. I've replied to you on github - if you use default transport data dictionary from quickfix "spec/FIXT11.xml" then it is incomplete as it lacks some values for tag 35 like "BZ" etc. I was able to get the same error when parsing MassOrderActionReport message while using dd from "spec/FIXT11.xml". And I got no error when parsing the same message using one of my custom dictionaries.

Here is all available values for this tag starting from "B":

      <value enum='BA' description='COLLATERAL_REPORT'/>
      <value enum='BB' description='COLLATERAL_INQUIRY'/>
      <value enum='BC' description='NETWORK_STATUS_REQUEST'/>
      <value enum='BD' description='NETWORK_STATUS_RESPONSE'/>
      <value enum='BE' description='USER_REQUEST'/>
      <value enum='BF' description='USER_RESPONSE'/>
      <value enum='BG' description='COLLATERAL_INQUIRY_ACK'/>
      <value enum='BH' description='CONFIRMATION_REQUEST'/>
      <value enum='BI' description='TRADING_SESSION_LIST_REQUEST'/>
      <value enum='BJ' description='TRADING_SESSION_LIST'/>
      <value enum='BK' description='SECURITY_LIST_UPDATE_REPORT'/>
      <value enum='BL' description='ADJUSTED_POSITION_REPORT'/>
      <value enum='BM' description='ALLOCATION_INSTRUCTION_ALERT'/>
      <value enum='BN' description='EXECUTION_ACKNOWLEDGEMENT'/>
      <value enum='BO' description='CONTRARY_INTENTION_REPORT'/>
      <value enum='BP' description='SECURITY_DEFINITION_UPDATE_REPORT'/>

This list surely lacks the "BZ" value. So "spec/FIXT11.xml" file should definitely get fixed. You can copy the missing values from application dictionary like "spec/FIX50SP2.xml".

P.S. Header and trailer fields are validated using transport data dictionary when FIX50SP1+ protocol is engaged:

void DataDictionary::validate( const Message& message,
                               const DataDictionary* const pSessionDD,
                               const DataDictionary* const pAppDD )
...
  if( pSessionDD != 0 )
  {
    pSessionDD->iterate( message.getHeader(), msgType );
    pSessionDD->iterate( message.getTrailer(), msgType );
  }
...
}


Best regards,
Viktor