2025/02/18
Share
System renovation of customer management system Symphonize
Project Overview
We executed a project to upgrade a legacy system running on Java 1.4.2_07 to Java 21, while simultaneously transitioning it from a monolithic structure to a modern, client-server separated architecture. This modernization resolved issues with unsupported technology, improved maintainability, and established a highly scalable system foundation, paving the way for future API exposure.
Technology Stack and Development Tools Used
- Programming language: Java 21
- Front end framework: JavaFX
- Back end framework: Spring Boot
- Database: Oracle
- Task management tool: Backlog
- Communication tool: Slack
- AI tool: GitHub Copilot
- Other tool: JasperReports v7.x
Client’s Challenges
- Maintenance Risks Due to End-of-Life Java Version (1.4.2_07)
The client’s existing system was operating on Java 1.4.2_07, a version that had reached its end-of-life for support. This created security risks and difficulties in bug resolution, making stable operation and maintenance challenging. - Development and Expansion Complexity Due to Monolithic Structure
The entire system was built on a monolithic structure, meaning that additions or modifications to one feature could easily impact other parts, increasing development complexity. This was a significant challenge as it severely limited the system’s flexibility for future changes or expansions. - Stagnation in Feature Development Caused by Outdated Frameworks
The system used Struts as its framework and SWT for the UI, both of which were outdated and no longer met current technical standards or business needs. In particular, developing new interfaces and features was difficult, causing delays in responding to business changes. - 64-bit Environment Incompatibility with Report Tool
The CoReports v8.5 tool used for report generation had a critical limitation: it could not run in a 64-bit Java environment. This not only restricted the system’s execution environment but also created an urgent need to migrate to a more modern, user-friendly, and cost-effective reporting solution.
Client’s Requirements
- Modernization to Java 21 for Compatibility and Efficiency
The primary requirement was to upgrade the entire system from the unsupported Java 1.4.2_07 to the latest LTS (Long-Term Support) version, Java 21. This was expected to resolve security vulnerabilities and ensure long-term compatibility and performance improvements through modern technology. - Client-Server Separation as a Foundation for Future API Exposure
The client requested a fundamental overhaul of the system architecture, moving away from the monolithic structure to clearly separate client and server roles. This was intended not only to improve maintainability but also to transition to a highly scalable structure, with the future goal of exposing a server API for integration with external systems. - Migration to a Modern Tech Stack with Spring Boot and JavaFX
A shift from the outdated Struts framework to Spring Boot, a mainstream choice in modern Java development, was required. The UI was also to be refreshed from SWT to JavaFX to enhance user experience and GUI development efficiency. Consequently, the communication method was to be changed from direct Servlet use to Spring Web, with security enhanced by Spring Security. - Migration to Proven JasperReports and a Rapid Development Schedule
The client specified a migration from CoReports v8.5 (incompatible with 64-bit environments) to JasperReports v7.x, a proven and efficient tool for report generation in Java environments. To minimize business impact, all migration tasks were required to proceed rapidly, ensuring the new system would be operational according to the planned schedule.
Our Proposal and Approach
- New System Development Based on Legacy Source and Wiki Analysis
We began by thoroughly analyzing the legacy system’s source code and the technical specifications provided by the client via a Wiki. With a precise understanding of the old system’s logic and business workflows, we developed the new system’s source code based on Java 21 and Spring Boot. This approach ensured a faithful recreation of the legacy functionalities while successfully migrating to the latest architecture. - Developing an In-House Automation Tool to Streamline the Migration
Given the vast amount of source code requiring conversion, a manual migration process posed significant risks in terms of time, cost, and human error. Therefore, our company proactively developed and implemented a custom code conversion support tool specifically for this project. This tool automated a large portion of the old-to-new code conversion process, ensuring accuracy, significantly boosting development efficiency, and shortening the project timeline. - Ensuring Quality and Shortening Delivery Time via AI and Optimized Testing
To further enhance development efficiency, we actively utilized AI tools such as GitHub Copilot. Recognizing that the client would deploy a dedicated testing team after development, we focused on establishing clear check specifications and robust Unit Tests. By proposing and executing an efficient testing process that eliminated redundant work between developers, reviewers, and testers, we successfully accelerated the overall development speed while maintaining high quality. - Achieving Complete Business Logic Replication by Executing the Legacy System
To understand the detailed business logic and implicit specifications not fully captured by documentation or source code, we ran and verified the old system ourselves. This guaranteed that the new system perfectly replicated all functions and behaviors of the legacy system, ensuring business continuity post-migration. Furthermore, when unexpected issues arose during development, we promptly investigated and proactively proposed solutions to the client, facilitating smooth project progression.