The trick here is to innovate in phases rather than conducting a complete overhaul. We had a pretty robust macro-based tool for economic modeling, or in simple terms, for the estimation of financials for projects. The tool helped with calculating NPV, IRR, Payback Time, and also the benefits over and after the project life cycle.
The new requirements or features requested by the client included capabilities for reconciliation, resource management, financial analysis, and generating MIS reports. Since our tool was prepared using VB code, moving to a new tool with enhanced capabilities was a no-brainer. The question was, how do we do it? As the saying goes, 'Old is gold.' This was true for our tool, as users were very well-versed in using it.
So, we decided to take a phased approach where different modules for the new tool were treated as microservices. We visualized microservices like Forecasting, Resourcing, Timesheet Tracker, Reconciliation, Variance Analyzer, Year-to-Date View, etc. This allowed users to continue using the old tool while slowly transitioning to new modules from the new system.
The transition took almost a year, during which we had two dedicated teams for each tool. As it was a financial tool, we had to run both tools in parallel for four quarters to help users get accustomed to the new system without any disruptions. The legacy tool is still in use, and some reports are migrated for complex calculations, which are still in the testing phase in the new tool. The harmony between the legacy and new tools is crucial, and we are often reminded by our clients that we are building a plane while flying it.
I would conclude by stating, use a phased approach. Legacy systems are in place for a reason. Please don't be in a hurry to pull the plug; rather, do it surgically and, if needed, go with a tactical approach. If you're migrating from an old system to a new one, consider using APIs to connect to the new system. This will save much of your time and money. The mantra here is 'Slow and steady wins the race'.