Configure time zones via Windows 10 MDM

This week a blog post about a nice newly introduced policy setting in Windows 10, version 1903. That setting is available in the TimeLanguageSettings area, and can be used to set the time zone of the device. The TimeLanguageSettings area already existed before Windows 10, version 1903, but previously only contained a single setting for Windows 10 Mobile. Now it also contains a very useful setting related to non-Mobile versions of Windows 10. That setting will give some more control on the default time zone configuration of a device. In this post I’ll briefly go through the setting, followed by the configuration and the end-user experience.

Settings

Let’s start by having a look at the setting. The TimeLanguageSettings area is not a new node within the Policy CSP, but starting with Windows 10, version 1903, it does contain a nice new policy setting.  Below is an overview of that policy setting. Keep in mind that the complete node of this policy setting starts with ./Device/Vendor/MSFT/Policy/Config/TimeLanguageSettings/.

Policy Description

ConfigureTimeZone

Value: <time zone ID>

This policy can be used to specify the time zone that should be applied to the device.

Note: The time zone ID can be retrieved by using tzutil.exe. Simply use tzutil.exe /g on a device that already has the correct time zone configured.

Configuration

Now let’s continue by having a look at the configuration steps for the time zone. In other words, create a device configuration profile with the previously mentioned custom policy setting. I will use my own time zone as an example. The following three steps walk through the creation of that device configuration profile. After that simply assign the created profile to a user or device group.

1 Open the Azure portal and navigate to Microsoft Intune > Device configuration > Profiles to open the Devices configuration – Profiles blade;
2 On the Devices configuration – Profiles blade, click Create profile to open the Create profile blade;
3a

TZC-CreateProfileOn the Create profile blade, provide the following information and click Create;

  • Name: Time zone configuration
  • Description: (Optional)  
  • Platform: Select Windows 10 and later
  • Profile type: Select Custom
  • Settings: See step 3b
3b

On the Custom OMA-URI Settings blade, provide the following information and click Add to open the Add row blade. On the Add row blade, provide the following information and click OK (and click OK in the Custom OMA-URI blade);

  • Name: Set time zone
  • Description: (Optional)
  • OMA-URI: ./Device/Vendor/MSFT/Policy/Config/TimeLanguageSettings/ConfigureTimeZone
  • Data type: Select String;
  • Value: W. Europe Standard Time

TZC-AddRow

Note: At some point in time this configuration will probably become available in the Azure portal without the requirement of creating a custom OMA-URI.

End-user experience

Let’s end this post by looking at the end-user experience. Below is an example of a Windows 10 device running version 1903. In that example it shows the configuration of the time zone that should be configured. In my testing the end-user would still be able to adjust the time zone afterwards.

TZC-EndUserExperience01

As the end-user was still able to adjust the configuration afterwards, I wanted to be sure that the configuration was actually applied. To do that I also looked at the MDM Diagnostics Report. That report, which is shown below, clearly shows that the policy setting is configured,

TZC-EndUserExperience02

Besides that report, the Event Viewer will also provide the information about the time zone change.

  • The Admin log in Microsoft > Windows > DeviceManagement-Enterprise-Diagnostics-Proivder shows event id 814 with the message MDM PolicyManager: Set policy string, Policy: (ConfigureTimeZone), Area: (TimeLanguageSettings), EnrollmentID requesting merge: (A77EC83D-AFD9-4949-AE0C-69CD6784C83F), Current User: (Device), String: (W. Europe Standard Time), Enrollment Type: (0x6), Scope: (0x0).
  • The System log shows event id 22 with the message The time zone bias has changed to -120 from 420 followed by event id 1 with the message The system time has changed to ‎2019‎-‎07‎-‎11T06:26:15.574273500Z from ‎2019‎-‎07‎-‎11T06:26:15.574273500Z. Change Reason: System time adjusted to the new time zone.

More information

For more information about the available time zone settings in the Policy CSP, please refer to the documentation about Policy CSP – TimeLanguageSettings.

42 thoughts on “Configure time zones via Windows 10 MDM”

  1. I just tried this new CSP on my small fleet of SelfDeploying 1903 Public Kiosks – applied successfully, but I am getting reports still a few have set their time automatically 2 hours ahead. Been testing time service reset / resync powershell scripts but not seeing the results.

    Reply
  2. Hi, nice article, as may other 🙂

    Any idea why my policy may not apply and Event Log throws:

    MDM ConfigurationManager: Command failure status. Configuration Source ID: (383C96E9-DDA6-4882-ADBB-B61A92769C09), Enrollment Name: (MDMDeviceWithAAD), Provider Name: (Policy), Command Type: (Add: from Replace or Add), CSP URI: (./Device/Vendor/MSFT/Policy/Config/TimeLanguageSettings/ConfigureTimeZone), Result: (The system cannot find the file specified.).

    …?

    Reply
  3. Thank you this policy is not getting deployed in Windows 10 ,1909
    I want to understand more about creating OMA uri
    Thank you for reply

    Reply
  4. Hi Peter,

    Thank you for providing this config. Very useful however, what if you have a company of 1200 users across 32 different countries. This is the situation I am in. Migrating users to Intune and every one of them is experiencing the timezone issue whereby their timezone is always 6-8 hours out. This solution would work however I would have to do this per region with multiple different configs etc. Any idea how to streamline this further?

    Reply
    • Hi JohnR,
      Not sure what you exactly mean. My experience is that this policy setting configures the time zone and that the current time in that time zone will show on the clock.
      Regards, Peter

      Reply
  5. I love what you have done here. I don’t see any Time Zone lists which show valid time zone strings. I tried working backward to see if there are any Time Zones which state “W. Europe Standard time”. I haven’t found any such time table.

    My Goal – I need to determine the string names of the 4 standard zones for the USA. Eastern Standard Time – Pacific Standard Time.

    We would deliver the computer via AutoPilot and have the initial time set to their office location (state) by dynamic group. We have a lot of users that do travel so them having the ability to over ride the time is actually a good thing for us.

    Reply
  6. Hello Peter. Thanks for the informative blog posts. I have referred back to your content frequently.

    In this particular case, I am attempting to set the same time zone on a set of Intune enrolled devices. The MDM Diagnostic report shows the correct time zone as Central Standard Time. However, the 814 event shows String: (). I am seeing the time two hours off of what is expected. Any ideas?

    Reply
    • Hi Ryan,
      It’s been a while, but I do remember that it indeed did configure the timezone and didn’t trigger a time sync.. The device itself already did show the new timezone, right?
      Regards, Peter

      Reply
  7. Hi

    I am able to run the profile when users are enrolled initially as administrator however when we apply the standard user profile for Autopilot the profile will show success but the time still has not changed on the device. Its 6 hours ahead every time??

    Reply
  8. Hi Peter,

    Is it also possible to set the Region?
    I’m using autopilot and want Windows to be in English but the region in Dutch. So that date format, etc are correct.
    I can’t find anything about setting region with Intune.
    Thanks.

    Reply
  9. Hi Peter,

    As far as I can see, autopilot only has the option to set language and Region at the same time. So if I change it to dutch, the Windows language will also be Dutch.
    During OOBE the user only has the option to select the keyboard when it’s connected to the LAN.

    I’m trying to fix the region with register keys now.

    Reply
  10. Thanks, followed your guide and device config profile applies successfully, changing the time zone to the configured one.

    Reply
  11. CSP is working great setting it to the company’s HQ timezone. We have run into a case where a remote user in a different time zone sets it manually, but then says time zone reverts after a reboot. Have you experienced this same behavior?

    Reply
  12. Thanks this worked perfectly for all our Windows devices. However it didn’t work for our Surface Hubs 2S. Do you know why and is so how would we do this for these devices?

    Reply
  13. There seems to be evidence that this setting gets permanently tattooed into Windows, and you can’t revert it completely.

    We removed the policy from computers, and I can see the policy keys disappear. But our user boxes keep re applying the setting, which sucks when you have people roaming between time zones.

    TLDR – you might not want to use this on users who move between time zones.

    Reply
  14. Thanks for the great answers. Is there any way to generate a report of what the devices timezone settings are from within Intune ?

    Reply
  15. Thanks Peter,

    Any thoughts on how to enable the user to change time zone, using this CSP:
    ./Vendor/MSFT/Policy/Config/UserRights/ChangeTimeZone

    I have tried data type String (XML) and String with various values, but keep getting an error.

    Event manager show The system cannot find the file specified.

    Any thoughts?

    Reply
    • Hi Arnaud,
      This method will indeed prevent the user from changing it. That would require a different configuration method that only configures it once. Something like scripting for example.
      Regards, Peter

      Reply

Leave a Reply to tomasz Cancel reply

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