Aller au contenu
Étude de cas · supervision de parc Supervision d'un parc Microsoft 365 Apps · ~50 000 postes

M365 WATCH

Conçu, développé et mis en production par mes soins pour une grande institution européenne. M365 WATCH remplace un export CSV téléchargé à la main chaque matin par une supervision outillée et historisée : chaque machine du parc a son passé, chaque population à problème a sa liste.

50 000 postes supervisés
2 M+ lignes d'historique reprises
348 tests automatisés xUnit
2026 en production depuis

Présentation

La supervision d'un parc de 50 000 postes Microsoft 365 Apps reposait sur un geste manuel : chaque matin, un export CSV téléchargé depuis le portail d'administration Microsoft, passé dans une chaîne de scripts Python puis déversé dans SQL Server. Aucune interface, aucun historique exploitable, aucune détection des machines à problème — et une supervision qui s'arrêtait dès que la personne s'arrêtait.

M365 WATCH — Workplace Apps Telemetry, Compliance & Health — remplace cette chaîne par deux livrables : un collecteur sans interface piloté par une tâche planifiée, et une application de bureau de dix vues qui donne l'état du parc, l'historique de chaque machine et les populations à corriger. Version v0.10.0 en production, collecte quotidienne en service, 73 555 machines en base.

Du dépôt de l'export au parc sous contrôle : le collecteur ingère, la base n'enregistre que les changements, l'application relit l'historique et isole les machines à problème. 01 Export quotidien portail M365 · CSV / ZIP 02 Collecteur tâche planifiée idempotent · rejouable 03 Base à intervalles 9 tables · 16 index seuls les changements 04 Parc sous contrôle historique par machine machines à problème
Du dépôt de l'export au parc sous contrôle : le collecteur ingère, la base n'enregistre que les changements, l'application relit l'historique et isole les machines à problème.

Ce que l'outil rend visible

Ce que l'outil rend visible

A

Où en est le parc ?

Un tableau de bord donne la répartition des versions d'Office et de Windows, la santé globale du parc et sa tendance — au lieu d'un fichier CSV qu'il fallait ouvrir et trier à la main.

B

Que s'est-il passé sur cette machine ?

Une recherche par nom de machine ou d'utilisateur ouvre l'historique complet : versions d'Office et de Windows, changements de canal, espace disque — relu depuis les intervalles, sans limite de profondeur.

C

Quelles machines posent problème ?

Six règles isolent les populations à traiter : disque critique, Office en retard sur son canal, Windows non patché, poste hors support, données figées. Chaque population est cliquable et exportable en Excel.

D

Qu'est-ce qui arrive à échéance ?

Un calendrier de fin de support croise builds Windows et versions d'Office avec les dates réelles de fin de servicing Microsoft : ce qui expire, quand, et sur combien de postes.

Fonctionnalités clés

Fonctionnalités clés

01

Collecteur autonome

Un exécutable sans interface, piloté par une tâche planifiée : il surveille un dossier de dépôt et ingère les exports, CSV ou ZIP lus en place. Idempotent et rejouable — réingérer deux fois le même export ne crée pas de doublon.

02

Historisation par intervalles

Plutôt que d'empiler un instantané par jour et par machine, le schéma n'enregistre que les changements. Mesuré en production, une machine n'écrit qu'un à trois mouvements par collecte — l'historique complet à 50 000 postes tient sans explosion de volume.

03

Détection des machines à problème

Six règles de santé, chaque population cliquable puis exportable. Les seuils sont des paramètres d'affichage, jamais de collecte : les changer rejoue tout l'historique déjà en base, sans recollecter quoi que ce soit.

04

Groupes de suivi

Une liste de machines à surveiller — une vague de migration, un site, un lot de portables. Créé aujourd'hui, un groupe affiche immédiatement tout son passé : l'historique est en base, il n'a pas à être constitué après coup.

05

Graphiques dessinés à la main

Courbes de migration par vague de build, tendance du parc, espace disque d'une machine dans le temps — rendus directement en WPF, sans aucune bibliothèque de graphiques : rien à licencier, rien à faire suivre au fil des versions.

06

Reprise de l'historique existant

Plus de deux millions de lignes de l'ancienne base migrées vers le modèle à intervalles, par lots à mémoire bornée : le parc arrive avec son passé le jour de la mise en service, et non au bout d'un an de collecte.

Architecture & ingénierie

M365 WATCH est une application WPF (.NET 10) en MVVM, habillée avec MahApps.Metro et adossée à une solution multi-projets : un noyau d'entités et de services purs, une couche d'accès et d'orchestration sur Entity Framework Core, des lecteurs de sources, un module d'export Excel (ClosedXML), l'application de bureau et le collecteur en ligne de commande. L'identité visuelle est celle de GUARD, pour que les outils livrés à l'équipe forment une famille cohérente.

Le cœur est le schéma SQL Server : neuf tables et seize index conçus pour l'historisation par intervalles. Il est piloté par des migrations SQL versionnées — lisibles et rejouables depuis le dépôt, appliquées sur la base de production — accompagnées de scripts de vérification post-déploiement qui contrôlent tables, index et invariants. La lecture des exports s'appuie sur un parseur délimité conforme à la RFC 4180 et sur la lecture d'archives ZIP en flux, sans décompression sur disque.

La livraison est industrialisée : deux paquets self-contained win-x64 — l'application et le collecteur — fabriqués par des scripts PowerShell, et un pipeline GitLab CI déclenché sur tag qui enchaîne tests, paquets, registre de paquets et release. 348 tests automatisés xUnit tiennent le filet, dont des tests d'intégration qui ingèrent réellement un export de 44 545 lignes contre une base SQL Server recréée à chaque exécution.

Ce que ce projet démontre

M365 WATCH réunit deux compétences rarement portées par la même personne : le développement .NET complet — architecture, modélisation relationnelle, tests, industrialisation — et l'expertise du domaine supervisé : canaux de mise à jour Microsoft 365 Apps, builds et servicing Windows, calendriers de fin de support, télémétrie du portail d'administration. Les six règles de détection ne sortent pas d'un cahier des charges : elles viennent du terrain.

Il montre surtout une capacité à livrer pour de vrai : migrations appliquées sur la base de production, collecte quotidienne en service, et une application utilisée chaque jour sur les données réelles du parc.

Technologies

.NET 10 C# WPF MVVM MahApps.Metro EF Core SQL Server ClosedXML CSV / RFC 4180 PowerShell xUnit GitLab CI/CD Python

Collaborons

Un projet, une mission en vue ? Parlons-en.

Me contacter