Legacy
Modernise in slices. Never as a rewrite.
The rewrite proposal is always attractive and almost always wrong. It asks the business to accept eighteen months of no new features in exchange for a promise, and it discards the accumulated edge cases that the old system quietly handles — the ones nobody documented because they were bug fixes, not requirements.
Instead: put a routing layer in front, move one capability at a time, run old and new in parallel and compare outputs until they agree, then cut that slice over. Slower on paper. Far more likely to finish.
Strangler-fig routingParallel run & output diffing
Slice-by-slice cutoverRollback at every step