Our codebase is about 8 years old, it used to be a .Net 4.8 project, which was upgraded to .Net Core 3, some bits to .Net Core 6. It was a mess. When I joined upgraded the whole stack to .Net 8, then .Net 10. Next upgrade is for .Net 12. I agree the old code was messy (single monolith, one solution, one project, zero clean boundaries) - I have since refactored it into a pseudo domain-driven-design layering which has enabled us to rewrite certain parts with low risk. Also stripped out business logic and third party integrations into their own projects. So we have about ~50 projects in the solution at the moment, not counting our mobile apps and agent framework. We also rebuilt our background services stack and got allll of our services to complete their runs under 60min, so no more "system is slow queries". Since converting it to use .Net 10, we can now also host 99% of the thing on linux servers (we are about halfway with this migration). So our cleanup efforts has been amazing, our server bill has been reduced by about 50% in 2 years, and next year we will half it again as I'm busy rewriting our most expensive system (a shitshow that was built by a consultancy firm, as usual).