SDD Automation — enrôlement en masse des donateurs réguliers
bs_sdd_automationEn 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 validation | Contrô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 fournisseur | La 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 ▸ Dashboard | La 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 Cockpit | Le 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 Errors | Historique 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. |
| ▸ Duplicates | File d'arbitrage des doublons : chaque entrée montre le ou les candidats existants (nom, IBAN, adresse) pour décider en connaissance de cause. |
| ▸ Quarantine / ▸ Warning | Les bloquées avec motif, et les passées avec avertissement (à surveiller sans urgence). |
| ▸ Rejections | Rejets définitifs, exports CSV vers l'agence (« Rejected Exports », « Export Rejected Entries »). Le journal d'export masque les données sensibles. |
| ▸ Configuration | Settings, 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.
Les 8 cartes indicateurs de la rangée supérieure, dans l'ordre où elles apparaissent à l'écran :
| Carte | Couleur / icône | Ce qu'elle compte |
|---|---|---|
| AVERTISSEMENT | Orange, 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). |
| QUARANTAINE | Rouge, 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 ENTRIES | Vert, 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ÉES | Bleu 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ÉS | Rouge/rose, icône document | Nombre 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ÉÉS | Bleu, 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ÉÉS | Bleu, icône cycle ⟳ | Nombre d'abonnements (objet natif sale.order récurrent) générés automatiquement. |
| DURÉE MOY. DE TRAITEMENT | Vert, 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 :
| Bloc | Contenu |
|---|---|
| Top Quarantine Rules | Tableau à 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ées | Graphique 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).
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.
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 ».
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é | |||
| Champ | Exemple observé | Origine | Explication |
|---|---|---|---|
| Nom | Sofia Zerouali | Calculé | Nom complet affiché, recomposé à partir de Firstname + Lastname. |
| Firstname / Lastname | Sofia / Zerouali | CSV | Prénom et nom séparés, tels que fournis par le fichier source. |
| Maiden Name | (vide) | CSV optionnel | Nom de naissance, utile pour les femmes mariées dans certains registres. |
| Preferred Name | (vide) | CSV optionnel | Nom d'usage préféré du donateur si différent de l'état civil. |
| sofia.zerouali115@example.test | CSV | Adresse email — sert aussi à la détection de doublon (même email = donateur déjà en base). | |
| Téléphone / Mobile | (vide) / 32487111253 | CSV | Deux champs séparés fixe/mobile. |
| Language | fr_BE | CSV | Langue de communication du donateur, au format code langue Odoo. |
| Fichier d'import | AD-Date future.csv (lien) | Système | Lien cliquable vers la fiche sdd.import.file d'origine — traçabilité complète de la provenance de chaque ligne. |
| Partenaire | Zerouali Sofia (lien, vert) | Système | Lien 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é. |
| Birthdate | 12 août 1970 | CSV | Date de naissance. |
| Gender | female | CSV | Genre déclaré. |
| Nationality (code) | (vide) | CSV optionnel | Code pays de nationalité. |
| National ID Number | (vide) | CSV optionnel | Numé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 optionnel | Lieu de naissance. |
| Is Company | ☐ décoché | CSV / calculé | Distingue un donateur particulier d'une personne morale. |
| Company Number (BCE) | (vide) | CSV optionnel | Numéro d'entreprise, uniquement pertinent si « Is Company » est coché. |
| Motif de rejet | (vide) | Système | Ne se remplit que si l'entrée a été rejetée manuellement (bouton Rejeter) ; voir un exemple rempli en G.7. |
| Adresse | |||
| Rue | Rue des Tests 25 | CSV | Libellé de rue. |
| House Number | 25 | CSV | Numéro de rue, séparé du libellé — nécessaire pour les exports imprimeur (VCS, publipostage). |
| Box Number | A | CSV optionnel | Numéro de boîte aux lettres. |
| Code postal | 1000 | CSV | Code postal — peut être une règle « Required Fields ». |
| Ville | Bruxelles | CSV | Localité. |
| Pays (code) | BE | CSV | Code pays ISO. |
| Données SDD | |||
| IBAN | BE93115011878567 | CSV | Compte bancaire du donateur — validé par la règle « Valid IBAN » (format + clé de contrôle SEPA). |
| BIC | GEBABEBB | CSV | Code BIC de la banque, généralement dérivé de l'IBAN. |
| Montant | 13,50 | CSV | Montant du don récurrent, en euros. |
| Code mandat | DRDA2026900015 | CSV / 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 SDD | SUB-M | CSV | Code 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 signature | 1 juil. 2027 | CSV | Date 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 optionnel | Date 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 :
| Objets créés (une fois l'entrée Terminée) | |||
| Compte bancaire | BE93 1150 1187 8567 (lien) | Système | Lien vers l'enregistrement natif res.partner.bank créé par le pipeline. |
| Mandat SEPA | 13050922222231072026 (lien) | Système | Lien vers le mandat natif sdd.mandate — voir la fiche détaillée en G.9. |
| Abonnement | S04341 (lien) | Système | Lien vers l'abonnement sale.order récurrent créé — voir G.9. |
| Jeton de paiement | BE93 1150 1187 8567 (lien) | Système | Lien 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 :
- 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.
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 :
| Bouton | Visible quand | Effet |
|---|---|---|
| Revalider | Quarantaine | Efface 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 traitement | Quarantaine | Bouton 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. |
| Rejeter | Tous 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 support | Tous 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.
| Colonne / champ | Exemple | Explication |
|---|---|---|
| Nom | AD_Manual testing.csv | Nom du fichier tel que déposé dans le dossier surveillé. |
| Source fournisseur | Supplier_01_AD | Sous-dossier / fournisseur d'origine — permet de filtrer et regrouper par agence. |
| Statut | Terminé | Un des cinq états : Brouillon, En cours de traitement, Terminé, Partiel, Erreur (voir barre de statut ci-dessous). |
| Date d'import | 31 juil., 23:22 | Horodatage du dépôt / traitement du fichier. |
| Total de lignes | 15 | Nombre total de lignes lues dans le fichier. |
| Lignes valides | 15 | Nombre de lignes ayant atteint l'état Terminé. |
| Lignes en erreur / Doublons | 0 / 0 | Décompte des lignes en quarantaine et des lignes détectées comme doublons. |
| Durée (s) | 3,98 | Temps 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 :
| Élément | Détail |
|---|---|
| Barre de statut | Brouillon → 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 statistiques | Entré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ête | Nom, Source fournisseur, Date d'import, Lignes valides, Durée (s) — mêmes champs que la vue liste, présentés en formulaire. |
| Onglet Entrées | Tableau 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.
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.
| Champ | Exemple observé | Explication |
|---|---|---|
| Nom / Source fournisseur / Date d'import | AD-Date Antérieure.csv / Supplier_01_AD / 31 juil., 23:22 | Identiques en logique aux champs de l'Historique des fichiers. |
| Lignes valides | 0 | Toujours nul par définition pour un fichier en erreur. |
| Durée (s) | 00:02 | Le 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-256 | e5e167d930dd312218574bc7e03024137a24d6157ffaad9786b171981fe07171 | Champ 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ées | 1 ligne, Mehdi Fassi, statut Quarantaine | Mê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. |
- « 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.
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.
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 :
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.
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.
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 :
| Élément | Dé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 rejet | Reprend le même texte que le bandeau, cette fois comme valeur de champ consultable dans les vues liste et les rapports. |
| Chatter | Trace 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 :
| Section / champ | Dé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 rejet | Rejection Date — From / Rejection Date — To, avec sélecteur calendrier intégré (voir capture ci-dessous). |
| Source | Supplier — 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. |
| Boutons | Exporter en CSV (violet) / Annuler. |
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'import | Configuration ▸ 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 fournisseur | Configuration ▸ 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 validation | Configuration ▸ 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 automatiques | Journal 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 facturation | Le 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 RGPD | Cochez 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 mandats | Dossier 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érentiels | Motifs 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.
| Sous-menu | Contenu |
|---|---|
| Settings | Ré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 validation | Les règles qui déterminent si une entrée passe ou part en quarantaine. Détaillé en G.8.2. |
| CSV Field Mapping | Correspondance entre les colonnes du fichier de chaque fournisseur et les champs internes du module. Détaillé en G.8.3. |
| Archived Imports | Fichiers du dossier processed\ (imports réussis). Détaillé en G.8.4. |
| Motifs de rejet | Référentiel des motifs proposés dans l'assistant Rejeter. Détaillé en G.8.5. |
| Quarantine Bypass Reasons | Ré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 Import Folder | ||
| Champ / bouton | Exemple observé | Explication |
|---|---|---|
| Chemin | /var/lib/odoo/ngo/sdd | Dossier 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 folders | Blue_Import, Supplier_01_AD, Supplier_02_MDM | Liste en lecture seule des sous-dossiers physiquement présents sous le chemin ci-dessus. |
| Mandate PDF Folder | ||
| Chemin | /var/lib/odoo/ngo/sdd/mandats | Dossier où déposer les PDF de mandats signés. |
| Test | — | Même vérification que pour le dossier d'import. |
| Règle de nommage | ABC123.pdf | Chaque 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 Processing | Activé (vert) | Bascule générale : sans elle, aucun fichier n'est traité automatiquement, seul le bouton « Import from Folder » fonctionne. |
| Cron Frequency (minutes) | 1 | Intervalle 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 Journal | SDD | Journal 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 / 3rd | 4 / 0 / 0 | Jusqu'à 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. |
- 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.
ℹ 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 Files | Activé (vert) | Purge automatique programmée des fichiers CSV du dossier processed\ après leur délai de rétention. |
| Retention Period (days) | 1 | Nombre 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 :
| Mandate PDF Sync | ||
| Enable Mandate PDF Sync | Activé (vert) | Active la synchronisation périodique décrite ci-dessous. |
| Sync Frequency (minutes) | 1 | Intervalle entre deux passages du scan de synchronisation. |
| Sync Now | — | Déclenche une synchronisation immédiate, sans attendre le prochain cycle. |
| UTM — Marketing Attribution | ||
| Marketing Medium | Street Marketing | Médium (medium_id natif Odoo) appliqué à chaque abonnement créé par l'import SDD. Laisser vide pour n'en définir aucun. |
| Source = Imported File Name | Activé (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 :
| Supported import formats | |
| Aspect | Accepté |
|---|---|
| File type | .csv uniquement — tout autre type de fichier est déplacé vers le dossier error |
| Encoding | UTF-8 (avec ou sans BOM) ou Latin-1 (ISO-8859-1) |
| Separator | ; (recommandé), , ou tabulation — auto-détecté |
| Quotes | Guillemets doubles " optionnels |
| Header | Première ligne = noms de colonnes (associés via CSV Field Mapping) |
| Amounts | 12.50 ou 12,50 (point ou virgule) |
| Dates | YYYY-MM-DD, DD/MM/YYYY ou DD-MM-YYYY |
| Shortcuts | |
| Open Validation Rules | Raccourci direct vers G.8.2 ci-dessous. |
| Configure Recurring Plans | Raccourci 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ègle | Type | Champs / Plans concernés |
|---|---|---|
| Required Fields | Champs requis | Montant, Fréquence SDD, Language, Rue, Code postal (tous « Entrée SDD ») |
| National Number | Field check | Validation du numéro de registre national |
| Amount range (1–10 000) | Field check | Bornes acceptables du montant du don |
| Valid IBAN | IBAN requis et valide | Format + clé de contrôle SEPA |
| Allowed Frequency | Fréquences autorisées | Mensuel, Unique Gift, Quarterly Gift, Semi-Annual Gift, Bimonthly Gift, Annuel |
| IBAN required | Field check | Présence obligatoire de l'IBAN |
| Signature date range | Field check | Plage de dates acceptable pour la signature du mandat |
| Unique mandate code | Unique mandate code | Unicité 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 :
| Champ | Valeur observée | Rôle |
|---|---|---|
| Type de règle | Fréquences autorisées | Dé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é | Bloquant | Menu déroulant — l'autre valeur possible est « Avertissement » (non bloquant, alimente la liste Warning plutôt que Quarantaine). |
| Séquence | 13 | Ordre 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 · Annuel | Liste 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 :
Ouvrir un mapping (exemple « Blue_Import ») affiche l'outil de correspondance colonne par colonne :
| Élément | Détail |
|---|---|
| Actif | Bascule on/off — un mapping désactivé ne peut plus être utilisé, sans être supprimé. |
| Préconfig par défaut | Non destructif — ajoute les champs standard manquants tout en conservant les ajustements déjà faits. |
| Réinitialiser les valeurs par défaut | Destructif — efface tout le mapping et recharge le modèle complet (une confirmation est demandée). |
| Tableau Champ interne / Colonne(s) CSV | Chaque 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 :
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é).
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
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
| Colonne | Explication |
|---|---|
| Motif | Libellé 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ées | Motifs 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 ». |
| Helpdesk | Case à 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. |
| Actif | Interrupteur 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 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 ».
| Champ | Exemple observé | Explication |
|---|---|---|
| Client | Henry Louis | Lien vers le contact créé par le pipeline SDD Automation. |
| IBAN | BE07 9991 1234 5066 | Compte bancaire lié au mandat. |
| Régime SDD | CORE | Schéma SEPA — CORE (particuliers) ou B2B (entreprises), voir thème 2. |
| Prénotification | 2 jour(s) | Délai de préavis avant le premier prélèvement, exprimé en jours. |
| Mandate Code | DRDA2026700010 | Même code que celui affiché sur la fiche d'entrée SDD d'origine — la traçabilité est directe. |
| Identifiant | 0016771480803082026 | Référence unique de mandat (RUM) utilisée dans les fichiers SEPA. |
| Date de début / Date de fin | 1 août / (vide) | Mandat ouvert, sans date de fin programmée. |
| Société | NGO Consortium | Société Odoo à laquelle le mandat est rattaché. |
| Statut | Actif | Barre de statut native Brouillon → Actif ; boutons « Résilier » / « Révoquer » disponibles pour la gestion du cycle de vie. |
| Smart buttons | Perceptions (1) · Transactions (0) | Perceptions = nombre de prélèvements déjà effectués sur ce mandat ; Transactions = mouvements de paiement associés. |
| Champ | Exemple observé | Explication |
|---|---|---|
| Client + adresses | Dupont Emma, Avenue des Tilleuls 11 1, 1000 Bruxelles | Reprend l'adresse décomposée saisie sur l'entrée SDD d'origine. |
| Date de la commande | 3 août, 09:48 | Horodatage de création de l'abonnement par le pipeline. |
| Plan récurrent | Mensuel, 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 facture | 3 sept. | Date de la prochaine échéance de facturation, calculée selon la logique détaillée en G.8.1. |
| Conditions de paiement | Immédiat | Mode de règlement associé au client. |
| Statut | Devis → 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 buttons | Factures clients (1) · MRR 15,50 € · UTM Dimensions (0) | MRR = Monthly Recurring Revenue, calculé automatiquement par Odoo à partir des lignes récurrentes. |
| Chatter | Historique 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. |
- 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
- 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.
- 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éé.
- Traitez la quarantaine (procédure dédiée ci-dessous) puis les doublons.
- 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.
- 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
- Ouvrez l'entrée depuis ▸ Quarantine : le motif indique la règle déclenchée et le champ concerné.
- Cas corrigeable (faute de frappe IBAN, date mal saisie) : corrigez le champ sur l'entrée puis Revalidate — elle repasse toutes les règles.
- 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é.
- 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.
- Cas définitif : Reject avec motif, puis Confirm Rejection. L'entrée rejoint la file d'export vers l'agence.
Arbitrer un doublon
- 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.
- 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.
- En cas de doute, escaladez : mieux vaut un ticket qu'un donateur dédoublé — ou pire, fusionné à tort.
Exporter les rejets vers une agence
- ▸ Rejections ▸ Export Rejected Entries : filtrez par fournisseur et période.
- Exporter en CSV : le fichier part avec les motifs ; IBAN et emails sont masqués dans le journal d'export (RGPD).
- Archivez l'échange : le taux de rejet par agence est un indicateur contractuel précieux.
Ajouter un nouveau fournisseur
- Créez le sous-dossier FTP à son nom et remettez-lui ses accès.
- Créez son mapping dans CSV Field Mapping à partir d'un fichier d'exemple.
- 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 semaine | Une 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 progressives | Introduisez 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 intelligemment | Le 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 pas | Mauvais sous-dossier ? Extension inattendue ? Cron de scan passé ? Vérifiez File History puis Import Errors. |
| Toute la vague part en quarantaine | Une 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 rien | Regardez 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…). |
SDD Automation — enrôlement en masse des donateurs réguliers
bs_sdd_automationEn 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 validation | Contrô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 fournisseur | La 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 ▸ Dashboard | La 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 Cockpit | Le 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 Errors | Historique 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. |
| ▸ Duplicates | File d'arbitrage des doublons : chaque entrée montre le ou les candidats existants (nom, IBAN, adresse) pour décider en connaissance de cause. |
| ▸ Quarantine / ▸ Warning | Les bloquées avec motif, et les passées avec avertissement (à surveiller sans urgence). |
| ▸ Rejections | Rejets définitifs, exports CSV vers l'agence (« Rejected Exports », « Export Rejected Entries »). Le journal d'export masque les données sensibles. |
| ▸ Configuration | Settings, 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.
Les 8 cartes indicateurs de la rangée supérieure, dans l'ordre où elles apparaissent à l'écran :
| Carte | Couleur / icône | Ce qu'elle compte |
|---|---|---|
| AVERTISSEMENT | Orange, 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). |
| QUARANTAINE | Rouge, 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 ENTRIES | Vert, 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ÉES | Bleu 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ÉS | Rouge/rose, icône document | Nombre 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ÉÉS | Bleu, 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ÉÉS | Bleu, icône cycle ⟳ | Nombre d'abonnements (objet natif sale.order récurrent) générés automatiquement. |
| DURÉE MOY. DE TRAITEMENT | Vert, 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 :
| Bloc | Contenu |
|---|---|
| Top Quarantine Rules | Tableau à 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ées | Graphique 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).
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.
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 ».
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é | |||
| Champ | Exemple observé | Origine | Explication |
|---|---|---|---|
| Nom | Sofia Zerouali | Calculé | Nom complet affiché, recomposé à partir de Firstname + Lastname. |
| Firstname / Lastname | Sofia / Zerouali | CSV | Prénom et nom séparés, tels que fournis par le fichier source. |
| Maiden Name | (vide) | CSV optionnel | Nom de naissance, utile pour les femmes mariées dans certains registres. |
| Preferred Name | (vide) | CSV optionnel | Nom d'usage préféré du donateur si différent de l'état civil. |
| sofia.zerouali115@example.test | CSV | Adresse email — sert aussi à la détection de doublon (même email = donateur déjà en base). | |
| Téléphone / Mobile | (vide) / 32487111253 | CSV | Deux champs séparés fixe/mobile. |
| Language | fr_BE | CSV | Langue de communication du donateur, au format code langue Odoo. |
| Fichier d'import | AD-Date future.csv (lien) | Système | Lien cliquable vers la fiche sdd.import.file d'origine — traçabilité complète de la provenance de chaque ligne. |
| Partenaire | Zerouali Sofia (lien, vert) | Système | Lien 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é. |
| Birthdate | 12 août 1970 | CSV | Date de naissance. |
| Gender | female | CSV | Genre déclaré. |
| Nationality (code) | (vide) | CSV optionnel | Code pays de nationalité. |
| National ID Number | (vide) | CSV optionnel | Numé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 optionnel | Lieu de naissance. |
| Is Company | ☐ décoché | CSV / calculé | Distingue un donateur particulier d'une personne morale. |
| Company Number (BCE) | (vide) | CSV optionnel | Numéro d'entreprise, uniquement pertinent si « Is Company » est coché. |
| Motif de rejet | (vide) | Système | Ne se remplit que si l'entrée a été rejetée manuellement (bouton Rejeter) ; voir un exemple rempli en G.7. |
| Adresse | |||
| Rue | Rue des Tests 25 | CSV | Libellé de rue. |
| House Number | 25 | CSV | Numéro de rue, séparé du libellé — nécessaire pour les exports imprimeur (VCS, publipostage). |
| Box Number | A | CSV optionnel | Numéro de boîte aux lettres. |
| Code postal | 1000 | CSV | Code postal — peut être une règle « Required Fields ». |
| Ville | Bruxelles | CSV | Localité. |
| Pays (code) | BE | CSV | Code pays ISO. |
| Données SDD | |||
| IBAN | BE93115011878567 | CSV | Compte bancaire du donateur — validé par la règle « Valid IBAN » (format + clé de contrôle SEPA). |
| BIC | GEBABEBB | CSV | Code BIC de la banque, généralement dérivé de l'IBAN. |
| Montant | 13,50 | CSV | Montant du don récurrent, en euros. |
| Code mandat | DRDA2026900015 | CSV / 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 SDD | SUB-M | CSV | Code 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 signature | 1 juil. 2027 | CSV | Date 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 optionnel | Date 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 :
| Objets créés (une fois l'entrée Terminée) | |||
| Compte bancaire | BE93 1150 1187 8567 (lien) | Système | Lien vers l'enregistrement natif res.partner.bank créé par le pipeline. |
| Mandat SEPA | 13050922222231072026 (lien) | Système | Lien vers le mandat natif sdd.mandate — voir la fiche détaillée en G.9. |
| Abonnement | S04341 (lien) | Système | Lien vers l'abonnement sale.order récurrent créé — voir G.9. |
| Jeton de paiement | BE93 1150 1187 8567 (lien) | Système | Lien 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 :
- 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.
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 :
| Bouton | Visible quand | Effet |
|---|---|---|
| Revalider | Quarantaine | Efface 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 traitement | Quarantaine | Bouton 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. |
| Rejeter | Tous 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 support | Tous 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.
| Colonne / champ | Exemple | Explication |
|---|---|---|
| Nom | AD_Manual testing.csv | Nom du fichier tel que déposé dans le dossier surveillé. |
| Source fournisseur | Supplier_01_AD | Sous-dossier / fournisseur d'origine — permet de filtrer et regrouper par agence. |
| Statut | Terminé | Un des cinq états : Brouillon, En cours de traitement, Terminé, Partiel, Erreur (voir barre de statut ci-dessous). |
| Date d'import | 31 juil., 23:22 | Horodatage du dépôt / traitement du fichier. |
| Total de lignes | 15 | Nombre total de lignes lues dans le fichier. |
| Lignes valides | 15 | Nombre de lignes ayant atteint l'état Terminé. |
| Lignes en erreur / Doublons | 0 / 0 | Décompte des lignes en quarantaine et des lignes détectées comme doublons. |
| Durée (s) | 3,98 | Temps 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 :
| Élément | Détail |
|---|---|
| Barre de statut | Brouillon → 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 statistiques | Entré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ête | Nom, Source fournisseur, Date d'import, Lignes valides, Durée (s) — mêmes champs que la vue liste, présentés en formulaire. |
| Onglet Entrées | Tableau 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.
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.
| Champ | Exemple observé | Explication |
|---|---|---|
| Nom / Source fournisseur / Date d'import | AD-Date Antérieure.csv / Supplier_01_AD / 31 juil., 23:22 | Identiques en logique aux champs de l'Historique des fichiers. |
| Lignes valides | 0 | Toujours nul par définition pour un fichier en erreur. |
| Durée (s) | 00:02 | Le 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-256 | e5e167d930dd312218574bc7e03024137a24d6157ffaad9786b171981fe07171 | Champ 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ées | 1 ligne, Mehdi Fassi, statut Quarantaine | Mê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. |
- « 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.
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.
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 :
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.
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.
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 :
| Élément | Dé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 rejet | Reprend le même texte que le bandeau, cette fois comme valeur de champ consultable dans les vues liste et les rapports. |
| Chatter | Trace 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 :
| Section / champ | Dé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 rejet | Rejection Date — From / Rejection Date — To, avec sélecteur calendrier intégré (voir capture ci-dessous). |
| Source | Supplier — 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. |
| Boutons | Exporter en CSV (violet) / Annuler. |
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'import | Configuration ▸ 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 fournisseur | Configuration ▸ 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 validation | Configuration ▸ 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 automatiques | Journal 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 facturation | Le 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 RGPD | Cochez 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 mandats | Dossier 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érentiels | Motifs 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.
| Sous-menu | Contenu |
|---|---|
| Settings | Ré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 validation | Les règles qui déterminent si une entrée passe ou part en quarantaine. Détaillé en G.8.2. |
| CSV Field Mapping | Correspondance entre les colonnes du fichier de chaque fournisseur et les champs internes du module. Détaillé en G.8.3. |
| Archived Imports | Fichiers du dossier processed\ (imports réussis). Détaillé en G.8.4. |
| Motifs de rejet | Référentiel des motifs proposés dans l'assistant Rejeter. Détaillé en G.8.5. |
| Quarantine Bypass Reasons | Ré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 Import Folder | ||
| Champ / bouton | Exemple observé | Explication |
|---|---|---|
| Chemin | /var/lib/odoo/ngo/sdd | Dossier 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 folders | Blue_Import, Supplier_01_AD, Supplier_02_MDM | Liste en lecture seule des sous-dossiers physiquement présents sous le chemin ci-dessus. |
| Mandate PDF Folder | ||
| Chemin | /var/lib/odoo/ngo/sdd/mandats | Dossier où déposer les PDF de mandats signés. |
| Test | — | Même vérification que pour le dossier d'import. |
| Règle de nommage | ABC123.pdf | Chaque 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 Processing | Activé (vert) | Bascule générale : sans elle, aucun fichier n'est traité automatiquement, seul le bouton « Import from Folder » fonctionne. |
| Cron Frequency (minutes) | 1 | Intervalle 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 Journal | SDD | Journal 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 / 3rd | 4 / 0 / 0 | Jusqu'à 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. |
- 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.
ℹ 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 Files | Activé (vert) | Purge automatique programmée des fichiers CSV du dossier processed\ après leur délai de rétention. |
| Retention Period (days) | 1 | Nombre 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 :
| Mandate PDF Sync | ||
| Enable Mandate PDF Sync | Activé (vert) | Active la synchronisation périodique décrite ci-dessous. |
| Sync Frequency (minutes) | 1 | Intervalle entre deux passages du scan de synchronisation. |
| Sync Now | — | Déclenche une synchronisation immédiate, sans attendre le prochain cycle. |
| UTM — Marketing Attribution | ||
| Marketing Medium | Street Marketing | Médium (medium_id natif Odoo) appliqué à chaque abonnement créé par l'import SDD. Laisser vide pour n'en définir aucun. |
| Source = Imported File Name | Activé (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 :
| Supported import formats | |
| Aspect | Accepté |
|---|---|
| File type | .csv uniquement — tout autre type de fichier est déplacé vers le dossier error |
| Encoding | UTF-8 (avec ou sans BOM) ou Latin-1 (ISO-8859-1) |
| Separator | ; (recommandé), , ou tabulation — auto-détecté |
| Quotes | Guillemets doubles " optionnels |
| Header | Première ligne = noms de colonnes (associés via CSV Field Mapping) |
| Amounts | 12.50 ou 12,50 (point ou virgule) |
| Dates | YYYY-MM-DD, DD/MM/YYYY ou DD-MM-YYYY |
| Shortcuts | |
| Open Validation Rules | Raccourci direct vers G.8.2 ci-dessous. |
| Configure Recurring Plans | Raccourci 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ègle | Type | Champs / Plans concernés |
|---|---|---|
| Required Fields | Champs requis | Montant, Fréquence SDD, Language, Rue, Code postal (tous « Entrée SDD ») |
| National Number | Field check | Validation du numéro de registre national |
| Amount range (1–10 000) | Field check | Bornes acceptables du montant du don |
| Valid IBAN | IBAN requis et valide | Format + clé de contrôle SEPA |
| Allowed Frequency | Fréquences autorisées | Mensuel, Unique Gift, Quarterly Gift, Semi-Annual Gift, Bimonthly Gift, Annuel |
| IBAN required | Field check | Présence obligatoire de l'IBAN |
| Signature date range | Field check | Plage de dates acceptable pour la signature du mandat |
| Unique mandate code | Unique mandate code | Unicité 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 :
| Champ | Valeur observée | Rôle |
|---|---|---|
| Type de règle | Fréquences autorisées | Dé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é | Bloquant | Menu déroulant — l'autre valeur possible est « Avertissement » (non bloquant, alimente la liste Warning plutôt que Quarantaine). |
| Séquence | 13 | Ordre 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 · Annuel | Liste 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 :
Ouvrir un mapping (exemple « Blue_Import ») affiche l'outil de correspondance colonne par colonne :
| Élément | Détail |
|---|---|
| Actif | Bascule on/off — un mapping désactivé ne peut plus être utilisé, sans être supprimé. |
| Préconfig par défaut | Non destructif — ajoute les champs standard manquants tout en conservant les ajustements déjà faits. |
| Réinitialiser les valeurs par défaut | Destructif — efface tout le mapping et recharge le modèle complet (une confirmation est demandée). |
| Tableau Champ interne / Colonne(s) CSV | Chaque 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 :
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é).
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
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
| Colonne | Explication |
|---|---|
| Motif | Libellé 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ées | Motifs 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 ». |
| Helpdesk | Case à 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. |
| Actif | Interrupteur 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 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 ».
| Champ | Exemple observé | Explication |
|---|---|---|
| Client | Henry Louis | Lien vers le contact créé par le pipeline SDD Automation. |
| IBAN | BE07 9991 1234 5066 | Compte bancaire lié au mandat. |
| Régime SDD | CORE | Schéma SEPA — CORE (particuliers) ou B2B (entreprises), voir thème 2. |
| Prénotification | 2 jour(s) | Délai de préavis avant le premier prélèvement, exprimé en jours. |
| Mandate Code | DRDA2026700010 | Même code que celui affiché sur la fiche d'entrée SDD d'origine — la traçabilité est directe. |
| Identifiant | 0016771480803082026 | Référence unique de mandat (RUM) utilisée dans les fichiers SEPA. |
| Date de début / Date de fin | 1 août / (vide) | Mandat ouvert, sans date de fin programmée. |
| Société | NGO Consortium | Société Odoo à laquelle le mandat est rattaché. |
| Statut | Actif | Barre de statut native Brouillon → Actif ; boutons « Résilier » / « Révoquer » disponibles pour la gestion du cycle de vie. |
| Smart buttons | Perceptions (1) · Transactions (0) | Perceptions = nombre de prélèvements déjà effectués sur ce mandat ; Transactions = mouvements de paiement associés. |
| Champ | Exemple observé | Explication |
|---|---|---|
| Client + adresses | Dupont Emma, Avenue des Tilleuls 11 1, 1000 Bruxelles | Reprend l'adresse décomposée saisie sur l'entrée SDD d'origine. |
| Date de la commande | 3 août, 09:48 | Horodatage de création de l'abonnement par le pipeline. |
| Plan récurrent | Mensuel, 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 facture | 3 sept. | Date de la prochaine échéance de facturation, calculée selon la logique détaillée en G.8.1. |
| Conditions de paiement | Immédiat | Mode de règlement associé au client. |
| Statut | Devis → 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 buttons | Factures clients (1) · MRR 15,50 € · UTM Dimensions (0) | MRR = Monthly Recurring Revenue, calculé automatiquement par Odoo à partir des lignes récurrentes. |
| Chatter | Historique 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. |
- 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
- 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.
- 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éé.
- Traitez la quarantaine (procédure dédiée ci-dessous) puis les doublons.
- 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.
- 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
- Ouvrez l'entrée depuis ▸ Quarantine : le motif indique la règle déclenchée et le champ concerné.
- Cas corrigeable (faute de frappe IBAN, date mal saisie) : corrigez le champ sur l'entrée puis Revalidate — elle repasse toutes les règles.
- 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é.
- 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.
- Cas définitif : Reject avec motif, puis Confirm Rejection. L'entrée rejoint la file d'export vers l'agence.
Arbitrer un doublon
- 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.
- 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.
- En cas de doute, escaladez : mieux vaut un ticket qu'un donateur dédoublé — ou pire, fusionné à tort.
Exporter les rejets vers une agence
- ▸ Rejections ▸ Export Rejected Entries : filtrez par fournisseur et période.
- Exporter en CSV : le fichier part avec les motifs ; IBAN et emails sont masqués dans le journal d'export (RGPD).
- Archivez l'échange : le taux de rejet par agence est un indicateur contractuel précieux.
Ajouter un nouveau fournisseur
- Créez le sous-dossier FTP à son nom et remettez-lui ses accès.
- Créez son mapping dans CSV Field Mapping à partir d'un fichier d'exemple.
- 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 semaine | Une 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 progressives | Introduisez 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 intelligemment | Le 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 pas | Mauvais sous-dossier ? Extension inattendue ? Cron de scan passé ? Vérifiez File History puis Import Errors. |
| Toute la vague part en quarantaine | Une 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 rien | Regardez 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…). |