Revisiting Windows Autopilot for existing devices

Back in October, I posted a blog talking about speeding up Windows Autopilot for existing devices, with a custom task sequence template to avoid the extra sysprep generalize and specialize that happens with the default ConfigMgr task sequence template for Windows Autopilot for existing devices (now built into ConfigMgr current branch).  Based on feedback from Sandy, I modified that example (attached below and updated on the original blog as well) to remove the final “Restart computer” step as it’s not necessary.

One of the steps you should make sure to perform after performing an Windows Autopilot for existing devices deployment is to get the device registered with Autopilot.  To do that, make sure you follow these steps:

  • Create a dynamic group that specifies the ZtdCorrelationId as part of the query.  For example, my AutopilotConfigurationFile.json contains this line:

    "ZtdCorrelationId":  "55be23da-e32a-468e-a1b1-fe1833fc9b63"

    So the dynamic membership rule in Azure AD specifies that as part of the enrollment profile name:

    Dynamic profile

  • Make sure the Autopilot profile that you used to create the JSON file specifies to “Convert all targeted devices to Autopilot”:

    Convert all targeted

  • Make sure that same Autopilot profile is assigned to the dynamic group that you created in the first step, so that each deployed device gets the right profile assigned.

If you initially tried to use the ZtdCorrelationId in a dynamic group membership rule and you noticed that it didn’t work, give it another try – some additional Intune changes were needed to support that, and those weren’t in place before early December.  Now, the full “OfflineAutopilotProfile-55be23da-e32a-468e-a1b1-fe1833fc9b63” value should be populated.

While testing this, the usefulness of that ZtdCorrelationId became clearer to me.  If you looked at the JSON files being generated by the WindowsAutopilotIntune module, you might have noticed that it used a hard-coded GUID.  So if you didn’t manually change that, every device deployed by every customer ended up with the same OfflineAutopilotProfile value.  That’s harmless, but not terribly useful.  So I published a new version of the module (2.5) that sets the ZtdCorrelationId to the ID (GUID) of the Autopilot profile in Intune.  That way, there’s a 1:1 correlation between the Autopilot profile and the ZtdCorrelationId, which makes the above process (assigning a profile to all the devices in a dynamic group that uses the ZtdCorrelationId) work well.  So grab the updated copy and generate an updated JSON file (or at least copy in the new ID value).

Attachment:  AutopilotExistingDevices_Fast_v2