Automatisez votre support : à chaque nouvel e‑mail reçu dans une boîte aux lettres partagée, publiez‑le automatiquement dans un canal Microsoft Teams et créez une tâche Planner prête à être traitée. Tutoriel pas à pas avec bonnes pratiques, diagnostics et modèles.
Vue d’ensemble
Objectif : synchroniser une boîte aux lettres partagée (Exchange/Outlook) avec Teams et Planner sans action manuelle. La solution la plus robuste et maintenable s’appuie sur Microsoft Power Automate (ex‑Flow). Le cœur du succès réside dans le déclencheur adapté aux boîtes partagées ; si vous prenez par inadvertance celui de « ma boîte », le flux n’écoutera que vos messages personnels.
Architecture en un coup d’œil
- Source : Boîte partagée (ex.
support@contoso.com
) - Déclencheur : Office 365 Outlook — When a new email arrives in a shared mailbox (V2/V3)
- Action A : Microsoft Teams — Post a message in a channel
- Action B : Planner — Create a task (puis Update task details si besoin)
- Stockage optionnel : SharePoint/Dataverse pour logs, pièces jointes, déduplication
Étapes détaillées (tutoriel pas à pas)
- Créer le flux
Dans Power Automate : Créer → Flux automatisé (cloud). - Choisir le bon déclencheur
Recherchez Office 365 Outlook → sélectionnez When a new email arrives in a shared mailbox (V2/V3).
Important : ne pas utiliser la version « in my mailbox ». - Renseigner la boîte partagée
Saisissez l’adresse de la boîte (ex.support@contoso.com
). Activez les filtres utiles (Sujet contient…, Expéditeur, Avec/Sans pièces jointes, Uniquement non lus…). - Action Teams — Publier dans le canal
Ajoutez Microsoft Teams → Post a message in a channel. Choisissez l’équipe et le canal. Composez le message avec le contenu dynamique du déclencheur : Sujet, De, Aperçu du corps, Date de réception, etc. - Action Planner — Créer la tâche
Ajoutez Planner → Create a task. Choisissez le Plan et le Bucket. Mappez :- Titre : Sujet de l’e‑mail
- Assignations (facultatif) : personne, groupe ou « compte de service »
- Échéance (facultatif) : ex.
addDays(utcNow(), 2)
- Enregistrer, activer, tester
Sauvegardez. Activez. Envoyez un message vers la boîte partagée et vérifiez la publication dans Teams et la création de la tâche dans Planner.
Comparatif des déclencheurs (pour éviter l’erreur classique)
Déclencheur | Usage prévu | Boîte ciblée | Cas d’échec fréquent |
---|---|---|---|
When a new email arrives in my mailbox (Vx) | Boîte personnelle de l’utilisateur connecté | Votre boîte personnelle | Le flux « ne voit » pas la boîte partagée |
When a new email arrives in a shared mailbox (V2/V3) | Boîtes partagées Exchange Online | Adresse fournie (ex. support@…) | Comportement attendu : capte la boîte partagée |
Mapping recommandé des champs
Élément | Source e‑mail | Message Teams (exemple) | Planner (exemple) |
---|---|---|---|
Titre / Sujet | Subject | [Nouveau ticket] @{Subject} | Titre de la tâche : @{Subject} |
Demandeur | From (adresse ou nom) | De : @{From} | Notes (via Update task details) : De : @{From} |
Résumé | Body Preview | Résumé : @{BodyPreview} | Description : @{BodyPreview} (ou texte dépouillé) |
Date de réception | Received time | Reçu le : @{formatDateTime(ReceivedTime,'dd/MM/yyyy HH:mm')} | — |
Pièces jointes | Has Attachments / Liste | Lien(s) vers SharePoint/OneDrive (voir section dédiée) | URL(s) dans la Description ou la Checklist |
Modèles prêts à copier
Message Teams (exemple simple)
📩 Nouveau message dans la boîte partagée
* Sujet : @{triggerBody()?['Subject']}
* De : @{triggerBody()?['From']}
* Reçu le : @{formatDateTime(triggerBody()?['DateTimeReceived'],'dd/MM/yyyy HH:mm')}
* Aperçu : @{triggerBody()?['BodyPreview']}
🔗 Ouvrir dans Outlook : (lien interne si applicable)
Description de tâche Planner (exemple)
Demande reçue via la boîte partagée.
Sujet : @{triggerBody()?\['Subject']}
De : @{triggerBody()?\['From']}
Reçu le : @{formatDateTime(triggerBody()?\['DateTimeReceived'],'dd/MM/yyyy HH\:mm')}
Résumé :
@{triggerBody()?\['BodyPreview']}
(Compléter le suivi dans la checklist.)
Gestion des pièces jointes (optionnelle mais recommandée)
- Après le déclencheur, ajoutez Get email (Vx) si nécessaire pour récupérer la collection complète des pièces jointes.
- Placez un Apply to each sur la liste Attachments.
- Dans la boucle, utilisez Create file (SharePoint ou OneDrive) : File name =
@{items('Apply_to_each')?['Name']}
, File content =@{items('Apply_to_each')?['ContentBytes']}
. - Stockez les URL dans une variable de type tableau ; concaténez‑les ensuite pour les insérer dans le message Teams et/ou la description Planner.
Astuce : si vous redoutez le HTML dans Planner (Notes), privilégiez Body Preview pour un texte court et propre, puis mettez les liens de pièces jointes dans une checklist (ex. « Ouvrir PJ Devis.pdf »).
Permissions & prérequis
- Accès boîte partagée : au minimum Full Access dans Exchange Online.
- Connecteurs : utilisez Office 365 Outlook (pas « Outlook.com »), Microsoft Teams, Planner.
- Compte d’exécution : idéalement un compte de service M365 (non lié à une personne) et partagé avec les administrateurs de la solution.
Composant | Droit minimal | Remarques |
---|---|---|
Boîte partagée | Full Access | Nécessaire pour lire les messages et les pièces jointes |
Équipe Teams cible | Membre ou autorisation de publication | Le canal ne doit pas être archivé |
Plan Planner | Membre du groupe M365 propriétaire du plan | Vérifier le Bucket sélectionné |
SharePoint/OneDrive (si PJ) | Contributeur | Stockage, rétention, liens partageables |
Routage & enrichissement (améliorations rapides)
- Routage par mots‑clés : ajoutez des Conditions ; si le sujet contient « Incident », publiez dans #incident et étiquetez la tâche « Urgent » ; si « Devis », orientez vers #sales et le bucket « Demandes ».
- Échéances auto :
addDays(utcNow(), 2)
pour +48 h ; ou calculez selon le SLA détecté dans l’objet. - Normalisation : remplacez les sauts de ligne, supprimez les signatures récurrentes avec
replace()
; ou préférez Body Preview comme résumé. - Suivi : créez une checklist (« Répondre au client », « Consigner dans CRM », « Joindre PJ »).
- Déduplication : stockez l’InternetMessageId (ou l’ID du message) dans une liste SharePoint ; si déjà vu, ignorez la création.
Pièges courants & diagnostic
Symptôme | Cause probable | Correctif |
---|---|---|
Le flux ne voit que mes e‑mails | Mauvais déclencheur (« my mailbox ») | Remplacer par « shared mailbox » et indiquer l’adresse |
Rien ne se passe pour les mails historiques | Le déclencheur n’écoute que les nouveaux messages | Traiter l’historique avec un flux « manuel »/batch si nécessaire |
Échec lors de la publication dans Teams | Aucun droit sur le canal, ou canal archivé | Vérifier appartenance à l’équipe et l’état du canal |
La tâche Planner n’apparaît pas | Plan/Bucket incorrects ou droit insuffisant | Confirmer le Plan (groupe M365) et le Bucket |
Texte avec balises HTML dans Planner | Corps de mail HTML copié tel quel | Utiliser Body Preview ou dépouiller le HTML (remplacements simples) |
Exemples d’expressions utiles (copier‑coller)
- Échéance à +48 h :
@{addDays(utcNow(), 2)}
- Date lisible :
@{formatDateTime(triggerBody()?['DateTimeReceived'],'dd/MM/yyyy HH:mm')}
- Objet tronqué à 120 caractères :
@{if(greater(length(triggerBody()?['Subject']),120),concat(substring(triggerBody()?['Subject'],0,117),'...'),triggerBody()?['Subject'])}
- Test pièces jointes :
@{if(equals(triggerBody()?['HasAttachments'], true), 'Oui', 'Non')}
- Nettoyage basique du corps (exemple) :
@{replace(replace(triggerBody()?['BodyPreview'], ' ', ' '), ' ', ' ')}
Alternative simple : redirection vers l’adresse du canal Teams
Pour un besoin minimaliste, activez l’adresse e‑mail du canal Teams et créez une règle de boîte partagée qui transfère certains messages vers ce canal. C’est immédiat, mais aucune tâche Planner n’est créée et le contrôle (format, logs, routage) est limité.
Gouvernance, exploitation et sécurité
- Journalisation : activez l’historique d’exécutions ; consignez les IDs de messages et résultats (succès/erreurs) dans une liste SharePoint.
- Concurrence : pour préserver l’ordre de traitement, limitez la concurrence du déclencheur à 1 (si volume élevé, montez prudemment après validation).
- Résilience : prévoyez une retry policy par action critique (Teams/Planner).
- Comptes de service : évitent l’arrêt du flux au départ d’un collaborateur.
- Protection des données : filtrez ou masquez les PII sensibles si les messages sont postés dans des canaux larges.
- Rétention : si vous stockez des PJ, appliquez des règles de cycle de vie (rétention, étiquettes, purge).
Checklist de mise en production
- Le déclencheur est bien shared mailbox avec la bonne adresse.
- Comptes et licences : Power Automate, Teams, Planner, Exchange Online — validés.
- Canal de publication actif et accessible au compte d’exécution.
- Plan Planner et Bucket corrects (tests de création/lecture réussis).
- Scénarios de test : e‑mail simple, e‑mail HTML, e‑mail avec PJ, expéditeurs internes/externes, objets très longs.
- Logs et alertes configurés (notifications en cas d’échec).
- Documentation : schéma du flux, mappings, responsabilité opérationnelle.
Scénarios avancés
- Plusieurs boîtes partagées : créez un flux par boîte, ou un flux unique piloté par une table (adresse → canal → bucket).
- Catégorisation automatique : appliquez des étiquettes Planner selon des expressions (priorité, service, langue).
- Réponses semi‑automatiques : préparez des modèles Outlook (hors de ce flux) et liez la tâche Planner à un guide de réponse.
- Contrôle de doublons : rejetez un message si l’ID Internet existe déjà en base.
FAQ
Q : Peut‑on traiter l’historique de la boîte partagée ?
R : Le déclencheur gère uniquement les nouveaux messages. Pour l’historique, utilisez un flux manuel ou planifié qui parcourt la boîte et injecte chaque message dans la même logique.
Q : Comment gérer le HTML du corps de mail ?
R : Dans Teams, le texte peut s’afficher correctement. Dans Planner (Notes), privilégiez Body Preview ou une version dépouillée (remplacements simples). Pour un rendu riche, stockez le HTML dans un fichier et ne mettez qu’un lien.
Q : Peut‑on publier dans plusieurs canaux en fonction du contenu ?
R : Oui : ajoutez des switch/conditions par mots‑clés (produit, pays, SLA…).
Q : Quels sont les quotas ?
R : Les connecteurs M365 appliquent des limitations standards. Si le volume est élevé, limitez la concurrence, batcher les créations (si possible) et surveillez les erreurs transitoires.
Exemple de flux (structure lisible)
(Trigger) When a new email arrives in a shared mailbox (V2/V3)
├─ Initialize variable LinksPJ (Array) = []
├─ If HasAttachments = true
│ └─ Get email (Vx)
│ └─ Apply to each Attachment
│ ├─ Create file (SharePoint/OneDrive)
│ └─ Append to array variable (LinksPJ) : URL du fichier
├─ Teams - Post a message in a channel
│ Message = Sujet, De, Date, Aperçu, LiensPJ concaténés
├─ Planner - Create a task (Plan, Bucket, DueDateTime = addDays(utcNow(),2))
└─ Planner - Update task details (Description, Checklist, Labels)
Conseils qualité & SEO (si vous documentez en interne)
- Nommer le flux avec les mots‑clés : SharedMailbox → Teams + Planner.
- Renseigner les descriptions d’actions (but, données entrantes/sortantes).
- Versionner les changements (date, auteur, modification).
Conclusion
La combinaison Power Automate + Boîte partagée + Teams + Planner transforme un e‑mail entrant en un ticket visible par l’équipe, avec une tâche directement actionnable. Les deux principaux points d’attention : choisir le déclencheur « shared mailbox » et vérifier les droits. Une fois ce socle en place, enrichissez le flux avec du routage, la gestion des pièces jointes et des checklists pour accélérer la résolution.
Annexe : check‑list de debug express
- Le flux est‑il activé ? (État = On)
- L’adresse de boîte partagée est‑elle correcte ?
- Voyez‑vous des exécutions dans l’historique ? (sinon, déclencheur non satisfait)
- Le plan Planner et le bucket existent‑ils ? (test manuel côté Planner)
- Le canal Teams n’est‑il pas archivé et autorise‑t‑il la publication ?
- Le compte de service est‑il membre de l’équipe et du plan ?
Annexe : exemples de messages formatés
Message Teams (avec pièces jointes listées)
📥 Ticket reçu via la boîte partagée
Sujet : @{triggerBody()?\['Subject']}
De : @{triggerBody()?\['From']}
Reçu : @{formatDateTime(triggerBody()?\['DateTimeReceived'],'dd/MM/yyyy HH\:mm')}
Aperçu : @{triggerBody()?\['BodyPreview']}
Pièces jointes :
@{join(variables('LinksPJ'), char(10))}
Checklist Planner (à alimenter via Update task details)
- Répondre au client
- Consigner l’échange dans le CRM
- Joindre la/les pièce(s) utile(s)
- Planifier un suivi si pas de réponse sous 48 h
Annexe : normalisation minimale du texte
Si vous constatez des sauts de ligne irréguliers, utilisez un Compose avec :
@{replace(replace(triggerBody()?['BodyPreview'], '
', ' '), '
', ' ')}
Pour éviter des descriptions trop longues, tronquez :
@{if(greater(length(triggerBody()?['BodyPreview']),500),
concat(substring(triggerBody()?['BodyPreview'],0,497),'...'),
triggerBody()?['BodyPreview'])}
Annexe : variations multi‑équipes
Si plusieurs équipes doivent être prévenues :
- Créez un Switch sur un mot‑clé (ex. « Facture », « Incident », « RH »).
- Dans chaque branche, publiez dans le canal ad hoc et orientez la tâche vers le bucket approprié.
- Étiquetez la tâche (Labels) en conséquence pour faciliter les vues Planner.
À retenir
- La voie fiable : Power Automate (pas une fonctionnalité native de Teams).
- Le déclencheur : « When a new email arrives in a shared mailbox ».
- Enchaînement : Publication Teams → Création de tâche Planner (puis détails/étiquettes/checklist).
- Clés de succès : droits adéquats, mapping clair, test des scénarios réels, et journalisation.