Good work has been done for years. Every connection, every script and every report was built because someone needed it. Added together, a system has emerged that nobody oversees as a whole, and that is a different problem from a system that was badly built.
It shows up in lead time. A change that technically takes an hour takes three weeks, because working out what will break is the real work. A habit develops of never removing anything: leaving an old table in place is cheaper than establishing whether it is still used. So it only grows.
Why migration is rarely the answer
The reflex is to move to a new platform. That relocates the problem: without insight into what is actually used, you migrate the whole tangle along with it, including the scripts nobody can explain. On top of that both environments run side by side for a while, temporarily doubling the maintenance load.
There is a staffing side too. When the knowledge sits with two people, that risk grows the longer they remain indispensable, and it makes their work unattractive, because they never get to anything else.