Experimental/Unreleased: CME Enhanced Resend
This feature is experimental. The implementation and documentation is subject to change. This code is in the master branch (PR #986, merged 2026Jan28) and will likely be in v1.14.1 or higher.
QuickFIX/n now has experimental support for CME Enhanced Resend functionality. A customer of ours contracted us to write this functionality for a prototype QF/n app, and generously allowed us to integrate that work into the public source of QuickFIX/n.
Please try it out, but (as always) do diligent testing on your software before putting it into production.
For an explanation of EnhancedResend behavior, see the CME documentation for Drop Copy 4.0 Session Layer - Resend Request
What Is Needed to Connect to CME
Step 1: Implement CME's "Secure Logon" Procedure
QuickFIX/n doesn't provide this part right now.
CME requires Login messages to include some HMAC-calculated fields, and this prodedure is wholly separate from EnhancedResend. This implementation has not yet been contributed to QuickFIX/n, so you'll have to implement it yourself.
See the CME docs Drop Copy 4.0 Session Layer - Logon Procedure for technical specifications and code samples about that.
Step 2: Configuration
Use these settings to enable CME Enhanced Resend behavior:
CmeEnhancedResend=Y MaxMessagesInResendRequest=<2500 or less> EnableLastMsgSeqNumProcessed=Y
An explanation of these settings:
-
CmeEnhancedResend
- causes two behavior changes needed for compliance:
- When CME sends a Logout with 789/NextExpectedMsgSeqNum=1, then the logout response must be seq=1, and the following login message must be seq=2.
- Enable CME's variant gap-fill behavior
- MaxMessagesInResendRequest - CME requires this, and it must be 2500 or less
- EnableLastMsgSeqNumProcessed - CME wants tag 369 (LastMsgSeqNumProcessed) in message headers
Step 3: Be aware that CME includes NextExpectedMsgSeqNum (789) in the body of CME's Logout message
You don't need to do anything, but you should be aware.
This tag is probably not in your DataDictionary for the Logout message, but it's okay — the engine will not reject it.
Step 4: DataDictionary customizations (if using FIX4.2)
CME uses the "XMLNonFIX" message, type n, which wasn't introduced until FIX4.3.
FIX4.2 applications will need it added to their DataDictionary.
Add this message definition:
<message name="XMLnonFIX" msgtype="n" msgcat="admin"> <!-- this message has no body fields --> </message>