HomeMicrosoft 365Afficher les anniversaires des employés dans SharePoint Online

Afficher les anniversaires des employés dans SharePoint Online

Afficher les anniversaires des employés est une demande qui revient régulièrement dans les environnements Microsoft 365. Ce n’est pas une demande gadget. Elle apparaît surtout dans des organisations qui ont un intranet vivant, une volonté de renforcer la culture interne ou des usages Viva déjà en place.

Derrière cette demande simple se cachent plusieurs enjeux techniques et de gouvernance. Où stocker la donnée. Comment la sécuriser. Comment l’afficher sans exposer d’informations sensibles. Et surtout, comment le faire de manière durable sans bricolage.

Avant de choisir une solution, il faut comprendre qu’il n’existe pas une seule bonne réponse. Il existe plusieurs approches, chacune adaptée à un contexte précis.

Le point de départ : où vivent les anniversaires dans Microsoft 365

Microsoft 365 ne propose pas nativement une expérience clé en main pour afficher les anniversaires des employés sur SharePoint Online. La donnée peut exister dans plusieurs endroits possibles :

  • dans Microsoft Entra ID via la propriété birthday exposée par Microsoft Graph
  • dans un système RH externe
  • dans une liste SharePoint créée à cet effet
  • dans un calendrier Microsoft 365

Chaque option implique des choix différents en matière de sécurité, d’automatisation et d’expérience utilisateur.

Option 1 : utiliser Microsoft Graph comme source et afficher via SharePoint

C’est l’approche la plus “directory-driven”.

Le champ birthday est exposé par Microsoft Graph sur l’objet utilisateur. Il peut être lu et mis à jour sous certaines conditions. Cette option est pertinente si l’organisation considère Entra ID comme la source d’autorité des données de profil.

Cette approche fonctionne bien lorsque :

  • la gouvernance autour des données personnelles est claire
  • le consentement utilisateur est géré
  • l’année de naissance est soit autorisée soit masquée à l’affichage

Côté affichage dans SharePoint Online, cette option nécessite une Web Part SPFx qui interroge Microsoft Graph, filtre les utilisateurs dont l’anniversaire tombe dans la période courante et affiche uniquement les informations nécessaires.

Code PowerShell avec Microsoft Graph SDK

Prérequis

Install-Module Microsoft.Graph -Scope CurrentUser

Connexion avec un scope de mise à jour utilisateur. En pratique, pour mettre à jour un autre utilisateur, on utilise généralement User.ReadWrite.All en délégué, avec un compte ayant les droits appropriés selon la politique de l’organisation.

Connect-MgGraph -Scopes "User.ReadWrite.All"

Lire la valeur birthday d’un utilisateur

$upn = "user@domaine.com"

$user = Get-MgUser -UserId $upn -Property "displayName,userPrincipalName,birthday"
$user | Select-Object displayName,userPrincipalName,birthday

Si tu veux auditer plusieurs utilisateurs, tu peux itérer sur une liste ou filtrer par groupe, puis lire la propriété.

Mettre à jour birthday

Microsoft recommande que birthday soit envoyée seule dans un PATCH dédié.
La façon la plus “propre” est d’utiliser Invoke-MgGraphRequest pour maîtriser exactement le payload.

$upn = "user@domaine.com"

$body = @{
  birthday = "1988-03-31T00:00:00Z"
} | ConvertTo-Json

Invoke-MgGraphRequest -Method PATCH -Uri "https://graph.microsoft.com/v1.0/users/$upn" -Body $body -ContentType "application/json"

Effacer birthday

$upn = "user@domaine.com"

$body = @{
  birthday = $null
} | ConvertTo-Json

Invoke-MgGraphRequest -Method PATCH -Uri "https://graph.microsoft.com/v1.0/users/$upn" -Body $body -ContentType "application/json"

Variante REST pour tests rapides dans Graph Explorer ou Postman

Lecture :

GET https://graph.microsoft.com/v1.0/users/user@domaine.com?$select=displayName,userPrincipalName,birthday

Mise à jour :

PATCH https://graph.microsoft.com/v1.0/users/user@domaine.com
Content-Type: application/json

{
  "birthday": "1988-03-31T00:00:00Z"
}

Rappel important : Microsoft indique que birthday doit être mise à jour seule et qu’elle n’est pas modifiable en app-only.

Option 2 : stocker les anniversaires dans une liste SharePoint

C’est l’approche la plus simple et la plus robuste pour un intranet.

On crée une liste SharePoint dédiée aux anniversaires, avec par exemple :

  • un champ Personne
  • un champ Jour
  • un champ Mois
  • éventuellement un champ Consentement

Les anniversaires peuvent être saisis manuellement, alimentés par un formulaire ou synchronisés depuis Graph ou un système RH.

L’affichage se fait ensuite très simplement avec une Web Part Liste et une vue filtrée par mois courant.

Option 3 : utiliser un calendrier Microsoft 365 et afficher les anniversaires comme événements

C’est une option souvent oubliée mais très intéressante.

Le principe consiste à créer un calendrier Microsoft 365 dédié aux anniversaires, puis à y créer des événements annuels récurrents pour chaque employé. Ce calendrier peut ensuite être affiché dans SharePoint via la Web Part Calendrier ou intégré dans Teams.

Cette approche est pertinente quand :

  • on veut traiter les anniversaires comme des événements
  • on souhaite les afficher dans plusieurs contextes (SharePoint, Outlook, Teams)
  • on veut bénéficier de la logique de récurrence annuelle

Dans la pratique, c’est l’option que je recommande le plus souvent en contexte intranet car c’est la plus simple a maintenir.

Comment alimenter un calendrier d’anniversaires avec Microsoft Graph

Microsoft Graph permet de créer des événements dans un calendrier partagé. C’est une approche propre et supportée.

Exemple de logique :

  • récupérer les utilisateurs et leur birthday via Graph
  • créer un événement annuel récurrent dans un calendrier dédié
  • n’afficher que le prénom et le jour de l’événement

Exemple REST simplifié :

POST https://graph.microsoft.com/v1.0/users/{calendarOwner}/events
Content-Type: application/json

{
  "subject": "Anniversaire de Sophie",
  "start": {
    "dateTime": "2026-03-31T00:00:00",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2026-03-31T23:59:00",
    "timeZone": "UTC"
  },
  "recurrence": {
    "pattern": {
      "type": "yearly",
      "interval": 1
    },
    "range": {
      "type": "noEnd",
      "startDate": "2026-03-31"
    }
  },
  "isAllDay": true
}

Ensuite, ce calendrier peut être affiché directement dans SharePoint ou Teams sans développement supplémentaire.

Charles Jenkins
Charles Jenkinshttps://trivium365.com/
Fort de plus de 15 ans d’expérience, il accompagne les organisations dans l’adoption des outils Microsoft pour optimiser leur collaboration et leur productivité. Passionné par l’innovation et l’amélioration continue, il met son expertise au service des équipes pour les aider à tirer le meilleur parti de la transformation numérique.