SessionLevelReject or OrderCancelReject

Imported from previous forum

Hello,

In FIX4.2 specs I read to send a session level reject when “Value is incorrect (out of range) for this tag.”

Now suppose after a successful NewOrderSingle the user send me an OrderCancelReplaceRequest message and message passes my validation except in the tags used to identify now a different instrument is specified.

To me it seems the values are out of range in that case, because the range is now restricted to the exact same values as they were in the NewOrderSingle. So that would mean I have to send a session level reject.

But I can imagine that with “out of range” it is meant e.g. only alphanumeric, only digits, etc. Then I have to send an order cancel reject.

What do you think I must send back in this case?

Thanks,
Gunnar

Hello,

In FIX4.2 specs I read to send a session level reject when “Value is incorrect (out of range) for this tag.”

Now suppose after a successful NewOrderSingle the user send me an OrderCancelReplaceRequest message and message passes my validation except in the tags used to identify now a different instrument is specified.

To me it seems the values are out of range in that case, because the range is now restricted to the exact same values as they were in the NewOrderSingle. So that would mean I have to send a session level reject.

But I can imagine that with “out of range” it is meant e.g. only alphanumeric, only digits, etc. Then I have to send an order cancel reject.

What do you think I must send back in this case?

Thanks,
Gunnar

Hi,

The correct thing to do is send back a business level reject (order cancel reject in this case) as your FIX engine should not do any business validation. You would send back a session level reject if tag 55 had no value for instance.

Regards,

Paul Radbone.

Hello,

Thanks for the answer, I understand how to interpret it now and will send business level rejects for these cases.

One last question, related but not exactly the same.

Suppose I document that value for tag Side must be in the range {Side_BUY, Side_SELL} and user sends NewOrderSingle with Side=Side_SELL_SHORT.

I was thinking to send session level rejects in these cases but now think it may be better to send business level rejects, because it seems that with “in range” the specs mean the whole range as defined by FIX4.2 and not only the subset that we choose to implement. Is that the correct way to view at this?

Thanks,
Gunnar

Hello,

In FIX4.2 specs I read to send a session level reject when “Value is incorrect (out of range) for this tag.”

Now suppose after a successful NewOrderSingle the user send me an OrderCancelReplaceRequest message and message passes my validation except in the tags used to identify now a different instrument is specified.

To me it seems the values are out of range in that case, because the range is now restricted to the exact same values as they were in the NewOrderSingle. So that would mean I have to send a session level reject.

But I can imagine that with “out of range” it is meant e.g. only alphanumeric, only digits, etc. Then I have to send an order cancel reject.

What do you think I must send back in this case?

Thanks,
Gunnar

Hi,

The correct thing to do is send back a business level reject (order cancel reject in this case) as your FIX engine should not do any business validation. You would send back a session level reject if tag 55 had no value for instance.

Regards,

Paul Radbone.