Historique des approbations de congés dans Microsoft Teams Shifts : méthodes natives, audit Purview, Graph et automatisation

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.

Sommaire

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ésDétails
Fonctionnalité intégréeDans 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 actuellesL’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émentsJournal 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 produitMicrosoft 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ôleLire les demandesApprouver/RefuserVoir l’approbateur et l’horodatageAccès multi‑équipe
Propriétaire du planning (Team Owner)Oui (toutes les demandes de l’équipe)OuiOui (dans le volet de détails)Non (limité à son équipe)
Manager (rôle Shifts)Oui (selon son périmètre)OuiOuiNon
Membre (Employé)Seulement ses propres demandesNonSeulement l’état, pas l’identité de l’approbateurNon
Administrateur Conformité (Purview)N/A dans ShiftsN/AOui via le journal d’auditOui (locataire complet selon rôle)

Afficher l’approbateur dans Shifts (méthode native)

  1. Dans Teams (desktop ou web), ouvrez Shifts et sélectionnez l’équipe/planning voulu.
  2. Accédez à Demande ou à la liste des demandes de congé.
  3. Cliquez sur une demande : un volet de détails s’ouvre à droite.
  4. 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

  1. Ouvrez le portail de conformité et accédez au Journal d’audit.
  2. Filtrez par Activité : TimeOffRequestApproved (et, si besoin, TimeOffRequestDeclined, TimeOffRequestSubmitted).
  3. Définissez la période (par exemple, le mois dernier) et, si requis, l’utilisateur ou l’équipe.
  4. Recherchez puis exportez en CSV pour archivage ou analyse (Excel/Power BI).

Champs utiles (typiques)

ChampUtilitéExemple
Date/Heure (UTC)Horodatage exact de l’approbation2025‑07‑18T09:42:11Z
OpérationType d’événementTimeOffRequestApproved
ObjetIdentifiant de la demande (corrélation)timeOffRequestId: 4a3b…
ActeurCompte de l’approbateurjohn.doe@contoso.com
CibleDemandeur / Équipejane.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) ou Schedule.ReadWrite.All si vous modifiez des données.

Points d’API utiles

ButEndpointNotes
Lister les congés (instances)GET /teams/{teamId}/schedule/timesOffRenvoie les périodes approuvées et appliquées au planning.
Lister les demandes (workflow)GET /teams/{teamId}/schedule/timeOffRequestsInclut l’id, l’état (soumise, approuvée, refusée) et des métadonnées d’action.
Détails d’une demandeGET /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/timeOffReasonsAssociez 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

ComposantRôlePoints d’attention
Déclencheur RécurrenceLance le flux chaque jour à heure fixeGérer le fuseau horaire et les jours fériés si nécessaire
Action HTTP vers GraphAppelle /timeOffRequests avec un filtre (période + état)Authentification via application Azure AD (client secret/certificat)
Parse JSONNormalise la charge utileValidez le schéma au démarrage puis versionnez
EnrichissementJointure avec /timeOffReasons et résolution des nomsMise en cache en variable pour limiter les appels
PersistanceÉcrit dans Excel (OneDrive/SharePoint) ou SharePoint ListAjoutez des colonnes : ID demande, État, Approbateur, Date/Heure, Raison, Commentaire
NotificationEnvoie un e‑mail de synthèse aux RH/ManagersInclure 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)

ColonneTypeDescriptionExemple
RequestIdTexteIdentifiant unique de la demande4a3b-…-ef92
TeamIdTexteÉquipe Teams d’originec1d2e3…
RequesterUPNTexteEmployé demandeurjane.smith@contoso.com
StateChoixSoumise / Approuvée / Refusée / AnnuléeApprouvée
ApprovedByUPNTexteApprobat(eur/rice)john.doe@contoso.com
ApprovalDateTimeDate/Heure (UTC)Horodatage de l’action2025‑09‑10 15:18:22
TimeOffStart/EndDate/HeurePériode de congé2025‑10‑12 → 2025‑10‑14
TimeOffReasonTexteLibellé humain (CP, RTT, etc.)CP
ManagerCommentTexte longCommentaire 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)

  1. Vérifier les droits : le manager voit bien l’approbateur dans le volet de détails Shifts.
  2. Configurer l’audit : activer la collecte (si ce n’est déjà fait) et définir la rétention adaptée.
  3. Déployer un flux Power Automate : collecte quotidienne des demandes approuvées, persistance dans un dépôt choisi.
  4. Mettre en place un reporting : tableau de bord Power BI ou rapport Excel distribué automatiquement.
  5. 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 :
    1. Documenter, dans la politique RH, qui possède les droits de propriétaire/manager et comment les changements de rôles sont tracés.
    2. 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).
    3. Pour les besoins analytiques (taux d’approbation, délais moyens), connecter les données exportées à Power BI.

Checklist de mise en production

ÉtapeResponsableDeliverableCritère d’acceptation
Validation des rôles ShiftsRH + Owner d’équipeListe des managers par équipeAccès confirmés et testés
Activation/Audit PurviewSécurité/ConformitéPolitique de rétention de l’auditÉvénements visibles sur la période cible
Implémentation du fluxIT/AutomatisationFlux Power Automate & stockageJournal quotidien sans doublons
ReportingBI/Contrôle de gestionTableau de bordKPIs validés (délais, volumes)
Documentation & transfertIT + RHProcédure d’exploitationRevue & 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é.

Sommaire