Historically, before installing an Exchange update in production, organizations often deploy updates in a test environment to first validate the update before deploying it to their production environment. This is an important task, but it is also time-consuming, and it can slow down the deployment of important updates. Moreover, not all organizations have test environments.
Feature Flighting provides an additional way for administrators to test and roll out select new features across their Exchange Server organization. Feature Flighting is an optional cloud-based service for on-premises Exchange servers. It uses the Office Config Service (OCS) - the same endpoint used by the Emergency Mitigation service and Microsoft Office clients—to check for updates from Microsoft related to flighted features
With Feature Flighting, administrators can deploy updates immediately and control when a flighted feature is enabled in their environment. Feature Flighting also enables Microsoft to disable a flighted feature in case a significant issue is discovered after the update containing the flighted feature is released.
Feature Flighting does not apply to all new features and changes in future updates. The Exchange Server engineering team determines which features are distributed via Feature Flighting, and a living, detailed list of flighted features is maintained in this article. Using Feature Flighting is optional, but it is enabled by default. You can configure it or disable it by following the steps outlined below.
Flighted Features
The table provides a detailed list of all currently flighted features. This table is a living table; Microsoft updates the table with new flights and changes to the affected Ring at least 7 days before they become active. Microsoft may not be able to announce changes several days in advance if a feature needs to be disabled (Recalled) due to a regression or known issue.
Feature
Description
Rings
Admin Approval
Recalled
Start Build
End Build
PING.1.0
Heartbeat Probe
0,1,2
No
No
15.02.1748.005
N/A
How Feature Flighting works
Feature Flighting is an innovative method for managing features and changes in Exchange Server that allows Microsoft to introduce new features and changes for Exchange Server in an initially disabled state. Here's how it works:
Initial Introduction: When a flighted feature or change is introduced, it's included in the Exchange Server update (CU or SU) in a disabled state. This behavior ensures that the feature doesn't immediately affect the server's operation.
Controlled Enablement: Flighted features and changes can then be automatically enabled on all Exchange servers within a specific Ring. This phased approach allows Microsoft to monitor the feature's performance and gather telemetry data.
Evaluation and Deployment: Based on the collected telemetry (and any feedback we might receive on our blog, via support cases, or from other sources), Microsoft evaluates the feature's stability and effectiveness. If the feature performs well, it can then be gradually deployed to Exchange servers in other Rings.
Recall Mechanism: A key advantage of Feature Flighting is the ability to recall a feature or change if any issues or regressions are detected. This helps ensure that any problematic features can be disabled quickly to maintain the stability and reliability of the Exchange Server environment.
Note
Feature Flighting isn't available for Edge Transport servers.
This results into the following benefits:
Enhanced Control: Administrators have more granular control over when and how new features are introduced.
Improved Stability: By deploying features in a staged manner, potential issues can be identified and addressed before widespread deployment.
Flexibility: The ability to recall features ensures that any regressions or known issues can be quickly mitigated.
Prerequisites
A new service called Microsoft Exchange Flighting service (MSExchangeFlighting) controls Feature Flighting. This service checks for and downloads Feature Flight Definitions (FFD) from OCS hourly and manages the activation and deactivation of flighted features based on the configured Ring.
Feature Flighting can't be used in air gapped environments or in environments without outbound connectivity to OCS. the Exchange Flighting service requires outbound connectivity to OCS to check for and download FFDs. You don't need to take any action if your servers can't reach OCS. Additionally, Feature Flighting is not yet available on Edge Transport servers.
We recommend checking our documentation and the Exchange Team Blog regularly to stay informed about known issues that may temporarily disable a feature as a mitigation measure.
Endpoint
Address
Port
Description
Office Config Service
officeclient.microsoft.com/*
443
Endpoint for the Microsoft Exchange Flighting Service to download FFDs
If you're using a network proxy to allow outbound connectivity, ensure that the InternetWebProxy is configured on each of your Exchange servers:
You must also configure the proxy settings for WinHTTP, which is a component of Windows that handles HTTP requests for applications that don't use the WinINet API:
command
netsh winhttp set proxy <proxy.contoso.com:port>
In addition to outbound connectivity to OCS, the Flighting Service also needs outbound connectivity to various Certificate Revocation List (CRL) endpoints. This is required to verify the certificates used to sign the FFDs. We recommend letting Windows maintain the Certificate Trust List (CTL) on your machine. To enable Windows to maintain the CTL, ensure that the following URL is accessible from the computer where Exchange Server is installed:
Endpoint
Address
Port
Description
Certificate Trust List Download
ctldl.windowsupdate.com/*
80
Endpoint for downloading the Certificate Trust List
Rings
Feature Flighting uses a deployment mechanism called Rings that defines when, or in what sequence, a feature is enabled on a particular Exchange server. Every Exchange server running Exchange Server 2019 CU15 or later is automatically assigned to a Ring. The default assignment can be changed by an admin at any time. The following Rings are available:
Ring No.
Name
Default Ring
Description
0
Early Adopter Ring
No
This is the earliest Ring and it's intended to be used for testing new features. If an Exchange server is assigned to this Ring, flighted features introduced in an update are immediately enabled after the update is installed. This happens regardless of the Feature Classification.
1
Worldwide Ring
Yes
This is the default Ring assigned to all Exchange servers when the first build that supports Feature Flighting is installed (for example, CU15). Servers in this Ring receive new features as soon as Microsoft has confirmed that the features are ready for general availability.
2
Admin Action Ring
No
Exchange servers in this Ring don't automatically enable any new flighted features. This Ring allows admins to revert to previous experience (for example, roll back). Flighted features are shipped in a disabled state and must be enabled by the admin using Set-ExchangeFeature as explained in the Feature States section.
Important
Moving a server between Rings can result in certain features being enabled or disabled, depending on the Feature Status defined in the Flighting Service for the new Ring.
The following workflow outlines how the Ring determines whether a flighted feature should be enabled or not:
You can use Exchange Management Shell (EMS) to assign an Exchange server to a specific Ring. In this example, the Exchange server is assigned to Ring 0:
If you don't want Microsoft to automatically enable new features or make changes to your server via Feature Flighting, you must assign your Exchange servers to Ring 2. Stopping and/or disabling the Microsoft Exchange Flighting Service (MSExchangeFlighting) isn't supported.
There are two types of features that can be managed by the Flighting Service: features with prerequisites and features without prerequisites. The key distinction is that some features depend on certain prerequisites that must be fulfilled:
Features with prerequisites:
These features need some preconditions to be met before they can be used. For example, all Exchange servers in the organization must be running a specific build.
For Exchange servers in Ring 1, features with prerequisites are assigned the FeaturesAwaitingAdminApproval state, as they need administrator approval before becoming active. In contrast, for Exchange servers in Ring 0, features with prerequisites are enabled without waiting for administrator approval.
Feature States
Each flighted feature is assigned a Feature State that indicates the current state of the feature. Feature States are an essential component of Feature Flighting. When a feature is flighted, it gets one or more of the following Feature States assigned:
Feature State
Feature Enabled
Description
FeaturesEnabled
Yes
This feature is enabled on the server.
FeaturesDisabled
No
Feature Flighting didn't enable this feature on the server either because Microsoft recalled it due to a regression or because the Exchange Server administrator blocked it (for example, because the server doesn't fulfill the required prerequisites yet).
FeaturesAwaitingAdminApproval
No
This feature requires explicit approval by an Exchange Server administrator.
FeaturesApproved
Yes
An Exchange Server administrator explicitly approved this feature, and it's now active.
FeaturesBlocked
No
This feature was explicitly blocked by an Exchange Server administrator and remains in disabled state.
For example, if a feature is waiting for approval, it has both the FeaturesAwaitingAdminApproval and FeaturesDisabled states assigned. Once the admin approves the feature, it's assigned the FeaturesApproved and FeaturesEnabled states.
Tip
If you run the latest version of the Exchange Server Health Checker script, it shows you information such as the server's assigned Ring, as well as features controlled by the Feature Flighting.
You can use EMS to query the feature states for a specific Exchange server:
To get an overview of all available features, use the Get-ExchangeFeature cmdlet. The following command returns all features which are enabled:
PowerShell
Get-ExchangeFeature -Status"Enabled"
You can also use the -FeatureID parameter together with the name of a feature, to query its status and a short description:
PowerShell
Get-ExchangeFeature -FeatureID"PING.1.0"
After executing the previous command, the Exchange server will return a result like the following:
PowerShell
Server FeatureID RingLevel Status Description
------ --------- --------- ------ -----------
EXCH01 PING.1.01 Enabled Heartbeat Probe. Validates the Telemetry Channel
This information is important in case you want to approve a new feature or change that requires admin approval. You'll also need this information when you want to prevent a feature from becoming enabled.
Feature naming is standardized using the following format: <FeatureId>.<SettingId>.<Version>
This format allows features to have multiple settings, which are used to control it. Assume that there's a feature FeatureID=F4 which can be controlled via two setting overrides SettingId=1 and SettingId=2, you'll see the following flighting entries:
F4.1.0
F4.2.0
To approve a new feature awaiting admin approval, use Set-ExchangeFeature with the -Approve parameter. Once the feature is approved or blocked, it remains in an intermittent state until the next Feature Flighting cycle runs, which may take up to an hour at most:
To prevent a feature from being enabled, use Set-ExchangeFeature with the -Block parameter. As shown in the previous example, it's also possible to block multiple features at once:
This section illustrates the workflow and lifecycle of a flighted feature called Feature1.
Contoso has two Exchange 2019 servers, EXCHPRD01 and EXCHPRD02 that are members of a database availability group (DAG) called DAGPRD01. They also have a third Exchange 2019 server, EXCHTST01 which is used for validating and testing new updates, and which isn't a member of the DAG.
The administrator first installs Exchange Server 2019 CU15 on EXCHTST01 and, after all tests have been successfully completed, the administrator installs CU15 on EXCHPRD01 and EXCHPRD02. The administrator assigns EXCHTST01 to Ring 0 so that it receives the flighted features and changes as soon as they become available.
Set-ExchangeServer -Identity EXCHTST01 -RingLevel0
Confirm
Changing the RingLevel of the server will change the flighting of the features based on the RingLevel selected. Changes will apply once the flighting service applies these changes. Are you sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):
A few months later, Microsoft releases an SU for CU15. In the release notes for the SU, the administrator learns that the SU contains a new flighted feature, Feature1. After installing the SU on all servers, they want to confirm that Feature1 is enabled only on EXCHTST01 and not on the production servers EXCHPRD01 and EXCHPRD02:
PowerShell
Get-ExchangeServer | Get-ExchangeFeature
Server FeatureID RingLevel Status Description
------ --------- --------- ------ -----------
EXCHPRD01 PING.1.01 Enabled Heartbeat Probe. Validates the Telemetry Channel
EXCHPRD01 F1.1.01 Disabled Feature1 introduces a new functionality
EXCHPRD02 PING.1.01 Enabled Heartbeat Probe. Validates the Telemetry Channel
EXCHPRD02 F1.1.01 Disabled Feature1 introduces a new functionality
EXCHTST01 PING.1.00 Enabled Heartbeat Probe. Validates the Telemetry Channel
EXCHTST01 F1.1.00 Enabled Feature1 introduces a new functionality
On EXCHTST01, the administrator tests that their workflows and 3rd party applications aren't adversely affected by Feature1 and they learn that there's a problem introduced by Feature1. So, the administrator uses the following command to prevent Feature1 from becoming enabled in Ring 1 and to disable it in Ring 0 where it's already active:
PowerShell
Get-ExchangeServer | Set-ExchangeFeature -FeatureID"F1.1.0" -Block
Confirm
Are you sure you want to perform this action?
By running this cmdlet, the features will be updated on server "EXCHTST01".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):
They confirm that Feature1 was successfully blocked:
PowerShell
Get-ExchangeServer | Get-ExchangeFeature
Server FeatureID RingLevel Status Description
------ --------- --------- ------ -----------
EXCHPRD01 PING.1.01 Enabled Heartbeat Probe. Validates the Telemetry Channel
EXCHPRD01 F1.1.01 Blocked Feature1 introduces a new functionality
EXCHPRD02 PING.1.01 Enabled Heartbeat Probe. Validates the Telemetry Channel
EXCHPRD02 F1.1.01 Blocked Feature1 introduces a new functionality
EXCHTST01 PING.1.00 Enabled Heartbeat Probe. Validates the Telemetry Channel
EXCHTST01 F1.1.00 Blocked Feature1 introduces a new functionality
Contoso contacts Microsoft Support to report the issue. Microsoft confirms the issue and plans to address it in the next update. After the update with the fix is released, Contoso deploys the update on their servers. The administrator tests their workflows and 3rd party applications and confirms that everything works as expected. The admin now wants to enable Feature1 on their production servers.
After learning from the release notes that Feature1 has dependencies, the administrator checks to see if admin approval is required:
To approve and enable Feature1, the administrator runs the following command:
PowerShell
Get-ExchangeServer -Identity EXCHPRD* | Set-ExchangeFeature -FeatureID"F1.1.0" -Approve
Confirm
Are you sure you want to perform this action?
By running this cmdlet, the features will be updated on server "EXCHPRD01".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):
Next, they validate that the feature was approved and enabled:
Once Microsoft considers all issues resolved, it enables the feature for all customers by default. This will happen in the next update, which enables the feature outside of feature flighting for all customers.
Diagnostic Data
When data sharing is enabled, Feature Flighting sends diagnostic data to the OCS. This data helps Microsoft to identify the saturation of flighted features. To learn more about what is collected and how to disable data sharing, see Diagnostic Data collected for Exchange Server.