Skip to content

PAY-01 — Contrôle 650 bulletins mensuels

FonctionNatureFrameworkScoreStatut
Paye / ADPWorkflown8n (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.


  • 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.

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 (expenses si 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 /payslips supposé 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é.

  1. Trigger : cron post-génération bulletins Nibelis OU trigger manuel Sujita.
  2. Extraction M : lire tous les bulletins du mois via API Nibelis.
  3. Extraction M-1 : lire bulletins mois précédent (pour comparaison).
  4. 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
  5. 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)
  6. 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
  7. Validation humaine systématique : dashboard filtrable, contrôleur voit anomalies, corrige dans Nibelis, relance le contrôle.
  8. Traçabilité complète : chaque anomalie horodatée + snapshot règles appliquées (versioning).
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)]
#ÉtapeFonction / endpointApplicationExiste ?Accès dispo ?Notes
1Lister bulletins MGET /payslips?period=YYYY-MMNibelisÀ confirmer🔴 API demandéeBloquant #1 — Sonia
2Lister bulletins M-1IdemNibelis🔴Idem
3Détails collab payeGET /employees/{id}Nibelis🔴Régime, ancienneté, taux
4AbsencesGET /sickLeaves + /emplLeavesProgessiShortcuts existants
5Frais + justifGET /expenses?status=approvedPayhawkAPI riche
6Mutuelle cotis attendue?Easy Access (Verlande)API à vérifier existence🔴Investigation Sujita + David
7Fallback mutuelleFormule statiqueContrat mutuelleSi Easy Access pas d’API
8Génération Excel rapportNoeud Spreadsheet File n8nn8n
9Publication dashboardInterface web légèreReact ou UI AbraÀ dev
10Envoi mail notifPOST /me/sendMail avec attachmentMicrosoft Graph⚠️ Extension droitsFichier joint

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-01Ressource ProgessiChamps pertinentsFaisable ?
Absences (congés) mois MPOST /emplLeaves FilterModel perioddate début/fin, type, consultant✅ Oui, natif
Arrêts maladie mois MPOST /sickLeaves FilterModel perioddate début/fin, consultant, motif✅ Oui, natif
Consolidé jours / absences CRAPOST /timesheets FilterModel periodnbDays, potentialDays, ecart, nbLeaves, nbSickLeaves, intercontract✅ Oui — évite un recalcul côté n8n
Frais approuvés mois MPOST /expenses FilterModel periodmontant, 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’écritureImpossible — Progessi READ-only
Corriger le profil consultant (régime erroné)❌ Aucun endpoint d’écritureImpossible — remonter dans l’UI Progessi ou traiter dans Nibelis
Lecture bulletins Nibelis M / M-1Hors ProgessiNibelis /payslipsAPI Nibelis non spécifiée — bloquant
Grille mutuelle Easy AccessHors ProgessiEasy Access ?❓ Existence API à qualifier avec Sujita + David

Bloquants ouverts :

  1. Nibelis : endpoint /payslips hypothétique, spec éditeur pendante — la lecture des bulletins est le cœur du contrôle, sans elle le workflow ne démarre pas
  2. 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.

  • 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

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

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
  • 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
RisqueImpactMitigation
API Nibelis retardéeBlocage pilote septembreEscalade DSI hebdo, Piste A parallèle
Easy Access sans APIContrôle mutuelle impossibleFallback formule statique depuis contrat
Règles pas formalisées à tempsRetard piloteDémarrer 5 règles pilotes, itérer
Faux positifs excessifsPerte crédibilitéCalibrage pilote 3 mois, seuils ajustables
Frontière agent générique/paye mal cadréeBlocage sécuDocument archi validé par David AVANT dev
Résistance équipe payeAdoption faibleComm : “l’outil montre 40 anomalies, VOUS décidez”
  • Q1 : Nibelis a-t-il vraiment un endpoint /payslips ou 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.