How to Solve Common Legacy Systems Integration Problems
Let’s face it – many companies have legacy systems. If your organization is no exception, you know well that it can be quite difficult to deal with the complexities and challenges that come with integrating with other, newer systems. How do you approach this challenge, or where do you even start? In this article, we will explore some practical solutions and advice you on how to streamline the process of integrating your legacy systems.
What are Legacy Systems?
The term legacy system can be understood differently, depending on the person using the term. Most often, it is said that a legacy system is old software or technology that is difficult and/or expensive to change to a newer solution. It can be a monolith or multiple pieces of outdated software that creates a compound problem for the company. However, a legacy system does not always have to be “old” in the literal sense.
The fact that it will be a legacy system is evidenced by certain features of the system as seen by those who work with it. The person responsible for maintaining legacy systems will face numerous bugs or sudden stability issues. Programmers will complain about old versions of tools and libraries that are very difficult to update. For analysts and designers, there will be inadequate documentation.
From a company-wide perspective, legacy systems may create problems in business continuity and business processes because of the troublesome integration of such systems with new software. Nevertheless, keeping legacy systems for some time may be the only option and business must deal with legacy technologies challenges.
Legacy Systems Integration Challenges
Sometimes, well-running software systems do not yet have a business need for change. However, it may be a difficult case to integrate with other IT systems.
Why is this the case? The biggest problem is the lack of modern interfaces and APIs, without which business-critical systems cannot be easily integrated. So, what are some common ways to integrate with most legacy systems? And how to deal with it before updating legacy systems?
Legacy System Integration Options
Legacy systems can have different integration options. Typically, we encounter the following cases.
- The legacy system provides a REST or SOAP API – and this is usually the best situation in terms of system integration. Integrations using APIs pave the way for easy communication between different computer systems, programming languages, and platforms, which is critical for integrating legacy systems – as well as new ones.
- The legacy system does not have an API – in this case, unfortunately, you are left with trying to integrate by accessing the database. Here, you should remember to take great care if another system is going to interfere with the database (more on the risks below).
- The legacy system only allows for file exchange – in some legacy systems, you may come across mechanisms for communication via file exchange (XML, CSV, XLS), which are either run manually or run automatically.
What is the Best Method for Integrating Legacy Systems?
As you can see, legacy systems can have different integration options. So, which method should you aim for?
In today’s business environment and with the need of building a competitive advantage via technology, companies should focus on rapid data exchange when integrating systems.
The time between an event occurring in system X and the information being transferred to system Y needs to be minimized. Such fast data exchange is expected in e-commerce, such as order placement, price changes and inventory updates, or in manufacturing, in the likes of production plan changes.
Of course, there are situations where integration can take longer because it does not need to happen immediately. This is the case, for example, with recommendations and special offers that are sent to undecided customers. However, this time will decrease with the development of systems based on data science and AI.
To meet the requirements of data transfer speed, the best solution is to use REST APIs, or possibly SOAP APIs, so that the system where the event occurred immediately informs other systems about it. Both types of APIs are used to integrate systems, but REST is more commonly used because of its simplicity and flexibility.
But what if the API is of an old type or not available at all? In a moment, you will see how to deal with the most common challenges in the context of the integration of legacy systems.
Integrating Legacy Systems – Challenge / Solution
Now that you know what we’re up against and what you want to accomplish, let’s look at the most common legacy challenges. We also have a solution for each of them to show you how to deal with them.
Challenge 1 / The System Has a “Legacy” API
Sometimes the system you need to integrate with has an API. Unfortunately, it uses non-standard protocols or data formats. Such a “legacy” API will be quite difficult to use.
Solution: In this situation, a suitable option is to prepare a modern API, such as REST, which will be made available in the organization, but based on a legacy API. ESB class integration solutions or integration libraries, such as Apache Camel, are excellent tools for achieving this.
Challenge 2 / API Always Returns All Data
Another problem is APIs that allow you to retrieve only all data of a certain type, without the ability to select only the changed data. For example, instead of retrieving only the most recent orders, you can retrieve all orders in general, or even all orders of a particular type.
This is very inefficient, especially if you have a lot of historical data. The other systems in the company would need a lot of resources to process that much data each time and select only what has changed.
Solution: To overcome the above problem, you can prepare a component that reads existing data from the API and then detects changes. It then sends only the changed objects to the target systems. Change detection can be implemented by high watermarking if the data you are processing is only added.
If the data is both added and changed, then a checksum can be calculated using, for example, the MD5 algorithm, and stored so that the next time the data is processed, we can detect whether the data has changed or not. Checksum counting is also useful if you want to detect changes only in selected attributes and not in arbitrary objects.
Such a solution will change the communication pattern of the legacy system, but it will be much more effective in informing the target system about changes. What’s more, if you decide in the future for legacy modernization in which the API allows you to integrate changes more efficiently, you don’t have to make major changes to your integration approach.
Challenge 3 / Legacy System Sends File With All Data
A common case, especially in older systems, are integration mechanisms based on generating files with complete data of all objects, e.g. products from the PIM system. As I mentioned earlier, the desired situation is to send data that has changed. This case is similar to the situation with the API that returns all data.
Solution: The way to solve this is similar to what I mentioned before – add a component that detects changes in the data. The difference will be the way of getting the data, i.e. reading the files instead of getting them from the API.
Granted, you won’t be able to reduce the time it takes for the changes to reach the target system, but from an organizational perspective, you will be able to exchange data between systems through an easily consumable API. The target systems will only receive the changed data, so your integration processes will be on a more modern track.
Challenge 4 / Legacy System Doesn’t Have an API
As you already know: A much better situation is when the legacy system has an API. Unfortunately, sometimes it is not possible to add an API in a reasonable time. So, what do you do in such a situation?
Solution: You can do the integration directly into the legacy system’s database. While simply reading from such a database is unlikely to pose a threat to the system, since nothing changes, you should be especially careful when modifying data. When you write data to the tables of another system, you must be sure that the business rules are mapped because if you make a mistake, you will cause errors in that system. You need to consider this risk when deciding whether to go with the above or not.
Legacy Systems Not So Scary!
As you can see, even with systems that appear to be legacy systems from an integration perspective, you will be able to integrate them with other newer systems in your organization. You won’t eliminate some of the pain points. But you will have taken a big step toward effective and modern systems integration in your organization. This forward-thinking approach will bear fruit when you eventually start legacy system modernization or replacing legacy applications in your company.
Do you want to learn more integrating legacy systems? Let’s talk!