Exchange Online : diagnostiquer une application en panne pendant le retrait d’EWS

Identifiez les dépendances EWS, examinez les listes App ID et User-Agent, puis préparez une exception contrôlée et la migration vers Microsoft Graph.

01

Une panne en octobre ne prouve pas sa cause

Une synchronisation de calendrier ou une application métier qui cesse de fonctionner peut dépendre d’Exchange Web Services. Avant toute modification, confirmer l’API appelée, la boîte ciblée et le message retourné. Le retrait d’EWS concerne Exchange Online; ce calendrier ne désactive pas automatiquement EWS sur Exchange Server local.

Le déploiement de désactivation commence en octobre 2026; Microsoft annonce une désactivation complète en avril 2027. Le comportement dépend de la phase atteinte par le tenant. Consulter son Message Center et l’état du service, sans supposer que tous les tenants ont basculé simultanément.

02

Capturer les preuves avant de réactiver

Noter l’heure UTC, l’application et sa version, son propriétaire, le tenant, la boîte, l’App ID et l’opération en échec. Demander à l’éditeur si le composant utilise encore EWS, même si sa connexion emploie OAuth. OAuth ne transforme pas une API EWS en Microsoft Graph.

Conserver statut HTTP, identifiant de requête et en-têtes diagnostiques autorisés. Ne pas exporter les jetons Authorization, cookies, secrets ou contenu des courriels dans un billet public. Une capture nettoyée suffit souvent pour ouvrir un dossier éditeur.

Comparer un scénario qui fonctionne et un qui échoue : même application, autre boîte; même boîte, autre fonction. Éviter les répétitions massives qui créent du bruit ou des doublons.

03

Inventorier les dépendances réellement utilisées

Dans le centre d’administration Microsoft 365, ouvrir Rapports, Utilisation, Exchange, puis EWS usage. Examiner App ID, actions SOAP et dernière activité. Le rapport permet des fenêtres de 7, 30 ou 90 jours; son agrégation est hebdomadaire et l’affichage peut prendre jusqu’à dix jours. Il ne sert donc pas de journal temps réel de la panne.

Croiser ce rapport avec les propriétaires, tâches planifiées, connecteurs et logiciels de sauvegarde ou de migration. Une absence d’activité ne prouve pas qu’un traitement mensuel est abandonné. Pour chaque dépendance, consigner criticité, boîtes nécessaires, version Graph disponible et échéance de retrait.

04

Comprendre les deux listes d’applications

EwsAllowedAppIDs utilise les identifiants d’application. EwsAllowList et EwsBlockList historiques utilisent le User-Agent. Ne pas copier une chaîne User-Agent dans la liste des App ID. Ces contrôles peuvent se cumuler.

Dans le comportement de retrait déployé à partir d’octobre, EwsEnabled=True avec une liste App ID vide ne signifie plus accès universel : les appels applicatifs EWS sont bloqués. Une liste renseignée limite l’accès aux applications approuvées; EwsEnabled=False bloque au niveau organisation. Une autorisation de boîte ne contourne pas ce blocage.

Microsoft a annoncé un mécanisme de préparation des listes à partir de la télémétrie pour certains tenants. Une liste existante n’est pas un inventaire approuvé par votre équipe : relire chaque entrée et son propriétaire. Ne pas supprimer une liste gérée par le client pour tenter de déclencher un remplissage automatique.

05

Collecte PowerShell en lecture seule

Utiliser ExchangeOnlineManagement dans une version prise en charge et une identité disposant des rôles RBAC de lecture nécessaires aux commandes. Les droits de consultation des rapports Microsoft 365 sont distincts; privilégier un rôle de lecture adapté. Ne pas attribuer Global Administrator simplement pour collecter ces paramètres.

Le paramètre RetrieveEwsOperationAccessPolicy est nécessaire pour lire la liste App ID. S’il est absent de la session, vérifier module, connexion Exchange Online et droits avant de conclure que la liste est vide. L’exemple cible une boîte fictive et ne change aucun paramètre.

# READ ONLY: Exchange Online; fictional mailbox
Connect-ExchangeOnline -ShowBanner:$false
Get-OrganizationConfig |
  Format-List EwsEnabled,EwsApplicationAccessPolicy,EwsAllowList,EwsBlockList
Get-OrganizationConfig -RetrieveEwsOperationAccessPolicy |
  Format-List EwsAllowedAppIDs
Get-CASMailbox -Identity 'integration@contoso.com' |
  Format-List EwsEnabled,EwsApplicationAccessPolicy,EwsAllowList,EwsBlockList
06

Interpréter le refus sans masquer une autre panne

Inspecter X-EWS-Policy-Reason lorsqu’il est présent : Microsoft distingue désactivation EWS et blocage par politique. Le deuxième cas ne distingue pas à lui seul liste App ID et User-Agent. Un simple HTTP 403 ne prouve pas le retrait d’EWS.

Si les politiques ne correspondent pas à la panne, examiner expiration du certificat applicatif, consentement, autorisations sur la boîte, audience du jeton et journaux Entra. Pour un HTTP 429, traiter la limitation de débit selon les consignes de l’API, sans réactiver EWS comme remède.

Exemple fictif : une intégration de salles reçoit un refus après le déploiement du contrôle App ID. Son application approuvée est absente de la liste. Une autre intégration présente dans la liste échoue aussi : son User-Agent ne respecte pas la politique existante. Les deux incidents exigent des corrections différentes.

07

Exception temporaire : une modification gouvernée

Changement : si une dépendance légitime ne peut pas être migrée immédiatement, documenter son App ID validé, les boîtes accessibles, le responsable, la date d’expiration de l’exception et la version de remplacement. La liste App ID ne confère pas de permissions et ne limite pas, à elle seule, l’application à une seule boîte.

Avant toute commande Set-OrganizationConfig, préserver les valeurs existantes et faire relire le résultat souhaité. EwsAllowedAppIDs est une liste à gérer sans écraser les applications déjà approuvées. Une réactivation organisationnelle peut rétablir plusieurs applications autorisées : ce n’est pas un changement limité à une boîte pilote.

Ne pas publier de script de réactivation globale automatique. Faire exécuter le changement par une identité RBAC autorisée, dans une fenêtre approuvée. Prévoir les contrôles positifs et négatifs, puis relire la configuration. Le cache de la liste peut retarder son effet jusqu’à 24 heures; éviter les changements contradictoires successifs.

08

Migrer les fonctions, pas seulement l’URL

Microsoft Graph n’est pas un remplacement SOAP transparent. Cartographier chaque opération EWS avec les API documentées : lecture, envoi, calendrier, pièces jointes, notifications et synchronisation. Distinguer permissions déléguées et applicatives, puis limiter le périmètre aux besoins réels.

Vérifier les fonctionnalités réellement disponibles pour le cloud et la version de l’éditeur. Une échéance de feuille de route n’est pas une garantie de disponibilité. Certains scénarios n’ont pas d’équivalent; les opérations génériques sur dossiers publics exigent notamment une autre stratégie.

Pour un produit commercial, demander une version prise en charge et un plan de migration à l’éditeur. Vérifier les licences Exchange Online, les coûts du produit et les droits nécessaires à chaque scénario; ne pas supposer qu’une licence additionnelle prolonge EWS. Microsoft Graph ne fournit pas un accès universel aux boîtes Exchange locales.

09

Pilote, validation et sortie de l’exception

Tester avec des données fictives : lecture d’un dossier de test, calendrier partagé si nécessaire, notifications et traitement des erreurs. Vérifier qu’une boîte hors périmètre reste inaccessible. Pour les envois, utiliser des destinataires de test approuvés et éviter de lancer deux moteurs simultanés qui créent des doublons.

Conserver les points de reprise de synchronisation, surveiller erreurs et files de traitement, puis basculer par groupe pilote. Un retour arrière vers l’ancienne version doit être limité dans le temps et reste soumis aux restrictions EWS : il ne peut pas contourner la désactivation finale.

Après migration, retirer l’exception devenue inutile, les permissions et secrets obsolètes selon le processus de changement. Recontrôler les traitements peu fréquents avant de fermer le dossier. Un diagnostic Microsoft 365 peut aider à trier ces dépendances; ce guide ne remplace pas un audit complet.