One of the key tenets of Software Modernization is that the value of legacy systems should not be discarded, but should be retained and optimized. This is not to say that phasing-out of legacy systems should never happen, but rather that the opposite approach of throwing out everything and starting anew often does not deliver the best value.
While it seems enticing to just “rip-out-and-replace” an old system with something new and fresh, the hidden value of legacy systems is often forgotten. Over the lifetime of a legacy system, many larger and smaller changes will probably have been made to it, in order to reflect the business environment it operated in. Specific knowledge of people who might long ago have left the company might be encoded in a bit of software, a macro or an IT process.
People know how the system works, and are accustomed to getting their job done with it, even if they have to use it outside of the intended use.
In complete replacement of systems, the effort and cost expenditures necessary to capture and integrate all these small bits of knowledge into the new system is unfortunately forgotten routinely.
For a successful modernization, the hidden value of legacy systems should not be discarded, but either re-used or remodeled. Sometimes keeping a legacy system that is not entirely optimal, can still be a sound decision when the cost of capturing and integrating the knowledge within that system outweighs the cost of preserving it.
If however, the decision is made to replace a legacy system, steps should be taken to avoid the trap of designing the new system against just the known requirements. Missing the requirements set by the knowledge embedded in the old system can lead to costly rework later on.