Domain separation
Keeps clearing capabilities from becoming another tightly coupled application.
How Azati is modernizing a legacy clearing monolith with a modular Java platform while preserving the domain logic and integrations of a regulated commodity market
A large regulated commodity exchange needed to move away from a tightly coupled clearing monolith without disrupting the domain logic, integrations, and operational workflows supporting market operations. Azati is building a modular Java platform alongside the legacy system, progressively moving clearing capabilities into 40+ domain-oriented services instead of forcing a single replacement project.
Core clearing domains separated to support progressive modernization
Migration from the legacy clearing platform
Integration with trading, accounting, CRM, and other external systems
How do regulated financial organizations modernize a core clearing system when its business logic and integrations cannot simply be replaced at once?
The difficult part was not building another Java platform. It was moving clearing logic out of a business-critical monolith while keeping the surrounding financial ecosystem connected.
The legacy clearing platform had accumulated substantial domain logic around commodity-market operations, while its monolithic architecture made further changes and integrations increasingly difficult.
The transition also had to preserve the rules, controls, and operational workflows governing regulated clearing.
The difficult part was not choosing microservices. It was deciding where the clearing domains belonged, how they should communicate, and how the new platform should coexist with the systems that still run the market.
Rather than attempting a big-bang replacement, Azati is building Catena as a modular microservices platform and progressively moving clearing capabilities into the new architecture.
The work combines domain decomposition, Java development, integration engineering, document processing, operator tooling, security, and automated delivery.
The new platform separates major areas of clearing functionality into independently developed services rather than reproducing the legacy monolith as one large application.
More than 40 microservices have been implemented around domains including participants, registers, obligations, supply contracts, payments, clearing decisions, reporting, risk management, and gas-market operations.
The separation gives each clearing domain a defined place in the new architecture and makes it possible to move functionality progressively rather than recreate the monolith service by service.
Stack: Java 25, Spring Boot 4, Spring Data JPA, PostgreSQL
The new services communicate asynchronously through RabbitMQ, with synchronous APIs where direct request-response integration is more appropriate. This allows individual clearing domains to evolve as separate services while maintaining communication across the broader platform.
Stack: Spring AMQP, RabbitMQ, Spring Cloud OpenFeign.
Azati isolated external-system dependencies behind dedicated adapters for trading, delivery, accounting, CRM, and verification systems.
The integration layer currently covers systems including the exchange's trading system, commodity delivery operator, accounting systems, CRM, and verification modules. This keeps integration-specific logic at the edge of the platform instead of spreading external-system dependencies through the core clearing domains.
The integration approach combines the Adapter pattern, OpenFeign, RabbitMQ, and XML/JSON processing.
Integration areas
Clearing operations generate and consume substantial amounts of structured documentation. Processing it reliably requires validation before information reaches downstream services or storage.
Azati developed a document-processing pipeline that separates validation, processing, and storage rather than treating document handling as a single operation. A dedicated Document Storage Service uses a reactive stack based on Spring WebFlux and R2DBC to handle document persistence.
Stack: Spring WebFlux, R2DBC, Jackson XML, StAX, Apache POI
The new platform implements business requirements derived from the exchange's clearing rules and regulatory reporting obligations, payments, registers, and clearing decisions. The operations are validated against the applicable rules before the relevant workflows proceed.
Compliance context: exchange clearing rules, regulatory reporting, OAuth2/JWT, authentication, role-based access, electronic signatures, XML security controls.
Modernizing the backend alone does not modernize the operational experience. Clearing specialists also need a consistent interface for working with the entities and processes represented by the new platform.
Azati developed a Vue-based operator workspace providing access to participants, registers, obligations, payments, documents, and reports. The interface gives operators a unified workspace across functionality that had previously been associated with the legacy clearing environment.
Azati incorporated authentication, authorization, electronic signatures, XML security controls, automated testing, and coverage checks into the delivery pipeline rather than treating them as a final release gate.
The delivery pipeline uses GitLab CI/CD, automated Maven builds, test execution, and coverage controls. Testcontainers is used to support integration testing against realistic infrastructure dependencies.
This gives the team a repeatable build, test, and deployment path on the client's infrastructure.
Stack: Spring Security, Avanpost, Docker, GitLab CI, JaCoCo, Testcontainers, Prometheus, Grafana.
| Area | What Azati delivered | Operational value |
|---|---|---|
| Clearing modernization | Built 40+ domain-oriented microservices covering core clearing capabilities | Establishes a modular foundation for progressive replacement of the legacy monolith |
| Phased migration | Developed Catena alongside the existing clearing system | Allows functionality to move progressively rather than requiring a single cutover |
| Domain coverage | Implemented participants, registers, obligations, payments, contracts, risk management, reporting, and clearing decisions | Brings core commodity-clearing workflows into the new platform |
| External integration | Built adapters for trading, delivery, accounting, CRM, and verification systems | Isolates clearing logic from external-system dependencies |
| Document & data processing | Implemented validation, processing, storage, XML/JSON exchange, and electronic-signature workflows | Creates a structured path for regulated document and data exchange |
| Operator experience | Delivered a Vue-based workspace for participants, registers, obligations, payments, documents, and reports | Gives operators a unified interface across key clearing workflows |
| Controlled delivery & security | Implemented OAuth2/JWT, role-based access, XML security controls, automated testing, coverage gates, and GitLab CI/CD | Makes security, quality verification, and deployment controls repeatable |
Discuss your legacy architecture, domain constraints, and migration options with an engineering team experienced in regulated financial systems.
Discuss your modernization projectModernizing a clearing system is less about introducing newer technology than about changing the architecture without losing the domain knowledge embedded in the existing platform.
The result is not a claim that modernization becomes risk-free. It is a more controlled path away from a business-critical monolith, where established clearing logic and operational dependencies can be migrated rather than discarded.
In this engagement, three decisions make the transition more controlled:
Keeps clearing capabilities from becoming another tightly coupled application.
Isolate the new platform from the protocols and dependencies of surrounding systems.
Allows new capabilities to be introduced while the legacy platform remains part of the transition.
This approach is most relevant to regulated financial organizations that need to modernize business-critical platforms without discarding established domain logic or forcing a single high-risk replacement.
It is a strong fit when the organization:
A clearing system processes the obligations created by market transactions, including determining what participants owe, maintaining relevant registers, managing collateral and payments, and producing clearing decisions and reports.
For a commodity exchange, the system also has to reflect the specific rules governing commodity contracts, delivery obligations, trading sessions, and related market operations. Catena implements these domains for a regulated commodity-market environment.
Legacy clearing platforms can become difficult to scale, maintain, integrate, and change as market infrastructure and regulatory requirements evolve. Their architecture may also make each new integration or functional change increasingly dependent on the existing monolith.
A phased modernization can separate business domains, introduce modern interfaces and integration patterns, and transition legacy components without requiring the entire system to be rewritten at once.
In this engagement, the legacy clearing system is being progressively replaced by Catena, a platform built around 40+ Java microservices.
Microservices can separate complex financial-domain capabilities into independently developed components, making large systems easier to evolve when their domains have sufficiently clear boundaries.
The architecture also allows integration, deployment, and modernization decisions to be made at the service level rather than across one monolithic application.
Catena currently includes 40+ services covering areas such as participants, registers, obligations, payments, documents, reporting, and risk management.
A phased migration keeps the legacy platform in the transition architecture while individual capabilities are developed and moved to Catena.
The critical requirements are clear domain boundaries, controlled interfaces between old and new components, data consistency, and a migration sequence that reflects business dependencies.
Catena uses domain-separated microservices and dedicated adapters to support this migration model while the legacy clearing platform remains part of the transition.
The modern platform can use dedicated adapters to isolate its core business logic from the protocols and implementation details of surrounding systems.
This means the clearing domain does not need to directly absorb every legacy interface, reducing coupling between the new architecture and existing enterprise systems.
In this engagement, Azati implemented adapters for the trading system, commodity delivery operator, accounting systems, CRM, and verification modules.
Modern clearing platforms typically combine transactional data management, domain-oriented services, asynchronous messaging, API integration, security controls, and automated delivery. The exact stack depends on the existing infrastructure, integration landscape, regulatory requirements, and migration strategy.
For Catena, the stack includes Java 25, Spring Boot 4, Spring Cloud, PostgreSQL, RabbitMQ, Vue, Docker, and GitLab CI/CD, with OAuth2/JWT security and Prometheus/Grafana observability.
Regulated financial modernization has to account for domain rules, security controls, testing, integrations, operational continuity, and regulatory reporting at the architecture level rather than treating them as separate compliance activities.
A practical modernization approach therefore combines incremental architecture changes with controlled access, explicit validation, secure data processing, automated quality checks, and a migration sequence that reflects business dependencies.
In the Catena engagement, Azati works with commodity-clearing rules, bank reporting requirements, electronic signatures, OAuth2/JWT authentication, role-based access, and XML security controls as part of the platform implementation.
Azati modernizes regulated financial systems where legacy architecture, complex integrations, domain-heavy logic, and uninterrupted operations all have to be handled at the same time.
A financial institution needed to modernize its monolithic SME banking platform to resolve scalability and performance bottlenecks, ensuring the system could support high transaction volumes and enable rapid digital evolution.
Azati modernized the enterprise banking platform through microservices adoption, payment optimization, and automated delivery. This transformation delivered a scalable, reliable system that significantly increased payment processing capacity and operational efficiency for SME banking.
A European equipment leasing provider needed to scale its digital platform into the Netherlands and Belgium while navigating complex, country-specific regulatory requirements. The company's original monolithic architecture hindered scalability and slowed the integration of essential processes, including identity verification, AML screening, credit scoring, and contract generation, which prevented the rapid development needed for market expansion.
Azati partnered to modernize the leasing platform (monolith to microservices) and automate the lifecycle, resulting in a scalable solution for European market expansion.
A UK fintech company operating a payment orchestration platform had a lean engineering team responsible for both product development and cloud operations. Infrastructure maintenance, CI/CD support, and developer assistance were consuming senior engineering capacity and slowing platform modernization and payment product development.
Azati incrementally modernized the client's AWS infrastructure, expanded Infrastructure as Code, improved CI/CD, and took ownership of day-to-day platform operations. The engagement strengthened cloud reliability and developer enablement without disrupting the production payment platform.
A financial institution needed to continuously evolve its digital banking platform while ensuring service reliability, high transaction performance, and ongoing regulatory compliance.
As an embedded engineering partner, Azati enhanced and stabilized the client's digital banking platform. Through ongoing maintenance, feature development, and performance optimization, the team enabled continuous product evolution and improved reliability, supporting growing user activity and regulatory compliance without the need for large-scale replacement.
A Latin American FinTech needed to scale its financial automation platform—which handles banking connections, transaction synchronization, and reconciliation—while ensuring continuous delivery of new features without compromising financial accuracy. They required expertise to expand banking integrations, improve testing, and modernize the platform while maintaining operational stability.
Azati embedded senior Ruby on Rails engineers into the client's product team to enhance core financial workflows, improve banking integrations, strengthen security, modernize parts of the platform, and expand automated quality assurance. The engagement combined feature development with stabilization of existing functionality, enabling continuous product evolution while preserving the integrity of financial operations.
Last updated