Viva Engage (anciennement Yammer) joue un rôle central dans la communication interne et la culture organisationnelle des entreprises. Commençant comme un outil social, il a évolué pour devenir un espace stratégique pour les communautés, les annonces, le storytelling et le partage de connaissances. Mais au fur et à mesure que son adoption s’élargit, une question cruciale émerge pour les administrateurs M365 :
Comment inventorier toutes les communautés Viva Engage du tenant et déterminer lesquelles sont actives, inactives ou orphelines ?
Contrairement à d’autres applications M365 (Planner, Forms, Lists), Viva Engage ne repose pas encore sur Microsoft Graph. Son inventaire nécessite l’utilisation de l’API Yammer. Dans cet article, nous allons voir :
- ce qu’il est possible d’inventorier,
- comment analyser l’activité réelle,
- comment identifier les communautés abandonnées,
- et un script pour obtenir un rapport complet.
Pourquoi Viva Engage n’offre pas une API Graph (encore)
Alors que Microsoft tend à unifier ses services sous Microsoft Graph, Viva Engage reste (pour l’instant) basé sur :
- l’infrastructure Yammer,
- ses endpoints REST historiques,
- un modèle d’authentification OAuth indépendant.
Cela implique :
❌ pas d’appel Microsoft Graph pour inventorier Viva Engage
❌ pas de PowerShell natif basé sur Graph ou SPO
✔ Inventaire possible et fiable via Yammer API
Ce que l’on peut inventorier avec Viva Engage (via l’API Yammer)
Grâce à l’API, il est possible de récupérer :
✔ La liste complète des communautés
Nom, ID, description, propriétaires, visibilité, date de création.
✔ Les propriétaires, administrateurs et membres
Avec identification via Azure AD (par correspondance UPN / ObjectID).
✔ L’activité d’une communauté
En récupérant :
- messages récents,
- commentaires,
- réactions (“likes”),
- tendances de publication.
✔ Les communautés inactives
Basées sur :
- le dernier message,
- l’absence d’engagement,
- une baisse significative du volume d’activités.
✔ Les communautés orphelines
Lorsqu’un propriétaire n’existe plus dans Azure AD.
Comment mesurer l’inactivité d’une communauté ?
Trois stratégies :
1️⃣ Dernière activité (la plus fiable)
On analyse la date du dernier :
- message,
- commentaire,
- like.
2️⃣ Engagement moyen sur 90 jours
On calcule :
- nombre moyen de messages / réactivité,
- tendance ↗️ ou ↘️.
3️⃣ Propriétaire inactif ou supprimé
Une communauté dont le propriétaire n’existe plus est orpheline.
Script PowerShell
Ce script :
- inventorie toutes les communautés,
- récupère la dernière activité,
- calcule l’engagement moyen,
- identifie les propriétaires,
- détecte l’inactivité (> 6 mois),
- détecte les communautés orphelines.
⚠️ Prérequis : un token OAuth Viva Engage (“Bearer XXXXXX”).
# ==========================================================
# Inventaire Viva Engage (Yammer) – Script Avancé
# Analyse des communautés, activité, engagement, orphelins
# ==========================================================
$token = "Bearer VOTRE_TOKEN_ICI"
$headers = @{
"Authorization" = $token
}
Write-Host "Récupération des communautés Viva Engage..." -ForegroundColor Cyan
$groups = Invoke-RestMethod -Headers $headers
-Uri "https://www.yammer.com/api/v1/groups.json"
-Method Get
$results = @()
foreach ($group in $groups) {
Write-Host "Analyse de la communauté : $($group.full_name)" -ForegroundColor Yellow
# Récupérer les messages de la communauté
$messages = Invoke-RestMethod -Headers $headers
-Uri "https://www.yammer.com/api/v1/messages/in_group/$($group.id).json"
-Method Get
$lastMessage = $messages.messages |
Sort-Object created_at -Descending |
Select-Object -First 1
# Calcul engagement sur 90 jours
$recentMessages = $messages.messages |
Where-Object { (Get-Date $_.created_at) -gt (Get-Date).AddDays(-90) }
$engagementScore = $recentMessages.Count +
($recentMessages.threaded_starter.Count * 0.5)
# Détection orphelin
$owner = $group.creator_id
try {
$aadUser = Get-MgUser -UserId $owner -ErrorAction Stop
$orphan = $false
}
catch {
$orphan = $true
}
$results += [pscustomobject]@{
GroupName = $group.full_name
GroupId = $group.id
CreatedOn = $group.created_at
OwnerId = $group.creator_id
MembersCount = $group.stats.members
LastActivity = $lastMessage.created_at
IsInactive = $(if ($lastMessage.created_at -lt (Get-Date).AddMonths(-6)) {"Yes"} else {"No"})
Engagement90Days = $engagementScore
IsOrphan = $(if ($orphan) {"Yes"} else {"No"})
}
}
$filename = "VivaEngageInventory_Advanced_$(Get-Date -Format 'yyyyMMdd').csv"
$results | Export-Csv $filename -NoTypeInformation -Encoding UTF8
Write-Host "Inventaire avancé terminé ! Fichier généré : $filename" -ForegroundColor Green
Exemple de rapport avancé
| Communauté | Membres | Dernière activité | Engagement (90 j) | Orpheline ? | Inactive ? |
|---|---|---|---|---|---|
| IT Cloud | 54 | 2025-01-10 | 82 | ❌ | ❌ |
| RH Communications | 132 | 2023-03-01 | 0 | ❌ | ✅ |
| Projet Phoenix | 8 | 2022-11-22 | 0 | ✅ | ✅ |
| Nouvelles internes | 250 | 2025-02-02 | 155 | ❌ | ❌ |
Même si Viva Engage n’est pas encore intégré dans Microsoft Graph, il est possible d’obtenir une véritable vue d’ensemble grâce à l’API Yammer :
✔ inventaire complet des communautés,
✔ analyse de l’activité réelle,
✔ calcul de l’engagement,
✔ détection de l’inactivité,
✔ identification des communautés orphelines,
✔ exportation pour Power BI ou rapport M365.
C’est un outil puissant pour moderniser la gouvernance interne, améliorer la qualité des communautés et soutenir la stratégie d’engagement organisationnelle.
