Releases: paicoretech/fix-http-server
Release list
Release Notes for FIX Gateway v1.0.0
Release Notes for FIX Gateway v1.0.0
This version establishes the initial open-source release of the FIX Gateway HTTP Server, presenting a high-performance, stateless REST-to-FIX 4.4 bridge. It transitions the gateway to a real-time-only microservice, resolves potential concurrency and state issues by removing local queuing and callback systems, and aligns settlement cutoff times with standard global 24/5 FX trading calendars.
New Features
REST-to-FIX 4.4 Bridge Engine
Exposes unified, lightweight JSON endpoints that map HTTP requests to standard FIX 4.4 message types.
- Support for
POST /quote(QuoteRequest/Quoteexchange). - Support for
POST /order(NewOrderSingle/ExecutionReportexchange). - Support for
POST /quote-order(one-step request-and-execute).
Downstream client systems are freed from parsing raw FIX tag-value streams and managing session state.
Dual Concurrent FIX Sessions (ST_STREAMING & ST_TRADING)
To segregate traffic, avoid request-response crosstalk, and prevent execution delays, the gateway implements two concurrent FIX sessions:
- ST_STREAMING (Market data / Quote requests) — uses
MKTidentifier credentials. - ST_TRADING (Trade execution / Order single) — uses
TRDidentifier credentials.
Both sessions run in parallel, managed dynamically by the QuickFixSessionManager with custom timeouts.
Automated Weekly Sequence Reset Scheduler
In alignment with global financial standards, the gateway includes a configurable weekly sequence reset scheduler. It automatically issues a Logon message with ResetSeqNumFlag=Y at the start of the week (e.g. Monday morning) before trading hours resume, ensuring local sequence counters remain in sync with the counterparty.
Improvements & Fixes
Transition to stateless real-time request-response routing
The gateway has been refactored into a stateless microservice to avoid background concurrency bugs and database locking overheads.
- Previous behavior: The system relied on a database-backed queuing system (
QueuedTradeExecutor,QueueService,PendingTradeJPA entity). When the market was closed or the FIX session was offline, trades were logged in the database and a scheduler retried execution in the background. Once processed, an asynchronous callback layer (CallbackService) pushed execution details back to the client. This introduced complex thread pools, race conditions, local state consistency issues, and database read/write bottlenecks. - New behavior: All background queue, executor, and callback classes were removed. The gateway acts as a pure, real-time message converter. If the counterparty is offline or trading is closed, the request fails immediately and propagates the appropriate HTTP error code (e.g.
REQUEST_TIMEOUTor validation errors) to the caller. This allows developers to use standard enterprise-grade message queuing software (such as RabbitMQ, Kafka, or SQS) upstream rather than keeping state in the gateway.
Decoupling of region-specific business hours and holiday validations
Calendar validation rules were removed to make the gateway generic and globally deployable.
- Previous behavior: The codebase included hardcoded region-specific bank holiday and weekend validations (specifically Israeli bank holidays and custom Sunday-to-Friday business hours) using
HolidayService,BusinessHoursService, and an active/holidayendpoint. - New behavior: All business-hour validations, database calendar tables, and holiday controllers were removed. The gateway is timezone-agnostic and relies on UTC throughout. Any trade scheduling or market-hour checks are deferred to the upstream API management or client layers, simplifying deployment across different global markets.
Cutoff-driven FX settlement type resolution
Dynamic settlement handling ensures transactions are marked correctly under global 24/5 FX schedules.
- Previous behavior: Settlement types were either hardcoded or required manual mapping, which caused booking discrepancies when trades were executed late in the day or over weekends.
- New behavior: Implemented
SettlementTypeResolverand a configurable TOM cutoff time (fix.settlement.tom.cutoff). The gateway dynamically determines whether a trade should be settled as Value-Today (TOD) or Value-Tomorrow (TOM) depending on the UTC execution time.
Dual-ID safeguard system against execution data loss
A robust tracking system prevents identifier collision.
- Previous behavior: The gateway matched orders solely using external client identifiers. Duplicate IDs could cause database save errors or overwrite audit records.
- New behavior: Implemented a unique internal trade ID generator (
InternalTradeIdGenerator) that works alongside client-suppliedclientOrderIdvalidations. The gateway verifies that client-provided IDs are unique and records both the internal and external keys in the PostgreSQL audit log.
Volume-mounted externalized runtime configurations
Deployment configurations have been aligned with container-orchestration standards.
- Previous behavior: Properties files (
application.propertiesandquickfixj.cfg) and logging layout files were read from the classpath or hardcoded paths, requiring container rebuilds to adjust connection configurations. - New behavior: Configured startup wrappers (
start.sh/run.sh) to look under/app/config(or/opt/paic/fix-gateway) for configurations. Developers can mount their customapplication.properties,quickfixj.cfg, and optionallogback.xmldynamically into the container at runtime.
Dependency Updates
This release cleans up legacy proprietary and wildcard dependencies, switching to standardized open-source modules and configuring Spring Boot validations.
| Dependency | From | To | Notes |
|---|---|---|---|
| spring-boot-starter-validation | — | 3.2.2 | Added to enforce REST request validation. |
| quickfixj-core | — | 2.3.1 | Added to provide FIX engine functionality. |
| quickfixj-messages-fix44 | — | 2.3.1 | Added for FIX 4.4 message dictionaries. |
| postgresql | — | 42.7.2 | Database driver for PostgreSQL logging persistence. |
| SMSC proprietary libraries | Installed | Removed | Removed all internal SMSC dependencies to compile a clean, decoupled open-source project. |
| Kafka properties | Installed | Removed | Cleaned out Kafka event configuration to streamline the real-time API focus. |
Production Usage
FIX Gateway v1.0.0 is a production-grade release: it powers PAiCore Technologies products in live production financial environments. In particular, this version is deployed as the connectivity layer of:
- our FIX Gateway providing high-throughput translation of REST payloads to FIX 4.4 trading protocols.