As an IT consultant, I have run into many domains still using Windows Server 2003 Domain Controllers, or running that functional level (yes, even in 2021). One of the first things that needs to be completed before upgrading the domain to Windows Server 2008 or higher is to complete a SYSVOL Migration.
Windows Server 2003 uses File Replication Service, or FRS to replicate the SYSVOL folder’s content to other domain controllers in the domain. But Windows server 2008 and later uses Distributed File System, or DFS for this replication and is much more efficient at it.
To complete the migration, you must be running a functional level of Windows Server 2008 or higher. If you’re running Server 2003 domain controllers, you will be unable to add a Windows Server 2016/2019 as a domain controller. You will need to deploy a Windows Server 2008/2008r2/2012 or 2012r2 domain controller first, complete the migration, and then promote the Windows Server 2016/2019.
If you are running a functional level of 2008 or higher, you can check to see if you’re still running FRS, or if a migration to DFS has already been completed.
Open a CMD prompt, or PowerShell Windows and running this command:
dfsrmig /getglobalstate
If the output says “DFSR Migration has not yet initialized. To start migration please set global state to desired value,” you are still running FRS and need to complete a migration. Now you might be wondering, what is a “global state?”
- State 0: Start
- FRS will replicate the SYSVOL folder between all of the active domain controllers.
- State 1: Prepared
- In this state, DFSR will replicate a copy of SYSVOL folder. The default location is: %SystemRoot%\SYSVOL_DFRS
- State 2: Redirected
- In this state the DFSR copy of SYSVOL will be made the primary SYSVOL and will start responding to SYSVOL service requests. FRS will continue the replication of its own SYSVOL copy, but will not be used.
- State 3: Eliminated
- In this state, Windows will delete the original SYSVOL folder used by FRS and then stop the FRS service. DFS will continue replicating and responding to requests.
Now that you know the states, we can look at how to migrate to each state!
Prerequisites:
- Verify your AD environment is healthy. There are many ways to do this, and I won’t list them all in this article, but a couple of commands you can run are:
- dcdiag
- Repadmin /replsummary
- Verify there is enough disk space (current SYSVOL + 10%). So if your SYSVOL folder is 1gb, make sure to have at least 1.1gb of disk space. You will have two SYSVOL copies while completing the migration.
- You are using an account with at least domain admin rights
- You must be running a forest and domain functional level of Windows Server 2008 or higher
Migration Steps:
Open a CMD prompt, or PowerShell window as administrator and follow these steps.
- Migrate to the prepared state (1):
Dfsrmig /setglobalstate 1

2. You can see it says it can take 15min to 1 hour to complete, this is depending on your AD replication time. You can force this by running the following command after each state change:
Repadmin /syncall /force /APed
3. Verify all domain controllers have reached the prepared state
Dfsrmig /getmigrationstate

4. Migrate to Redirected State (2)
Dfsrmig /setglobalstate 2

5. Verify all domain controllers have reached the redirected state
Dfsrmig /getmigrationstate

6. Migrate to the Eliminated State (3rd and final)
Dfsrmig /setglobalstate 3

7. Verify all domain controllers have reached the eliminated state
Dfsrmig /getmigrationstate

8. Login to each domain controller and verify the “NtFrs” service is stopped, and disabled.

Hyper Migration
If you know 100% that your Active Directory and SYSVOL replication are in PERFECT health. You can skip right to State 3*.
Dfsrmig /setglobalstate 3
Dfsrmig /getmigrationstate
*This option does not offer any rollback options. I highly recommend going through each step. The entire process doesn’t take that long, roughly 30 minutes, depending on replication time, SYSVOL size, and number of domain controllers.
Rollback
In the event something goes wrong and you want to roll back you can just go back to State 0 (start)
Dfsrmig /setglobalstate 0
That’s it! Your migration to DFSR is complet!
Please feel free to leave a comment and let me know if this helped you, or if you have any issues!