Multiple Migrations from RPG to Java in ERP Software
Client
Aptean is a technology leader in business software for mid–sized enterprises in industry and wholesale trade. The company specializes in enterprise resource planning (ERP), customer relationship management (CRM), supply chain management (SCM), and manufacturing execution systems (MES), catering to industries such as manufacturing, distribution, and financial services.
Challenge
ERP systems were implemented at the end clients’ sites more than a decade ago. Typically, they are supported and developed by vendors for around two years. However, as companies scale and their processes evolve, there arises a need for tailored system adaptations.
For a time, clients hired their own developers who understood RPG syntax (AS/400) or worked with various vendors. However, much of this was done without proper documentation, resulting in ad-hoc solutions that only temporarily met the business needs. While the ERP systems continued to operate, RPG is now an outdated technology, and finding developers to maintain or evolve these systems has become increasingly difficult.
As a result, companies are faced with a choice: either return to the ERP vendor and rebuild the system from scratch—an extremely expensive option—or migrate their customized ERP to a modern technology stack. Most companies opt for the latter, working in collaboration with the client’s team and VM.PL to carry out this transformation.

Our solution
In the initial phase, the projects were handled by three developers. Today, the client employs a 15-person VM.PL team, which includes not only developers but also a project manager, a business consultant, and a customer success manager.
Throughout the process, we work directly with the client, who provides consulting services to their end customers. We have carried out RPG-to-Java 11 migration projects for companies involved in areas such as:
- supplying medical and food-grade gases,
- manufacturing industrial machinery,
- producing heat pumps and heating systems,
- manufacturing printing products,
- providing telecommunications solutions.
Migration from RPG to Java
The migration process begins with a deep understanding of the legacy ERP system, including the original library versions used by each client—all fully written in RPG. Each company using such an ERP has built custom modifications and functionalities tailored to its business needs. After analyzing the legacy code, we rebuilt a comprehensive client-specific framework based on Java 11, incorporating the client’s unique assumptions and requirements.
Our role is to create a fresh version of the ERP system that includes all essential modifications, re-implemented from scratch. Over time, our team has learned to interpret legacy RPG code and integrate custom client features, while also analyzing the behavior of the older system.
Beyond backend work, we use the JET (Java Emitter Template) tool to generate fields, values, descriptions, and charts essential for ERP system operations.
Despite RPG’s complexity—especially due to the nature of ERP systems—our team has no issue understanding and working with it.
“Many large-scale systems—like banking platforms or legacy ERPs—still run on RPG code. Yet fewer developers today can maintain it because so few are learning it. The fact that our teams understand how the code works and how its dependencies are structured gives us a significant technical advantage.” — Daniel Hodaniewicz, Backend Engineer
- ERP System Modification Conflicts
When a newer version of the software is rolled out, the update is deployed individually for each client. This is because many of the modifications were originally developed for specific business needs, and may lead to functionality conflicts when the system is updated. That’s why we actively resolve these issues during each update cycle, ensuring continued system stability and feature compatibility. - Performance Challenges
At times, we encounter performance issues, which prompt us to seek Java-level optimizations. During code analysis, we often identify additional areas for improvement, which are then scheduled for the next global system update. - Monolithic System Architecture
These ERP systems are not built on a microservices architecture, but rather as large monolithic systems. This means that calling a single function might trigger 10 different methods across 10 unrelated modules. This complexity requires in-depth analysis and insights from domain experts who originally developed the ERP’s dependency structures.
The Migration Process Can Be Divided into the Following Stages:
- ERP Consultant Meeting with the Client – Analysis and planning.
- Development – Migration from RPG to Java.
- Deployment and Testing.
- System Maintenance – Minimum one year of ongoing support.
ERP System Version Upgrades
Some clients already use a newer ERP system version. In such cases, we take the base system and adapt it to the client’s specific needs. So, in addition to code migration, we also handle version upgrades. For example, if a client’s ERP system is running on version 4.1, we upgrade it to version 7.2. This is a beneficial solution that improves both system performance and security.
During the version upgrade process, we review all client-specific modifications previously implemented in the system to ensure they are properly reapplied in the new version.
Development of a Web and Mobile Application Tailored to the Client’s Needs
For a company specializing in the handling and transportation of liquid goods, we are building a new fuel card system in collaboration with the client’s internal team. The end client’s company operates on an internal ERP system that manages, among other things, vehicles, fuel stations, and car washes. The goal of the project is to unify four currently separate systems into a single platform that enables the deployment of fuel cards for drivers, allowing them to refuel seamlessly.
The team—comprising an ERP analyst, developers, and a product manager—conducts regular product workshops with the end client to gather detailed project requirements for the development of new functionalities.
The development process follows Agile methodology, with prototypes built incrementally. We gradually add new features, which the client tests, and then we refine and expand them based on feedback.
Results
We are systematically implementing enhancements to the client’s systems that require migration to newer technologies. We strengthen project collaboration not only through remote meetings but also through in-person interactions, which help to build long-term relationships, reinforce mutual trust, and allow for in-depth discussions of business processes.
Thanks to the VM.PL team’s strong proficiency in German, we communicate fluently with end clients—significantly improving work quality, project velocity, mutual understanding, and team collaboration.
Technologies

Client

Financial Platform Design, Development, and QA
Design, Development, DevOps or Cloud – which team do you need to speed up work on your projects? Chat with your consultation partners to see if we are a good match.
Jakub Orczyk
Member of the Management Board/ Sales Director VM.PL
Book a free consultation
AI/ML