RH-03 — Surconsommation congés
| Fonction | Nature | Framework | Score | Statut |
|---|---|---|---|---|
| RH | Automatisation | n8n | 18* | 🟠 Vague 2 — API Progessi confirmée ✅ |
Source : atelier RH 27/08 — “Écart calculé entre jours contractuels, facturés et absences. Suivi CP, RTT, CET, arrêts, formations”.
Contexte métier
Section titled “Contexte métier”- Suivi manuel actuel des écarts entre :
- Jours contractuels (définis au contrat)
- Jours facturés au client (CRA validés)
- Absences réelles (CP, RTT, CET, arrêts maladie, formations)
- Types de compteurs :
- CP (congés payés)
- RTT (compteur standard 208 jours, calcul faux en cas d’arrivée en cours de mois — actuellement corrigé à la main par Sonia Gantou / Clément)
- CET (compte épargne temps) — absent de Progessi, tenu uniquement dans Nibelis
- Arrêts maladie
- Formations
- Verbatim Maëva Saucerotte : “Sur la fiche de paye, mais pas sur le projet [Progessi]… C’est la paie qui sait combien il y a de…” — les compteurs Progessi ne reflètent pas la paie de manière fiable.
- Verbatim Maëva : “Le CET, quand quelqu’un prend son CET ou se le fait rémunérer, enfin plutôt prend des congés de son CET, c’est pas décompté [sur Progessi]” — CET non intégré au compteur opérationnel.
- Verbatim Maëva : “C’est Sonia qui nous dit, ça y est, c’est bon, on a déclenché quelque chose dans le projet-ci, qui fait qu’au 1er janvier, les collaborateurs peuvent avoir leurs RTT sur leur compteur projet-ci” — RTT ouverture manuelle annuelle.
- Verbatim atelier : “Écart calculé entre jours contractuels, facturés et absences. Suivi des CP, RTT, CET, arrêts, formations et absences non travaillées.”
- Règles d’imposition (verbatim Maëva) : imposition possible uniquement sur la période estivale, préavis de 2 mois, minimum 10 congés acquis — RH-03 doit alerter en amont pour permettre l’action.
- Générable depuis Progessi READ ✅ — les données de base (leaves, sickLeaves, timesheets) sont exposées, mais l’agrégation “solde” n’existe pas en tant qu’endpoint : à reconstruire côté n8n.
- Nibelis reste référence paie — communication systématique : “vue opérationnelle Progessi, référence paye = Nibelis”.
- Interlocutrice : Sonia Gantou (RTT), Clément (règles paye), Alexandra Delcourt (arbitrage seuils).
Transcripts sources : RH audit Mekorai 27/08/2026 (synthèse + verbatim), restitution DG consolidée vagues 1-2.
Objectif du cas d’usage
Section titled “Objectif du cas d’usage”Générer mensuellement un rapport de surconsommation par collaborateur/entité/manager, détecter les écarts anormaux (dépassement solde CP/RTT, arrêts maladie YTD élevés, absences non travaillées inhabituelles), alerter Alexandra sur cas critiques, notifier chaque manager pour ses équipes.
Ce que l’API Progessi READ apporte (spec OpenAPI 2026-08-25) :
POST /profiles→ liste consultants actifs avecbusinessUnit,legalEntity,hireDate.POST /emplLeaves→ congés posés/validés (21 champs : type, dateFrom, dateTo, days, status…).POST /sickLeaves→ arrêts maladie (20 champs).POST /timesheets→ CRA avecnbDays(jours travaillés),nbLeaves(jours de congés déjà agrégés),nbSickLeaves,potentialDays(jours ouvrés du mois),intercontract, relationsproducer/businessUnit/legalEntity.POST /timeEntries→ détail journalier si besoin de granularité.
Ce qui n’existe PAS côté Progessi et doit être reconstitué côté n8n :
- Un endpoint agrégé
/leave-balance— inexistant. Le solde CP se calcule côté n8n :acquis N-1 + acquis N - consommés (emplLeaves type CP). - Le CET — absent de Progessi, tenu uniquement dans Nibelis → afficher un lien Nibelis, ne pas calculer.
- Un seuil de surconsommation — c’est une règle métier (paramètres n8n) : ex.
consommé > solde + toleranceouarrêts YTD > 15 jours. - Le mapping manager — champ
managerIdsur/profilesà confirmer (bloquant partagé avec ADV-02) ; fallback = CSV mensuel RH.
Ce qui reste manuel :
- Ouverture annuelle des RTT (Sonia).
- Régularisation Progessi quand paie détecte un écart CET/CP (Clément).
- Décisions RH d’imposition estivale.
Étapes fonctionnelles détaillées
Section titled “Étapes fonctionnelles détaillées”- Cron mensuel début de mois (ex : 5 du mois pour données M-1 complètes).
- Extraire depuis Progessi tous les collaborateurs actifs.
- Pour chaque collaborateur :
- Lire compteurs (CP acquis/pris/restants, RTT, CET) — CF widget “Congés” identifié dans data model Progessi
- Lire absences période (maladie, formations)
- Lire jours facturés (CRA validés)
- Calculer :
- Solde CP consommé vs disponible
- RTT idem
- Jours maladie YTD
- Formations YTD
- Détecter surconsommations :
- CP consommé > solde → surconsommation CP
- RTT idem
- Absences maladie > seuil YTD → alerte
- Générer rapport : Excel + dashboard web filtrable (entité/manager/type).
- Ranking : top consommateurs par type (diffusion limitée DRH).
- Alerter RH sur cas critiques.
- Notifier managers : chacun reçoit la liste de ses équipes concernées.
- Historique : évolution mensuelle des soldes.
Flot d’appels API
Section titled “Flot d’appels API”flowchart TD
Cron[Cron mensuel<br/>5 du mois M<br/>periode M-1] --> ListCol[Progessi<br/>POST /profiles<br/>FilterModel active=true<br/>fields: id,email,businessUnit,<br/>legalEntity,hireDate,managerId]
ListCol --> Loop{Pour chaque<br/>consultant}
Loop --> Leaves[Progessi<br/>POST /emplLeaves<br/>FilterModel<br/>producerId=X<br/>dateFrom BETWEEN YTD]
Loop --> Sick[Progessi<br/>POST /sickLeaves<br/>FilterModel<br/>producerId=X YTD]
Loop --> TS[Progessi<br/>POST /timesheets<br/>FilterModel<br/>producerId=X<br/>period=M-1<br/>fields: nbDays,nbLeaves,<br/>nbSickLeaves,potentialDays,<br/>intercontract]
Leaves --> Agg[Agregation n8n<br/>CP acquis N-1+N<br/>CP consommes = sum days<br/>type=CP<br/>RTT idem<br/>Maladie YTD = sum sickLeaves]
Sick --> Agg
TS --> Agg
Agg --> Rule{Regle metier<br/>surconsommation ?<br/>consommes > acquis + seuil<br/>OR maladie > 15j YTD}
Rule -->|Oui| Add[Ligne rapport<br/>+ severite]
Rule -->|Non| Skip[Skip]
Add --> Rank[Ranking top<br/>consommateurs<br/>diffusion DRH]
Rank --> Gen[Excel structure<br/>+ dashboard n8n]
Gen --> Publish[Graph API<br/>PUT /sites/rh/drive/root:<br/>/surconso-YYYY-MM.xlsx]
Publish --> AlertRH[Graph API<br/>POST /me/sendMail<br/>DRH cas critiques]
Publish --> LoopMgr{Pour chaque<br/>manager avec equipe<br/>concernee}
LoopMgr --> NotifMgr[Graph API<br/>POST /me/sendMail<br/>manager sa liste]
Publish --> Hist[Graph API<br/>PUT /Historique/<br/>YYYY-MM/surconso.xlsx]
Agg -.->|CET| NibelisLink[Lien Nibelis<br/>affiche seulement<br/>pas calcule]
Confrontation à l’API Progessi réelle
Section titled “Confrontation à l’API Progessi réelle”Base URL : https://proxiad.progessi.com/api/control/rest — BasicAuth — READ-ONLY. Pattern : GET /<res>, POST /<res> (FilterModel), GET /<res>/{id}. Toute demande d’écriture passe par clalanne@progessi.com.
| Besoin RH-03 | Endpoint Progessi | Faisabilité | Contournement |
|---|---|---|---|
| Lister consultants actifs (avec BU, entité légale) | POST /profiles FilterModel active=true | ✅ 34 fields | — |
| Congés posés / validés YTD | POST /emplLeaves FilterModel dateFrom range + type (CP, RTT, CET, formation…) | ✅ 21 fields | — |
| Arrêts maladie YTD | POST /sickLeaves FilterModel dateFrom range | ✅ 20 fields | — |
| CRA validés du mois (jours facturés) | POST /timesheets FilterModel period + validated | ✅ 39 fields, dont nbDays, nbLeaves, nbSickLeaves, potentialDays, intercontract | — |
| Solde CP/RTT agrégé | ❌ Pas d’endpoint /leave-balance | 🔴 inexistant | Reconstruction côté n8n : acquis N-1 + acquis N - consommés depuis emplLeaves groupé par type. Règle acquis à formaliser avec Sonia. |
| CET (compte épargne temps) | ❌ Non présent sur Progessi | 🔴 inexistant | Afficher lien Nibelis dans la fiche collaborateur du rapport ; ne pas calculer. |
| Type “formation” comme absence | ❓ À qualifier — champ type sur emplLeaves OU entité dédiée | ⚠️ à trancher | Session partage écran RH — vérifier le référentiel types dans le widget Congés Progessi. |
| Mapping manager | ❓ champ managerId sur /profiles à confirmer | ⚠️ | Fallback CSV RH mensuel (mutualisé ADV-02). |
| Poser/valider un congé automatiquement | ❌ Aucun POST /emplLeaves en write | 🔴 impossible | Reste manuel dans Progessi. RH-03 se limite à la détection + alerte. |
| Déclencher un workflow RH d’imposition | ❌ Pas de BPM exposé | 🔴 impossible | Notif Alexandra qui pilote manuellement. |
Sources externes :
- Microsoft Graph : envoi mails DRH/manager + publication rapport Excel sur SharePoint RH.
- Nibelis : source de vérité CET et paye — non intégré dans le calcul, mais mentionné comme référence.
Règles métier côté n8n (à cadrer avec Alexandra + Sonia) :
- Seuil critique CP :
consommé > solde + 2 jours→ alerte DRH. - Seuil maladie YTD :
> 15 jours cumulés YTD→ alerte DRH. - RTT arrivée en cours d’année : proratisation calculée côté n8n depuis
hireDateet compteur standard 208, PAS depuis Progessi (qui donne 208 fixes). - Diffusion ranking “top consommateurs” : DRH uniquement (validation cadrage social).
API map
Section titled “API map”| # | Étape | Fonction / endpoint | Application | Existe ? | Accès dispo ? | Notes |
|---|---|---|---|---|---|---|
| 1 | Lister collabs actifs | POST /profiles FilterModel status=active | Progessi | ✅ | ✅ | Shortcut existant |
| 2 | Solde congés | GET /profiles/{id}/leave-balance OU champs sur /profiles/{id} | Progessi | ❓ À qualifier | ✅ | Session 30 min RH — voir widget Congés (transcript t’a montré structure : gainedN1, consumedN, rttBalance…) |
| 3 | Sick leaves | GET /sickLeaves période | Progessi | ✅ | ✅ | — |
| 4 | Empl leaves | GET /emplLeaves période | Progessi | ✅ | ✅ | — |
| 5 | Formations | GET /formations OU champ sur emplLeaves | Progessi | ❓ | ✅ | À qualifier — Progessi a une entité formation ? |
| 6 | CRA validés | GET /timesheets?status=validated | Progessi | ✅ | ✅ | — |
| 7 | Mapping manager | Champ managerId sur profiles | Progessi | ❓ | ✅ | Idem ADV-02 — bloquant partagé |
| 8 | Mail RH + managers | POST /me/sendMail | Microsoft Graph | ✅ | ⚠️ Extension droits | — |
| 9 | Publication rapport | PUT /sites/rh/drive/root:/rapport-M.xlsx | Microsoft Graph | ✅ | ⚠️ | Site SharePoint RH |
Prérequis techniques
Section titled “Prérequis techniques”- API Progessi ✅ (cartographie précise compteurs à faire)
- Extension droits M365 (mail + SharePoint)
- Mapping manager (partagé avec ADV-02)
Livrables Proxiad attendus
Section titled “Livrables Proxiad attendus”- Session partage écran RH : cartographier compteurs Progessi (30 min) — champs
gainedN1,consumedN,rttBalance,formations… - Règles de calcul :
- Formule CP acquis (N-1 / N)
- Seuil surconsommation critique (dépassement > X jours ?)
- Seuil alerte maladie YTD
- Périmètre entités v1
- Format rapport préféré (Excel structuré ? dashboard web ?)
- Ranking manager : diffusion à qui ? (DRH ? managers eux-mêmes ? direction ?)
- Templates notifs validés
- Question CET / RTT employeur : intégration en v1 ou report v2 ?
Timeline estimative
Section titled “Timeline estimative”Effort : 3 jours-n8n (API Progessi confirmée, pas de blocage majeur).
- S+0 : session partage écran RH (30 min)
- S+1 J1 : shortcut Progessi
leave_balance+ query jointures - S+1 J1 : handler RH-03 + calculs
- S+1 J2 : génération Excel + dashboard léger
- S+1 J3 : tests + démo Alexandra
- S+2 : pilote 1 mois
- S+3 : mise en production
Critères de recette
Section titled “Critères de recette”- Rapport mensuel généré début de mois, tous collabs actifs présents
- Surconsommations détectées avec seuils paramétrés
- Filtres dashboard par entité + manager + type
- Alerte critique RH fonctionne
- Notif managers pour leurs équipes uniquement
- Cohérence Progessi × rapport (contrôle 5 collabs test)
- Historique mensuel consultable
Risques identifiés
Section titled “Risques identifiés”| Risque | Impact | Mitigation |
|---|---|---|
| Compteurs Progessi pas alignés Nibelis | Confusion RH | Avertissement systématique “vue opérationnelle, référence paye = Nibelis” |
| Sensibilité RGPD | Blocage juridique | Droits par rôle, DPO validation |
| Trop d’alertes managers | Alert fatigue | Digest hebdo consolidé, pas alerte par collab |
| Ranking “top consommateurs” mal perçu | Malaise social | Diffusion limitée DRH + validation cadrage DRH |
Questions ouvertes
Section titled “Questions ouvertes”- Q1 : Compteurs Progessi — endpoint dédié
/leave-balanceou champs répartis sur/profiles/{id}? - Q2 : Formation — entité Progessi dédiée
/formationsou stockée dans emplLeaves avec type ? - Q3 : Manager — même problématique que ADV-02, champ
managerIdsur profiles ou CSV mensuel RH ? - Q4 : Seuil surconsommation critique — définition exacte (dépasse solde de +X jours ? dépasse le mois M+1 ?)
- Q5 : RTT — cas particulier arrivée en cours de mois (208 jours vs prorata) — géré par le calcul ou juste flag ?
- Q6 : Ranking managers — quelle diffusion acceptée politiquement ?
- Q7 : CET — le compte doit-il être remonté ou juste un lien vers Nibelis ?
- Q8 : Formations — sortent-elles du décompte “surconsommation” (elles sont payées + facturées) ?