HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Autopilot AutopilotIntuneEntra IDDynamic GroupsTroubleshooting

You Changed the Group Tag and Nothing Happened: The OrderID Assignment Chain

IA
Imran Awan
17 August 2026

You change a device's group tag in Intune so it picks up a different Autopilot profile. You wait. You sync. Nothing happens. Then an hour later it works - or it never does, and nobody can explain why. Both outcomes have the same root cause: a group tag does not assign anything directly. It is one link in a three-stage chain, and each stage introduces its own delay.

The short version

The Intune "group tag" field is written to the Microsoft Entra device object as the OrderID attribute. An Entra dynamic group rule matches on it - (device.devicePhysicalIds -any (_ -eq "[OrderID]:YourTag")) - and the Autopilot profile is assigned to that group, not to the tag. So a tag change must propagate through Entra dynamic group re-evaluation and then through Autopilot profile assignment, and both take real time. There is also a flag on the cached profile, IsExplicitProfileAssignment, which when true means the profile was assigned directly to the device - and no group tag change will ever redirect it.

Note: the mental model that causes the confusion is thinking a group tag is like a label you attach to a device that Intune then reads. It is not. The tag is stored in Entra as a device attribute called OrderID, a dynamic group's membership rule looks for that attribute, and the Autopilot profile is assigned to the group. Three separate systems, in sequence.

The problem: a change that does nothing, then suddenly works

Typical presentations:

The delays are real and documented. Dynamic group membership updates take time on their own, Autopilot profile assignment adds more on top, and in some circumstances group updates have been observed taking many hours. Provisioning a device inside that window gives you the previous configuration.

Why it happens: group tag is OrderID is a group rule

Follow the chain in order, because each hop is a place where time passes:

  1. You set the group tag on the Autopilot device object in Intune.
  2. Entra stores it as OrderID on the device object, inside the devicePhysicalIds collection.
  3. A dynamic group rule evaluates and the device becomes a member - or stops being one. This is Entra dynamic group processing, on Entra's schedule, not Intune's.
  4. Autopilot profile assignment then follows group membership, and the device's assigned profile is recalculated.
  5. Only then will a newly provisioning device download the new profile.

Steps 3 and 4 are the ones you cannot rush. And critically, they are asynchronous relative to each other - the group membership can be correct while profile assignment has not yet caught up.

Gotcha: this is why "the device got the default ESP instead of my custom one" is such a common symptom. Enrollment Status Page profiles are assigned to groups too. If the device provisions after joining the group but before ESP assignment has propagated, it takes the default. Nothing is misconfigured - you were simply inside the window.

How to verify: read the chain from both ends

Device side, the useful question is not "what is my group tag" - the device does not store it - but "was my profile assigned via a group at all?" The cached profile answers that:

PowerShell — on the device (run elevated)
\$c = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Provisioning\AutopilotPolicyCache' \$p = \$c.PolicyJsonCache | ConvertFrom-Json \$p | Select-Object DeploymentProfileName, IsExplicitProfileAssignment, PolicyDownloadDate # IsExplicitProfileAssignment = True means the profile was assigned DIRECTLY # to this device. No group tag change will ever redirect it.

Service side, check the dynamic group rule itself. These are the two expressions that matter:

Entra dynamic group membership rules
# All Autopilot-registered devices (matches the ZTD ID prefix) (device.devicePhysicalIDs -any (_ -startsWith "[ZTDid]")) # Only devices carrying one specific group tag (device.devicePhysicalIds -any (_ -eq "[OrderID]:YourTagValue"))
Tip: check IsExplicitProfileAssignment first. If it is true, you can stop immediately - the entire group tag chain is irrelevant for that device, and no amount of waiting or re-syncing will change its profile. That single flag saves the most frustrating version of this investigation.

The fix: change the tag properly and wait deliberately

Context: there is nothing broken to repair. The fix is doing the change in the right order and treating the propagation delay as a planned step rather than a surprise.

  1. Sign in to intune.microsoft.com.
  2. Go to Devices › Enrollment › Windows Autopilot devices (Devices › Windows › Windows enrollment in some portal versions).
  3. Select the device and edit its Group tag. Save.
  4. Confirm the corresponding Entra dynamic group has actually picked the device up - check group membership, not just the tag. This is the stage that silently lags.
  5. Confirm the Autopilot profile assignment status for the device has updated to the expected profile. This is a second, separate propagation.
  6. Only provision the device once both step 4 and step 5 show the expected state. Provisioning earlier gives you the old profile, correctly.
intune.microsoft.comDevices › EnrollmentWindows Autopilot devices[device] › Group tag
Watch out: do not remove a device from its Autopilot group while it is mid-enrollment to force a re-evaluation. Pulling group membership out from under an in-flight provisioning run can leave the device in a loop, repeatedly resetting because the configuration it expects keeps changing underneath it. Make tag and group changes on devices that are not currently provisioning, then let propagation finish before imaging.

Two structural choices that avoid the problem entirely

Reference: attributes, rules and where each lives

ThingWhere it livesWhat it does
Group tagIntune Autopilot device object (portal / Graph)What you edit. Not stored on the device itself
OrderIDEntra device object, in devicePhysicalIdsWhat the group tag becomes. This is what dynamic group rules actually match
ZTDidEntra device object, in devicePhysicalIdsThe Autopilot registration identifier - used to match all Autopilot devices regardless of tag
ZtdRegistrationIdDevice: cached profile JSON in AutopilotPolicyCacheThe device-side view of its own ZTD registration - a device identifier, handle with care
IsExplicitProfileAssignmentDevice: cached profile JSONTrue means the profile was assigned directly, so group tags are irrelevant for this device
PolicyDownloadDateDevice: cached profile JSONWhen the device last actually pulled a profile - anything changed after this has not reached it

Proof it worked: a real device that ignores group tags

A genuine run of Get-AutopilotAssignmentChain.ps1 from this series. The profile name and ZTD registration ID are redacted; the flags and dates are exactly as captured:

PowerShell — Get-AutopilotAssignmentChain.ps1 (real output, identifiers redacted)
Autopilot Assignment Chain (device side) -------------------------------------------------------------- Cached profile name : Corp Autopilot - Hybrid Join Cached on : 2024-10-17T08:10:31Z ZtdRegistrationId : bd559dde-... (truncated - use -ShowFullZtdId to see it all) This is the value an Entra dynamic group rule matches when you write: (device.devicePhysicalIDs -any (_ -startsWith "[ZTDid]")) IsExplicitProfileAssignment: True -> This profile was assigned DIRECTLY to the device, not inherited via a dynamic group. Group tag changes will NOT redirect this device to a different profile, because no group membership rule is deciding it. Where the group tag actually lives: Intune 'group tag' -> Entra device attribute 'OrderID' Dynamic group rule for one tag: (device.devicePhysicalIds -any (_ -eq "[OrderID]:YourTagValue"))

This is the most useful possible result, because it is the case people waste the most time on. IsExplicitProfileAssignment: True means this device's profile was assigned directly. Editing its group tag would achieve precisely nothing - not "eventually", not "after a sync", ever. Any investigation into propagation delay for this device would have been chasing a mechanism that is not in play.

Note also the deliberate limit of what the script claims. It does not report the current group tag, because the tag is not stored on the device - it lives on the Entra device object as OrderID. A script that invented a value there would be confidently wrong, so instead it tells you where to actually read it.

References

Microsoft MVP community deep-dives

Verified and genuinely on-topic - the URL was fetched and confirmed before being cited here, not copied on trust:

AuthorPostWhat it adds
Rudy Ooms (MVP, call4cloud.nl)Step by Step: How Windows Retrieves the Autopilot ProfileTraces the full token-and-profile retrieval flow and independently documents the AutopilotPolicyCache registry key and wmansvc on-disk cache that these posts read from
PowerShell Scripts — Autopilot Assignment Chain

Script for this post is in Windows-Autopilot-Scripts.

Get-AutopilotAssignmentChain.ps1 — read-only: reports whether the profile was explicitly assigned or group-driven, plus the ZTD registration ID that dynamic group rules match on - truncated by default
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Autopilot
The ZTDID: The One Attribute That Proves a Device Is Really…
A device enrols, reports compliant, and still never joins your all-Autopilot dynamic…
Autopilot
The Autopilot Conditional Access deadlock: requiring a compliant…
A brand-new Autopilot device cannot be compliant before it is enrolled, so a Conditional…
Autopilot
Autopilot silent BitLocker: the race between the ESP and your…
Silent BitLocker encryption during Autopilot is a race, not a switch. Windows encrypts…