The strangler pattern for people who cannot stop the business
Replacing a legacy system without a cut-over weekend is possible. It requires discipline about interfaces more than cleverness about code.
Big-bang replacements fail for a simple reason: the legacy system encodes years of business rules nobody has written down, and you discover them on the day you switch.
Trace behaviour, not code
Start by observing what the system does — inputs, outputs, who depends on each one. That produces a map of capabilities and real dependencies, which is far more useful than a reading of the source.
Put an interface in front of each capability
Route calls through a stable API that initially just forwards to the old implementation. Now you can rebuild behind it, compare results in shadow mode, and switch over per capability — reversibly.
If a switch-over cannot be reversed in minutes, it is not ready.
Measure the end
The project is finished when the last legacy module can be switched off and nobody notices. Plan for that moment from the first week.