DIDOES ITEndpoint Engineering← Tous les articles

Technologie IT / Modern Workplace Lab

OMA-DM et WinDC : comprendre la double inscription qui transforme la gestion Intune

Intune ne pilote plus nécessairement Windows par un seul chemin. Avec Windows Declared Configuration, le poste peut conserver son inscription MDM habituelle tout en ouvrant un second canal OMA-DM, lié au premier et dédié à un modèle déclaratif. Je détaille ici ce que cette architecture change réellement, ce qui reste identique et comment l’observer sans confondre deux moteurs, deux transports ou deux autorités de gestion.

À propos des exemples

Je publie les diagnostics en niveau 1 et les exemples de remédiation au minimum en niveau 2. Ils restent pédagogiques, non testés et ne doivent pas être utilisés tels quels. Avant tout essai réel, adaptez-les au contexte, utilisez la simulation quand elle existe et validez le rollback sur un pilote représentatif.

01

Résumé : deux inscriptions, mais une seule autorité MDM principale

Windows Declared Configuration, que j’abrège WinDC dans cet article, introduit une manière différente de gérer certaines configurations Windows. Le modèle MDM classique demande au client d’exécuter une suite d’opérations : ajouter une valeur, la remplacer, la lire ou la supprimer. WinDC transmet plutôt un document décrivant l’état attendu. Le client interprète cette déclaration, applique les ressources correspondantes et contrôle ensuite que l’état reste conforme.

La différence ne signifie pourtant pas qu’OMA-DM disparaît. Le canal historique et le canal déclaratif reposent tous deux sur le client de gestion Windows, le protocole OMA-DM et des échanges SyncML. WinDC crée un enrôlement OMA-DM supplémentaire, appelé enrôlement lié, qui dépend de l’inscription MDM principale. Le poste est donc doublement inscrit du point de vue des canaux de gestion, sans être cogéré par deux tenants indépendants et sans recevoir deux autorités MDM principales concurrentes.

Cette nuance est importante pour analyser un poste Intune moderne. Voir deux identifiants d’enrôlement sous le registre ou deux ensembles de tâches EnterpriseMgmt ne prouve pas un enrôlement défectueux. Inversement, un succès HTTP ou SyncML sur le canal lié ne prouve pas que la déclaration a finalement été appliquée : le traitement WinDC est asynchrone et son résultat doit être lu dans les nœuds de résultats et dans les journaux Windows.

Le bon modèle mental est le suivant : une inscription Intune principale, un second enrôlement OMA-DM qui lui est lié, puis deux modèles de contrôle capables de cohabiter sur le même endpoint. WinDC n’est ni un second tenant, ni le co-management MECM, ni un remplacement immédiat de tout le moteur MDM historique.
FLUXVue d’ensemble de la cohabitation
  1. IntuneL’autorité de gestion décide quel canal et quelle charge de travail sont utilisés.
  2. Inscription MDM principaleCanal OMA-DM historique, identité et certificat de gestion du poste.
  3. Enrôlement WinDC liéSecond canal OMA-DM créé uniquement après l’inscription principale.
  4. Ressources WindowsChaque ressource reste gérée par son propriétaire effectif afin d’éviter les doubles écritures.

Le lien de dépendance va du canal déclaratif vers l’enrôlement principal. Une suppression ou une rupture de l’inscription principale remet donc en cause le canal lié.

02

Contexte : pourquoi Windows ajoute un modèle déclaratif

Le modèle OMA-DM classique a été conçu autour de sessions pendant lesquelles le serveur et le client échangent des commandes. Il reste robuste et largement utilisé : le serveur envoie une opération SyncML vers un URI de CSP, le client l’exécute, puis renvoie un statut et éventuellement une valeur. Cette approche fonctionne très bien tant que le serveur conserve la logique d’orchestration, connaît l’ordre des opérations et revient régulièrement vérifier ou corriger l’état.

À mesure que les politiques deviennent plus complexes, ce modèle montre une limite opérationnelle : un code de retour positif confirme surtout que la commande a été acceptée ou exécutée à cet instant. Il ne représente pas nécessairement l’intention complète de la configuration, ses dépendances ou sa conformité durable. Le service doit souvent relire l’état, comparer le résultat et réémettre une commande. Un conflit entre plusieurs profils peut également devenir difficile à expliquer si deux chemins écrivent successivement sur la même ressource.

WinDC déplace une partie de cette logique sur le poste. Le service transmet une déclaration complète avec un identifiant de document, un contexte, une version et des ressources. Windows construit l’état cible, applique ce qui manque, publie des résultats et réévalue périodiquement la déclaration. La documentation Microsoft indique un cycle de rafraîchissement par défaut de quatre heures pour les déclarations. Ce rythme ne doit pas être confondu avec le rythme de synchronisation Intune général, avec la tâche de certificat MDM ou avec la fonctionnalité distincte Config Refresh.

Dans Intune, cette architecture permet à Microsoft de faire évoluer certaines charges de travail sans réécrire immédiatement tout le plan de gestion historique. Des observations de terrain associent déjà le canal lié à des fonctions modernes comme l’inventaire enrichi ou certaines stratégies d’élévation. Je les traite comme des indices d’implémentation, pas comme une API publique stable : les noms internes, les déclencheurs et les charges de travail peuvent évoluer indépendamment de la documentation contractuelle.

  • OMA-DM classique : le serveur orchestre une séquence d’actions et lit leur statut.
  • WinDC : le serveur déclare l’état attendu et le client assure l’application et la réconciliation.
  • Les deux chemins utilisent OMA-DM ; leur différence principale se situe dans le modèle de contrôle, le cycle de traitement et la propriété des ressources.
  • La double inscription est une relation parent-enfant : l’enrôlement déclaratif n’existe pas seul.
03

Le moteur historique : OMA-DM, SyncML et les CSP

OMA Device Management 1.2 est le protocole de gestion pris en charge par Windows pour les scénarios MDM. La communication s’effectue en HTTPS. Chaque session comporte une phase d’authentification et d’initialisation, puis une phase de gestion pendant laquelle le serveur et le client échangent des messages SyncML. Le client Windows expose un arbre de gestion adressable sous des URI comme ./Device ou ./User ; les CSP traduisent ensuite ces opérations en modifications réellement comprises par Windows.

Les commandes les plus fréquentes sont Add, Replace, Get, Delete et Exec. Atomic et Sequence permettent de regrouper ou d’ordonner certaines actions. Chaque commande porte un CmdID, chaque cible utilise un LocURI et la réponse contient des codes d’état. Un statut 200 indique généralement que la commande a été traitée avec succès ; 202 indique une acceptation pour traitement. D’autres statuts OMA-DM, HRESULT ou codes propres au CSP doivent être interprétés avec le contexte de la session.

Le fichier de provisioning SyncML possède une enveloppe SyncHdr et un corps SyncBody. L’en-tête identifie la version du protocole, la session, le message, la source et la destination. Le corps contient les commandes, leurs identifiants et les URI cibles. Le LocURI Windows ne doit pas commencer par une barre oblique : ./Device/Vendor/MSFT/... est correct, /Device/Vendor/MSFT/... ne l’est pas.

Dans ce modèle, le serveur peut envoyer Replace aujourd’hui, recevoir un succès, puis envoyer Get lors d’une synchronisation ultérieure pour vérifier la valeur. Si une autre autorité locale ou un autre profil modifie la même ressource entre-temps, la plateforme doit arbitrer le conflit ou le service doit réappliquer son intention. La transaction décrit donc une action ; elle ne transporte pas toujours à elle seule la totalité du contrat de conformité attendu.

FLUXChaîne de traitement OMA-DM classique
  1. Service IntunePrépare une commande et l’URI du paramètre à gérer.
  2. HTTPS + SyncMLTransporte Add, Replace, Get, Delete ou Exec pendant une session.
  3. DMClientValide la commande et route l’URI dans l’arbre de gestion Windows.
  4. CSPTraduit l’opération en configuration Windows et retourne son statut.
XMLExemple pédagogique d’une lecture suivie d’une écriture SyncML
<SyncBody>
  <Get>
    <CmdID>10</CmdID>
    <Item>
      <Target>
        <LocURI>./Device/Vendor/MSFT/Policy/Config/Experience/AllowWindowsSpotlight</LocURI>
      </Target>
    </Item>
  </Get>
  <Replace>
    <CmdID>20</CmdID>
    <Item>
      <Target>
        <LocURI>./Device/Vendor/MSFT/Policy/Config/Experience/AllowWindowsSpotlight</LocURI>
      </Target>
      <Meta><Format xmlns="syncml:metinf">int</Format></Meta>
      <Data>0</Data>
    </Item>
  </Replace>
  <Final />
</SyncBody>

Extrait volontairement limité au corps du message. Il illustre la mécanique, pas un profil Intune prêt à importer. L’URI, le format et la portée doivent toujours être confirmés dans la documentation du CSP pour la version Windows visée.

04

Le nouveau modèle : Windows Declared Configuration

WinDC ajoute une couche déclarative au-dessus du socle de gestion Windows. Le serveur ne décrit plus seulement une suite d’écritures ; il remet au client un document d’état souhaité. Ce document comporte un identifiant unique, un contexte Device ou User, une version et une collection de ressources. Le client conserve la déclaration, calcule ce qu’il doit appliquer, exécute les fournisseurs de ressources et publie un document de résultats.

Cette architecture sépare clairement trois temps. La découverte permet à Windows d’obtenir les points de terminaison et la politique d’authentification du service déclaratif. L’enrôlement lié crée ensuite le canal OMA-DM secondaire. Enfin, les sessions de gestion remettent les documents et lisent les états. La mise en œuvre reste donc dépendante d’OMA-DM, mais l’objet manipulé et la responsabilité du client sont différents.

Une déclaration est traitée de manière asynchrone. Le serveur peut recevoir un statut OMA-DM positif pour la remise du document alors que Windows n’a pas encore terminé l’application de toutes les ressources. Il faut distinguer l’accusé de transport, l’état du document et le résultat de chaque ressource. Pour une validation sérieuse, je cherche au minimum l’identifiant du document, son état de traitement, le résultat par ressource et les événements corrélés.

Le modèle déclaratif permet aussi une correction de dérive. Lors du rafraîchissement, Windows reteste les ressources de la déclaration et réapplique celles qui ne correspondent plus à la cible. Cela réduit le besoin pour le service de reconstruire en permanence une séquence Get-Compare-Set. Cette capacité n’annule pas les conflits : elle impose au contraire une propriété explicite afin qu’un autre canal ne réécrive pas en parallèle sur la même ressource.

FLUXCycle d’une déclaration WinDC
  1. DiscoverLe poste présente tenant, identité, type d’enrôlement et version Windows.
  2. EnrollDMClient crée l’enrôlement lié avec l’authentification demandée.
  3. DeclareLe service remet un document d’état souhaité identifié par un GUID.
  4. ReconcileWindows applique, teste et corrige les ressources sous sa responsabilité.
  5. ReportLes résultats du document et des ressources sont exposés au serveur et dans les traces.

La réussite de Declare confirme la remise du document ; Report permet de confirmer l’issue réelle de son traitement.

05

Comment la double inscription se construit

Le prérequis fondamental est l’existence d’une inscription MDM principale. La documentation Microsoft précise que la double inscription déclarative ne peut être demandée que lorsqu’un poste est déjà inscrit dans le MDM principal. Le serveur historique déclenche la découverte WinDC au moyen des nœuds LinkedEnrollment du DMClient CSP. Windows transmet alors un JSON de découverte au point de terminaison indiqué.

La requête décrit notamment le domaine utilisateur, l’UPN lorsque le contexte l’autorise, l’identifiant du tenant, l’identifiant MDM du terminal, le type d’enrôlement et la version du système. Le service répond avec les URL de découverte et d’enrôlement ainsi qu’une politique d’authentification. Pour un appareil joint à Microsoft Entra, le type est Device et le scénario documenté utilise une authentification fédérée avec jeton d’appareil. Pour un appareil enregistré dans Entra, le type est User et l’enrôlement peut s’appuyer sur le certificat MDM parent.

Le DMClient CSP expose DiscoveryEndpoint, Enroll, EnrollStatus, LastError et Unenroll dans la branche LinkedEnrollment. Le serveur configure le point de terminaison de découverte, déclenche Enroll, puis suit EnrollStatus. Les valeurs documentées vont de 0 à 8 : non défini, inscription non démarrée, en cours, en échec ou réussie, puis les quatre états équivalents pour la désinscription. LastError complète le diagnostic lorsque l’état indique un échec.

Après la réussite, Windows crée un nouvel identifiant d’enrôlement sous HKLM\SOFTWARE\Microsoft\Enrollments et un nouvel ensemble de tâches sous Microsoft\Windows\EnterpriseMgmt. Cet enrôlement reste relié au parent. Il possède son propre calendrier de communication et peut apparaître avec des marqueurs tels que MicrosoftManagementPlatformCloud dans les observations de terrain. Je n’utilise toutefois pas ce libellé comme contrat : l’enrôlement lié et son état documenté constituent la preuve durable, pas un nom interne isolé.

JSONExemple anonymisé de requête de découverte
{
  "userDomain": "contoso.example",
  "upn": "utilisateur@contoso.example",
  "tenantId": "00000000-0000-0000-0000-000000000000",
  "emmDeviceId": "11111111-1111-1111-1111-111111111111",
  "enrollmentType": "Device",
  "osVersion": "10.0.26100.0000"
}

Les valeurs sont fictives. Une trace réelle peut contenir des identifiants de tenant, de terminal ou d’utilisateur : je l’anonymise avant tout partage.

MATRICELecture des états LinkedEnrollment
ValeurSignificationAction d’analyse
0État non définiVérifier que DiscoveryEndpoint et le déclenchement Enroll ont bien été envoyés.
1Inscription non démarréeContrôler les prérequis d’identité et attendre le déclenchement attendu.
2Inscription en coursNe pas conclure trop tôt ; corréler l’heure avec les événements DM-EDP.
3Échec de l’inscriptionLire LastError, les événements Admin/Operational et la réponse de découverte.
4Inscription réussieConfirmer la présence du nouvel enrôlement et de ses tâches EnterpriseMgmt.
5 à 8Cycle de désinscriptionDistinguer non démarré, en cours, échec et réussite avant de supprimer quoi que ce soit.
06

Cohabitation simultanée et propriété des ressources

Une fois le canal lié actif, les deux moteurs peuvent communiquer avec le poste à des moments différents. Le canal historique continue de gérer les politiques, certificats, applications et autres charges de travail qui lui sont attribuées. Le canal WinDC reçoit uniquement les déclarations prévues pour lui. La coexistence est donc une répartition de responsabilités, pas une course où les deux moteurs devraient écrire la même valeur.

La notion centrale est la propriété de la ressource. Lorsqu’une configuration historique est migrée vers WinDC, la plateforme doit transférer la propriété avant que la déclaration ne prenne le contrôle. Microsoft documente qu’une tentative d’écriture par le canal MDM historique sur une ressource désormais détenue par la configuration déclarative peut échouer avec 0x86000031. Ce code n’indique pas nécessairement que le CSP est cassé : il peut protéger l’état déclaré contre une écriture concurrente.

Cette protection explique pourquoi il ne faut pas corriger un échec apparent en recréant immédiatement la même configuration dans un profil OMA-URI. Si WinDC détient déjà la ressource, la nouvelle écriture historique augmente le conflit au lieu de le résoudre. Je commence par identifier le propriétaire, le document et le contexte. Je ne retire ou ne migre une politique qu’après avoir établi le chemin de retour arrière.

Certaines ressources de connectivité — VPN, Wi-Fi, certificats, ActiveSync, réseau filaire ou autorités racines — sont explicitement abordées par la documentation Resource Access. Ces scénarios illustrent la capacité de WinDC à regrouper plusieurs composants dépendants dans une déclaration cohérente. Ils montrent aussi pourquoi un rollback doit être conçu au niveau de chaque ressource : supprimer un document n’implique pas automatiquement que toutes les valeurs qu’il a posées disparaissent.

Si une écriture historique échoue avec 0x86000031, je vérifie d’abord si la ressource a été transférée à WinDC. Réessayer en boucle ou créer un second profil n’est pas une stratégie de correction.
FLUXDeux voies de contrôle, une propriété exclusive par ressource
  1. Voie historiqueCommande SyncML vers un CSP pour les ressources encore détenues par le MDM principal.
  2. TransfertLa charge de travail bascule explicitement la propriété de la ressource.
  3. Voie WinDCLa déclaration devient la source d’état souhaité et assure la réconciliation.
  4. Écriture concurrenteLe canal non propriétaire peut être refusé, notamment avec 0x86000031.
07

Comparaison détaillée des deux moteurs

Comparer OMA-DM et WinDC uniquement comme un ancien et un nouveau protocole produit une conclusion incorrecte. OMA-DM reste le protocole de transport et de session dans les deux cas. La comparaison utile oppose le canal MDM principal orienté commandes au canal lié orienté état souhaité. Elle doit aussi distinguer ce que le serveur confirme immédiatement de ce que Windows a réellement appliqué.

Le tableau suivant résume les différences qui ont un impact direct sur l’exploitation. Il ne signifie pas que toutes les stratégies Intune ont déjà migré vers WinDC. L’affectation d’une charge de travail dépend du service, de la version Windows et de la disponibilité documentée. Un poste peut donc utiliser les deux modèles pendant longtemps.

MATRICEOMA-DM historique face à WinDC
DimensionCanal OMA-DM historiqueCanal WinDC liéConséquence opérationnelle
TransportHTTPS et messages SyncML OMA-DMHTTPS et messages SyncML OMA-DMWinDC n’est pas un remplacement du transport OMA-DM.
ModèleCommandes impératives Add, Replace, Get, Delete, ExecDocument décrivant l’état souhaitéL’un exprime une action, l’autre une cible à maintenir.
InscriptionEnrôlement MDM principalEnrôlement secondaire lié au principalLe canal WinDC ne doit pas être analysé comme un MDM autonome.
OrchestrationPrincipalement côté serviceApplication et réconciliation côté clientWindows prend davantage de responsabilité sur l’ordre et la correction de dérive.
Unité de suiviCommande, URI CSP et code de statutDocument, ressource et document de résultatsLes preuves de réussite ne se lisent pas au même niveau.
TemporalitéRésultat associé à la session et aux commandesTraitement asynchrone après remise du documentUn succès de transport n’est pas la validation finale WinDC.
DériveLe service relit et réémet souvent la configurationLe client reteste périodiquement l’état déclaréLa remédiation de dérive peut se produire sans nouvelle séquence complète du service.
Cycle par défautDépend des synchronisations et charges IntuneRafraîchissement déclaré documenté à quatre heures par défautNe pas additionner les calendriers comme s’ils étaient une seule tâche.
ConflitsArbitrage entre politiques et fournisseursPropriété de ressource et refus possible du canal historiqueChercher le propriétaire avant de réappliquer une politique.
RollbackDelete ou restauration de la valeur selon le CSPRetrait, abandon ou nouvelle déclaration selon la ressourceSupprimer le document ne garantit pas la suppression des paramètres.
ExtensibilitéCSP documentés et éventuelles politiques personnaliséesRessources intégrées ou fournisseur WMI/MI natif documentéL’extensibilité WinDC doit être qualifiée par version et support.
DiagnosticDM-EDP, rapport MDM, statuts SyncML et CSPMêmes traces plus LinkedEnrollment, Documents et ResultsIl faut corréler les deux plans au lieu de regarder un seul journal.

La colonne opérationnelle indique ce qui change concrètement dans une investigation Intune ou Windows.

08

Anatomie d’un document de configuration déclarative

Le DeclaredConfiguration CSP expose des nœuds permettant de soumettre un document complet et de lire ses résultats. L’URI contient un DocID, généralement un GUID. L’attribut id du document doit correspondre à cet identifiant. Le contexte Device ou User doit être cohérent avec la portée de l’enrôlement et des ressources. Une incohérence entre URI, identifiant et contexte entraîne des erreurs difficiles à interpréter si l’on ne conserve pas la corrélation.

Un document peut regrouper plusieurs ressources. Chaque ressource définit un type, un identifiant et des propriétés. Windows remet ces éléments aux fournisseurs déclaratifs intégrés ou extensibles, puis écrit un résultat global et des résultats détaillés. Dans un scénario réel, le schéma exact, les espaces de noms, les propriétés autorisées et la disponibilité doivent être validés dans la documentation de la ressource. L’exemple ci-dessous ne doit pas être envoyé à un poste.

La page publique du DeclaredConfiguration CSP affiche actuellement plusieurs nœuds comme disponibles en Windows Insider Preview. Cette mention oblige à séparer deux questions : Microsoft utilise et documente bien WinDC comme architecture Windows, mais la création libre de documents personnalisés via chaque nœud CSP n’est pas automatiquement un scénario supporté en production. Je classe donc toute expérimentation personnalisée comme NO-GO production tant que la version ciblée et le support officiel ne sont pas explicitement établis.

XMLStructure pédagogique d’une déclaration
<?xml version="1.0" encoding="utf-8"?>
<DeclaredConfiguration
  id="22222222-2222-2222-2222-222222222222"
  context="device"
  schema="1.0"
  version="1.0">
  <Resources>
    <Resource id="ExampleResource" type="MSFT_ExampleResource">
      <Property name="DesiredValue">Enabled</Property>
    </Resource>
  </Resources>
</DeclaredConfiguration>

Schéma simplifié pour expliquer les rôles de l’identifiant, du contexte, de la version et de la ressource. Il ne correspond pas à une ressource déployable et ne doit pas être utilisé comme charge utile.

MATRICEÉléments à corréler avant d’interpréter un résultat
ÉlémentQuestion à poserErreur fréquente
DocID dans l’URICorrespond-il exactement à l’attribut id ?Lire le résultat d’un autre document ou provoquer un rejet.
ContextDevice ou User correspond-il à l’enrôlement ?Envoyer une ressource utilisateur sur un canal appareil.
VersionLa version reçue est-elle plus récente et supportée ?Confondre réémission identique et changement d’intention.
Type de ressourceLe fournisseur est-il présent sur cette build ?Conclure à un défaut réseau alors que la ressource est inconnue.
ResultsLe résultat global et le résultat de la ressource concordent-ils ?S’arrêter au statut SyncML d’acceptation.
09

Prérequis, versions et limites de support

Avant d’associer un comportement au moteur déclaratif, je valide l’identité du poste, son édition et sa build. Les appareils Microsoft Entra joints sont documentés sur Windows 10 et Windows 11. Les appareils simplement enregistrés dans Entra ont des minima de maintenance précis : Windows 11 24H2 build 26100.1301, Windows 11 23H2 build 22631.3958, Windows 11 22H2 build 22621.3958 et Windows 10 22H2 build 19045.4717. Ces seuils proviennent de la documentation Microsoft consultée pour cet article et doivent être revérifiés au moment du diagnostic.

Le poste doit disposer d’une inscription MDM principale valide, de certificats utilisables, d’une connectivité HTTPS vers les points de terminaison concernés et d’une heure correcte. Côté serveur, les exigences OMA-DM Windows imposent notamment HTTPS et un certificat serveur valide. Une inspection TLS, un proxy authentifiant ou une rupture de chaîne de confiance peut casser la découverte ou l’enrôlement lié alors que la synchronisation principale semble encore partiellement fonctionnelle.

Je ne déduis pas la disponibilité d’une fonction Intune à partir de la seule présence de dcsvc, d’une tâche MMP-C ou d’une clé de registre. Ce sont des indices utiles, mais la disponibilité réelle dépend aussi du service cloud, de la licence, de la version Windows et du déploiement progressif. De même, la documentation d’extensibilité décrit un fournisseur WMI/MI natif avec GetTargetResource, TestTargetResource et SetTargetResource et limite ses propriétés aux chaînes ; elle ne transforme pas ce mécanisme en contrat de développement général pour toutes les éditions.

MATRICEMatrice minimale de qualification du poste
Type d’identitéVersion minimale documentéeCe que je vérifie
Microsoft Entra joinedWindows 10 ou Windows 11 selon la documentation générale WinDCdsregcmd /status, inscription MDM principale, build exacte et état LinkedEnrollment.
Microsoft Entra registered — Windows 11 24H226100.1301KB installée ou build supérieure, contexte User attendu et certificat parent.
Microsoft Entra registered — Windows 11 23H222631.3958Build exacte et authentification Certificate documentée.
Microsoft Entra registered — Windows 11 22H222621.3958Build exacte et état de maintenance de l’édition.
Microsoft Entra registered — Windows 10 22H219045.4717Build exacte, support produit et périmètre réellement annoncé par le service.

Une build minimale n’est pas une garantie de disponibilité de chaque charge Intune. Elle élimine seulement une incompatibilité de plateforme documentée.

10

Observer la double inscription sur un poste Windows

Je commence par construire une chronologie plutôt que par supprimer des clés. Le registre des enrôlements se trouve sous HKLM\SOFTWARE\Microsoft\Enrollments\<GUID>. Les sous-clés et valeurs permettent d’identifier les inscriptions présentes et la relation LinkedEnrollment. Les tâches planifiées se trouvent sous Bibliothèque du Planificateur de tâches\Microsoft\Windows\EnterpriseMgmt\<GUID>. Chaque GUID doit être corrélé avec le registre, les certificats de gestion et les événements.

Les journaux principaux sont Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider/Admin et Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider/Operational. Le premier fournit les erreurs et événements importants ; le second offre une chronologie plus détaillée lorsque son activation est pertinente. J’utilise aussi MdmDiagnosticsTool.exe pour produire un rapport MDM, puis je recherche l’identifiant d’enrôlement, le DocID, l’URI CSP, le code d’erreur et l’horodatage commun.

Le script suivant est un exemple de diagnostic en lecture seule, niveau 1. Il inventorie les inscriptions, recherche une sous-clé LinkedEnrollment et compte les tâches associées. Il ne confirme pas à lui seul qu’une déclaration est appliquée. Il évite volontairement d’afficher UPN, URL de découverte ou données de certificat afin de limiter l’exposition d’informations d’organisation.

PROCÉDURECollecte manuelle recommandée
  1. 01Confirmer l’identité et la build
    Emplacement
    Invite de commandes élevée
    Commande / configuration
    dsregcmd /status puis winver
    Résultat attendu
    L’état Entra et la version Windows correspondent au scénario prévu.
    Vérification
    Conserver uniquement les lignes utiles et anonymiser TenantId, DeviceId et UPN avant partage.
    Impact
    Lecture seule ; dsregcmd expose toutefois des identifiants sensibles à protéger.
    Retour arrière
    Aucun retour arrière nécessaire.
  2. 02Corréler les enrôlements
    Emplacement
    HKLM\SOFTWARE\Microsoft\Enrollments et Planificateur de tâches\Microsoft\Windows\EnterpriseMgmt
    Commande / configuration
    Comparer les GUID du registre aux dossiers de tâches, sans suppression.
    Résultat attendu
    L’inscription principale et, si provisionné, un enrôlement lié identifiable.
    Vérification
    Noter GUID, type, fournisseur, présence de LinkedEnrollment et horodatages des tâches.
    Impact
    Lecture seule dans le registre et le Planificateur.
    Retour arrière
    Aucun ; ne pas utiliser reg delete ni supprimer une tâche.
  3. 03Exporter les diagnostics MDM
    Emplacement
    Dossier temporaire protégé, par exemple C:\Windows\Temp\MdmReport
    Commande / configuration
    MdmDiagnosticsTool.exe -area DeviceEnrollment;DeviceProvisioning;Autopilot -cab C:\Windows\Temp\MdmReport.cab
    Résultat attendu
    Un CAB contenant les rapports MDM et les événements disponibles.
    Vérification
    Contrôler la date du CAB et rechercher le GUID d’enrôlement ou le DocID étudié.
    Impact
    Création locale d’un fichier pouvant contenir des identifiants d’organisation.
    Retour arrière
    Archiver selon la politique de support puis supprimer le CAB de manière contrôlée après l’analyse.
  4. 04Construire la chronologie
    Emplacement
    Observateur d’événements, journaux DM-EDP Admin et Operational
    Commande / configuration
    Filtrer sur la fenêtre de synchronisation puis rechercher GUID, DocID, CSP URI et code HRESULT.
    Résultat attendu
    Une séquence découverte → enrôlement → remise du document → résultat.
    Vérification
    La même identité de corrélation apparaît dans plusieurs preuves cohérentes.
    Impact
    L’activation du journal Operational peut augmenter temporairement le volume de traces.
    Retour arrière
    Revenir à l’état initial du journal après collecte si la politique de journalisation l’exige.
POWERSHELLInventaire PowerShell en lecture seule — niveau 1
# Exemple pédagogique non testé — niveau 1
#Requires -Version 5.1

$ErrorActionPreference = 'Stop'

try {
    $enrollmentRoot = 'HKLM:\SOFTWARE\Microsoft\Enrollments'

    if (-not (Test-Path -LiteralPath $enrollmentRoot)) {
        throw "La racine des enrôlements MDM est introuvable."
    }

    $snapshot = foreach ($enrollmentKey in Get-ChildItem -LiteralPath $enrollmentRoot) {
        $properties = Get-ItemProperty -LiteralPath $enrollmentKey.PSPath
        $linkedEnrollmentPath = Join-Path -Path $enrollmentKey.PSPath -ChildPath 'LinkedEnrollment'
        $taskPath = "\Microsoft\Windows\EnterpriseMgmt\$($enrollmentKey.PSChildName)\"
        $tasks = @(Get-ScheduledTask -TaskPath $taskPath -ErrorAction SilentlyContinue)

        [PSCustomObject]@{
            EnrollmentId       = $enrollmentKey.PSChildName
            ProviderId         = $properties.ProviderID
            EnrollmentType     = $properties.EnrollmentType
            HasLinkedEnrollment = Test-Path -LiteralPath $linkedEnrollmentPath
            ScheduledTaskCount = $tasks.Count
        }
    }

    $snapshot | Sort-Object -Property EnrollmentId | Format-Table -AutoSize
}
catch {
    Write-Error "Échec de l’inventaire MDM : $($_.Exception.Message)"
    exit 1
}

Le script ne modifie rien. Une valeur absente n’est pas forcément une erreur : les branches du registre varient selon le type et l’état d’enrôlement. Toute automatisation destinée à un test réel doit être revue, adaptée et élevée au minimum au niveau 2.

11

Lire les résultats, les journaux et les codes d’erreur

L’analyse WinDC doit séparer quatre couches. La couche réseau confirme que le client atteint le service en HTTPS. La couche OMA-DM confirme que la session et la commande SyncML sont acceptées. La couche DeclaredConfiguration confirme que le document est valide et traité. Enfin, la couche ressource confirme que chaque fournisseur a atteint l’état souhaité. Une erreur dans une couche supérieure ne doit pas être masquée par un succès inférieur.

Le code 0x86000031 est particulièrement important pendant la cohabitation : il peut signaler une ressource désormais possédée par WinDC. Le code 0x86000002 renvoie généralement à une URI ou un nœud introuvable. Des erreurs comme 0x82D00007 ou 0x8000FFFF apparaissent dans les exemples de diagnostic Microsoft et doivent être corrélées à l’événement complet, au document et à la build ; le code seul ne suffit pas à choisir une correction.

Je ne copie jamais une trace brute dans un ticket public. Les événements peuvent contenir UPN, TenantId, DeviceId, URL de service, empreinte de certificat ou contenu de politique. Je conserve l’original dans l’espace de support autorisé, puis je produis un extrait anonymisé avec l’heure, le canal, l’identifiant de corrélation, l’opération, l’URI raccourcie et le résultat.

LOGExemple fictif de corrélation d’un échec déclaratif
[2026-08-15 09:14:22.118] Channel=LinkedEnrollment EnrollmentId={REDACTED-GUID}
[2026-08-15 09:14:22.409] Operation=Replace CSP=DeclaredConfiguration DocId={REDACTED-DOCID}
[2026-08-15 09:14:22.512] TransportStatus=200 Processing=Accepted
[2026-08-15 09:14:27.904] Resource=MSFT_ExampleResource State=Failed Result=0x82D00007
[2026-08-15 09:14:27.905] Conclusion=Transport_OK_Resource_FAILED

Trace synthétique et anonymisée. Elle montre qu’un statut de transport positif peut précéder l’échec asynchrone d’une ressource.

MATRICEInterprétation prudente des signaux fréquents
SignalInterprétation possibleVérification avant action
EnrollStatus = 3L’enrôlement lié a échouéLire LastError, vérifier découverte, identité, certificat, TLS et build.
EnrollStatus = 4L’enrôlement lié a réussiConfirmer tâches, session et résultats ; ce statut ne valide pas chaque déclaration.
SyncML 200 ou 202Commande traitée ou acceptéeLire le résultat asynchrone du document et de chaque ressource.
0x86000031Ressource potentiellement possédée par WinDCIdentifier document et propriétaire avant toute nouvelle écriture OMA-DM.
0x86000002URI ou nœud non trouvéVérifier syntaxe, portée, version Windows et disponibilité du CSP.
Deux dossiers EnterpriseMgmtPossible double inscription attendueCorréler les GUID ; ne pas diagnostiquer un doublon sur le seul comptage.
Tâche de rafraîchissement toutes les quatre heuresCycle WinDC potentiellement normalCorréler le chemin, l’enrôlement et les événements ; ne pas confondre avec Config Refresh.
12

Dépannage étape par étape

Quand une charge Intune supposée déclarative ne produit pas le résultat attendu, je résiste à la tentation de lancer immédiatement une synchronisation répétée ou de supprimer l’enrôlement. La méthode la plus fiable consiste à localiser l’échec dans la chaîne. Chaque étape doit produire une preuve et déterminer la suivante.

Je vérifie d’abord si la fonctionnalité est réellement documentée pour la build et le type d’identité. Je confirme ensuite que l’inscription principale est saine. Puis je recherche la demande de découverte, l’état de l’enrôlement lié, la remise du document et le résultat de la ressource. Si l’échec concerne la propriété, je traite la migration ou le retrait de l’ancienne politique ; s’il concerne le fournisseur, je vérifie la ressource et son schéma ; s’il concerne le réseau, je corrige le chemin HTTPS avant de toucher aux politiques.

PROCÉDUREArbre d’analyse opérationnel
  1. 01Qualifier le scénario
    Emplacement
    Intune, fiche du poste et documentation de la charge de travail
    Commande / configuration
    Relever type d’identité, édition, build, stratégie attendue et heure de dernière modification.
    Résultat attendu
    Le scénario est supporté et la fenêtre d’observation est définie.
    Vérification
    Comparer les minima de build et l’affectation Intune au poste ou à l’utilisateur.
    Impact
    Aucun changement.
    Retour arrière
    Aucun.
  2. 02Valider l’inscription parent
    Emplacement
    dsregcmd, registre Enrollment et événements DM-EDP
    Commande / configuration
    Contrôler l’état Entra, le certificat MDM et une synchronisation principale récente.
    Résultat attendu
    L’enrôlement MDM principal est sain avant l’ouverture du canal lié.
    Vérification
    GUID, certificat et tâche principale sont cohérents.
    Impact
    Lecture seule.
    Retour arrière
    Aucun.
  3. 03Suivre LinkedEnrollment
    Emplacement
    DMClient CSP, registre et événements
    Commande / configuration
    Lire DiscoveryEndpoint, EnrollStatus et LastError dans les preuves disponibles.
    Résultat attendu
    EnrollStatus atteint 4 ou expose un échec exploitable.
    Vérification
    Corréler l’heure au nouveau GUID d’enrôlement et à ses tâches.
    Impact
    Lecture seule.
    Retour arrière
    Ne pas déclencher Unenroll sans plan de service validé.
  4. 04Valider le document
    Emplacement
    DeclaredConfiguration CSP, rapport MDM et DM-EDP Operational
    Commande / configuration
    Comparer DocID, id XML, contexte, version, type de ressource et résultat global.
    Résultat attendu
    Le document est accepté et chaque ressource possède un résultat identifiable.
    Vérification
    Le DocID est identique dans l’URI, le document, les résultats et les événements.
    Impact
    Lecture seule.
    Retour arrière
    Aucun tant que le document n’est pas modifié.
  5. 05Déterminer le propriétaire de la ressource
    Emplacement
    Rapports Intune, historique de migration, résultats WinDC et événement d’échec
    Commande / configuration
    Rechercher une ancienne politique OMA-DM et une déclaration visant la même ressource.
    Résultat attendu
    Une seule voie de contrôle est identifiée comme propriétaire.
    Vérification
    L’arrêt de l’écriture concurrente sur pilote supprime le conflit sans créer de dérive.
    Impact
    La modification d’affectation peut changer la configuration ; préparer le pilote.
    Retour arrière
    Restaurer l’affectation précédente et la valeur connue si le test est NO-GO.
  6. 06Tester la correction sur pilote
    Emplacement
    Groupe Intune dédié et poste représentatif
    Commande / configuration
    Appliquer une seule correction à la fois, attendre le cycle documenté et collecter les mêmes preuves.
    Résultat attendu
    Document et ressource passent à l’état attendu sans dégrader le canal historique.
    Vérification
    Deux cycles réussis, aucune erreur concurrente et conformité stable après dérive contrôlée.
    Impact
    Modification limitée au groupe pilote.
    Retour arrière
    Retirer l’affectation pilote, restaurer la politique précédente et confirmer le retour à l’état connu.

Je ne généralise qu’après avoir prouvé la cause, la correction et le retour arrière sur un poste représentatif.

13

Rollback, abandon d’un document et points de vigilance

Le rollback WinDC ne doit jamais se résumer à supprimer le document. La documentation Microsoft précise que la suppression d’un document de configuration déclarative ne supprime pas nécessairement les paramètres qui ont été appliqués. Il faut connaître le comportement de chaque ressource : certaines nécessitent une nouvelle déclaration avec l’état précédent, d’autres une opération de suppression explicite, et d’autres encore un transfert de propriété vers le canal historique.

Le nœud Abandoned mérite une vigilance supplémentaire. Dans la page Microsoft consultée, le tableau de valeurs et les exemples d’opérations ne décrivent pas le sens de 0 et 1 de manière parfaitement cohérente : les exemples indiquent qu’une valeur 1 abandonne le document et qu’une valeur 0 le réactive. Je considère cette divergence documentaire comme un blocage pour toute automatisation non pilotée. Avant usage, je revalide la version actuelle de la page, la build Windows et le comportement sur un poste de laboratoire.

La désinscription liée via Unenroll est une opération de cycle de vie, pas un remède générique. Elle peut interrompre les charges dépendantes et sera éventuellement recréée par le service si l’inscription principale la redemande. De même, supprimer manuellement une clé Enrollment, un certificat ou un dossier de tâches rompt la corrélation et rend le diagnostic plus difficile. Je réserve ces opérations à une procédure Microsoft ou éditeur explicitement supportée, avec sauvegarde des preuves et plan de réinscription.

Pour une migration pilote, mes critères GO sont : version supportée, inscription parent saine, enrôlement lié stable, document et ressources en succès sur deux cycles, absence d’écriture concurrente, dérive corrigée comme prévu et rollback testé. Mes critères NO-GO sont : documentation CSP encore limitée à Insider pour le scénario personnalisé, propriété inconnue, statut asynchrone non corrélé, dépendance réseau non maîtrisée, résultat différent entre deux postes identiques ou retour arrière non démontré.

  • Hypothèse : la charge de travail étudiée utilise réellement WinDC ; je la confirme avec les résultats et les événements, pas avec un simple nom de tâche.
  • Risque : une ancienne politique OMA-DM continue d’écrire sur une ressource transférée ; je retire l’affectation concurrente uniquement sur pilote.
  • Impact : la désinscription ou l’abandon peut arrêter l’application et la réconciliation de plusieurs ressources liées.
  • Rollback : restaurer l’état de chaque ressource, sa propriété et l’affectation précédente, puis vérifier les deux canaux.
  • Généralisation : étendre par anneaux après deux cycles stables et conservation des preuves de conformité.
14

Ce qu’il faut retenir pour Intune

La double inscription WinDC marque une évolution profonde, mais progressive, de la gestion Windows. Le poste ne passe pas brutalement d’OMA-DM à une technologie entièrement séparée. Il conserve son enrôlement principal et le transport OMA-DM, puis ajoute un canal lié pour les configurations déclaratives. Cette continuité permet à Intune et à Windows de faire cohabiter les charges historiques et modernes sans migrer tout le catalogue en une seule fois.

Pour l’ingénieur endpoint, le changement principal concerne la preuve. Dans le modèle historique, je suis la session, la commande, l’URI CSP et le statut. Dans WinDC, j’ajoute l’enrôlement lié, le DocID, le contexte, la propriété, le résultat du document, le résultat de la ressource et le cycle de réconciliation. Une investigation fiable relie ces éléments dans le temps.

Le second changement concerne les corrections. Réémettre une commande ou créer un OMA-URI concurrent peut être contre-productif si WinDC possède déjà la ressource. Avant toute action, je détermine quelle voie contrôle la valeur, si le document est toujours actif et comment la ressource revient à son état précédent. Cette discipline protège à la fois la configuration et la possibilité de revenir en arrière.

Enfin, je garde une séparation stricte entre architecture documentée et indices de terrain. Les observations MVP sont précieuses pour reconnaître les tâches, services et rythmes réellement vus sur des appareils Intune, mais je les recoupe avec les pages Microsoft et je n’en fais pas un contrat de support. C’est ce croisement qui permet d’expliquer WinDC sans inventer ce que le service cloud ne publie pas encore.

En une phrase : WinDC utilise un deuxième enrôlement OMA-DM pour faire appliquer et maintenir un état déclaré, tandis que le canal MDM principal continue de gérer les ressources qui lui appartiennent. La cohabitation est normale ; l’écriture concurrente sur une même ressource ne l’est pas.
R

Repères d’utilisation

Cette analyse propose une méthode opérationnelle et un cadre de décision. Avant toute application à grande échelle, vérifiez les versions, les licences et les comportements sur un environnement pilote représentatif de votre contexte.

Références techniques publiques

J’ai privilégié la documentation Microsoft pour les comportements contractuels. Les retours terrain complètent l’observation, sans remplacer la documentation de support.

IntuneWindowsOMA-DMWinDCDeclared ConfigurationDMClientSyncMLCSPDouble inscriptionDesired State

Continuer la lecture