Rather than requiring custom Java code to accomplish the common use case of passing userID/passwords in SenderSubID and RawData fields in the Logon message (as is described in Implementing Custom Logons), it would be much cleaner to allow these fields to be specified in the configuration file.  For example, config options such as LogonSenderSubID and LogonRawData could be used:

LogonSenderSubID=MyUserId
LogonRawData=MyPassword

(... and then the RawDataLength field would be calculated automatically).

This would make it possible to use Quickfix via the Apache Synapse / the WSO2 ESB (Enterprise Service Bus).  As it stands, it is impossible to use Quickfix and Synapse/WSO2ESB with counterparties that require custom logons because the logon process happens before it is possible to mediate (change) the contents of the messages that QuickFIX is emitting.  There is no way on those platforms (except possibly writing some complex wrapper code around Quickfix, or modifying the Quickfix source and rebuilding the jar) to interface with Quickfix's callbacks and allow custom logons.  So, it is absolutely essential that these custom options can be specified in the configuration file rather than via java callbacks.