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:
      • https://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60
  • Monthly Channel (Targeted)
    • CDNBaseUrl value:
      • https://officecdn.microsoft.com/pr/64256afe-f5d9-4f86-8936-8840a6a4f5be
  • Semi-Annual Channel
    • CDNBaseUrl value:
      • https://officecdn.microsoft.com/pr/7ffbc6bf-bc32-4f92-8982-f9dd17fd3114
  • Semi-Annual Channel (Targeted)
    • CDNBaseUrl value:
      • https://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: https://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 = "https://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.

(4625)

comments
  • Chris Stewart
    Posted at 00:15 January 30, 2019
    Chris Stewart
    Reply
    Author

    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

    • Nickolaj Andersen
      Posted at 09:41 January 30, 2019
      Nickolaj Andersen
      Reply
      Author

      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

  • Chris Stewart
    Posted at 13:00 January 30, 2019
    Chris Stewart
    Reply
    Author

    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

    • Nickolaj Andersen
      Posted at 13:05 January 30, 2019
      Nickolaj Andersen
      Reply
      Author

      You need to wrap the url within quotes too. Regards, Nickolaj

  • Andreas
    Posted at 09:43 February 7, 2019
    Andreas
    Reply
    Author

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

  • Chris Stewart
    Posted at 17:17 February 18, 2019
    Chris Stewart
    Reply
    Author

    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

  • Leave a Reply

    This site uses Akismet to reduce spam. Learn how your comment data is processed.