MSEndpointMgr

Change Office 365 ProPlus Update Channel using ConfigMgr

Ensuring that your devices are on the desired Update Channel for Office 365 is quite important, otherwise you may end up with end users receiving new functionality that has not yet been tested properly in your organization. Over the years since the first release of Office 365 ProPlus and other products, Microsoft has changed the naming back and forth for what we today refer to as Update Channels. In this blog post, I’ll demonstrate two different methods that you could utilize to change or move devices between update channels easily using ConfigMgr. These two methods that we’re going to take a look at are the following:

  • Using a Configuration Item and Baseline
  • Using the Run Script feature

First of all though, if you’re unfamiliar with the different update channels for Office 365 Pro Plus, please refer to the documentation from Microsoft to bring you up to speed:

https://docs.microsoft.com/en-us/deployoffice/overview-of-update-channels-for-office-365-proplus

Update channel information

Knowing what update channel a device with Office 365 Pro Plus installed belongs to, we can leverage the hardware inventory that the ConfigMgr sends back to us. To build the query required for a device collection that is based upon the update channel of a device, we need to access a property named CDNBaseUrl that’s accessible from within the SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS class. Looking locally on a device, the CDNBaseUrl actually comes from the following registry key:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration

The value is in fact the URL for the given update channel:

More information from Microsoft about this is accessible and documented here:

https://docs.microsoft.com/en-us/sccm/sum/deploy-use/manage-office-365-proplus-updates#change-the-update-channel-after-you-enable-office-365-clients-to-receive-updates-from-configuration-manager

Create device collections for update channels

With the information at hand, we can create a set of device collections that could either be used as limiting collections or simply for reporting purposes. I’ll not go into details about how to create a device collection with a query membership, rather only provide you with the required query for the four different update channels. The following query should be used for any of update channel with the corresponding value for the CDNBaseUrl and the update channel. Refer to the list below, or from the Microsoft documentation link in the previous section to build out your device collections.

select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS on SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS.CDNBaseUrl = "<insert CDNBaseUrl value here>"

Amend the “insert CDNBaseUrl value here” with the following depending on what device collections you want to create:

  • Monthly Channel
    • CDNBaseUrl value:
      • http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60
  • Monthly Channel (Targeted)
    • CDNBaseUrl value:
      • http://officecdn.microsoft.com/pr/64256afe-f5d9-4f86-8936-8840a6a4f5be
  • Semi-Annual Channel
    • CDNBaseUrl value:
      • http://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114
  • Semi-Annual Channel (Targeted)
    • CDNBaseUrl value:
      • http://officecdn.microsoft.com/pr/b8f9b850-328d-4355-9145-c59439a0c4cf

If you’d create a device collection for each of the available update channels, I’d look something like this in ConfigMgr:

Method 1 – Using a Configuration Item and Baseline

The first method that we could utilize to change the update channel on a device is a combination of a Configuration Item, Configuration Baseline and a device collection for the deployment of the Configuration Baseline, where the device would have to be made a member of to receive the policy.

For this example, I’ve decided to go with two different Configuration Items that are designed to perform the following actions:

  • Change Update Channel to Monthly
  • Change Update Channel to Semi-Annual

Depending on your requirements in your environment, the scenarios might differ but I’m assuming that these would be the two most likely events that you want to remediate in a production environment. You might have a few devices that have mistakenly been configured for the Monthly Channel (Targeted) and want to change them to the Monthly Channel.

Like I covered in the section above, just like with the device collection queries, the only difference between these two configuration items are the actual CDNBaseUrl being configured. Other than that, the same configuration goes into both of them apart from what device collection you decide to deploy them to.

Create the Configuration Item

  • In the ConfigMgr console under Assets and Compliance – Compliance Settings, right click Configuration Items and create a new.
  • Name the configuration item and ensure Windows Desktops and Servers (custom) is selected and click Next.

  • Select desired operating systems that the configuration item should support and click Next.
  • Under Settings, click New.
  • Give the Setting a name and configure the following:
    • Setting type: Registry value
    • Data type: String
    • Hive name: HKEY_LOCAL_MACHINE
    • Key name: SOFTWARE\Microsoft\Office\ClickToRun\Configuration
    • Value name: CDNBaseUrl

  • Skip the Compliance Rules tab for now, we’ll come back to that in the next step. Click OK and click Next in the Settings page.
  • Under Compliance Rules, click New.
  • Give the Rule a name and click Browse next to the Selected setting.
  • Select the Setting that you recently created (in my example it’s named Change to Monthly Channel, as shown in the screenshot above) and click Select.

  • Configure the Rule with the following:
    • Rule type: Value
    • The setting must comply with the following rule: <name of your rule> and Equals
    • The following value: http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60
    • Remediate noncompliant rules when supported: Checked

  • Click Next in the Compliance Rules page.
  • Complete the wizard.

Create the Configuration Baseline

  • In the ConfigMgr console under Assets and Compliance – Compliance Settings, right click Configuration Baselines and create a new.
  • Name the configuration baseline, click on Add under Configuration data and select Configuration Items.

  • Select the configuration item you recently create, e.g. CI – Office 365 ProPlus – Change to Monthly Channel, click Add and click OK.

  • OPTIONAL: Depending on if your environment is configured for Co-Management and the Device Configuration workload has been switched to Microsoft Intune, ensure that you check the Always apply this baseline even for co-managed clients.

  • Click OK.

As for deploying this newly created configuration baseline to change the update channel from anything to Monthly Channel, the configuration in terms of compliance evaluation, device collection selection and so on. There’s just one thing that’s required to be configured and that’s the Remediate noncompliance rules when supported, as shown in the screenshot below:

What remains for this method is to simply add a device to the collection chosen for the deployment and once the device pulls it’s new policies, the update channel to should change to the Monthly Channel in case it was not configured for that channel previously. If you want to speed up the results shown in the Office 365 Client Channel dashboard, you’d need to trigger a hardware inventory cycle on the same device.

Method 2 – Using Run Script feature

In the first method, we utilized pieces in the product that have existed for a long time and has proven well to be working. However, today we also have an additional way of performing the type of configuration on a device necessary to change the update channel for Office 365 ProPlus, the Run Scripts feature. For this feature, we need to convert the method used previously with configuration items and baselines into a simple PowerShell script.

$UpdateChannel = "http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60"
$CTRConfigurationPath = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration"
$CDNBaseUrl = Get-ItemProperty -Path $CTRConfigurationPath -Name "CDNBaseUrl" -ErrorAction SilentlyContinue | Select-Object -ExpandProperty "CDNBaseUrl"
if ($CDNBaseUrl -ne $null) {
    if ($CDNBaseUrl -notmatch $UpdateChannel) {
        # Set new update channel
        Set-ItemProperty -Path $CTRConfigurationPath -Name "CDNBaseUrl" -Value $UpdateChannel -Force

        # Trigger hardware inventory
        Invoke-WmiMethod -Namespace "root\ccm" -Class "SMS_Client" -Name "TriggerSchedule" -ArgumentList "{00000000-0000-0000-0000-000000000001}"
    }
}

Above is a script that’ll take the update channel stored in the $UpdateChannel variable and match that against what’s currently configured on the device it’s being executed on. If the update channel do not match, it’ll change to what’s specified in the script and after that trigger a hardware inventory cycle. Obviously, the script could be improved to support parameter input and perhaps a bit more error handling, however it should be enough to get you started.

  • In the ConfigMgr console under Software Library, right click Scripts and create a new.
  • Give the script a name and paste in the PowerShell code from above and click Next.

  • Complete the wizard.
  • Depending on your environment and who can approve scripts, ensure that the newly created script gets approved.
  • With the script in place, it can now be executed in near real time on either a device directly or for a device collection simply by choosing the Run script right-click menu option for the desired item.

  • Select the newly created script item and click Next.

  • Complete the wizard and wait for script execution results.

Tracking the change

Below is an example of a simple scenario that you’d want to remediate using any of the methods described in this post. The first picture shows that there are four devices that have reported they have Office 365 ProPlus installed together with their respective update channel. As you can see below, one device is configured for Monthly Channel (Targeted). By using any of the methods described in this post, we can easily now remediate this and ensure that we only have devices configured for the Monthly Channel and Semi-Annual Channel, if that’s whats the desired outcome.

Like I mentioned for the first method in this post, in order to speed up the visible change in the ConfigMgr console that the update channel has changed you need to trigger a hardware inventory cycle. Once that has completed and been loaded into the database, the dashboard will show the changes made, like it is in the below screenshot.

Hopefully this will help you with ensuring that your devices are properly configured for the desired update channel for Office 365 ProPlus.

Nickolaj Andersen

Chief Technical Architect and Enterprise Mobility MVP since 2016. Nickolaj has been in the IT industry for the past 10 years specializing in Enterprise Mobility and Security, Windows devices and deployments including automation. Awarded as PowerShell Hero in 2015 by the community for his script and tools contributions. Creator of ConfigMgr Prerequisites Tool, ConfigMgr OSD FrontEnd, ConfigMgr WebService to name a few. Frequent speaker at conferences such as Microsoft Ignite, NIC Conference and IT/Dev Connections including nordic user groups.

21 comments

  • Hi, thks a lot for the new function. It works really well Semi to monthly or semi to targeted), but sadly, it doesn’t change the build/channel in the UI went going from Monthly to semi or semi annual targeted to semi annual (it just says that I’m on the latest build.) But the reg keys are there

    Maybe that’s how it works, you can just revert to a previous build, so you need to remove it and then install the build/channel you want.

    I will try to keep a machine changed from targeted to semi-annual for next month to see which build/channel will show up in available updates.

    thks a lot for your help and keep you posted.

  • To test this, I changed the CDNBaseUrl on 2 computers to the URL for “Semi-annual Channel (Targeted)”. (http://officecdn.microsoft.com/pr/b8f9b850-328d-4355-9145-c59439a0c4cf)
    Now I can see that I have 2 computers in that channel in Office 365 Client Management.
    BUT…all Office 365 Client Updates for “Semi-annual Channel (Targeted)” is showing zero computers in the Required column.

    Both computers has Office 365 1803 (Build 9126.2284) installed (they haven’t been updated or patched).

    Office on both computers still says they are on “Semi-anual Channel” and if I look in the registry there is a value “UpdateChannel” that contains the original URL. Are you sure that CDNBaseUrl is everything that needs to be changed on the computer?

  • Hi Nickolaj thank you for the great post. I was wondering, if I use the CI/CB to revert a monthly to semi annual, what other steps are needed?

    I’m asking because, yes the url is changed, but the O365 build remains the same.

    Thank you in advance.

  • Thanks Nickolaj, great post.

    Am I right in thinking that If you change the channel this way it will still remain on the version it has installed until the update matches or exceeds the installed version? For example, if you change a device from monthly to semi-annual, it’ll stay on the Monthly version until the semi-annual version has caught up. Would this mean that it wouldn’t be receiving any updates (security patches) for a few months?

    This is what I understand, be grateful if you can confirm or correct me:
    -I change a monthly device with 1902 to a semi-annual but 1902 remains
    -The update channel is set to semi-annual now but it doesn’t install the semi-annual updates as the device has a newer version
    – Only when the semi-annual channel passed 1902 will it receive updates again

    Thanks.

  • Thanks Nickolaj, great post. Am I right in thinking that If you change the channel this way it will still remain on the version it has installed until the update matches or exceeds the installed version? For example, if you change a device from monthly to semi-annual, it’ll stay on the Monthly version until the semi-annual version has caught up. Would this mean that it wouldn’t be receiving any updates (security patches) for a few months?

    This is what I understand, be grateful if you can confirm or correct me:
    -I change a monthly device with 1902 to a semi-annual but 1902 remains
    -The update channel is set to semi-annual now but it doesn’t install the semi-annual updates as the device has a newer version
    – Only when the semi-annual channel passed 1902 will it receive updates again

    Thanks.

  • maybe a stupid question, but lets say “What Now? :)”. Example wise i have 1000 clients now that has changed from Monthly Channel to Semi-Annual channel. So whats the next step. Do the Clients fix themselves in 6 months, when SA catches up, or do you do something else to force some other issues?

  • Just as a means of an update I was only able to get this to work when I used the gui to build the code. Copying and pasting code into the SQL query window never worked.

    Really appreciate your help

    • You are missing the quotation marks around the URL.

      (Also it’s a WMI Query windows, not SQL;)

  • Hi Nickolaj, i try to set my client from “monthyl channel” to “semi annual” but the changes are not working. 🙁

    • Andreas,
      You may be running into the same issue I and others have seen. When SCCM is pushing updates, setting only the “CDNBaseUrl” does not work. I have to set the “UpdateChannel” as well. I change both to be safe but I do not know if the “CDNBaseUrl” is required to be modified. I do it because “CDNBaseUrl” and “UpdateChannel” usually match. I have tested changing the keys multiple times and nothing happens unless I change the UpdateChannel key also.

      If you reference the Microsoft link “https://docs.microsoft.com/en-us/sccm/sum/deploy-use/manage-office-365-proplus-updates#change-the-update-channel-after-you-enable-office-365-clients-to-receive-updates-from-configuration-manager” and view the feedback on the “open” tab you will notice others indicating the same behavior.

      Do not start celebrating yet! Setting only those two keys only works if you are moving from SAC (Semi annual) to MC (monthly ). When moving from MC to SAC I have to set another key “UpdateChannelChanged” to true. In addition, after all three keys have been set, the command “OfficeC2RClient.exe /update user” must be run at the command line. That file is located in “C:\Program Files\Common Files\Microsoft Shared\ClickToRun”. This is only necessary when moving from MC to SAC.

      I tested this all outside of SCCM therefore this behavior has nothing to do with SCCM.

      I wonder if something has changed in a recent update that causes only changing the CDNBaseUrl to cease working because I believe it worked for others in the past. I cannot find any data to back up that updates have changed things but my testing sure proves that only changing the CDNBaseURL does not work in my environment.

      Try what I listed and see if you have any luck. Good luck!

    • I’m in the same boat. I’ve tried all manners to install with the Semi-annual channel and it constantly reports as monthly. I’ve used MS’s config.office for the xml with no joy. I never used to have this problem.

  • HI I have followed the script/powershell update method an it works well reporting correctly in SCCM and the URL on the local machine being the expected one. However the o365 application still shows it being on a different channel to the one being pushed. Does this ever update?

    Thanks

  • Ok been trying to troubleshoot this I also worked I need quotes thank you for coming back so quickly. The main problem i have is that that tables don’t exist in my DB.

    I have a view so can use vSMS_R_System but the columns are not the same and I have a vSMS_O365COnfigurations that has the CDNBaseURL column in it but not the resourceid so not sure where to make my join.

    Is there some update I need to make to the DB that would create these tables?

    Thanks

  • Hi Nikolaj

    Thank you for clarification that helps but I had tried it both ways. This is the text I am pasting in the query statement for the rule but am still seeing the syntax error. Thank you for your help

    select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS on SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS.CDNBaseUrl = https://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60

  • Quick question when I am trying to build the device collection to show machines on a monthly update cycle I edit the query statement and copy your text into the query statement. I get the query has a syntax error.

    select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS on SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS.ResourceID = SMS_R_System.ResourceId where SMS_G_System_OFFICE365PROPLUSCONFIGURATIONS.CDNBaseUrl = CDNBaseUrl: https://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60

    —————————
    Configuration Manager
    —————————
    This query has a syntax error. Are you sure you want to save it?
    —————————
    Yes No
    —————————

    Probably a really stupid question but appreciate you pointing me int he right direction.

    Thanks

    • Hi Chris,

      I’ve updated the post to hopefully be a bit more clear regarding what value you’re supposed to replace in the query. It’s only the URL, not the whole line.

      Regards,
      Nickolaj

Sponsors