📖 Introduction
Dans un environnement de travail basé sur Microsoft 365, Exchange Online constitue le point central de la communication.
Malgré d’excellents SLA proposés par Microsoft, une panne peut toujours survenir…
Il est également possible que vous ayez besoin de communiquer très rapidement, alors que certains utilisateurs ne consultent leurs emails qu’avec un certain délai.
Dans cet article, je vais vous montrer comment créer un canal de communication alternatif afin de pallier ce problème.
Cas d’usage :
- Communications urgentes
- Alertes IT
- Notifications de crise
⚙️ Prérequis
- Posséder une souscription Azure
- Avoir le rôle Contributeur sur cette souscription
- Être Application Administrator sur Entra
🦸♀️ Création des ressources Azure
Dans Azure, nous allons commencer par créer un Resource Group qui servira à accueillir nos ressources.
Pour cela, dans le menu Resource Groups, cliquez sur Create, puis choisissez un nom et une Region. Enfin, cliquez sur Review + Create, puis sur Create.
Je choisis France Central afin que les données soient stockées en France et respectent ainsi le RGPD.

Dans ce guide, nous allons utiliser Azure Logic Apps, qui permet d’automatiser des tâches en low-code. On peut voir cela comme un équivalent de Power Automate, mais sans rattachement à un compte Microsoft 365.
🧾 Création et configuration de la Logic App
Dans ce groupe de ressources, créez une Logic App en cliquant sur Create, puis en recherchant Logic Apps.
Choisissez le mode Consumption afin de payer uniquement ce que vous consommez. Donnez ensuite un nom à votre application et hébergez-la dans la même région que le groupe de ressources.

Bravo ! Vos ressources sont créées. Il faut maintenant les configurer.
Rendez-vous sur votre Logic App, puis cliquez sur Edit.

Ajouter un déclencheur (trigger)
Pour cette Logic App, nous allons la déclencher via une requête HTTP. Cela permet de l’utiliser sans être connecté à Azure.
Cliquez sur Add a trigger, puis recherchez When an HTTP request is received.

Dans le champ Method, choisissez POST, puis ajoutez le JSON suivant dans Request Body JSON Schema :
{
"type": "object",
"properties": {
"groupId": {
"type": "string"
},
"message": {
"type": "string"
},
"authToken": {
"type": "string"
}
},
"required": [
"groupId",
"message",
"authToken"
]
}
Ce schéma impose la présence des paramètres suivants :
- groupId → Identifiant du groupe Entra cible
- message → Message à envoyer
- authToken → Token de sécurité
Execution du workflow uniquement si le token est valide
Cliquez sur le bouton + sous le déclencheur, puis sur Add an action → Condition.

Ajoutez le contenu dynamique authToken.

Générez ensuite un token avec PowerShell :
$bytes = New-Object byte[] 32
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
$token = [Convert]::ToBase64String($bytes)
$token = $token -replace '\+','-' -replace '/','_' -replace '='
$token
Collez ce token dans la partie droite de la condition.

⚠️ Pensez à renouveler régulièrement ce token pour limiter les risques.
❌ Token invalide → arrêt du workflow
Dans la branche False, ajoutez une action Terminate.

N’oubliez pas de sauvegarder !
🥸 Récupération des membres du groupe cible
Pour récupérer les membres du groupe, nous allons utiliser une App Registration.
Dans Entra, créez une application et ajoutez un Client Secret. Conservez :
- Tenant ID
- Client ID
- Client Secret

Ajoutez ensuite les permissions suivantes :
- Chat.Create
- Group.Read.All
- User.Read.All
Puis cliquez sur Grant admin consent.

Connexion à Microsoft Graph
Ajoutez une action HTTP dans la branche TRUE :
- URI : https://login.microsoftonline.com/<TENANTID>/oauth2/v2.0/token
- Method : POST
- Headers : Content-Type | application/x-www-form-urlencoded
client_id=<CLIENTID>&scope=https://graph.microsoft.com/.default&client_secret=<SECRETVALUE>&grant_type=client_credentials

Récupération du token
Ajoutez une action Parse JSON :
Dans Content, indiquez le contenu dynamique Body
Puis indiquez le JSON suivant dans Schéma
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"properties": {
"type": "object",
"properties": {
"access_token": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
}
}
}
}
}
}
Récupération des membres
Ajoutez une nouvelle action HTTP :
- URI : https://graph.microsoft.com/v1.0/groups/groupID/members
- Group ID est un contenu dynamique
- Method : GET
- Headers : Authorization | Bearer {body(‘Parse_JSON’)?[‘access_token’]}
- Toute la fonction entre {}doit être insérée via le bouton Insert expression

💬 Envoi du message
Ajoutez une boucle For each avec le paramètre suivant:
body('HTTP1')?['value']- Toute la fonction doit être insérée via le bouton Insert expression
À l’intérieur, ajoutez l’action Post message in a chat or channel.
Configurer la de la manière suivante :
- Cliquez sur Sign In puis connectez vous avec un compte de service, pour éviter les adhérences à votre compte.
- Remplir les champs suivants :
- Post as → Flow Bot
- Post in → Chat with Flow Bot
- Recipiant → Insert Expression → items(‘For_each’)[‘mail’]
- Message → Dynamic Expression → message
- Vous pouvez agrémenter le message comme vous le voulez autour du message reçu par le post http
- Dans les paramêtres avancés, sélectionnez Is alert et positionnez le a « OUI »
N’oubliez pas d’enregister votre travail !!
La configuration est finie, nous allons maintenant la tester.
🎇Utilisation de la logic app
L’utilisation de la logic apps est possible en éxecutant un POST HTTP sur l’URL de celle-ci.
Récupérez l’URL du workflow sur la page d’accueil de votre Logic App, ainsi que votre authToken créé plus haut.
Récupérez ensuite l’ID du groupe dans lequel vous voulez envoyer un message.
Executez ensuite la requête HTTP POST via l’outil de votre choix (Postman,Python,PowerShell), voici un exemple de script Powershell .
Voici à quoi ressemble la notification :

Félicitations, vous avez créé un canal secondaire de communication !

Et pour après ?
Je vous propose ensuite de savoir comment stocker ses secrets de manière sécurisée, via Azure KeyVault, dans un article qui sortira prochainement !
