Se rendre au contenu

Nos 19 modules Odoo maison sont sur GitHub : voici ce qu'il y a dedans

Notre catalogue public, né de nos besoins internes : ce qui manquait dans Odoo Community, comment on l'a comblé, et pourquoi le code est sur GitHub plutôt que dans un tiroir

Mise à jour — août 2026 :
Ce catalogue s'appelle maintenant Symbifox et compte 109 modules plutôt que 19. Le dépôt a déménagé à github.com/Symbifox/odoo-modules, et la licence par défaut est passée à la BUSL-1.1 : l'usage interne en production reste gratuit, c'est la revente et l'hébergement pour des tiers qui demandent une entente écrite. Le texte ci-dessous décrit le catalogue d'avril 2026 et n'a pas été réécrit.


Dans cet article

TL;DR :
Au fil de nos années d'opération sur Odoo Community, on a accumulé 19 modules maison qu'on utilise chez Blue Fox et chez nos clients.
On en publie la plupart sur github.com/Symbifox/odoo-modules.
Chaque module est né d'un vrai besoin, pas d'un plan produit : intégration Nextcloud, conformité Loi 25, banque d'heures, minuteur timesheet, hébergement géré, recherche transverse, archive SMS et appels, et d'autres encore.
Nos clients héritent du catalogue : s'ils nous quittent demain, leur instance continue de tourner sur du code qu'ils peuvent faire maintenir par n'importe quel intégrateur.


Notre instance Odoo Community tourne avec 19 modules maison en production. Certains sont accessoires, d'autres font partie du cœur opérationnel de Blue Fox. On les a écrits un par un, au fil des besoins, parce qu'Odoo Community est immensément capable, mais que chaque organisation finit par buter sur les mêmes trois ou quatre manques.

À un moment, on s'est demandé pourquoi on gardait tout ça pour nous. La réponse courte : on ne le gardait pas volontairement, on n'avait juste pas pris le temps de publier proprement. C'est fait. Voici le tour du catalogue.


Pourquoi ouvrir le code

Blue Fox utilise quotidiennement des dizaines de modules libres : l'OCA, des projets communautaires, du code d'individus. C'est grâce à cet écosystème qu'on peut offrir Odoo Community à nos clients à un coût raisonnable. Rendre ce qu'on peut, c'est la contrepartie normale.

Il y a aussi une question de souveraineté client. Quand une organisation choisit Odoo Community avec nous, elle ne veut pas se retrouver captive d'un prestataire. Le code de tous nos modules est public : 37 sont sous LGPL-3, 5 sous AGPL-3, et les 67 autres sous BUSL-1.1, qui autorise l'usage interne en production sans frais et bascule en LGPL-3 quatre ans après la sortie de chaque version. Une instance cliente continue donc de tourner même si Blue Fox disparaît demain, et son équipe peut lire chaque ligne du code. Confier l'exploitation des modules BUSL à un autre prestataire demande par contre une entente écrite avec nous, d'ici 2030.

Dernier motif plus prosaïque : publier oblige à une meilleure hygiène. Un module destiné à GitHub, on le documente mieux, on le teste mieux, on nettoie les dépendances étranges. Les utilisateurs externes trouvent aussi des bogues qu'on n'aurait jamais vus depuis notre propre bulle.


Le pont Odoo ↔ Nextcloud

Trois modules qui font dialoguer Odoo avec Nextcloud en direct, sans passer par un middleware. On les a sortis parce que les solutions existantes reposaient souvent sur n8n ou Zapier, ce qui ajoute une dépendance externe pour une fonction que les protocoles standards (CardDAV, CalDAV, WebDAV) savent très bien faire.


Configuration de la synchronisation des contacts Odoo vers un carnet Nextcloud par CardDAV

contacts_nextcloud_sync.
Synchronise les contacts Odoo avec un carnet Nextcloud via CardDAV. La synchronisation est bidirectionnelle, avec détection de changements par ETag, filtrage par étiquette d'exclusion, récupération automatique en cas d'UID orphelin, et credentials chiffrés en base. Concrètement, vos contacts Odoo apparaissent dans l'app Contacts de votre téléphone, et les modifications remontent dans l'ERP sans qu'on y pense.


Liste des calendriers Nextcloud synchronisés dans les deux sens avec Odoo

calendar_nextcloud_sync.
Même pont, pour les calendriers. CalDAV standard, support des événements récurrents (RRULE), synchronisation incrémentale avec sync-token RFC 6578, et propagation par webhooks pour le temps réel. Les couleurs de calendrier sont préservées. Utile quand on veut voir ses rencontres Odoo dans Thunderbird ou sur iOS, ou l'inverse.


Document de la base de connaissances Odoo relié à Nextcloud par des boutons dédiés

bf_document_nextcloud_sync.
Sort les fichiers du disque Odoo pour les stocker sur Nextcloud. Odoo garde les métadonnées, la version et les flux de travail, mais le fichier vit sur NC. Ça permet de partager un document avec un client via lien Nextcloud protégé par mot de passe, depuis l'interface Odoo. Ça règle aussi le problème classique des pièces jointes qui font gonfler la base de données.


Gouvernance, conformité, Loi 25

Quatre modules où on a investi le plus de travail, parce que la conformité à la Loi 25 n'est pas optionnelle pour nos clients québécois. Deux d'entre eux ont une présentation corporative complète (pitch deck) qu'on partage avec les clients en amont d'un projet.


Tableau de bord de la base de connaissances : documents, révisions et expirations

project_knowledge_matrix.
Notre module le plus ambitieux. C'est un système complet de gestion des connaissances organisationnelles : documents versionnés avec matrice décisionnelle, registre des résolutions (CA et actionnaires), registre des administrateurs, calendrier de conformité annuel, coffre de credentials chiffrés, suivi de distribution et d'accusé de réception. Dix niveaux de maturité documentaire, générateur de PDF brandé, intégration au module projet d'Odoo. On l'utilise chez la plupart de nos clients PME pour structurer leur documentation interne sans qu'ils aient à choisir entre dix outils différents. Un pitch deck corporatif détaille l'approche quand on entame un mandat.


Tableau de bord des consentements Loi 25 : demandes, expirations et taux de preuve

privacy_consent.
L'outil Loi 25 de bout en bout : gestion des consentements avec préférences granulaires par canal, calendriers de conservation, registre de destruction documentaire (avec empreintes SHA256 immuables), évaluations d'anonymisation à trois critères, traitement du droit à l'oubli, intégration DocuSeal/LibreSign pour les signatures. Le registre de destruction est forensique : impossible de falsifier rétroactivement. Utilisé par nos clients qui ont des obligations sérieuses en matière de renseignements personnels. Pitch deck disponible également.


Tableau de bord Audit TI avec progression par client et répartition des statuts

audit_ti.
Gestion des audits de sécurité des fournisseurs TI, toujours dans l'optique Loi 25. Grille de 14 éléments par fournisseur, matrice client × fournisseur avec statuts d'évaluation, tableau de bord OWL avec KPI empilés, flux de travail en deux phases (En cours, Livré), suivi des watchpoints et impression batch de rapports PDF. C'est la mécanique qui produit les synthèses d'audit TI qu'on livre à nos clients, notamment dans le réseau des CPE.


Tableau de bord d'archive des SMS et appels dans Odoo, par mois

bf_sms_archive.
Archive des SMS et des journaux d'appels directement dans Odoo, avec recherche unifiée et association automatique aux contacts et tâches. Utile pour les organisations qui veulent une trace centralisée des communications mobiles : dans une perspective Loi 25, les canaux SMS doivent aussi pouvoir être documentés en cas de demande d'accès ou d'investigation. Un pitch deck accompagne le module, comme pour project_knowledge_matrix et privacy_consent.


Des petits gains quotidiens

Cinq modules qui ne paient pas de mine individuellement, mais qui ensemble changent l'expérience d'utiliser Odoo au jour le jour.


Fiche de banque d'heures client dans Odoo avec solde et rapports PDF ou Excel

bf_hour_bank.
Automatise la facturation au forfait avec banque d'heures. Par client, on configure les filtres (projet, société, produit). Le solde se calcule automatiquement : débits par timesheets, crédits par factures, ajustements manuels. Le rapport PDF/Excel comporte quatre onglets (timesheets, synthèse projet, synthèse mensuelle, heures facturables) et s'envoie automatiquement au client selon une cédule. Portail client en libre-service. Ça met fin aux négociations de fin de mois sur « combien il me reste d'heures ».


Minuteur de feuilles de temps dans la barre d'Odoo avec tâches récentes

bf_timesheet_timer.
Un minuteur OWL qui vit dans la barre système d'Odoo. Démarrage, pause, reprise, avec support multi-timers. Les 10 tâches récentes en tête de liste (favoris épinglés en premier). À l'arrêt, dialogue avec arrondi configurable (1, 5, 10 ou 15 minutes) et remplissages rapides de description. Raccourci clavier Ctrl+Shift+T. Indicateur visuel qui change de couleur selon la durée, pour rappeler qu'une tâche dure peut-être plus qu'elle ne devrait.


Icône de recherche universelle encadrée dans la barre système d'Odoo

bf_universal_search.
Recherche transverse via la palette de commandes (Ctrl+K puis *). Cherche simultanément dans les contacts, projets, tâches, services hébergés, documents, credentials, tickets helpdesk et événements. Détection dynamique des modules installés, donc pas de dépendance rigide. Respecte les permissions ORM : on ne voit que ce qu'on a le droit de voir. Fin des aller-retours entre menus.


Courriel quotidien Votre journée de Blue Fox avec météo et activités en retard

daily_todo_digest.
Envoie chaque matin à 4h un courriel récapitulatif : activités et tâches en retard ou dues aujourd'hui, grille des sept prochains jours, météo (emoji, température, précipitations) et une citation inspirante tirée d'un pool de 120. Heures affichées en America/Montreal. Brandé Blue Fox. Ça remplace la routine « j'ouvre Odoo pour savoir quoi faire aujourd'hui » par un survol direct dans la boîte courriel.


Avis par courriel qu'une tâche Odoo est débloquée et prête à reprendre

bf_task_unblock_notify.
Règle un irritant classique dans la gestion de projet : une tâche qui se débloque et qui reste invisible parce que son assigné n'est pas au courant. Le module détecte quand un bloqueur est complété (ou retiré de la liste), et notifie automatiquement les personnes assignées à la tâche nouvellement débloquée. Pipeline courriel standard, donc les préférences de notification de chaque utilisateur sont respectées.


Courriel et communication

Quatre modules autour de la gestion du courriel et de la prise de rendez-vous.


Tableau de bord des courriels dans Odoo : reçus, envoyés, catégories et principaux contacts

Fiche de courriel reçu dans Odoo avec statut Lu et actions Répondre ou Archiver

bf_email_management.
Ajoute une vue centralisée (envoyés + reçus) avec auto-catégorisation (Client, Interne, Fournisseur, Notification, Marketing), suivi du statut et métriques de temps de réponse. Tableau de bord OWL avec filtres de date, cartes KPI, top contacts, graphique de volume. Synchronisation incrémentale toutes les 5 minutes. Déduplication par Message-ID RFC 2822. Ça remplace partiellement l'ouverture constante d'un client mail séparé.


Fenêtre d'import de fichiers .eml dans le fil de discussion d'un document Odoo

bf_mail_import.
Bouton dans le fil de discussion (chatter) des documents Odoo : on dépose un ou plusieurs fichiers .eml, et ils s'intègrent dans l'historique comme s'ils étaient arrivés via Odoo. Tri chronologique avant import, déduplication par Message-ID, résolution automatique de l'auteur, threading par In-Reply-To. Pratique pour reconstituer l'historique d'un dossier quand les courriels initiaux sont arrivés ailleurs que dans l'ERP.


Webmail SnappyMail ouvert en fenêtre modale sans quitter Odoo

bf_webmail.
Le plus simple des 19 : une icône dans la barre système qui ouvre SnappyMail (ou n'importe quel webmail) en modale, sans quitter Odoo. URL configurable. Zéro persistance de données. Conçu pour ceux qui vivent dans Odoo et qui veulent un raccourci mental vers leur courriel sans changer d'onglet.



bf_appointment.
Étend resource_booking de l'OCA avec des pages publiques de prise de rendez-vous, détection automatique du fuseau horaire côté client, questions d'admission personnalisables, cédule d'envoi de courriels configurable (confirmation, rappel J-1, suivi, annulation), lien d'annulation via portail. On s'en sert pour nos propres prises de rendez-vous, en alternative auto-hébergée à Cal.com ou Calendly.


Exploitation interne

Trois modules pour l'exploitation de l'infrastructure et l'expérience quotidienne dans l'ERP.


Tableau de bord d'hébergement géré : disponibilité et temps de réponse par service

hosting_management.
Notre module d'hébergement géré, et la colonne vertébrale du service d'infogérance Blue Fox : cycle de vie des services (brouillon, actif, expiré), catalogue de logiciels avec vérification de versions (GitHub, Docker Hub, GitLab), contrôles de santé HTTP avec retry rapide, uptime, alertes courriel et ntfy, fenêtres de maintenance, surveillance des quotas de stockage, suivi des expirations de domaine et SSL, gabarits de maintenance par logiciel, intégration des sauvegardes avec vérification SHA256, courriels brandés au client. C'est ce qui nous permet de gérer tout notre parc de services hébergés sans perdre le fil.


Back-office Odoo en mode sombre, bouton lune dans la barre système

bf_dark_mode.
Un bouton soleil/lune dans la barre système qui bascule tout le back-office d'Odoo en mode sombre. Palette de gris Blue Fox (#2E3132, accent #29ABE2). Préférence persistante par cookie navigateur. Couverture exhaustive d'Odoo 18 : variables Bootstrap 5, vues, chatter, alertes, responsive mobile. Aucun impact quand désactivé. Les yeux en remercient les utilisateurs à 22h.


Tableau Fox Quest de gamification Odoo : niveau, XP, badges et classement

bf_gamification.
Une couche gamifiée sur Odoo, thème renard : 10 niveaux (de Renardeau à Kitsune, de 0 à 20 000 XP), règles XP configurables (timesheets, tâches, documents, hébergement, messages, helpdesk, activités, séries), 15 badges par défaut en six catégories, palmarès, popups temps réel via le bus Odoo, widget barre système (XP, série, progression), magasin de récompenses avec flux de réclamation. Pas essentiel à l'opération, mais ça injecte un peu de joie dans un ERP.

Si vous tournez déjà sur Odoo Community et qu'un de ces modules répond à un besoin, voici notre ordre d'essai recommandé :

  1. bf_timesheet_timer et daily_todo_digest : gains immédiats, risque nul.
  2. bf_hour_bank ou bf_universal_search, selon que votre irritant est la facturation au forfait ou la recherche transverse.
  3. contacts_nextcloud_sync ou calendar_nextcloud_sync si vous utilisez déjà Nextcloud.
  4. project_knowledge_matrix et privacy_consent : modules structurants, prévoir un accompagnement.


Les limites à connaître

Ces modules sont opinés : ils reflètent les flux de travail de Blue Fox et ceux de nos clients québécois. Certains champs, certaines étiquettes, certains comportements par défaut correspondent à notre réalité. Si la vôtre est différente, attendez-vous à faire des ajustements.

Plusieurs dépendent d'autres éléments de notre écosystème (Nextcloud, LibreSign, ntfy, SnappyMail). On a essayé d'isoler ces dépendances autant que possible, mais un module qui synchronise avec Nextcloud suppose évidemment que vous avez Nextcloud.

La branche active est 18.0, correspondant à Odoo 18 Community. La migration vers Odoo 19 (sortie en septembre 2025) et 20 (attendue en septembre 2026) se fera au fil du temps, mais on ne garantit pas la rétro-compatibilité automatique. Pas de support commercial officiel : le code est fourni tel quel sous sa licence respective. On répond aux issues GitHub quand on peut, ce n'est pas un engagement contractuel.


Chez Blue Fox

Quand un client choisit Odoo Community avec nous, il n'a pas à demander l'accès à nos modules : la plupart sont sur GitHub, clonables sans compte, et le code de nos exclusivités est fourni avec son déploiement. On les installe sur son instance quand c'est pertinent, on les documente dans sa matrice de connaissance, et on transfère la compréhension à son équipe interne.

C'est ce qu'on voudrait nous-mêmes d'un autre prestataire : la certitude que le code qu'on utilise reste accessible, même si la relation change. La propriété du savoir ne doit pas être l'otage d'un contrat de service. On considère que c'est une condition minimale pour une relation TI saine, pas un geste de générosité de notre part.

Un de ces modules résonne avec un irritant que vous avez? Explorons ça ensemble. Et si vous avez un besoin qui n'est couvert par aucun, c'est souvent le début d'un 20e module.


Sources

Nextcloud Deck : un tableau Kanban intégré pour gérer vos projets en équipe
Remplacer Trello, les post-its et les listes Excel par un outil de gestion de tâches déjà inclus dans votre Nextcloud