Where each version stands
| Version | Status | Support ends | Notes |
|---|---|---|---|
| Server 2025 | Current | — | The target for a clean build today. |
| Server 2022 | Supported | October 2031 | The safe landing spot for most security workloads. Broad VMS and access control support. |
| Server 2019 | Supported | 9 January 2029 | Fine for now, but it buys you roughly two years. Going 2016 to 2019 is usually not worth the outage. |
| Server 2016 | Support ending | 12 January 2027 | The one that matters. Under a large share of VMS and access control head-ends. |
| Server 2012 R2 | Out of support | 10 October 2023 | Three years past. If this is carrying a security system, it is the most urgent thing you own. |
Supported upgrade routes
Read this before you plan anything else. A route that is not supported is not a route, and finding that out mid-window is how a maintenance weekend turns into a restore from backup.
- Server 2016 Server 2022 Direct In-place is supported but I rarely recommend it for a security head-end. See the note on clean builds below.
- Server 2016 Server 2019 or 2022 Server 2025 Two step Microsoft supports in-place across two versions at a time. Clean build avoids the hop entirely.
- Server 2019 Server 2022 Direct
- Server 2019 Server 2025 Direct
- Server 2012 R2 Server 2016 or 2019 Server 2022 Two step Two in-place hops. At this age, migrate to a clean build instead.
Windows Server 2016 reaches end of support on 12 January 2027. That is inside the next budget cycle, and it lands on more security infrastructure than most people expect, because VMS and access control servers get built once and then left alone for a decade.
The reason this one bites harder than a normal server refresh is that a security head-end is not a general-purpose box. It has cameras trusting it, door controllers pointed at it, an archive that has to survive the move, and a licence that usually needs reactivating after a hardware change. The operating system upgrade is the easy part.
Start the inventory now, not in the autumn
The inventory is the work. Query the domain for operating system version rather than trusting the asset register, because the boxes that bite are the ones nobody wrote down: the ALPR server, the visitor management machine, the analytics host from a pilot that never got decommissioned, the badge printer workstation that is actually a server.
On a large site the migration is not a weekend. Recording servers and management servers have to move in the right order, cameras have to re-trust the new host, archives have to survive the cut, and licences usually need reactivating.
The support matrix trap
Before picking a target version, confirm it against the application’s supported matrix, and check the database at the same time. This is where the expensive mistake lives. Current shipping releases of both major VMS platforms still list operating systems and database versions that Microsoft has already retired, which means “supported by the VMS” and “supported by Microsoft” have quietly stopped meaning the same thing.
If you are standing up a new system this year, do not deploy on the bottom of the support matrix just because the matrix allows it. And if you are quoting a client an upgrade to current supported versions, be specific about which ones.
In-place or clean build
Microsoft supports in-place upgrades across two versions at a time, so 2016 goes to 2019 or 2022 directly, and reaching 2025 from 2016 means a hop. That is the mechanics. The judgement is different.
For a security head-end that has been running since 2016, I default to a clean build. In-place carries forward everything that accumulated over a decade: services nobody can account for, hardening applied by a technician who has left, registry changes from a support case in 2019, certificate stores full of expired material. A clean build with a fresh application install and a configuration restore costs more hours and produces a server you can actually reason about, which matters more on the box that holds your video evidence than on a file server.
Sequence around the database
If SQL lives on the same host, decide early whether it moves with the server or gets separated first. Doing both in one window means that when something fails, you cannot tell whether it was the operating system or the database. Separating SQL onto its own host during the migration is often the right call anyway, and it makes the SQL lifecycle a problem you can solve independently from here on.
The failures that do not announce themselves
Drivers for capture cards, dongles, and serial adaptors with no version for the target OS. USB licence dongles that need physically moving and re-registering. SMBv1 dependencies on older cameras and panels, which the new build will not quietly enable. TLS 1.0 and 1.1 dependencies in older panel firmware, disabled by default. Scheduled tasks running as service accounts whose passwords left with the person who set them up.
None of these stop the migration. They all stop something two weeks later.
The hardening side of this is covered in more depth in the Windows Server hardening guide, and the same lifecycle logic applies to the operator workstations, which are usually further behind than the servers.
The plan
- 01
Find every Windows Server carrying a security system
Not just the VMS. Access control head-ends, ALPR servers, intercom management, visitor management, badge printing, the analytics box someone stood up for a pilot and never decommissioned. Query the domain for operating system version rather than trusting the asset register.
- 02
Check the application's supported matrix before you pick a target
The VMS or access platform decides what you can land on, and its matrix may lag Microsoft by years. Confirm the exact application build against the exact server version, and confirm the database version at the same time. Picking a target the application does not support turns a migration into two.
- 03
Decide in-place versus clean build, per server
In-place is faster and keeps the application installed. A clean build removes a decade of accumulated configuration drift, orphaned services, and hardening that nobody documented. For a security head-end that has been running since 2016, I default to a clean build with a fresh application install and a configuration restore.
- 04
Sequence around the database
If SQL lives on the same box, decide whether it moves with the server or gets separated first. Doing both in one window means that when something fails you cannot tell whether it was the OS or the database. Separating SQL onto its own host during the migration is often the right call anyway.
- 05
Rebuild the hardening baseline deliberately
A new server does not inherit the Group Policy, local policy, service hardening, or firewall rules the old one accumulated. Apply the baseline as a documented step rather than discovering the gaps in the next assessment.
- 06
Re-establish trust in both directions
Cameras and door controllers that trusted the old host by certificate or by address need re-trusting. Anything that connected to the server by name needs DNS confirmed. Anything that connected by IP needs finding, because it will fail silently.
- 07
Prove the archive survived before you decommission
Retrieve footage from before the migration, not just after. Run one full retention cycle with the old environment still recoverable.
Pre-flight checklist
Print it, or hand it to whoever is doing the work. Every line is something I have seen bite a real migration.
- Every Windows Server running a security workload, with its exact build
- Application and version on each, with its supported OS matrix confirmed
- SQL Server version and location, local or remote
- Physical or virtual, and whether the hardware can carry the target version
- Licence and reactivation path for every application on the box
- Domain membership, service accounts, and what those accounts have rights to
- Target server version confirmed against the application matrix, in writing
- Clean build versus in-place decided per server, with a reason recorded
- Full backup taken and test-restored, including the application configuration
- Certificate inventory exported with private keys
- Hardening baseline documented so it can be reapplied rather than rediscovered
- Static addresses, DNS records, and firewall rules captured
- Rollback plan with a named decision point
- Applications pinned to a .NET or Visual C++ runtime that the new OS does not ship
- Drivers for capture cards, dongles, or serial adaptors with no version for the target OS
- USB licence dongles that need moving physically and re-registering
- SMBv1 dependencies on old cameras or panels, which the new OS will not enable quietly
- TLS 1.0 and 1.1 dependencies in older panel firmware, disabled by default on newer builds
- Scheduled tasks and services running as accounts whose passwords nobody has
- Hardening baseline applied and verified, not assumed
- Camera and controller trust re-established, sampled and confirmed
- Archive retrieval tested against pre-migration footage
- Backup job re-pointed at the new host and its first run verified
- Monitoring and alerting re-pointed
- Old environment retained through one full retention cycle
Questions that come up
When exactly does Windows Server 2016 lose support?
12 January 2027. That is the end of extended support, after which there are no more security updates. Mainstream support ended back in January 2022.
Can I just buy Extended Security Updates and wait?
For a genuinely stuck system, ESU through Azure Arc is a legitimate bridge. It is not a plan, it is not free, and it does not solve the underlying problem that the application vendor will eventually stop supporting the platform too. Use it to buy sequencing room, not to avoid the work.
In-place upgrade or clean build?
For a security head-end that has been running since 2016, clean build. In-place carries forward a decade of configuration drift, orphaned services, and undocumented hardening. The clean build costs more hours and gives you a server you can actually reason about.
Should I go to Server 2022 or Server 2025?
2022 for most security workloads today, because the application support matrices are broad and settled. 2025 if the vendor explicitly supports your application version on it and you want the longer runway. Do not land on 2019, it only buys about two years.
What about Windows Server 2012 R2 still running a security system?
It went out of support in October 2023. It is unpatched, it is the most urgent thing in the estate, and it almost certainly cannot upgrade in place to anything current. Plan a clean build and a configuration migration.
References
- Windows Server 2016 lifecycleMicrosoft Learnlearn.microsoft.com
- Windows Server end of support and Microsoft 365 AppsMicrosoft Learnlearn.microsoft.com
- Microsoft Lifecycle PolicyMicrosoft Learnlearn.microsoft.com
Outbound links open in a new tab. Source-pinned. If a vendor moves a doc, this block gets updated.