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 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.
📷 Capture à insérer — SDD Cockpit : liste des entrées avec les états en couleur
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é.
📷 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
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…).
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 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.
📷 Capture à insérer — SDD Cockpit : liste des entrées avec les états en couleur
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é.
📷 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
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…).