Se rendre au contenu
Guide NGO — SDD Automation
1

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

bs_sdd_automation

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

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

Concepts & objets

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

Accès & écrans

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

Configuration initiale (administrateur)

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

Procédures

Traiter la vague du jour

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

Résoudre une entrée en quarantaine

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

Arbitrer un doublon

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

Exporter les rejets vers une agence

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

Ajouter un nouveau fournisseur

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

Bonnes pratiques

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

Questions fréquentes

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

Résolution de problèmes

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