I'm down to roughly 15 Windows Server 2016 machines that still need to move to Server 2022, but the last five upgrade attempts have failed. Some get stuck at 0% during the initial phase, while others hang around 90% or later during first boot. Two machines remained on "Working on updates—99%" for more than four hours before I had to roll them back or restore snapshots.
Most of these are vendor systems that would take weeks to migrate or require significant additional cost, so a fresh-server migration isn't always practical. I've already upgraded most of our other 2016 systems successfully, but these remaining failures are becoming difficult to troubleshoot. Automated guidance has mostly suggested generic checks or very invasive repairs, and each attempt takes several hours.
Are there specific preparation steps, logs, setup options, or workarounds that have made Server 2016-to-2022 in-place upgrades more reliable?
5 Answers
Compare the failing servers closely with the ones that upgraded successfully instead of applying the same fixes repeatedly. Vendor agents, pending updates, storage problems, and drivers are common differences. Remove or disable nonessential security and management agents where the vendor allows it, make sure there are no pending reboots, and review the Panther and setup logs after each rollback.
If the upgrade must be performed in place, running Setup under the SYSTEM account has helped on some machines where a normal administrator session failed. Also make sure the account has access to the installation media and that any endpoint protection or vendor services that interfere with Setup are handled according to the vendor’s guidance.
For production systems, I generally avoid in-place upgrades when possible. A clean Server 2022 build with the roles, applications, and data migrated is more predictable than babysitting a four-hour hang and then restoring a snapshot. It’s also worth testing whether the vendor application can run on a restored or rebuilt VM before committing to the upgrade path.
You might consider using Server 2019 as an intermediate step and planning the move to a newer release afterward. It adds another upgrade, but some environments find that path less troublesome than going directly from 2016 to 2022. Either way, take a full backup and verify the rollback plan before each attempt.
One thing that helped us was disabling dynamic updates during Windows Setup. The upgrades were hanging for an extremely long time while trying to pull updates during setup; turning that option off let the upgrade finish, and we installed the current updates normally afterward.

That’s my preference too. In-place upgrades can be reasonable for low-risk systems, but mission-critical vendor machines should have a tested rebuild and recovery procedure.