yes
>> Then if that order is completely filled at the exchange (before the cancellation arrives) the exchange generates an order completion report. NT receives and processes that report and invokes the OnOrderUpdate() method and the OrderState is changed to Filled. Yes?
yes
>> Then the exchange will receive the cancellation request and generate an order cancellation rejected report. NT receives and processes that report.
no. Please see below: there is NO way back from .Filled no matter if the actual broker would report something after .Filled or not (I would not recall any broker which actually would send anything after .Filled, not talking about busted trades which are NOT handled by NT). Again: you will NOT see ANY event after order state is .Filled (same for .Cancelled and .Rejected as all 3 are terminal (!) order states). Please do not confuse the error code with the actual order state.
Hope this clarifies the confusion.

Comment