In 2021, we partnered with Aptean, as a technology leader in business software for medium-sized enterprises in industry and wholesale trade. The company provides custom ERP software because closely aligns with the process and application requirements of the engineering, retail, medical, and automotive target groups. The ERP software, developed by the client, is available in multiple languages, which means it can be used in different countries.
ERP systems were implemented with end customers several years ago. By default, these systems are supported and developed by manufacturers for a period of two years. However, over time, companies scale and processes evolve, affecting the need to tailor systems specifically to the business. For a while, customers hired their own developers who understood RPG (AS/400) syntax or worked with different vendors. However, this all happened outside of documentation, so it only functioned on an ad hoc basis for business needs. Although ERP systems have continued to operate, RPG is now an older technology, which is difficult to find developers for further development.
Companies, therefore, face a choice: either they decide to go back to the ERP system vendor and build the system anew, which is extremely expensive, or they migrate their customized system to a newer technology. Companies mostly decide to do this, working with the client's teams and VM.PL.
In the initial phase, three programmers worked on the projects. Currently, the client employs a 15-person VM.PL team, which, in addition to programmers, includes a project manager, a business consultant, and a customer success manager.
Throughout the process, we work directly with the client, directly consulting the end customers. We have performed migration projects from RPG to Java 11 for companies involved in areas such as:
The migration process begins by getting to know the old ERP system with the original versions of each client's libraries, which are entirely written in RPG. Each company with such an ERP system has modifications and functionalities built for the needs of its business. After analyzing the older code, we built a new comprehensive client framework with its specifics based on Java 11.
Our task is to build a fresh version of the ERP system with all the necessary modifications to the system newly implemented. We have learned within the team how to interpret this code, implement customer modifications, and analyze the operations of the older program.
In addition to backend activities, we use the Java Emitter Template (JET) tool to generate the fields, values, descriptions, and charts necessary to operate the ERP system.
Our team has no problem understanding the RPG system, which, nevertheless, is not an easy one due to the level of complexity of ERP systems.
"A vast number of sizable systems, e.g., banking systems or other ERP platforms, are based on RPG code, and fewer and fewer programmers can handle it it is no longer widely taught. We have a significant technological advantage because our teams understand how the code works and its dependencies." Daniel Hodaniewicz, Backend-Engineer
What challenges are we overcoming?
When a newer version of the software is implemented, then we actually implement the version update separately for each customer. This is because sometimes modifications can cause some problems when they are created for the client's specific needs, so with each update, we resolve functionality conflicts on an ongoing basis.
Sometimes, performance issues arise, and then we look for new solutions, optimizing performance from within Java. As we analyze the code, we identify areas to be improved for the next global system update.
ERP systems lack an architecture of individual microservices but are one large monolith, which means that, for example, sometimes calling one function suddenly calls up ten different methods from 10 different areas. This requires analysis and inquiry from experts who built the types of dependencies in the ERP system.
The migration process can be divided into stages:
Some clients already have a newer system, and having a base system, we customize it. Therefore, we also manage version changes in addition to migrating the code. If the client's version of the ERP system is, for example, 4.1, we upgrade it to version 7.2. This advantageous solution increases efficiency and improves the system's security. During the version upgrade, we check what modifications have been implemented in the client's system so that they are already incorporated into the new version.
We are building a new fuel card system with the client's team for a liquid cargo handling and transportation company. The end client's company operates on an in-house ERP system dealing with, among other things, vehicles, gas stations, car washes, etc. The project aims to unify the four systems that are currently dispersed and create a single platform to implement cards for drivers to use when refuelling.
A team consisting of an ERP analyst, developers, and a product manager regularly conducts product workshops at the end customer's site to gain detailed information on the design requirements needed to build new functionality.
The development process follows an Agile approach, and we gradually build prototypes, adding functionality that the customer tests and then develop in greater detail.
We systematically make improvements to client systems that require transfer to newer technologies. We strengthen project cooperation through remote meetings and in person to build relationships on an ongoing basis, strengthen mutual trust, and discuss processes in depth.
With a strong command of the German language, the VM.PL team communicates fluently with end customers, significantly improving the quality and pace of work, mutual understanding, and overall atmosphere.
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.