Skip to content

ADV-03 — Alertes expiration BDC J-15

FonctionNatureFrameworkScoreStatut
ADVAutomatisationn8n19🟢 En développement

Source : atelier ADV 29/07/2026 — synthèse mentionne “suivi manuel via Excel, cible extraction depuis Projet CI (Progessi) pour alertes automatisées”.


  • Deux fichiers Excel personnels (un par ADV, contenus différents) — Bahija/Vanessa : “Chacune a le mien, c’est différent”, alimenté manuellement à chaque nouveau contrat.
  • Vanessa décrit le fichier : “On a le nom du client, le nom du collaborateur, et on a les dates de début et date de fin de contrat directement sur le tableau. C’est la seule manière qu’on a pour suivre les contrats.”
  • Constat Progessi cité en séance : “Sur le projet-CI, on met les dates de fin de contrat, mais on n’a pas d’alerte.” → la donnée existe côté Progessi (projects.endDate), l’absence d’alerte proactive est le vrai gap.
  • Enjeu commercial (Bahija) : “Ça permettrait de prévenir les commerciaux, d’anticiper et prévenir les commerciaux en amont pour qu’on ne soit pas embêté lors de la facturation, qu’on ne soit pas sans bons de commande.”
  • Enjeu quotas jours prestés (Vanessa) : “On a des nombres de jours pas mal dépassés sur l’année pour certains clients, et ça permet justement de ne pas… je fais des points au trimestre à peu près avec les commerciaux pour savoir si on est bien dans le quota.” Sans anticipation → “on se retrouve pas en fin de mois de décembre à poser des congés, obligée de demander au collab de déposer des congés pour respecter le nombre de jours.”
  • Progessi a récemment évolué : Bahija découvre en séance des tableaux natifs, graphes et exports CSV en page d’accueil. Gabriel : “Projet-C, ils ont vachement développé des choses cette année. […] Les graphes de visualisation, ils datent de deux mois peut-être.” → doublonner Progessi serait un anti-pattern. Formation ADV en parallèle recommandée.
  • Positionnement Mekorai : ce que Progessi ne fait pas nativement = l’ALERTE PROACTIVE avec jointure conso / échéance. C’est le périmètre n8n.
  • Rupture BDC = rupture facturation = mission en danger.

Transcripts sources : ADV atelier 29/07/2026 (synthèse + verbatim), restitution consolidée DG vagues 1-2, cadrage ateliers Discover 28-29 juillet.

Interroger chaque matin la ressource projects de Progessi via POST /projects (search avancée FilterModel sur endDate ≤ D+15 et statut actif), calculer la consommation en jours prestés depuis timeEntries validés, et pousser une alerte structurée au responsable ADV compétent (Bahija Paris ; Vanessa Aix + BU restantes ; ADV Rouen/Lyon selon périmètre). Escalade commercial mission si endDate ≤ D+5 ou dépassement quota. La donnée BDC (dates fin, quota) EST déjà dans Progessi — Mekorai ajoute UNIQUEMENT l’alerte proactive et la jointure conso ↔ échéance. Digest hebdo lundi matin. Aucun endpoint d’écriture Progessi utilisé : pas de renouvellement automatisé, pas de création de facture, pas de fermeture de projet.

  1. Chaque matin à 8h00 : interroger Progessi pour lister tous les BDC actifs et leurs dates d’expiration.
  2. Filtrer ceux expirant dans ≤ 15 jours.
  3. Pour chacun, calculer la consommation (jours prestés via timeEntries validés) vs quota autorisé.
  4. Détecter les cas critiques :
    • Expiration ≤ 5 jours (urgent)
    • Consommation > quota autorisé (dépassement)
  5. Envoyer un mail au responsable ADV (Bahija ou Vanessa selon périmètre) avec le détail.
  6. Escalader au commercial mission si ≤ 5 jours et pas d’action à J-1.
  7. Chaque lundi 9h00 : envoyer un digest hebdo consolidé à toute l’équipe ADV.
flowchart TD
    Cron1[Cron n8n 8h00 tous les jours] --> Projects[Progessi<br/>POST /projects<br/>FilterModel statusCode=ACTIVE<br/>+ endDate lte today+15]
    Projects --> Loop[Pour chaque projet]
    Loop --> Customer[Progessi<br/>GET /customers/customerId<br/>nom client + code]
    Loop --> Conso[Progessi<br/>POST /timeEntries<br/>FilterModel projectId=X<br/>+ statusCode=VALIDATED<br/>somme nbDays]
    Loop --> Consultant[Progessi<br/>GET /profiles/consultantId]
    Customer --> Merge[Merger contexte<br/>client, mission, consultant]
    Conso --> Merge
    Consultant --> Merge
    Merge --> Calc[Calculer<br/>jours restants,<br/>ratio conso/quota]
    Calc --> Level{Criticite ?}
    Level -->|conso gt 100 quota| Depass[Tag DEPASSEMENT]
    Level -->|endDate lte 5j| Urgent[Tag URGENT]
    Level -->|endDate 6-15j| Alert[Tag ALERTE]
    Depass --> Map[SQLite n8n<br/>projet_adv_owner<br/>+ commercialId Progessi]
    Urgent --> Map
    Alert --> Map
    Map --> MailADV[Graph<br/>POST /me/sendMail<br/>vers responsable ADV BU]
    Map --> MailCom[Graph<br/>POST /me/sendMail<br/>vers commercial mission<br/>si Urgent ou Depass]
    MailADV --> Log[(SQLite n8n<br/>bdc_alerte_log)]
    MailCom --> Log

    Cron2[Cron n8n lundi 9h00] -.-> Digest[Digest hebdo consolide<br/>tous BDC critiques semaine]
    Digest -.-> MailAllADV[Graph<br/>POST /me/sendMail<br/>vers equipe ADV]

Vérification faite contre la spec OpenAPI progessi-read-api.json (reçue 2026-08-25). Mode READ-only, BasicAuth. Point crucial : la spec expose 20 resources, mais PAS de resource salesOrders ni purchaseOrders — les BDC vivent dans projects (mission = “Projet CI” dans le jargon Proxiad).

Besoin fonctionnelEndpoint ProgessiDisponible ?Commentaire
Lister BDC / missions actifsPOST /projects FilterModel statusCode=ACTIVEResource projects = équivalent BDC/mission. Pas de resource salesOrders dans la spec.
Récupérer date fin BDCChamp endDate sur projectsConfirmé en séance : “On met les dates de fin de contrat sur Projet-CI”
Filtrer BDC expirant ≤ 15 jFilterModel endDate LTE today+15Filtre standard OpenAPI
Récupérer conso jours prestésPOST /timeEntries FilterModel projectId=X + statusCode=VALIDATED28 champs sur timeEntries — sommer nbDays sur périmètre BDC
Récupérer quota jours BDCChamp quotaDays (ou équivalent) sur projects❓ À qualifierNon explicitement listé — fallback = calcul à partir de budgetAmount / tjm si les champs existent
Récupérer client de la missionGET /customers/{customerId} via lien projects.customerIdUtile pour intitulé mail
Récupérer commercial de la missionChamp commercialId (ou ownerId) sur projects❓ À qualifierConfirmer nommage exact via GET /projects/{id} sur mission test
Mapping BDC → responsable ADV (Bahija/Vanessa/autres BU)❌ (côté Progessi)Règle interne Proxiad, à stocker dans SQLite n8n projet_adv_owner
Créer une tâche/alerte DANS ProgessibpmTasks❌ en écritureResource bpmTasks accessible en READ uniquement — impossible de créer une notification native Progessi
Renouveler / prolonger un BDCAucune écriture — action manuelle commercial obligatoire
Créer facture prorata / avenantAucune écriture sur salesInvoices (58 champs lisibles seulement)
Statut e-invoice si facturation en coursChamps electronicInvoiceStatusCode, eReportingStatusCode, dunningLevel sur salesInvoicesNon utilisé v1, mais réservoir pour v2 (croiser BDC / statut Chorus Pro)

Bloquants API :

  1. Pas de resource dédiée salesOrders — le BDC est modélisé comme un project. Nommage à confirmer avec Progessi (est-ce que 1 BDC = 1 project, ou 1 project peut recouvrir plusieurs BDC successifs ?).
  2. Champ quotaDays non confirmé — impossible aujourd’hui de garantir le calcul de dépassement quota sans qualification 30 min.
  3. Champ commercialId sur projects non confirmé — nommage exact à vérifier.
  4. Pas d’écriture Progessi → impossible de créer une tâche BPM alertant nativement Bahija dans Progessi ; le mail Graph est le seul canal.

Contournements retenus :

  • Table projet_adv_owner (project_id, adv_owner_email, adv_owner_name) alimentée par règle métier ADV — permet le routage Bahija Paris vs Vanessa Aix vs autres BU (Rouen, Lyon Easton) indépendamment de Progessi.
  • Table bdc_alerte_log (project_id, alert_level, sent_at, recipient, action_taken) pour anti-doublon (ne pas relancer 2× sur le même BDC dans la même semaine).
  • Si quotaDays absent : calcul de secours = budgetAmount / tjm_moyen (à valider commercial) ; sinon dégradé sur alerte pure endDate.
  • Formation Progessi ADV en parallèle (Bahija/Vanessa) sur les graphes natifs Projet-CI récents — Mekorai ne remplace pas Progessi, il complète l’alerte proactive.
#ÉtapeFonction / endpointApplicationExiste ?Accès dispo ?Notes
1Lister BDC actifsPOST /salesOrders search FilterModel status=activeProgessiÀ qualifierInvestiguer : entité salesOrders ? champ sur projects ? Session partage écran 30 min Bahija
2Récupérer expirationsChamp endDate sur BDCProgessiMême investigation
3Récupérer quotasChamp quotaJours ou similaireProgessiMême investigation
4Récupérer consoGET /timeEntries?bdcId=X&status=validatedProgessiFiltrer sur CRA validés uniquement
5Mapping BDC → responsable ADVTable locale ou champ ProgessiProgessi ou n8nÀ qualifier
6Mapping BDC → commercialChamp commercialId sur BDCProgessiInvestigation
7Envoyer mailPOST /me/sendMailMicrosoft Graph⚠️ Extension droitsIdem ADV-01
  • Compte service Progessi (confirmé)
  • Profils M365 étendus MekorAI
  • Session de qualification 30 min avec Bahija pour cartographier structure BDC dans Progessi
  • Cartographie BDC dans Progessi — session partage écran Bahija (30 min)
  • Mapping BDC → responsable ADV (Bahija vs Vanessa selon règle client/périmètre)
  • Mapping BDC → commercial mission (pour escalade)
  • Source conso jours : timesheets validés ou compteur natif Progessi ?
  • Seuils (15 j confirmé ? 5 j escalade confirmé ? +0/+5/+10% dépassement ?)
  • Templates mails (alerte / urgence / dépassement)
  • Planification formation ADV sur fonctionnalités BDC natives Progessi (quick win parallèle)

Effort dev : 2 jours-n8n.

Jalons :

  • S+0 : session cartographie BDC Progessi (30 min)
  • S+1 J1 : workflow détection + conso + mails
  • S+1 J2 : tests + démo
  • S+2 : mise en production
  • Alerte quotidienne pour chaque BDC ≤ 15 j
  • Alerte contient : client, mission, consultant, expiration, quota/conso, lien Progessi
  • Digest hebdo lundi matin
  • Escalade commercial à J-5
  • Dépassement quota (>100%) alerte immédiate
  • Zéro faux positif sur 1 mois (BDC renouvelés n’apparaissent plus)
RisqueImpactMitigation
Structure BDC pas claire dans ProgessiBlocageSession qualification préalable OBLIGATOIRE
Conso calculée sur CRA non validésAlertes fausséesUtiliser uniquement CRA validés
Doublon avec fonctionnalité native ProgessiRedondanceFormation ADV parallèle : Mekorai fait ce que Progessi NE FAIT PAS (alerte proactive + jointure conso)
BDC sans commercial attribuéEscalade impossibleFallback : mail à ADV avec tag “commercial à attribuer”
  • Q1 : Où vivent les BDC dans Progessi ? Entité dédiée salesOrders / purchaseOrders ? Champ sur projects ? Champ sur salesInvoices ?
  • Q2 : Le champ commercialId existe-t-il pour l’escalade ?
  • Q3 : Quota jours — champ natif Progessi ou à calculer à partir du montant BDC / TJM ?
  • Q4 : Formation Progessi ADV — quand ? Qui la donne (Progessi éditeur ? Nous ?) — plutôt en amont ou parallèle ?
  • Q5 : Seuil dépassement — 0% strict ou tolérance (+5% ? +10%) selon type BDC ?