Reusable assets
Start with what is genuinely portable.
QuickFIX XML
Reuse standard or counterparty-specific field, message and repeating-group definitions after validation.
Roles and CompIDs
Map initiator/acceptor identity, endpoints, credentials and schedule policy without copying secrets into reports.
Stores and resend
Translate persistence, reset, replay, gap-fill and reconnect intent into LibHFT’s explicit model.
Messages and callbacks
Port builders, field access and lifecycle hooks against the chosen LibHFT flavor.
Settings assessment
Classify every setting before translating it.
| Class | Action | Examples |
|---|---|---|
| Direct | Map to an equivalent LibHFT setting and preserve the value. | Session identity, heartbeat interval, endpoint, role. |
| Semantic translation | Map the operational intent, then verify behavior. | Reset policy, resend bounds, schedules, validation flags. |
| Application-owned | Move behavior to application hooks or deployment logic. | Custom authentication, business validation, lifecycle orchestration. |
| Unsupported or obsolete | Record the gap; do not silently discard it. | Engine-specific plugins or settings with no safe equivalent. |
| Sensitive | Redact values while retaining the fact that configuration exists. | Passwords, tokens, keys and credential-shaped custom settings. |
Migration route
Move through evidence gates.
- Inventory configuration, dictionaries, custom fields, callbacks, stores and operational procedures.
- Run the settings and dictionary assessment for the source QuickFIX family.
- Select the LibHFT flavor and transport boundary the application will deploy.
- Port source APIs or introduce an adapter while preserving application semantics.
- Replay captured and adversarial FIX traffic through both paths.
- Run session, validation, recovery and store conformance scenarios.
- Benchmark the target workload only after functional parity passes.
- Run a shadow or certification environment before production cutover.
Deterministic oracle
Compare outcomes, not implementation details.
A migration oracle should compare normalized application messages, session events, sequence transitions, rejects, resend responses and durable-store outcomes. It should deliberately mutate relevant business fields so a superficially compatible adapter cannot pass by ignoring work.
Prove reconnect, high and low sequences, resend ranges, gap fills, invalid messages, durable-write refusal, session schedules and operational telemetry before treating the port as ready.
Source families
QuickFIX/C++, QuickFIX/J and QuickFIX/n.
The assessment recognizes that these implementations share concepts but not a perfectly interchangeable settings surface. Runtime ownership, store behavior, callback APIs and scheduling details must be interpreted in the source family’s terms.