IDs in the messages need to be translated to make cure uniqueness. Right now the following IDs can be translated: ClOrdID, CrossID, ListID, ExecID and OrderID.
Application can implement its own ID translator by deriving from the FIXOrderGatewayIDTranslator abstract class. Note the behavior of ID translator must be consistent. The methods should always return the same ID on the same input.
ID translator must be able to perform reverse ID look up as well. For example, if we have a sell side ClOrdID, we can get the buy side order and corresponding ClOrdID by calling the FIXOrderGatewayIDTranslator.ReverseClOrdIDLookUp method.
ID translators can be customized on sell side sessions. Individual sell side session can have different ID translator. FIXOrderGateway.SetIDTranslator can be used to set ID translator to individual session.
By default, the IDTranslator of all sell side sessions are initialized to the default implementation. Default implementation use the combination of message sequence number, the session persistence ID and optionally the index of the repeating instance (for orders populated from cross or list orders only) to ensure uniqueness. For more information of the default implementation please read the source code.