PAY-01 — Contrôle 650 bulletins mensuels
| Fonction | Nature | Framework | Score | Statut |
|---|---|---|---|---|
| Paye / ADP | Workflow | n8n (moteur règles + orchestration) | 19 | 🔴 Bloqué API Nibelis |
Source : atelier Paye 28/07 (Sujita Antoneverest Responsible Paie, Clément Dalonneau Paie/GTA) — synthèse audit + notes Michaël.
Contexte métier
Section titled “Contexte métier”- Chaque mois : ~650 bulletins à contrôler côté service Paye (Sujita Antoneverest, Responsable Paye ; Clément Dalonneau, Paye/GTA)
- Aujourd’hui : ouverture manuelle PDF par PDF, vérification multi-critères — chronophage, aucune traçabilité structurée des contrôles réalisés
- Critères de contrôle identifiés en séance (audit Paye 28/07/2026) :
- Cohérence mois M vs M-1 (variations anormales de salaire net)
- Absences (cohérence Progessi vs paie)
- Frais (montants + justificatifs Payhawk)
- Mutuelles (cotisations correctes selon régime — Easy Access/Verlande)
- Régime Alsace-Moselle (2ᵉ CP, cotisations spécifiques)
- Jours de carence maladie
- Maintien de salaire (selon convention Syntec + ancienneté)
- Frais de transport
- Primes
- Sensibilité MAXIMALE : données individuelles paye → validation humaine systématique + Risque ≥ 3
- Position technique posée en séance par Gabriel et Raphaël (Mekorai) : “l’analyse via API de Nibelis sera plus fiable et rapide que l’analyse de PDF” — travailler sur données STRUCTURÉES, PAS sur les PDF
- Cible mesurable : le contrôleur passe de “ouvrir 650 PDF” à “traiter ~40 anomalies”
- Cadre juridique : frontière agent générique / agent paye = document architecture à valider par David (RSSI+DPO) AVANT dev — règle posée par Raphaël en séance (“séparer strictement l’agent générique de l’agent spécifique au service paye”)
- Verrou d’accès Nibelis : au 30/08/2026 l’API Nibelis est toujours “en attente — validation Sonia” (restitution DG consolidée vagues 1-2, 31/08/2026). La demande a été déposée le 27/08, réponse éditeur pendante
Transcripts sources : synthèse audit Paye Mekorai (28/07/2026, seul verbatim long disponible pour la Paye) — pas de transcript verbatim long disponible pour la Paye vague 2. Transverses : restitution DG consolidée vagues 1-2 (31/08/2026) + ateliers Discover vague 2 (27/08/2026, RH/Compta uniquement, la Paye n’a pas rejoué en vague 2) + notes d’audit consolidées Michaël.
Objectif du cas d’usage
Section titled “Objectif du cas d’usage”Automatiser l’application des règles de contrôle sur les ~650 bulletins mensuels en croisant trois sources :
- Progessi (READ-only, API confirmée) : la partie fiabilisée du workflow — absences (
emplLeaves), arrêts (sickLeaves), CRA consolidés (timesheets:nbDays,nbLeaves,nbSickLeaves,intercontract), frais approuvés (expensessi intégrés au flux paye), référentiel consultants (profiles) - Nibelis (SIRH/paye, API à confirmer) : lecture des bulletins générés du mois M et M-1 — bloquant #1, endpoint
/payslipssupposé mais non spécifié par l’éditeur à ce jour - Payhawk (API confirmée) + Easy Access/Verlande (existence API à qualifier) : justificatifs de frais + grille de cotisations mutuelle
Le calcul des anomalies se fait dans n8n, sur les données extraites — Progessi étant strictement READ, aucune écriture retour (ni marquage “envoyé à la paye” ni update de profil consultant). La validation humaine reste systématique : le contrôleur voit le rapport, décide de la correction, et remonte manuellement dans Nibelis. Produire un rapport d’anomalies structuré, préserver la validation humaine sur toute correction, tracer intégralement pour audit conformité.
Étapes fonctionnelles détaillées
Section titled “Étapes fonctionnelles détaillées”- Trigger : cron post-génération bulletins Nibelis OU trigger manuel Sujita.
- Extraction M : lire tous les bulletins du mois via API Nibelis.
- Extraction M-1 : lire bulletins mois précédent (pour comparaison).
- Jointures :
- Absences :
progessi-mcp— sickLeaves + emplLeaves période - Frais :
payhawk-mcp— expenses validées période - Mutuelles :
easy-access-mcp(Verlande) — cotisations attendues par collab
- Absences :
- Moteur de règles appliqué à chaque bulletin :
- R01 : |NetM - NetM-1| / NetM-1 > 5% ? → warning
- R02 : Jours absence Progessi ≠ jours absence paie → bloquante
- R03 : Frais > 0 sans justif Payhawk → bloquante
- R04 : Cotisation mutuelle ≠ attendue Easy Access → warning
- R05 : Régime Alsace-Moselle : présence 2ᵉ CP + cotisations spécifiques → bloquante si manquant
- R06 : Jours carence maladie (3 premiers) sauf convention → info
- R07 : Maintien salaire cohérent avec ancienneté → warning
- (règles paramétrables YAML maintenu par Sujita/Clément)
- Génération rapport :
- Format : Excel + dashboard web
- 1 ligne par anomalie : collaborateur, type anomalie, valeur constatée, valeur attendue, criticité
- Groupement par type pour traitement batch
- Validation humaine systématique : dashboard filtrable, contrôleur voit anomalies, corrige dans Nibelis, relance le contrôle.
- Traçabilité complète : chaque anomalie horodatée + snapshot règles appliquées (versioning).
Flot d’appels API
Section titled “Flot d’appels API”flowchart TD
Trigger[Cron post-genese Nibelis<br/>OU Sujita manuel] --> Nibelis1[Nibelis API a confirmer<br/>GET /payslips?period=M<br/>lecture bulletins mois M]
Trigger --> Nibelis2[Nibelis API a confirmer<br/>GET /payslips?period=M-1<br/>lecture bulletins mois M-1]
Trigger --> Progessi1[Progessi POST /timesheets<br/>FilterModel period=M<br/>fields: nbDays, potentialDays,<br/>ecart, nbLeaves, nbSickLeaves,<br/>intercontract]
Trigger --> Progessi2[Progessi POST /emplLeaves<br/>FilterModel period=M<br/>conges par consultant]
Trigger --> Progessi3[Progessi POST /sickLeaves<br/>FilterModel period=M<br/>arrets maladie]
Trigger --> Progessi4[Progessi POST /expenses<br/>FilterModel period=M<br/>approved only]
Trigger --> Profiles[Progessi POST /profiles<br/>fields: regime, anciennete,<br/>site rattachement]
Trigger --> Payhawk[Payhawk API<br/>GET /expenses?status=approved]
Trigger --> EasyAccess[Easy Access/Verlande<br/>GET /mutuelle-cotisations<br/>existence API a qualifier]
Nibelis1 --> Consolidate[Consolidation n8n<br/>jointure par consultant]
Nibelis2 --> Consolidate
Progessi1 --> Consolidate
Progessi2 --> Consolidate
Progessi3 --> Consolidate
Progessi4 --> Consolidate
Profiles --> Consolidate
Payhawk --> Consolidate
EasyAccess --> Consolidate
Consolidate --> Rules[Moteur regles YAML<br/>R01 a R07 + Alsace-Moselle]
Rules --> Loop{Pour chaque bulletin}
Loop --> Check[Appliquer regles]
Check --> Detect{Anomalie ?}
Detect -->|Oui| Add[Ajouter a liste anomalies<br/>+ criticite]
Detect -->|Non| OK[Bulletin OK]
Add --> Gen[Generer rapport<br/>Excel + dashboard web]
Gen --> Notif[Microsoft Graph<br/>POST /me/sendMail<br/>Sujita + Clement<br/>N anomalies M bloquantes]
Notif --> Dash[Dashboard web<br/>filtres type/criticite]
Dash --> Human[Controleur valide/corrige<br/>dans Nibelis - manuel]
Human --> Trace[(Table trace<br/>audit conformite)]
API map
Section titled “API map”| # | Étape | Fonction / endpoint | Application | Existe ? | Accès dispo ? | Notes |
|---|---|---|---|---|---|---|
| 1 | Lister bulletins M | GET /payslips?period=YYYY-MM | Nibelis | ❓ À confirmer | 🔴 API demandée | Bloquant #1 — Sonia |
| 2 | Lister bulletins M-1 | Idem | Nibelis | ❓ | 🔴 | Idem |
| 3 | Détails collab paye | GET /employees/{id} | Nibelis | ❓ | 🔴 | Régime, ancienneté, taux |
| 4 | Absences | GET /sickLeaves + /emplLeaves | Progessi | ✅ | ✅ | Shortcuts existants |
| 5 | Frais + justif | GET /expenses?status=approved | Payhawk | ✅ | ✅ | API riche |
| 6 | Mutuelle cotis attendue | ? | Easy Access (Verlande) | ❓ API à vérifier existence | 🔴 | Investigation Sujita + David |
| 7 | Fallback mutuelle | Formule statique | Contrat mutuelle | ✅ | ✅ | Si Easy Access pas d’API |
| 8 | Génération Excel rapport | Noeud Spreadsheet File n8n | n8n | ✅ | — | — |
| 9 | Publication dashboard | Interface web légère | React ou UI Abra | À dev | — | — |
| 10 | Envoi mail notif | POST /me/sendMail avec attachment | Microsoft Graph | ✅ | ⚠️ Extension droits | Fichier joint |
Confrontation à l’API Progessi réelle
Section titled “Confrontation à l’API Progessi réelle”L’API Progessi (https://proxiad.progessi.com/api/control/rest, BasicAuth, READ-only) a été spécifiée le 25/08/2026. Confrontation aux besoins PAY-01 :
| Besoin PAY-01 | Ressource Progessi | Champs pertinents | Faisable ? |
|---|---|---|---|
| Absences (congés) mois M | POST /emplLeaves FilterModel period | date début/fin, type, consultant | ✅ Oui, natif |
| Arrêts maladie mois M | POST /sickLeaves FilterModel period | date début/fin, consultant, motif | ✅ Oui, natif |
| Consolidé jours / absences CRA | POST /timesheets FilterModel period | nbDays, potentialDays, ecart, nbLeaves, nbSickLeaves, intercontract | ✅ Oui — évite un recalcul côté n8n |
| Frais approuvés mois M | POST /expenses FilterModel period | montant, statut, consultant | ✅ Oui (si Progessi porte les frais paye — sinon Payhawk seul) |
| Référentiel consultants (régime, ancienneté, site) | POST /profiles (34 fields) | site, ancienneté, statut | ✅ Oui — clé pour règle Alsace-Moselle (filtre site Strasbourg) |
| Marquer un CRA “envoyé à la paye” | ❌ Aucun endpoint d’écriture | — | ❌ Impossible — Progessi READ-only |
| Corriger le profil consultant (régime erroné) | ❌ Aucun endpoint d’écriture | — | ❌ Impossible — remonter dans l’UI Progessi ou traiter dans Nibelis |
| Lecture bulletins Nibelis M / M-1 | Hors Progessi | Nibelis /payslips | ❓ API Nibelis non spécifiée — bloquant |
| Grille mutuelle Easy Access | Hors Progessi | Easy Access ? | ❓ Existence API à qualifier avec Sujita + David |
Bloquants ouverts :
- Nibelis : endpoint
/payslipshypothétique, spec éditeur pendante — la lecture des bulletins est le cœur du contrôle, sans elle le workflow ne démarre pas - Easy Access/Verlande : existence même d’une API à établir avant tout dev sur la règle mutuelle
Contournements possibles si Nibelis n’ouvre pas :
- Export mensuel Nibelis → CSV posé sur SharePoint paye → n8n lit le CSV (dégradé, mais démarrable)
- Fallback mutuelle : formule statique à partir du contrat mutuelle (grille figée) si Easy Access sans API
- Le pipeline Progessi (absences + CRA + frais) peut se développer en parallèle de l’attente Nibelis — livrable partiel “rapport écarts absences Progessi vs paie” utilisable dès aujourd’hui
Ce qui reste manuel côté gestionnaire paye : lecture du rapport, décision sur l’anomalie, correction dans Nibelis, relance du contrôle. La règle de séparation posée par Raphaël (agent générique ≠ agent paye) est structurelle : aucun agent générique ne verra jamais les données individuelles issues de Nibelis.
Prérequis techniques
Section titled “Prérequis techniques”- API Nibelis BLOQUANT #1
- Comptes démo Nibelis (collabs sortis, cas complexes : maladie, frais, augmentation, prime, Alsace-Moselle)
- Comptes démo corrélés Progessi × Nibelis (mêmes collabs)
- API Payhawk ✅
- API Easy Access à qualifier
- SharePoint paye à ouvrir (docs internes, convention, règlement intérieur)
- Frontière agent générique/paye validée par David (RSSI+DPO) AVANT dev
Livrables Proxiad attendus
Section titled “Livrables Proxiad attendus”Priorité 1 — Bloquant :
- API Nibelis — validation Sonia
- Règles de contrôle formalisées (Sujita + Clément) — livrable structurant
- 3-5 fiches paye représentatives (maladie, frais, augmentation, prime, Alsace-Moselle) — collaborateurs sortis
- Existence + accès API Easy Access (Verlande) ou fallback formule statique
Priorité 2 :
- Convention collective Syntec (règles jours carence, maintien salaire, ancienneté)
- Règlement intérieur Proxiad (règles spécifiques)
- Contrat mutuelle (grille cotisations)
- Seuils détection anomalies (variation 5%, écart absences)
- Types anomalies criticité (bloquante / warning / info par règle)
Priorité 3 :
- Format rapport préféré Sujita (Excel + dashboard ? Excel seul ?)
- Cycle recette 3 mois consécutifs comparaison auto vs manuel
Timeline estimative
Section titled “Timeline estimative”Effort : 8 jours-n8n.
- S+0 : réception livrables (règles, fiches test, convention)
- S+0 : BLOQUANT : validation API Nibelis
- S+1 (dès API) : dev connecteur Nibelis n8n bulletins (~3 j)
- S+2 : moteur règles paramétrable YAML (~2 j)
- S+2 : handler orchestration + jointures (~2 j)
- S+3 : dashboard web + tests (~1 j)
- S+3 : démo Sujita/Clément
- S+4 : pilote M0 (contrôle auto EN PARALLÈLE du manuel)
- S+5-6 : pilote M+1 (comparaison)
- S+7 : pilote M+2 (validation qualité)
- Fin septembre 2026 : pilote opérationnel (engagement séance)
- Octobre-Novembre : bascule progressive rapport auto = référence
Critères de recette
Section titled “Critères de recette”- 3 mois consécutifs : anomalies détectées auto ≡ erreurs identifiées manuellement (précision ≥95%, rappel ≥90%)
- 0 faux négatif sur critères bloquants
- Temps contrôleur : “ouvrir 650 PDF” → “traiter ~40 anomalies” (mesure objective)
- Régime Alsace-Moselle correct sur 3-5 fiches test
- Rapport livré < 5 min après trigger
- Dashboard filtrable et exportable Excel
- 0 correction auto (validation humaine préservée)
- Traçabilité audit conformité complète
Risques identifiés
Section titled “Risques identifiés”| Risque | Impact | Mitigation |
|---|---|---|
| API Nibelis retardée | Blocage pilote septembre | Escalade DSI hebdo, Piste A parallèle |
| Easy Access sans API | Contrôle mutuelle impossible | Fallback formule statique depuis contrat |
| Règles pas formalisées à temps | Retard pilote | Démarrer 5 règles pilotes, itérer |
| Faux positifs excessifs | Perte crédibilité | Calibrage pilote 3 mois, seuils ajustables |
| Frontière agent générique/paye mal cadrée | Blocage sécu | Document archi validé par David AVANT dev |
| Résistance équipe paye | Adoption faible | Comm : “l’outil montre 40 anomalies, VOUS décidez” |
Questions ouvertes
Section titled “Questions ouvertes”- Q1 : Nibelis a-t-il vraiment un endpoint
/payslipsou faut-il exports fichier ? - Q2 : Easy Access (Verlande) — API existe-t-elle ? Sinon quel format de données mutuelle disponible ?
- Q3 : Format des règles YAML — accepte l’équipe paye de maintenir un fichier YAML, ou faut UI dédiée ?
- Q4 : Cas particuliers Alsace-Moselle — règles précises documentées quelque part ? Ou à compiler avec Clément ?
- Q5 : Dashboard web — plateforme Abra (déjà chez Proxiad) ou dashboard n8n custom ?
- Q6 : Comptes démo — sur quel environnement Nibelis (prod / sandbox / démo) ?
- Q7 : Sensibilité RGPD — les anomalies partent-elles en mail ou uniquement dans le dashboard sous SSO ?
- Q8 : Frontière agent générique/paye — document archi validé par David quand ?
- Q9 — matière à collecter : la Paye n’a pas rejoué en vague 2 (27/08/2026 = RH + Compta uniquement). Le seul verbatim long disponible reste l’audit du 28/07/2026. Prévoir une session de calibrage règles YAML avec Sujita + Clément (visio 90 min) captée en verbatim pour figer R01→R07 + seuils Alsace-Moselle avant de basculer en pilote M0.