Vous cherchez à savoir, dans Microsoft Teams Shifts, qui a approuvé chaque demande de congé et comment conserver un historique fiable ? Voici les méthodes concrètes (interface, audit, API et automatisation) pour obtenir une traçabilité complète et exploitable.
Vue d’ensemble de la question
Dans de nombreuses organisations, la conformité, les audits internes ou la simple transparence RH exigent de savoir qui a approuvé une demande de congé, quand et avec quel commentaire. Or, la vue « au fil de l’eau » proposée par Shifts répond au besoin opérationnel immédiat mais ne fournit pas, telle quelle, un rapport historique consolidé pour l’ensemble des équipes ou sur une période donnée. Cet article détaille les options natives, leurs limites et trois approches robustes pour bâtir un historique durable : Microsoft Purview (journal d’audit), Microsoft Graph (requêtes API) et Power Automate (collecte/notification récurrente).
Réponse & Solutions
Points clés | Détails |
---|---|
Fonctionnalité intégrée | Dans Shifts, le propriétaire du planning (team owner) ou le manager peut ouvrir une demande de congé et consulter, dans le volet de détails, la date, l’heure et le nom de l’approbateur ainsi que le commentaire d’action managériale le cas échéant. |
Limites actuelles | L’interface ne permet pas d’étendre cette vue aux membres sans rôle managérial, ni de générer un rapport exportable englobant l’historique de toutes les équipes/plannings. |
Contournements & compléments | Journal d’audit Microsoft Purview : filtrer l’activité TimeOffRequestApproved pour obtenir une traçabilité complète (export CSV possible). Microsoft Graph API : interroger GET /teams/{teamId}/schedule/timesOff pour les instances de congé et GET /teams/{teamId}/schedule/timeOffRequests/{id} pour les métadonnées d’approbation. Power Automate : planifier un flux quotidien qui collecte, stocke (Excel/SharePoint) et/ou envoie par e‑mail la liste des demandes approuvées pour constituer un historique pérenne. |
Évolution du produit | Microsoft encourage le dépôt d’une idée d’amélioration sur le Feedback Portal afin qu’une vue historique native (ou un rapport téléchargeable) soit étudiée par l’équipe produit. |
Qui voit quoi ? (rôles, droits et visibilité)
La visibilité dans Shifts dépend du rôle dans l’équipe Teams et des paramètres du planning. Le tableau ci‑dessous résume les capacités pertinentes pour l’historique d’approbation :
Rôle | Lire les demandes | Approuver/Refuser | Voir l’approbateur et l’horodatage | Accès multi‑équipe |
---|---|---|---|---|
Propriétaire du planning (Team Owner) | Oui (toutes les demandes de l’équipe) | Oui | Oui (dans le volet de détails) | Non (limité à son équipe) |
Manager (rôle Shifts) | Oui (selon son périmètre) | Oui | Oui | Non |
Membre (Employé) | Seulement ses propres demandes | Non | Seulement l’état, pas l’identité de l’approbateur | Non |
Administrateur Conformité (Purview) | N/A dans Shifts | N/A | Oui via le journal d’audit | Oui (locataire complet selon rôle) |
Afficher l’approbateur dans Shifts (méthode native)
- Dans Teams (desktop ou web), ouvrez Shifts et sélectionnez l’équipe/planning voulu.
- Accédez à Demande ou à la liste des demandes de congé.
- Cliquez sur une demande : un volet de détails s’ouvre à droite.
- Repérez la section Historique ou le bloc de métadonnées : vous y verrez l’état (approuvée/refusée), la date/heure et le nom du manager qui a effectué l’action, ainsi que son commentaire éventuel.
À savoir : cette vue est transactionnelle (au cas par cas). Elle est idéale pour une vérification ponctuelle, mais pas pour produire un journal consolidé multi‑équipes ou multi‑périodes.
Exploiter le journal d’audit Microsoft Purview
Pour obtenir un historique global, la voie la plus simple et la plus gouvernée consiste à interroger le journal d’audit de Microsoft 365.
Pré‑requis
- Licence : Microsoft 365 E1/E3/E5 (ou équivalent) incluant l’audit standard.
- Rôle : un rôle de conformité permettant la lecture de l’audit (ex. Lecteur des journaux d’audit ou équivalent).
Étapes
- Ouvrez le portail de conformité et accédez au Journal d’audit.
- Filtrez par Activité :
TimeOffRequestApproved
(et, si besoin,TimeOffRequestDeclined
,TimeOffRequestSubmitted
). - Définissez la période (par exemple, le mois dernier) et, si requis, l’utilisateur ou l’équipe.
- Recherchez puis exportez en CSV pour archivage ou analyse (Excel/Power BI).
Champs utiles (typiques)
Champ | Utilité | Exemple |
---|---|---|
Date/Heure (UTC) | Horodatage exact de l’approbation | 2025‑07‑18T09:42:11Z |
Opération | Type d’événement | TimeOffRequestApproved |
Objet | Identifiant de la demande (corrélation) | timeOffRequestId: 4a3b… |
Acteur | Compte de l’approbateur | john.doe@contoso.com |
Cible | Demandeur / Équipe | jane.smith@contoso.com / Sales Team |
Avantages : couverture locataire, export facile, traçabilité conforme. Limites : dépend du délai de disponibilité de l’audit et de la rétention configurée.
Interroger Microsoft Graph pour des détails granulaires
Pour bâtir des rapports personnalisés et rapprocher demandes, approbations et raisons de congé, utilisez l’API Microsoft Graph.
Permissions & sécurité
- Déleguée (utilisateur connecté) : l’utilisateur doit être owner ou manager sur l’équipe ciblée.
- Application (daemon/service) : permissions applicatives typiques :
Schedule.Read.All
(lecture) ouSchedule.ReadWrite.All
si vous modifiez des données.
Points d’API utiles
But | Endpoint | Notes |
---|---|---|
Lister les congés (instances) | GET /teams/{teamId}/schedule/timesOff | Renvoie les périodes approuvées et appliquées au planning. |
Lister les demandes (workflow) | GET /teams/{teamId}/schedule/timeOffRequests | Inclut l’id , l’état (soumise, approuvée, refusée) et des métadonnées d’action. |
Détails d’une demande | GET /teams/{teamId}/schedule/timeOffRequests/{id} | Permet de récupérer l’horodatage et l’identité de l’approbateur (selon propriétés exposées). |
Raisons de congé | GET /teams/{teamId}/schedule/timeOffReasons | Associez l’ID de raison aux libellés métiers (CP, RTT, etc.). |
Exemples de requêtes
# Lister les demandes approuvées
GET https://graph.microsoft.com/v1.0/teams/{team-id}/schedule/timeOffRequests?$filter=state eq 'approved'
# Récupérer les métadonnées d'une demande spécifique
GET [https://graph.microsoft.com/v1.0/teams/{team-id}/schedule/timeOffRequests/{request-id}](https://graph.microsoft.com/v1.0/teams/{team-id}/schedule/timeOffRequests/{request-id})
# Lier avec les instances de congé (périodes appliquées au planning)
GET [https://graph.microsoft.com/v1.0/teams/{team-id}/schedule/timesOff](https://graph.microsoft.com/v1.0/teams/{team-id}/schedule/timesOff)
Astuce : conservez les champs d’identité (ex. qui a opéré l’action), d’horodatage et les commentaires managériaux lorsqu’ils sont présents pour nourrir vos rapports et audits.
Construire un historique pérenne avec Power Automate
Un flux récurrent permet de constituer automatiquement un journal d’approbations (tableur Excel, liste SharePoint ou base de données) et d’envoyer un digest e‑mail quotidien/hebdomadaire aux RH.
Architecture recommandée
Composant | Rôle | Points d’attention |
---|---|---|
Déclencheur Récurrence | Lance le flux chaque jour à heure fixe | Gérer le fuseau horaire et les jours fériés si nécessaire |
Action HTTP vers Graph | Appelle /timeOffRequests avec un filtre (période + état) | Authentification via application Azure AD (client secret/certificat) |
Parse JSON | Normalise la charge utile | Validez le schéma au démarrage puis versionnez |
Enrichissement | Jointure avec /timeOffReasons et résolution des noms | Mise en cache en variable pour limiter les appels |
Persistance | Écrit dans Excel (OneDrive/SharePoint) ou SharePoint List | Ajoutez des colonnes : ID demande, État, Approbateur, Date/Heure, Raison, Commentaire |
Notification | Envoie un e‑mail de synthèse aux RH/Managers | Inclure les enregistrements créés/MAJ depuis la dernière exécution |
Filtrer uniquement les changements récents
Pour éviter de retraiter tout l’historique, stockez l’horodatage de la dernière exécution (par ex. dans une table de configuration) et appelez Graph avec un filtre temporel (par exemple sur la dernière modification). Si un champ de « dernière modification » n’est pas directement filtrable, récupérez un lot raisonnable (ex. 7 jours) et filtrez côté flux.
Modèle de schéma (colonnes conseillées)
Colonne | Type | Description | Exemple |
---|---|---|---|
RequestId | Texte | Identifiant unique de la demande | 4a3b-…-ef92 |
TeamId | Texte | Équipe Teams d’origine | c1d2e3… |
RequesterUPN | Texte | Employé demandeur | jane.smith@contoso.com |
State | Choix | Soumise / Approuvée / Refusée / Annulée | Approuvée |
ApprovedByUPN | Texte | Approbat(eur/rice) | john.doe@contoso.com |
ApprovalDateTime | Date/Heure (UTC) | Horodatage de l’action | 2025‑09‑10 15:18:22 |
TimeOffStart/End | Date/Heure | Période de congé | 2025‑10‑12 → 2025‑10‑14 |
TimeOffReason | Texte | Libellé humain (CP, RTT, etc.) | CP |
ManagerComment | Texte long | Commentaire lors de l’approbation/refus |
Script d’export (exemple PowerShell)
Exemple illustratif d’extraction vers CSV en s’appuyant sur Microsoft Graph :
# Connexion (module Microsoft.Graph)
Connect-MgGraph -Scopes "Schedule.Read.All"
Select-MgProfile -Name "v1.0"
$teamId = ""
$csvOut = "C:\Temp\Shifts-Approvals.csv"
$rows = @()
# Récupère les demandes de congé (approvées)
$requests = Invoke-MgGraphRequest -Method GET `
-Uri "/v1.0/teams/$teamId/schedule/timeOffRequests`?$filter=state eq 'approved'"
foreach ($r in $requests.value) {
# Optionnel : récupérer l'instance de congé correspondante si nécessaire
$rows += [pscustomobject]@{
RequestId = $r.id
TeamId = $teamId
State = $r.state
ApprovalDateTime = $r.managerActionDateTime # si exposé dans votre environnement
ApprovedByUPN = $r.lastModifiedBy.user.userPrincipalName
RequesterUPN = $r.sender.user.userPrincipalName
ManagerComment = $r.managerActionMessage
}
}
$rows | Export-Csv -Path $csvOut -NoTypeInformation -Encoding UTF8
Write-Host "Export terminé - $csvOut"
Remarque : selon la version et le profil d’API, les propriétés disponibles peuvent varier. Ajustez les champs (ex. lastModifiedBy
, createdBy
, managerActionDateTime
) selon le schéma retourné dans votre tenant.
Bonnes pratiques de gouvernance et de conformité
- Clarifier les rôles dans une politique RH : qui est propriétaire/manager, qui peut approuver, comment sont gérés les remplacements (congés des managers, turnover).
- Standardiser les raisons de congé (TimeOffReasons) et limiter la création ad hoc pour éviter les divergences d’étiquetage.
- Exporter mensuellement l’historique (CSV signé ou stockage immuable) pour répondre aux obligations légales de conservation.
- Surveiller les exceptions : approbations en dehors des heures ouvrées, sur‑allocation de congés, refus non commentés.
- Power BI : chargez vos exports pour visualiser les délais d’approbation, la saisonnalité des absences et la saturation des managers.
Procédure pas à pas (check‑list opérationnelle)
- Vérifier les droits : le manager voit bien l’approbateur dans le volet de détails Shifts.
- Configurer l’audit : activer la collecte (si ce n’est déjà fait) et définir la rétention adaptée.
- Déployer un flux Power Automate : collecte quotidienne des demandes approuvées, persistance dans un dépôt choisi.
- Mettre en place un reporting : tableau de bord Power BI ou rapport Excel distribué automatiquement.
- Documenter : écrire la procédure (où retrouver l’info, rôles, durée de conservation, responsables).
Dépannage (FAQ)
Je ne vois pas le nom de l’approbateur dans Shifts.
Assurez‑vous d’être manager ou propriétaire du planning de l’équipe concernée. Les membres ne voient pas l’identité de l’approbateur des autres demandes. Vérifiez aussi que vous consultez la demande dans le planning correct (certaines organisations ont plusieurs plannings par équipe). L’export Purview ne contient pas tous les événements attendu.
Contrôlez la fenêtre temporelle, la rétention d’audit et l’activité sélectionnée (TimeOffRequestApproved
, Declined
, etc.). Selon la volumétrie, l’export peut être segmenté par tranches temporelles. Je veux un rapport multi‑équipes.
Avec Graph, bouclez sur une liste d’équipes (TeamId) et concaténez les résultats dans un DataLake/SharePoint/Excel unique. Pensez à stocker l’ID d’équipe pour filtrer ensuite par périmètre. Mon flux Power Automate double des enregistrements.
Implémentez une clé naturelle (TeamId + RequestId) et upsert (mise à jour si existant). En e‑mail, envoyez uniquement les lignes dont l’horodatage d’action > dernière exécution. Quels champs journaliser pour l’audit ?
Au minimum : RequestId, TeamId, RequesterUPN, State, ApprovalDateTime (UTC), ApprovedByUPN, TimeOffStart/End, TimeOffReason, ManagerComment. Ajoutez le fuseau d’origine et l’empreinte de l’exécuteur (application/flux) pour la traçabilité.
Modèle de politique interne (extrait)
Objet : Traçabilité des approbations de congés dans Microsoft Teams Shifts.
Principe : Toute approbation de congé doit être identifiable : approbateur, date/heure (UTC), commentaire d’action. Les responsables RH conservent l’historique exporté durant N années.
Mise en œuvre : L’équipe IT opère un flux Power Automate quotidien s’appuyant sur Microsoft Graph et stocke les données dans un dépôt d’archives. Un rapport mensuel est adressé aux RH.
Résumé pratique
- Besoin de vérifier ponctuellement ? Ouvrez la demande dans Shifts (manager/owner) et lisez l’approbateur dans le volet de détails.
- Besoin d’un historique global ? Utilisez le journal d’audit Purview (activité
TimeOffRequestApproved
) et exportez en CSV. - Besoin de rapports avancés/automatisés ? Interrogez Microsoft Graph et alimentez un dépôt via Power Automate, puis analysez dans Power BI.
Informations complémentaires utiles
- Accès requis : l’accès au journal d’audit nécessite la licence Microsoft 365 E1/E3/E5 (ou équivalent) et des rôles de conformité adéquats.
- Bonnes pratiques :
- Documenter, dans la politique RH, qui possède les droits de propriétaire/manager et comment les changements de rôles sont tracés.
- Mettre en place un export mensuel automatisé pour conserver un historique hors ligne (utile en cas d’audits internes ou d’obligations légales de conservation).
- Pour les besoins analytiques (taux d’approbation, délais moyens), connecter les données exportées à Power BI.
Checklist de mise en production
Étape | Responsable | Deliverable | Critère d’acceptation |
---|---|---|---|
Validation des rôles Shifts | RH + Owner d’équipe | Liste des managers par équipe | Accès confirmés et testés |
Activation/Audit Purview | Sécurité/Conformité | Politique de rétention de l’audit | Événements visibles sur la période cible |
Implémentation du flux | IT/Automatisation | Flux Power Automate & stockage | Journal quotidien sans doublons |
Reporting | BI/Contrôle de gestion | Tableau de bord | KPIs validés (délais, volumes) |
Documentation & transfert | IT + RH | Procédure d’exploitation | Revue & signature |
Conclusion
Shifts fournit l’information d’approbation au niveau de chaque demande pour les rôles habilités, mais la création d’un historique consolidé requiert des compléments. En combinant Purview (traçabilité officielle), Graph (détail granulaire) et Power Automate (collecte/alerte), vous obtenez un dispositif fiable, auditable et utile au quotidien pour piloter les congés, réduire les frictions et satisfaire aux exigences de conformité.