Raise Forest and Domain Functional levels

Domain and forest functional levels in Active Directory define the available features and supported operating systems for domain controllers within a domain or forest. They essentially act as flags that indicate the minimum operating system version required for all domain controllers in a specific scope (domain or forest). This ensures compatibility and enables new features that require a certain level of infrastructure.

The Domain and Forest functional levels are named the same a Windows server operating systems, such as:

  • Windows Server 2008
  • Windows Server 2003
  • Windows Server 2012 R2
  • Windows Server 2016

The maximum level that the forest and domain can be raised to is the same as the oldest version of Windows server hosting AD services. For example, if you have three domain controllers one running Windows Server 2012 R2, one running Windows Server 2016 and one running Windows Server 2019, the domain and forest levels can only be raised to Windows Server 2012 R2 as this matches the OS of the oldest domain controller on the network.

Typically, we raise the levels after demoting old domain controllers, in some cases, raising these levels is required to support newer Exchange server platforms or newer versions of EntraID Connect.

Once either a forest or domain level has been raised, it cannot be downgraded – preventing you from promoting domain controllers running older OS versions that the current functional levels. This means that once the Server 2012 R2 DC has been demoted and the AD functional levels have been raised (to say 2016), you can no longer promote Server 2012 R2 (or older versions) to a DC. Only Windows Server 2016 and newer can be domain controllers going forward.

Ideally, the functional levels should be raised on writable domain controllers that also host a copy of the global catalog – not on a read only DC, or a DC that doesn’t store a copy of the GC. (Generally speaking, the guides on our Intranet walk you through deploying RW DCs with GC).

All domain controllers should be online and connected / contactable from all other DC’s before making changes.

There are multiple methods to raise these levels, we’ll focus on just two methods in this guide.

Raise Forest and Domain Functional Levels via GUI:

 

On any writable domain controller launch the following server applets:

  • Active Directory Domains and Trusts
  • Active Directory Users and Computers

Starting in AD Domains and Trusts, on the left tree, right click the first item in the top of the tree labelled Active Directory Domains and Trusts

Select Raise Forest Functional Level from the context menu

In the popup, you’ll see the current forest level and a dropdown list where you can choose the available functional levels you can upgrade to

Select and click Raise.

It will take about one second and then will tell you its been completed.

Close this window

Switch over to Active Directory Users and Computers

Right click in the top most left tree item

Select All Tasks > Raise domain functional level from the context menu

Just like the forest functional level screen earlier, you’ll see the current level and a dropdown list to select the available domain functional levels you can raise to.

Select the new level and click Raise

Again, this should take up to a second and inform you that the domain level has been raised.

And that’s it – job done!

Raise Forest and Domain Functional Levels via PowerShell:

On a writable DC with a local GC store, launch an elevated PowerShell session

Use the Set-ADForestMode cmdlet to raise the forest functional level

Set-ADForestMode -Identity <domain> -DomainMode <level>

Example:

Set-ADForestMode -Identity drfs.local -DomainMode Windows2016Forest

You will be prompted to confirm, type Y and press enter

You will be returned to prompt almost immediately with no output, to confirm the upgrade was successful, execute:

Get-ADForest | fl Name, ForestMode

You should see output like this:

Now we can upgrade the domain functiona level using:

Set-ADDomainMode -Identity <domain> -DomainMode <level>

Example:

Set-ADDomainMode -Identity drfs.local -DomainMode Windows2016Domain

Again, you’ll be prompted to confirm, type Y and press Enter

You will be returned to prompt almost immediately with no output, to confirm the upgrade was successful, execute:

Get-ADDomain | fl Name, DomainMode

That’s it – job done!

Leave a Reply