Se rendre au contenu
Guide NGO — SDD Automation
1

SDD Automation — enrôlement en masse des donateurs réguliers

bs_sdd_automation

En bref. Vos agences de recrutement (street, télémarketing) vous livrent des bulletins de domiciliation par centaines. Sans outil, chacun exige de créer et relier à la main cinq enregistrements dans quatre applications — contact, compte bancaire, mandat, jeton de paiement, abonnement. SDD Automation industrialise tout le circuit : les fichiers arrivent seuls, sont contrôlés par des règles que vous définissez, et chaque ligne validée devient un donateur régulier complet en une transaction. Tout ce qui n'est pas parfait s'arrête en quarantaine motivée — jamais dans votre base.

Le module a été pensé pour trois exigences du terrain : le volume (l'alimentation se fait par dépôt de fichiers, hors interface, en tâche de fond), la qualité (validation paramétrable, doublons arbitrés, audit complet des états) et la conformité (purge programmée des CSV nominatifs, journal d'export masquant IBAN et email, mandats signés rattachés à leur objet légal).

Concepts & objets

Fichier d'import
sdd.import.file
Un enregistrement par CSV détecté. États : brouillon → en cours → terminé, ou partiel (certaines lignes en erreur) ou erreur (fichier illisible). Chaque fichier garde son fournisseur d'origine, ses compteurs et son journal d'audit.
Entrée d'import
sdd.entry
Une ligne = un bulletin. États : brouillon (importée), en attente (prête à traiter), traité (donateur créé), doublon (candidat existant détecté), quarantaine (règle bloquante), rejeté (définitif, à renvoyer à l'agence). Chaque changement d'état est historisé dans le chatter.
Règle de validationContrôle typé appliqué à l'import : format IBAN SEPA, fréquence autorisée, champs requis, bornes sur la date de signature (dates relatives : « pas plus de 90 jours »), unicité du code mandat, contrôle de champ avec opérateur. Chaque règle porte une sévérité : avertissement laisse passer en signalant, bloquant envoie en quarantaine.
Mapping fournisseurLa traduction colonnes CSV → champs Odoo, propre à chaque agence. La liste des fournisseurs se déduit des sous-dossiers du répertoire d'import : ajouter une agence = créer son sous-dossier et son mapping, rien d'autre.
Les 5 objets créésÀ la validation, le pipeline crée dans une seule transaction : res.partner → res.partner.bank → sdd.mandate (PDF signé joint si disponible) → payment.token → abonnement. En cas d'erreur au milieu, rien n'est créé (savepoint) : pas de donateur « à moitié fait ».

Accès & écrans

SDD Automation ▸ DashboardLa météo du flux : fichiers reçus par fournisseur, lignes par état, âge de la quarantaine. C'est l'écran d'ouverture de journée de l'équipe.
▸ SDD CockpitLe poste de pilotage : toutes les entrées, filtrables par état, fournisseur, fichier, date. Les actions de masse s'y lancent (traitement, revalidation).
▸ File History / ▸ Import ErrorsHistorique des fichiers et journal des erreurs de lecture (encodage, colonnes manquantes, fichier tronqué). Un fichier en erreur n'a créé aucune entrée : corrigez à la source et redéposez.
▸ DuplicatesFile d'arbitrage des doublons : chaque entrée montre le ou les candidats existants (nom, IBAN, adresse) pour décider en connaissance de cause.
▸ Quarantine / ▸ WarningLes bloquées avec motif, et les passées avec avertissement (à surveiller sans urgence).
▸ RejectionsRejets définitifs, exports CSV vers l'agence (« Rejected Exports », « Export Rejected Entries »). Le journal d'export masque les données sensibles.
▸ ConfigurationSettings, Import Validation Rules, CSV Field Mapping, Rejection Reasons, Quarantine Bypass Reasons, Archived Imports.

G.1 — Tableau de bord SDD (Dashboard)

Premier écran ouvert par le menu SDD Automation → Tableau de bord. C'est la vue de pilotage quotidienne : elle répond en un coup d'œil à « combien d'entrées attendent une action, et où ». Deux filtres généraux la pilotent, en haut à droite :

  • Période — six boutons (Aujourd'hui · 7j · 30j · 90j · 1 an · Personnalisé) qui recalculent tous les compteurs et graphiques de la page sur la fenêtre temporelle choisie ; « 30j » est le réglage par défaut observé.
  • Fournisseur — liste déroulante (« All suppliers » par défaut) qui restreint le tableau de bord à un seul fournisseur/agence source, pour isoler la performance d'import d'un partenaire en particulier.
Tableau de bord SDD — 8 cartes indicateurs, tableau Top Quarantine Rules et donut Distribution des entrées
Capture — Tableau de bord SDD, vue complète (période « 30j », tous fournisseurs).

Les 8 cartes indicateurs de la rangée supérieure, dans l'ordre où elles apparaissent à l'écran :

CarteCouleur / icôneCe qu'elle compte
AVERTISSEMENTOrange, triangle ⚠Entrées Terminé mais dont le traitement a laissé un avertissement non bloquant (ex. date de signature dans le futur). Le badge sous le chiffre reprend le libellé « AVERTISSEMENT ». Cliquer sur la carte ouvre la liste filtrée Warning (voir G.6).
QUARANTAINERouge, triangle ⚠, badge « CRITIQUE »Nombre d'entrées actuellement bloquées par au moins une règle de validation « Bloquant ». C'est le chiffre à surveiller en priorité : il grimpe automatiquement à chaque import contenant des données non conformes.
VALID ENTRIESVert, coche ✓Entrées arrivées au bout du pipeline avec succès (état done) — partenaire, mandat, jeton de paiement et abonnement ont bien été créés.
TOTAL DES ENTRÉESBleu clair, liste ≡Somme de toutes les lignes sdd.entry créées sur la période, tous statuts confondus (Draft + Pending + Done + Duplicate + Quarantine + Rejected).
FICHIERS IMPORTÉSRouge/rose, icône documentNombre de fichiers CSV traités sur la période. Le badge inférieur (« 4 ERREUR(S) ») indique combien de ces fichiers ont fini en statut Erreur — cliquer ouvre Import Errors.
MANDATS CRÉÉSBleu, icône banque 🏛Nombre de mandats SEPA (objet natif sdd.mandate) générés automatiquement par le pipeline sur la période.
ABONNEMENTS CRÉÉSBleu, icône cycle ⟳Nombre d'abonnements (objet natif sale.order récurrent) générés automatiquement.
DURÉE MOY. DE TRAITEMENTVert, sablier ⏳Temps moyen, en secondes, entre le dépôt d'une ligne et la fin de son passage dans le pipeline (ex. « 3.2s »). Sert d'indicateur de performance technique du cron d'import.

Sous les cartes, deux blocs d'analyse :

BlocContenu
Top Quarantine RulesTableau à 3 colonnes (Règle · Nombre · %) qui classe les règles de validation par nombre d'entrées bloquées, la plus fréquente en premier (ex. « Invalid IBAN (too short) — 15 — 88% »). C'est le premier réflexe en cas de pic de quarantaine : la ligne du haut désigne presque toujours la cause racine (souvent un fournisseur dont le mapping CSV a changé). Un bouton ↓ CSV exporte ce classement.
Distribution des entréesGraphique en anneau (donut) à 4 couleurs — Terminés (vert), Doublons (orange), Quarantaine (rouge), En attente (gris) — qui donne la proportion visuelle de chaque statut sur la période choisie.

Deux tableaux supplémentaires apparaissent en bas de l'écran (hors capture) : Derniers fichiers importés (colonnes Nom, Source, Date, Lignes, Statut) et Imports quotidiens (histogramme du nombre d'imports par jour).

Observation en environnement réelEntre les deux enregistrements utilisés pour cette annexe, les compteurs sont passés de 47 à 49 entrées totales et de 5 à 7 fichiers importés, avec l'apparition de nouveaux fichiers DVW_S01_SDD_CREDO_20260430_4.csv (source Supplier_02_MDM) — confirmation que le tableau de bord se rafraîchit en temps réel au fil des imports automatiques (cron), sans action de l'utilisateur.

G.2 — Cockpit SDD : la fiche d'entrée, champ par champ

Le Cockpit SDD (menu Cockpit SDD) liste toutes les entrées, tous statuts confondus — c'est la table mère dont Warning, Quarantaine, Doublons et Rejections ne sont que des vues filtrées. Sur l'environnement observé, elle comptait 49 entrées.

Cockpit SDD — liste complète des 49 entrées, tous statuts confondus
Capture — Cockpit SDD, vue liste complète (1-49/49).

Colonnes : Nom du donateur, Email, IBAN, Montant, Fréquence, Statut, deux colonnes courtes non libellées (indicateurs de contournement/doublon), Error/Warning, Duplicate Resolution, Partenaire, Abonnement, Mandat SEPA, Fichier source, Date d'import. Chaque ligne est colorée selon son statut (vert = Terminé, rouge = Quarantaine/Rejeté).

Ouvrir une ligne affiche la fiche complète d'une entrée sdd.entry, reproduite ci-dessous sur l'exemple réel « Sofia Zerouali ».

Fiche entrée SDD — Identité, Adresse, Données SDD
Capture — Fiche d'entrée, partie haute : bandeau d'avertissement, sections Identité / Adresse / Données SDD.

Le bandeau jaune en haut de fiche (« ⚠ Avertissements ») n'apparaît que si le pipeline a laissé une remarque non bloquante sur l'entrée ; ici : [WARNING] Signature date is in the future (2027-07-01) — deferred-date mandate. — un mandat à date différée, toléré mais signalé.

Identité
ChampExemple observéOrigineExplication
NomSofia ZeroualiCalculéNom complet affiché, recomposé à partir de Firstname + Lastname.
Firstname / LastnameSofia / ZeroualiCSVPrénom et nom séparés, tels que fournis par le fichier source.
Maiden Name(vide)CSV optionnelNom de naissance, utile pour les femmes mariées dans certains registres.
Preferred Name(vide)CSV optionnelNom d'usage préféré du donateur si différent de l'état civil.
Emailsofia.zerouali115@example.testCSVAdresse email — sert aussi à la détection de doublon (même email = donateur déjà en base).
Téléphone / Mobile(vide) / 32487111253CSVDeux champs séparés fixe/mobile.
Languagefr_BECSVLangue de communication du donateur, au format code langue Odoo.
Fichier d'importAD-Date future.csv (lien)SystèmeLien cliquable vers la fiche sdd.import.file d'origine — traçabilité complète de la provenance de chaque ligne.
PartenaireZerouali Sofia (lien, vert)SystèmeLien vers le contact res.partner créé (ou trouvé) par le pipeline. Reste vide tant que l'entrée n'a pas atteint l'état Terminé.
Birthdate12 août 1970CSVDate de naissance.
GenderfemaleCSVGenre déclaré.
Nationality (code)(vide)CSV optionnelCode pays de nationalité.
National ID Number(vide)CSV optionnelNuméro de registre national — sa présence/validité peut être imposée par une règle « Field check » (voir la règle « National Number » en G.8.2).
Birthplace(vide)CSV optionnelLieu de naissance.
Is Company☐ décochéCSV / calculéDistingue un donateur particulier d'une personne morale.
Company Number (BCE)(vide)CSV optionnelNuméro d'entreprise, uniquement pertinent si « Is Company » est coché.
Motif de rejet(vide)SystèmeNe se remplit que si l'entrée a été rejetée manuellement (bouton Rejeter) ; voir un exemple rempli en G.7.
Adresse
RueRue des Tests 25CSVLibellé de rue.
House Number25CSVNuméro de rue, séparé du libellé — nécessaire pour les exports imprimeur (VCS, publipostage).
Box NumberACSV optionnelNuméro de boîte aux lettres.
Code postal1000CSVCode postal — peut être une règle « Required Fields ».
VilleBruxellesCSVLocalité.
Pays (code)BECSVCode pays ISO.
Données SDD
IBANBE93115011878567CSVCompte bancaire du donateur — validé par la règle « Valid IBAN » (format + clé de contrôle SEPA).
BICGEBABEBBCSVCode BIC de la banque, généralement dérivé de l'IBAN.
Montant13,50CSVMontant du don récurrent, en euros.
Code mandatDRDA2026900015CSV / généréIdentifiant unique du mandat SEPA — la règle « Unique mandate code » interdit sa réutilisation, toutes sociétés confondues.
Fréquence SDDSUB-MCSVCode de fréquence tel qu'il figure dans le fichier fournisseur ; traduit vers un plan d'abonnement via la règle « Allowed Frequency » (voir G.8.2).
Date de signature1 juil. 2027CSVDate de signature du mandat papier. C'est ce champ, ici postérieur à aujourd'hui, qui déclenche l'avertissement « deferred-date mandate » visible en haut de fiche.
Start Date(vide sur cet exemple)CSV optionnelDate de début souhaitée pour le premier prélèvement, si différente de la date de signature — voir le calcul détaillé de la date de 1ère facture en G.8.1.

La partie basse de la fiche (non re-capturée dans le second enregistrement) comprend quatre autres sections : Identification Legacy (Donor External ID, SDD Recruiter ID, Office Recruiter, Supplier Recruiter, Recruitment Type, Welcome Call), Profil / Action (Type, Knowledge, Channel, Action Code/Description, Remarque, Motivation), Opt-ins (Newsletter, Magazine online/offline, Phone, SMS) et Objets créés une fois l'entrée Terminée :

Fiche entrée SDD — Identification Legacy, Profil, Opt-ins, Objets créés
Capture — Fiche d'entrée, partie basse : sections Identification Legacy / Profil / Opt-ins / Objets créés.
Objets créés (une fois l'entrée Terminée)
Compte bancaireBE93 1150 1187 8567 (lien)SystèmeLien vers l'enregistrement natif res.partner.bank créé par le pipeline.
Mandat SEPA13050922222231072026 (lien)SystèmeLien vers le mandat natif sdd.mandate — voir la fiche détaillée en G.9.
AbonnementS04341 (lien)SystèmeLien vers l'abonnement sale.order récurrent créé — voir G.9.
Jeton de paiementBE93 1150 1187 8567 (lien)SystèmeLien vers le payment.token tokenisé, utilisé par le module Batch (thème 2) pour générer les prélèvements.

Deux sections supplémentaires, conditionnelles, n'apparaissent que dans des cas particuliers : Quarantine Bypass (motif et justification, uniquement si un Superviseur a forcé le traitement — voir G.5) et Duplicate Resolution (partenaires candidats, uniquement si l'entrée est passée par l'état Doublon).

La barre de statut et ses 6 états

En haut de chaque fiche, une barre de statut (« Statusbar ») matérialise le cycle de vie de l'entrée. Le mode développeur permet d'afficher l'infobulle technique native du champ, reproduite ici mot pour mot :

Infobulle technique du champ statut (mode debug)
Capture — Infobulle développeur du champ state, obtenue en survolant la barre de statut en mode debug.
Texte exact de l'infobulle (Odoo, mode développeur) « Lifecycle status of this SDD entry. »
  • Draft — freshly created, not yet validated.
  • Pending — passed validation, waiting for pipeline processing.
  • Done — pipeline completed — partner, mandate and subscription created.
  • Duplicate — detected as a duplicate of an existing record.
  • Quarantine — blocked by a validation rule; manual review required.
  • Rejected — manually rejected by an operator.
Métadonnées techniques du champ Libellé : Statut · Champ : state · Type : selection · Widget : Statut (statusbar) · Sélection : [draft] Brouillon, [pending] En attente, [done] Terminé, [duplicate] Doublon, [quarantine] Quarantaine, [rejected] Rejeté.

Les boutons d'action contextuels

Selon le statut courant de l'entrée, jusqu'à quatre boutons apparaissent en haut à gauche de la fiche, avant la barre de statut :

BoutonVisible quandEffet
RevaliderQuarantaineEfface l'erreur de blocage et rejoue l'ensemble des règles de validation contre les données actuelles de l'entrée — utile après correction manuelle d'un champ fautif (ex. IBAN corrigé).
Forcer le traitementQuarantaineBouton rouge, réservé aux profils Superviseur/Administrateur. Passe outre le(s) blocage(s) et relance le pipeline malgré l'échec des règles. Une justification est tracée dans le chatter et dans la section « Quarantine Bypass » de la fiche.
RejeterTous statuts sauf Terminé/RejetéOuvre l'assistant de rejet manuel (motif prédéfini ou texte libre) ; l'entrée passe à l'état Rejeté et son motif alimente « Motif de rejet ».
Escalader vers le supportTous statuts sauf RejetéCrée automatiquement un ticket Helpdesk lié à cette entrée, pour investigation par une équipe support/technique.

G.3 — Historique des fichiers (File History)

Accessible depuis le menu Historique des fichiers, cette liste recense tous les fichiers CSV traités à l'exception de ceux qui ont fini en erreur totale (ceux-ci vivent dans Import Errors, G.4). La liste est en lecture seule — on n'y modifie rien, on y consulte l'historique.

Historique des fichiers — vue liste
Capture — Vue liste, 3 fichiers, tous en statut Terminé.
Colonne / champExempleExplication
NomAD_Manual testing.csvNom du fichier tel que déposé dans le dossier surveillé.
Source fournisseurSupplier_01_ADSous-dossier / fournisseur d'origine — permet de filtrer et regrouper par agence.
StatutTerminéUn des cinq états : Brouillon, En cours de traitement, Terminé, Partiel, Erreur (voir barre de statut ci-dessous).
Date d'import31 juil., 23:22Horodatage du dépôt / traitement du fichier.
Total de lignes15Nombre total de lignes lues dans le fichier.
Lignes valides15Nombre de lignes ayant atteint l'état Terminé.
Lignes en erreur / Doublons0 / 0Décompte des lignes en quarantaine et des lignes détectées comme doublons.
Durée (s)3,98Temps total de traitement du fichier, en secondes.

Ouvrir une ligne affiche la vue formulaire du fichier, avec ses boutons statistiques et l'onglet Entrées :

Historique des fichiers — vue formulaire avec onglet Entrées
Capture — Fiche « AD_Manual testing.csv » : 15 entrées, toutes Terminées.
ÉlémentDétail
Barre de statutBrouillon → En cours de traitement → Terminé → Partiel → Erreur. « Partiel » signifie un mélange de lignes valides / doublons / quarantaine dans le même fichier — c'est un statut normal, pas une anomalie.
Boutons statistiquesEntrées (nombre total de lignes) · Valides ✓ · Doublons ⧉ · Quarantaine ⚠ — chacun filtre l'onglet Entrées sur le sous-ensemble correspondant en un clic.
Champs d'en-têteNom, Source fournisseur, Date d'import, Lignes valides, Durée (s) — mêmes champs que la vue liste, présentés en formulaire.
Onglet EntréesTableau ligne par ligne : Nom, Email, IBAN, Montant, Fréquence SDD, Statut (avec code couleur : vert = Terminé, orange = doublon, rouge = quarantaine, gris = en attente), Est un doublon, Partenaire.
Chatter (fil à droite)Historique automatique généré par OdooBot : SDD Import File created, puis Processing → Done (Statut) — traçabilité complète des changements d'état du fichier.

G.4 — Import Errors

Séparé volontairement de l'Historique des fichiers : cette liste ne contient que les fichiers dont aucune ligne n'a pu être traitée — des cas qui exigent une action, contrairement au reste de l'historique qui est informatif. Sur l'environnement observé, elle comptait 4 fichiers.

Import Errors — vue liste
Capture — 4 fichiers en erreur, chacun avec le même type de message.

Le message d'erreur observé sur les quatre fichiers est identique dans sa structure : « File read successfully but no usable entry: all N line(s) ended as duplicate or quarantine (0 valid). Nothing was processed. » — un message qui rassure autant qu'il alerte : le fichier a été lu correctement (ce n'est pas un problème technique de format), mais aucune de ses lignes n'était exploitable, chacune ayant fini en doublon ou en quarantaine.

Fiche Import Errors — Lignes valides 0, Durée, Message d'erreur, Empreinte SHA-256, bouton Reprocess, onglet Entrées
Capture — Fiche « AD-Date Antérieure.csv », statut Erreur, avec l'empreinte SHA-256 du fichier.
ChampExemple observéExplication
Nom / Source fournisseur / Date d'importAD-Date Antérieure.csv / Supplier_01_AD / 31 juil., 23:22Identiques en logique aux champs de l'Historique des fichiers.
Lignes valides0Toujours nul par définition pour un fichier en erreur.
Durée (s)00:02Le traitement, même s'il échoue, prend un temps mesurable (lecture + tentative de validation).
Error Category(vide sur cet exemple)Catégorisation de l'erreur (format, mapping, pipeline…) quand elle est renseignée par le système.
Message d'erreur« File read successfully but no usable entry… »Texte technique explicite, directement exploitable pour le diagnostic sans ouvrir les logs serveur.
Empreinte SHA-256e5e167d930dd312218574bc7e03024137a24d6157ffaad9786b171981fe07171Champ technique : une empreinte cryptographique du contenu du fichier. Elle sert très probablement à la détection d'un import en double du même fichier (le message « Duplicate import blocked » observé ailleurs dans la documentation trouve ici son mécanisme technique).
Bouton Reprocess—Relance le traitement du fichier depuis son état Erreur, après correction en amont (par exemple une fois les lignes source corrigées côté fournisseur).
Onglet Entrées1 ligne, Mehdi Fassi, statut QuarantaineMême structure que dans l'Historique des fichiers : on retrouve, ligne par ligne, la raison précise de la mise en quarantaine de chaque entrée du fichier en échec.
Les deux messages à distinguer
  • « no usable entry: all N line(s) ended as duplicate or quarantine » — le fichier a été lu correctement ; ce n'est pas un problème technique. Aller voir les onglets Doublons et Quarantaine pour la cause précise.
  • « File was not found in the error folder » — le fichier a déjà été rejoué ou déplacé manuellement depuis le dossier serveur ; rien à corriger côté données.

G.5 — Quarantaine & Doublons

Deux vues filtrées du Cockpit SDD, correspondant aux deux dérivations possibles du pipeline lorsqu'une entrée ne peut pas être traitée immédiatement.

Quarantaine

Ne montre que les entrées à l'état Quarantaine. Sur l'environnement observé, cette liste comptait 17 entrées, cohérent avec la carte « QUARANTAINE » du tableau de bord.

Quarantaine — vue liste, 17 entrées
Capture — Liste Quarantaine (1-17/17) : 15 IBAN invalides, 2 problèmes de date de signature.

Deux motifs de blocage cohabitent sur cette capture, illustrant deux familles différentes de règles :

  • [QUARANTINE] Invalid IBAN (too short) — la règle « Valid IBAN » (IBAN requis et valide) a détecté un format non conforme.
  • [QUARANTINE] Field 'Signature Date': cannot compare value '' with '2026-02-06 (today −6 Months)'. — la règle « Signature date range » (Field check) a tenté de comparer la date de signature à une date relative (aujourd'hui moins 6 mois) et a échoué parce que le champ était vide dans le fichier source.
Fiche Quarantaine — Mehdi Fassi, boutons Revalider/Forcer le traitement/Rejeter/Escalader, bandeau Invalid Field Signature Date
Capture — Fiche « Mehdi Fassi » (1/17), bloquée pour date de signature invalide ; noter l'absence de champ « Partenaire » renseigné : tant que l'entrée reste en quarantaine, aucun objet natif n'est créé.

Cette capture confirme un point de conception important : sur une entrée en quarantaine, les champs Partenaire et la section Objets créés restent vides — le pipeline s'arrête avant toute création, ce qui garantit qu'aucun donateur « à moitié créé » ne pollue la base (voir la plus-value « atomicité » du thème 1).

Doublons

Seconde dérivation du pipeline : une entrée est classée « Doublon » (et non « Quarantaine ») lorsqu'elle correspond potentiellement à un donateur déjà présent en base (même IBAN, même email, ou même IBAN avec un nom différent — cas fréquent d'un compte joint). Sur l'environnement observé, cette liste était vide :

Doublons — liste vide avec colonnes Nom du donateur, Email, IBAN, Montant, Fréquence SDD, Statut, Contournement, Est un doublon, Error/Warning, Duplicate Resolution, Partenaire, Abonnement, Mandat SEPA, Fichier source, Date d'import
Capture — « Doublons », état vide. Les colonnes révèlent la structure attendue : Contournement, Est un doublon, Duplicate Resolution notamment.

Une fois résolue (bouton « Resolve: Existing Partner » ou « Resolve: New Partner », selon que le doublon correspond à la même personne ou à une personne distincte), l'entrée repasse en Pending et le pipeline reprend son cours normal.

G.6 — Warning

Autre vue filtrée du Cockpit SDD : les entrées à l'état Terminé mais dont le pipeline a laissé un avertissement non bloquant dans le champ Error/Warning. Contrairement à la Quarantaine, ces entrées ont bien été traitées jusqu'au bout — le message sert uniquement à attirer l'attention sur un point à vérifier a posteriori.

Warning — liste avec 1 entrée Sofia Zerouali, message Signature date is in the future
Capture — Liste Warning (1/1) : « Signature date is in the future (2027-07-01) — deferred-date mandate. »

Colonnes identiques à celles du Cockpit SDD complet (Nom du donateur, Email, IBAN, Montant, Fréquence, Statut, Error/Warning, Duplicate…, Partenaire, Abonnement, Mandat SEPA, Fichier source, Date d'import) — la seule différence est le filtre appliqué sur le contenu du champ Error/Warning et sur le statut Terminé.

G.7 — Rejections : rejets manuels et exports

Ce menu regroupe trois écrans liés au traitement manuel des entrées (par opposition au traitement automatique par les règles) : la liste des entrées rejetées, l'assistant d'export, et l'historique des exports générés.

Rejected Entries — 1 entrée Dimitri Lambda, statut Rejeté, motif Incorrect or incomplete personal information
Capture — « Rejected Entry List » avec une entrée rejetée manuellement : « Dimitri Lambda ».

Cette liste se peuple lorsqu'un opérateur clique sur le bouton Rejeter depuis une fiche d'entrée (voir G.2) et choisit un motif prédéfini ou saisit un texte libre. Colonnes : Nom du donateur, Email, IBAN, Montant, Fréquence, Statut, Contournement, Est un doublon, Error/Warning, Duplicate Resolution, Partenaire, Abonnement, Mandat SEPA, Fichier source, Date d'import.

Ouvrir l'entrée rejetée affiche sa fiche complète, avec le motif de rejet effectivement renseigné cette fois-ci — un exemple concret que la fiche « Sofia Zerouali » (G.2) ne pouvait pas montrer puisqu'elle n'a jamais été rejetée :

Fiche Dimitri Lambda — bandeau Rejeté avec motif Incorrect or incomplete personal information, avertissement quarantaine conservé, champ Motif de rejet rempli, chatter Quarantine to Rejected
Capture — Fiche « Dimitri Lambda », statut Rejeté. Noter le double bandeau : le motif de rejet (gris) et l'avertissement de quarantaine d'origine (jaune), tous deux conservés pour traçabilité.
ÉlémentDétail
Bandeau « Rejeté »Affiche directement le motif choisi : ici « Incorrect or incomplete personal information ».
Bandeau « Avertissements »L'avertissement de quarantaine qui précédait le rejet reste visible — le contexte complet de la décision est préservé, pas seulement son résultat.
Champ Motif de rejetReprend le même texte que le bandeau, cette fois comme valeur de champ consultable dans les vues liste et les rapports.
ChatterTrace l'auteur et l'horodatage du changement de statut : Quarantine → Rejected (Statut), avec le nom de l'opérateur ayant effectué l'action — l'imputabilité de chaque rejet est donc garantie.

Le bouton Nouvel Export (ou le menu Rejections → Export Rejected Entries) ouvre l'assistant qui permet de générer un fichier CSV des rejets à transmettre à une agence :

Assistant Export Rejected Entries — filtres Période de rejet, Source, Motifs de rejet, bouton Exporter en CSV
Capture — Assistant « Export Rejected Entries », tous filtres au repos.
Section / champDétail
Bandeau d'information« Configurez vos filtres d'export. Sans aucun filtre, toutes les entrées rejetées seront incluses dans le fichier CSV exporté. » — l'export est donc utilisable sans aucune configuration, filtre après filtre pour affiner.
Période de rejetRejection Date — From / Rejection Date — To, avec sélecteur calendrier intégré (voir capture ci-dessous).
SourceSupplier — restreint l'export à un seul fournisseur/agence.
Motifs de rejet (cases à cocher)Invalid or unrecognised IBAN · Incorrect or incomplete personal information · Donor already has an active subscription · Amount does not meet membership conditions · Cancellation request or refusal by donor · Other — specify below.
Bandeau d'avertissement dynamique« Aucun motif sélectionné — toutes les entrées rejetées correspondant aux autres filtres seront exportées. » — se met à jour en direct selon les cases cochées.
BoutonsExporter en CSV (violet) / Annuler.
Sélecteur de date — Rejection Date From, août 2026, avec numéros de semaine ISO
Capture — Sélecteur calendrier du champ « Rejection Date — From » : notez les numéros de semaine ISO affichés en colonne de gauche (31 à 36).
Dossier Rejects — liste vide avec colonnes Fichier, Date d'export, Exporté par, Entrées, Taille, Supplier, Period From/To, Server Path
Capture — « Dossier Rejects » (historique des exports) à l'état vide : « Aucun export pour l'instant. »

Une fois un export généré via l'assistant, il apparaît ici avec : Fichier, Date d'export, Exporté par, Entrées (nombre), Taille, Supplier, Period — From / To, et Server Path (chemin du dossier rejects\ où le fichier est physiquement déposé).

Configuration initiale (administrateur)

Dossier d'importConfiguration ▸ Settings. Chemin racine du dépôt FTP. Créez un sous-dossier par fournisseur ; communiquez à chaque agence ses identifiants FTP limités à son dossier. Aucun téléversement dans l'interface : l'ingestion ne pèse jamais sur les utilisateurs.
Mapping par fournisseurConfiguration ▸ CSV Field Mapping. Sélectionnez le fournisseur (proposé d'après les sous-dossiers) et associez chaque colonne de son gabarit aux champs Odoo. Faites-le une fois par agence, à partir d'un fichier d'exemple.
Règles de validationConfiguration ▸ Import Validation Rules. Partez du jeu livré, puis ajustez : par exemple, signature à moins de 90 jours (bloquant), fréquence mensuelle uniquement (bloquant), téléphone renseigné (avertissement). Testez toute nouvelle règle sur une petite vague avant de la passer en bloquant.
Journal + UTM automatiquesJournal de facturation appliqué aux abonnements créés ; médium UTM « SDD » ; source UTM = nom du fichier importé. Conséquence directe : la production se mesure par fournisseur et par vague dans les rapports d'abonnement, sans aucune saisie.
Plan & jour de facturationLe plan d'abonnement et le jour de prélèvement sont centralisés ici — et réutilisés à l'identique par le guichet Donor Care : une seule vérité pour toute l'organisation.
Purge RGPDCochez l'option et fixez le délai (365 j par défaut) : un cron quotidien supprime les CSV du dossier processed au-delà. Les données utiles vivent dans Odoo ; les fichiers nominatifs, eux, ne s'accumulent pas.
Synchro PDF de mandatsDossier de dépôt des scans, nommés exactement au code mandat. Le cron rattache chaque PDF au mandat natif puis archive le fichier ; bouton de synchro manuelle disponible.
RéférentielsMotifs de rejet (renvoyés à l'agence) et motifs de bypass (justification d'un passage forcé) : imposez des libellés clairs, ils structurent vos statistiques qualité.

G.8 — Configuration, en détail

Le menu Configuration, réservé au profil SDD Administrator, regroupe six sous-menus. C'est le cœur technique du module : chaque comportement automatique décrit dans les thèmes 1 à 9 de ce document trouve ici son réglage correspondant.

Menu Configuration déployé — Settings, Règles de validation, CSV Field Mapping, Archived Imports, Motifs de rejet, Quarantine Bypass Reasons
Capture — Les 6 entrées du menu Configuration.
Sous-menuContenu
SettingsRéglages généraux : dossier d'import, dossier des PDF de mandats, traitement automatique, synchronisation des mandats, facturation, attribution marketing, conservation RGPD. Détaillé en G.8.1.
Règles de validationLes règles qui déterminent si une entrée passe ou part en quarantaine. Détaillé en G.8.2.
CSV Field MappingCorrespondance entre les colonnes du fichier de chaque fournisseur et les champs internes du module. Détaillé en G.8.3.
Archived ImportsFichiers du dossier processed\ (imports réussis). Détaillé en G.8.4.
Motifs de rejetRéférentiel des motifs proposés dans l'assistant Rejeter. Détaillé en G.8.5.
Quarantine Bypass ReasonsRéférentiel des motifs proposés dans l'assistant « Forcer le traitement ». Détaillé en G.8.6.

G.8.1 — Settings

L'écran de réglages généraux, organisé en cartes. La page ne s'enregistre qu'au clic sur le bouton violet Save Settings, fixé en haut de l'écran.

SDD Automation Settings — SDD Import Folder, Mandate PDF Folder, Automatic Processing, Billing, GDPR Automatic File Deletion
Capture — Haut de la page Settings : colonne gauche (dossiers, traitement automatique) et colonne droite (facturation, RGPD).
SDD Import Folder
Champ / boutonExemple observéExplication
Chemin/var/lib/odoo/ngo/sddDossier serveur surveillé par le cron d'import ; chaque sous-dossier direct est traité comme un fournisseur distinct.
Import from Folder—Déclenche manuellement un cycle d'import immédiat, sans attendre le prochain passage du cron.
New Supplier—Crée un nouveau sous-dossier fournisseur sur le serveur.
Rename Supplier—Renomme un sous-dossier fournisseur existant.
Test—Vérifie que le chemin existe et qu'Odoo dispose des droits de lecture/écriture.
Archived Imports / CSV Field Mapping—Raccourcis directs vers ces deux écrans de configuration (G.8.4 et G.8.3), sans repasser par le menu.
Detected supplier foldersBlue_Import, Supplier_01_AD, Supplier_02_MDMListe en lecture seule des sous-dossiers physiquement présents sous le chemin ci-dessus.
Mandate PDF Folder
Chemin/var/lib/odoo/ngo/sdd/mandatsDossier où déposer les PDF de mandats signés.
Test—Même vérification que pour le dossier d'import.
Règle de nommageABC123.pdfChaque PDF doit être nommé exactement d'après le code du mandat. Laisser le champ vide désactive cette fonctionnalité sans bloquer le reste.
Automatic Processing
Enable Automatic ProcessingActivé (vert)Bascule générale : sans elle, aucun fichier n'est traité automatiquement, seul le bouton « Import from Folder » fonctionne.
Cron Frequency (minutes)1Intervalle entre deux passages du cron d'import. Une valeur de 1 minute est très agressive — probablement réglée ainsi pour les besoins de la démonstration ; en production, un intervalle de 15 à 30 minutes est plus courant.
Billing
Invoicing JournalSDDJournal de vente utilisé pour facturer les abonnements créés par l'import SDD. Laisser vide pour utiliser le journal par défaut d'Odoo.
Invoice days — 1st / 2nd / 3rd4 / 0 / 0Jusqu'à trois jours de facturation dans le mois ; la date facturée retenue est la plus proche date future correspondant à l'un de ces jours. Une valeur à 0 désactive le créneau correspondant.
Texte exact de l'encadré « Date de la 1ère facture » (Settings) Date de la 1re facture — la 1re facture est datée au prochain jour de prélèvement (Invoice days) égal ou postérieur à la date de référence — jamais dans le passé. La date de référence est déterminée automatiquement :
  • Start date présent dans le fichier → référence = Start Date (démarrage voulu par le fournisseur).
  • Start date absent → référence = date d'import du CSV.
Exemples — jours de prélèvement 5, 15, 25 ; import le 10 mars : sans start date → 15 mars ; start date au 1er avril → 5 avril ; start date passée (20 février) → 15 mars (pas de facture rétroactive).

ℹ La date de signature n'intervient pas dans la facturation : elle sert au mandat SEPA et aux règles de validation (contrôle).
⚠ La date réelle du débit bancaire est calculée par le module Batch (règles bancaires SEPA) — voir thème 2 · SDD Batch.
GDPR — Automatic File Deletion
Automatically Delete Imported FilesActivé (vert)Purge automatique programmée des fichiers CSV du dossier processed\ après leur délai de rétention.
Retention Period (days)1Nombre de jours après lesquels un fichier traité est supprimé. Seuls les CSV sont concernés — les donateurs, mandats et abonnements créés dans Odoo ne sont jamais touchés par cette purge.

En faisant défiler la page, trois cartes supplémentaires apparaissent :

Settings — Mandate PDF Sync, UTM Marketing Attribution, GDPR Retention Period
Capture — Cartes « Mandate PDF Sync » et « UTM – Marketing Attribution ».
Mandate PDF Sync
Enable Mandate PDF SyncActivé (vert)Active la synchronisation périodique décrite ci-dessous.
Sync Frequency (minutes)1Intervalle entre deux passages du scan de synchronisation.
Sync Now—Déclenche une synchronisation immédiate, sans attendre le prochain cycle.
Texte exact de la descriptionPeriodically scans the mandate PDF folder and attaches any missing PDF to the matching existing mandate (by mandate code). Attached PDFs are moved to processed/. Useful when PDFs arrive after the mandates were created.
UTM — Marketing Attribution
Marketing MediumStreet MarketingMédium (medium_id natif Odoo) appliqué à chaque abonnement créé par l'import SDD. Laisser vide pour n'en définir aucun.
Source = Imported File NameActivé (vert)Lorsqu'activé, la source (source_id) de chaque abonnement est automatiquement fixée au nom du fichier importé — c'est ce mécanisme qui permet, dans le thème 1, l'attribution du don au fournisseur/à la vague sans aucune saisie manuelle. Désactivé, aucune source n'est renseignée.

Enfin, tout en bas de la page, un rappel des formats acceptés et des raccourcis :

Settings — Supported import formats (Aspect/Accepted) et Shortcuts (Open Validation Rules, Configure Recurring Plans)
Capture — « Supported import formats » et « Shortcuts ».
Supported import formats
AspectAccepté
File type.csv uniquement — tout autre type de fichier est déplacé vers le dossier error
EncodingUTF-8 (avec ou sans BOM) ou Latin-1 (ISO-8859-1)
Separator; (recommandé), , ou tabulation — auto-détecté
QuotesGuillemets doubles " optionnels
HeaderPremière ligne = noms de colonnes (associés via CSV Field Mapping)
Amounts12.50 ou 12,50 (point ou virgule)
DatesYYYY-MM-DD, DD/MM/YYYY ou DD-MM-YYYY
Exemple d'en-tête recommandé (texte exact affiché)NAME;EMAIL;SDD_IBAN_DEBITOR;SDD_AMOUNT;MANDATE_CODE;SDD_FREQUENCY;SDD_SIGNDATE
Shortcuts
Open Validation RulesRaccourci direct vers G.8.2 ci-dessous.
Configure Recurring PlansRaccourci vers l'écran natif Odoo de configuration des plans d'abonnement récurrents (Ventes → Configuration → Plans d'abonnement).

G.8.2 — Règles de validation

Règles de validation — 8 règles : Required Fields, National Number, Amount range, Valid IBAN, Allowed Frequency, IBAN required, Signature date range, Unique mandate code
Capture — 8 règles actives, toutes en sévérité « Bloquant » sur cet environnement.
RègleTypeChamps / Plans concernés
Required FieldsChamps requisMontant, Fréquence SDD, Language, Rue, Code postal (tous « Entrée SDD »)
National NumberField checkValidation du numéro de registre national
Amount range (1–10 000)Field checkBornes acceptables du montant du don
Valid IBANIBAN requis et valideFormat + clé de contrôle SEPA
Allowed FrequencyFréquences autoriséesMensuel, Unique Gift, Quarterly Gift, Semi-Annual Gift, Bimonthly Gift, Annuel
IBAN requiredField checkPrésence obligatoire de l'IBAN
Signature date rangeField checkPlage de dates acceptable pour la signature du mandat
Unique mandate codeUnique mandate codeUnicité du code de mandat, toutes sociétés confondues

Ouvrir la règle « Allowed Frequency » donne la structure exacte d'une règle, champ par champ :

Fiche règle Allowed Frequency — Type de règle, Sévérité, Séquence, Actif, Plans récurrents autorisés
Capture — Fiche complète de la règle « Allowed Frequency » (5/8).
ChampValeur observéeRôle
Type de règleFréquences autoriséesDétermine le comportement du moteur de validation pour cette règle (ici : vérifier que le code de fréquence du CSV correspond à un plan d'abonnement autorisé).
SévéritéBloquantMenu déroulant — l'autre valeur possible est « Avertissement » (non bloquant, alimente la liste Warning plutôt que Quarantaine).
Séquence13Ordre d'exécution de la règle par rapport aux autres — utile quand plusieurs règles pourraient se déclencher sur la même ligne.
Actif☑ cochéInterrupteur on/off de la règle sans avoir à la supprimer.
Notes(vide sur cet exemple)Commentaire libre à destination des administrateurs futurs.
Plans récurrents autorisés (tags)Mensuel · Unique Gift · Quarterly Gift · Semi-Annual Gift · Bimonthly Gift · AnnuelListe multi-sélection des plans d'abonnement vers lesquels un code de fréquence CSV peut être traduit ; chaque tag peut être retiré individuellement (icône ×).

G.8.3 — CSV Field Mapping

Chaque fournisseur nomme les colonnes de son fichier à sa façon ; le mapping fait le lien avec les champs internes du module. Sur l'environnement observé, 3 mappings actifs sont configurés :

Mappings CSV — liste de 3 fournisseurs : Blue_Import, Supplier_01_AD, Supplier_02_MDM, tous actifs
Capture — Liste des mappings (1-3/3), tous actifs.

Ouvrir un mapping (exemple « Blue_Import ») affiche l'outil de correspondance colonne par colonne :

Fiche mapping Blue_Import — Actif, boutons Préconfig par défaut / Réinitialiser les valeurs par défaut, tableau Champ interne / Colonne(s) CSV
Capture — Haut de la fiche « Blue_Import » : Mandate Code → MANDATE_CODE, Gender → GENDER, Firstname → FIRSTNAME, etc.
ÉlémentDétail
ActifBascule on/off — un mapping désactivé ne peut plus être utilisé, sans être supprimé.
Préconfig par défautNon destructif — ajoute les champs standard manquants tout en conservant les ajustements déjà faits.
Réinitialiser les valeurs par défautDestructif — efface tout le mapping et recharge le modèle complet (une confirmation est demandée).
Tableau Champ interne / Colonne(s) CSVChaque ligne relie un champ interne du module (colonne de gauche, en lecture seule) au nom exact de la colonne dans le fichier CSV du fournisseur (colonne de droite, éditable). Si plusieurs noms sont possibles selon les envois, on peut les séparer par une virgule dans la colonne CSV.
Bandeau d'aide« Pour chaque champ, saisissez le nom exact de la colonne dans le fichier CSV du fournisseur. Si plusieurs noms sont possibles, séparez-les par une virgule. »

Champs observés sur ce mapping : Mandate Code, Gender, Language, Firstname, Lastname, Company Name, Street, House Number, Box Number, Zip, City, Country (code), Signature Date, Amount, SDD Frequency, IBAN, BIC, Phone, Mobile, Birthdate, Email, Action Code, Action Description, Channel — puis, plus bas :

Fiche mapping Blue_Import — suite du tableau avec Opt-in Magazine, SDD Recruiter ID, National ID Number, Start Date, et section Opt-in Mailing Lists
Capture — Suite du mapping et nouvelle section « Opt-in Mailing Lists ».

Champs supplémentaires : Opt-in Magazine (offline/online), Opt-in Phone, Opt-in SMS, SDD Recruiter ID, Remarque, National ID Number, Nationality (code), Company Number (BCE), Is Company, Donor External ID, Start Date — ainsi qu'une ligne de mapping vers MAILING_LIST sans champ interne affecté (visible mais non lié).

Section « Opt-in Mailing Lists » — texte exact Map each marketing opt-in to a mailing list. When a donor's opt-in is TRUE, the mailing contact is subscribed to the mapped list. Opt-ins left FALSE do nothing (no subscription, no removal).

Cette section (tableau à deux colonnes Opt-in / Mailing List, vide sur l'exemple observé) permet de faire correspondre chaque case à cocher d'opt-in du CSV à une liste de diffusion native Odoo — c'est le mécanisme concret derrière l'abonnement automatique aux listes de diffusion décrit ailleurs dans la documentation du module.

Un second fournisseur observé (« Supplier_02_MDM ») illustre bien la diversité des conventions de nommage à absorber : IBAN → Sdd_iban_debitor, Mandate Code → Sdd_mandatereference, SDD Frequency → Recurrent, National ID Number → NN, Company Number (BCE) → BTW — confirmant que le mapping est bien nécessaire fournisseur par fournisseur, chacun avec ses propres intitulés de colonnes.

G.8.4 — Archived Imports

Processed Files — liste vide filtrée par Fournisseur, colonnes Fournisseur, Fichier, Taille (Ko)
Capture — « Processed Files », état vide sur cet environnement (filtre Fournisseur actif dans la barre de recherche).

Liste des fichiers du dossier processed\ (imports réussis), avec les colonnes Fournisseur, Fichier et Taille (Ko). Trois actions sont proposées sur cet écran : Refresh (rafraîchit la liste depuis le serveur), Download (télécharge le fichier) et Delete (le supprime définitivement du serveur). Cet écran complète la purge automatique RGPD réglée en G.8.1 en offrant aussi une action manuelle.

G.8.5 — Motifs de rejet

Motifs de rejet — 6 motifs avec colonnes Motif, Règles de validation liées, Helpdesk, Équipe, Actif
Capture — Les 6 motifs proposés dans l'assistant Rejeter, avec leurs règles liées.
ColonneExplication
MotifLibellé affiché dans l'assistant de rejet (bouton « Rejeter » sur une fiche d'entrée). Le dernier motif, « Other — specify below », est affiché en orange et ouvre un champ de texte libre.
Règles de validation liéesMotifs suggérés automatiquement lorsqu'une des règles listées a bloqué l'entrée. Exemple observé : « Invalid or unrecognised IBAN » est lié à la règle « Valid IBAN » ; « Incorrect or incomplete personal information » est lié à « Required Fields » et « Allowed Frequency ».
HelpdeskCase à cocher : si activée, le rejet crée automatiquement un ticket Helpdesk. Seul « Invalid or unrecognised IBAN » l'a activée sur cet environnement.
ÉquipeÉquipe Helpdesk destinataire du ticket automatique (« Donor Care » observé) — un sélecteur avec une flèche « → » permet de configurer l'équipe cible.
ActifInterrupteur on/off ; les 6 motifs sont actifs sur cet environnement.

Les 6 motifs observés : Invalid or unrecognised IBAN · Incorrect or incomplete personal information · Donor already has an active subscription · Amount does not meet membership conditions · Cancellation request or refusal by donor · Other — specify below.

G.8.6 — Quarantine Bypass Reasons

Motifs de contournement — 4 motifs : IBAN manually validated with the client, Exception granted by management, Data manually corrected after verification, Other reason
Capture — Les 4 motifs proposés dans l'assistant « Forcer le traitement ».

Motifs proposés lorsqu'un Superviseur ou Administrateur clique sur le bouton rouge Forcer le traitement depuis une fiche en quarantaine (voir G.5) : IBAN manually validated with the client · Exception granted by management · Data manually corrected after verification · Other reason (specified in notes). Chaque motif dispose des mêmes champs que les autres référentiels du module : Motif (libellé), Sequence (ordre d'affichage) et Actif (désactiver au lieu de supprimer conserve l'historique des contournements déjà tracés). Le motif choisi est tracé sur l'entrée (section Quarantine Bypass) et dans le chatter : chaque contournement de règle bloquante reste justifié et auditable a posteriori.

Objets natifs créés — Mandat SEPA & Abonnement

Ces deux écrans ne font pas partie du module SDD Automation à proprement parler — ce sont les objets natifs Odoo Enterprise (respectivement sdd.mandate et sale.order) que le pipeline crée et relie automatiquement à l'issue d'un traitement réussi. Ils sont documentés ici pour montrer concrètement ce que produit une entrée « Terminée ».

Fiche Mandat SEPA native — Client Henry Louis, IBAN, Régime SDD CORE, Prénotification, Mandate Code, statut Actif, smart buttons Perceptions et Transactions
Capture — Fiche mandat native, généré automatiquement pour « Henry Louis ».
ChampExemple observéExplication
ClientHenry LouisLien vers le contact créé par le pipeline SDD Automation.
IBANBE07 9991 1234 5066Compte bancaire lié au mandat.
Régime SDDCORESchéma SEPA — CORE (particuliers) ou B2B (entreprises), voir thème 2.
Prénotification2 jour(s)Délai de préavis avant le premier prélèvement, exprimé en jours.
Mandate CodeDRDA2026700010Même code que celui affiché sur la fiche d'entrée SDD d'origine — la traçabilité est directe.
Identifiant0016771480803082026Référence unique de mandat (RUM) utilisée dans les fichiers SEPA.
Date de début / Date de fin1 août / (vide)Mandat ouvert, sans date de fin programmée.
SociétéNGO ConsortiumSociété Odoo à laquelle le mandat est rattaché.
StatutActifBarre de statut native Brouillon → Actif ; boutons « Résilier » / « Révoquer » disponibles pour la gestion du cycle de vie.
Smart buttonsPerceptions (1) · Transactions (0)Perceptions = nombre de prélèvements déjà effectués sur ce mandat ; Transactions = mouvements de paiement associés.
Fiche Abonnement native — Client Dupont Emma, Plan récurrent Mensuel, Prochaine facture, ligne de commande GFD-M Monthly recurring donation, smart buttons Factures clients/MRR/UTM Dimensions
Capture — Fiche abonnement native S04356, pour « Dupont Emma ».
ChampExemple observéExplication
Client + adressesDupont Emma, Avenue des Tilleuls 11 1, 1000 BruxellesReprend l'adresse décomposée saisie sur l'entrée SDD d'origine.
Date de la commande3 août, 09:48Horodatage de création de l'abonnement par le pipeline.
Plan récurrentMensuel, jusqu'au (vide = sans fin)Fréquence de facturation, dérivée du code de fréquence SDD via la règle « Allowed Frequency » (G.8.2).
Prochaine facture3 sept.Date de la prochaine échéance de facturation, calculée selon la logique détaillée en G.8.1.
Conditions de paiementImmédiatMode de règlement associé au client.
StatutDevis → Envoyé → Commande client (« En cours »)Barre de statut native de l'abonnement.
Ligne de commande[GFD-M] Monthly recurring donation…, Qté 1, Prix unitaire 15,50 €Le produit facturé correspond au « SDD Product » configuré sur le plan d'abonnement.
Smart buttonsFactures clients (1) · MRR 15,50 € · UTM Dimensions (0)MRR = Monthly Recurring Revenue, calculé automatiquement par Odoo à partir des lignes récurrentes.
ChatterHistorique des reports de date de facturation (« Prochaine facture »)Chaque changement de date de facturation est tracé automatiquement, utile en cas de litige sur un prélèvement.
À retenir de ce guide d'interface.
  • Le Cockpit SDD est la table mère ; Warning, Quarantaine, Doublons, Rejections en sont des vues filtrées du même modèle sdd.entry — pas des objets séparés.
  • Tant qu'une entrée n'a pas atteint l'état Terminé, aucun objet natif (contact, mandat, abonnement, jeton) n'existe : le pipeline est strictement transactionnel.
  • La configuration se répartit sur 6 écrans indépendants (Settings, Règles de validation, CSV Field Mapping, Archived Imports, Motifs de rejet, Quarantine Bypass Reasons) mais tous alimentent le même pipeline : un mapping incomplet, une règle mal calibrée ou un dossier mal renseigné se traduit immédiatement par une hausse des quarantaines ou des erreurs d'import.
  • Le calcul de la date de première facture (G.8.1) est entièrement automatique et documenté dans l'interface elle-même — un exemple rare et appréciable de logique métier complexe rendue transparente à l'utilisateur final sans qu'il ait besoin de consulter un développeur.
  • Le champ Empreinte SHA-256, découvert sur la fiche Import Errors, est la pièce technique qui explique le mécanisme anti-doublon d'import de fichier déjà documenté ailleurs sous forme de message utilisateur.

Procédures

Traiter la vague du jour

  1. Les agences ont déposé leurs CSV pendant la nuit ; le scan planifié les a importés (verrou anti-doublon). Ouvrez Dashboard : volumes par fournisseur, répartition des états — vous savez en trente secondes si la vague est saine.
  2. Passez dans Import Errors : s'il y a des fichiers illisibles, prévenez l'agence (gabarit modifié ? encodage ?) et faites redéposer. Un fichier en erreur n'a rien créé.
  3. Traitez la quarantaine (procédure dédiée ci-dessous) puis les doublons.
  4. Dans le SDD Cockpit, sélectionnez les entrées « en attente » et cliquez Process : le pipeline crée les 5 objets par donateur. Les rares échecs repartent en quarantaine avec leur motif.
  5. Vérifiez le Dashboard en fin de traitement : la vague doit finir avec 0 en attente, une quarantaine résiduelle documentée et les rejets prêts à l'export.

Résoudre une entrée en quarantaine

  1. Ouvrez l'entrée depuis ▸ Quarantine : le motif indique la règle déclenchée et le champ concerné.
  2. Cas corrigeable (faute de frappe IBAN, date mal saisie) : corrigez le champ sur l'entrée puis Revalidate — elle repasse toutes les règles.
  3. Cas assumé (règle trop stricte pour ce cas précis) : Force Processing, en choisissant un motif de bypass. Le passage forcé reste tracé et attribué.
  4. Cas nécessitant le donateur (signature illisible, IBAN invérifiable) : 🎫 Escalate to Support crée un ticket Donor Care lié ; l'entrée attend la réponse.
  5. Cas définitif : Reject avec motif, puis Confirm Rejection. L'entrée rejoint la file d'export vers l'agence.

Arbitrer un doublon

  1. Dans ▸ Duplicates, comparez l'entrée aux candidats proposés : même IBAN = très probablement la même personne ; même nom seul = vérifiez l'adresse et la date de naissance.
  2. Resolve: Existing Partner rattache le bulletin au contact existant (le mandat et l'abonnement seront créés sur sa fiche) ; Resolve: New Partner assume une création distincte.
  3. En cas de doute, escaladez : mieux vaut un ticket qu'un donateur dédoublé — ou pire, fusionné à tort.

Exporter les rejets vers une agence

  1. ▸ Rejections ▸ Export Rejected Entries : filtrez par fournisseur et période.
  2. Exporter en CSV : le fichier part avec les motifs ; IBAN et emails sont masqués dans le journal d'export (RGPD).
  3. Archivez l'échange : le taux de rejet par agence est un indicateur contractuel précieux.

Ajouter un nouveau fournisseur

  1. Créez le sous-dossier FTP à son nom et remettez-lui ses accès.
  2. Créez son mapping dans CSV Field Mapping à partir d'un fichier d'exemple.
  3. Faites déposer un fichier de test de quelques lignes ; contrôlez la vague dans le Cockpit avant d'ouvrir les volumes réels.

Bonnes pratiques

Quarantaine à zéro chaque semaineUne quarantaine qui vieillit, ce sont des mandats dont la date de signature expire — et des donateurs recrutés pour rien. Fixez un SLA interne.
Sévérités progressivesIntroduisez toute nouvelle règle en avertissement, observez une ou deux vagues, puis passez en bloquant si le signal est fiable.
Un gabarit par agence, geléTout changement de colonnes chez l'agence doit passer par une mise à jour du mapping avant le prochain dépôt — sinon direction Import Errors.
Nommer les fichiers intelligemmentLe nom du fichier devient la source UTM : « street_bruxelles_2026-08.csv » se lit tout seul dans les rapports.

Questions fréquentes

Peut-on importer sans FTP, à la main ?Le flux nominal est le dépôt de fichiers ; c'est ce qui garantit qu'aucun import lourd ne bloque l'interface. Pour un cas unitaire, passez par le guichet Donor Care, prévu exactement pour cela.
Que devient le CSV après traitement ?Il est déplacé dans le sous-dossier processed (ou error / rejects selon l'issue), puis supprimé par la purge RGPD à l'échéance du délai.
Pourquoi le chatter des entrées est-il vide pendant l'import ?Le suivi d'états est volontairement suspendu pendant l'import de masse (des dizaines de milliers de messages n'aideraient personne) ; il reprend pour toute action manuelle.
Le donateur existe déjà avec un abonnement actif ?La détection de doublons le signale « abonnement déjà actif » : n'en créez pas un second — voyez avec Donor Care s'il s'agit d'une augmentation de don.

Résolution de problèmes

Le fichier déposé n'apparaît pasMauvais sous-dossier ? Extension inattendue ? Cron de scan passé ? Vérifiez File History puis Import Errors.
Toute la vague part en quarantaineUne seule cause probable : le mapping ne correspond plus au gabarit (colonne décalée). Corrigez le mapping, faites redéposer, revalidez.
PDF de mandat non rattachéLe nom du fichier doit être exactement le code mandat. Corrigez le nom et relancez la synchro manuelle.
« Process » ne crée rienRegardez le motif ajouté sur l'entrée : le pipeline est tout-ou-rien, l'erreur précise y figure (IBAN refusé par la banque de l'objet natif, plan manquant…).