ERP Triple Bilan : Evaluation d'Odoo

Dans l’article "ERP Triple Bilan : Critères de choix d’un ERP", nous avons présenté les critères qu’HashBang souhaite utiliser pour évaluer et comparer des ERP opensources développés en Python, dans le but de choisir le plus adapté à notre projet d’ ERP Triple Bilan. Dans cet article, nous allons présenter notre évaluation de l’ERP Odoo selon ces critères.

Remarque : Au cours de notre évaluation d’Odoo, nous avons noté des critères que nous n’avions pas cités, et qui nous semblaient également intéressants à étudier. Nous avons donc ajouté les critères suivants :

  • La facilité d’installation
  • La facilité de déploiement
  • La gestion des permissions des utilisateurs
  • La cohérence entre les versions
  • La pratique des tests unitaires

Contexte de l’évaluation

Notre évaluation s’est portée sur Odoo Community, le logiciel opensource d’Odoo, en version 14. L’évaluation du développement s’est faite sur le fork OCB fait par l'Odoo Community Association.

L'entreprise Odoo

Odoo est une entreprise belge fondée par Fabien Pinckaers en 2002. Son siège se trouve en Belgique, et elle dispose de bureaux dans 7 autres pays. L'entreprise compte aujourd’hui plus de 950 employés, et estime que son ERP est utilisé par plus de 5 millions de personnes. Ses cibles sont d’abord les PME et TPE, mais l’ERP est également adapté à des entreprises plus grandes.

L’entreprise propose une édition opensource, Odoo Community, ainsi qu’une édition propriétaire sous forme d'abonnement, Odoo Enterprise, qui dispose de plus de fonctionnalités que le précédent (d’après l’entreprise, 20% des fonctionnalités sont exclusives à Odoo Enterprise). Sa stratégie est, en premier lieu, d’attirer le plus grand nombre d’utilisateurs possible avec Odoo Community, puis de convertir ces utilisateurs à Odoo Enterprise grâce aux fonctionnalités proposées par ce dernier. De plus, l'entreprise propose des services autour de son ERP, comme le déploiement, l’hébergement, le support ou la montée de version.

La communauté

Odoo dispose d’une communauté assez active. L’entreprise a mis en place un forum permettant de résoudre les problèmes des utilisateurs comme des développeurs. Il est très régulièrement utilisé, mais beaucoup de tickets restent sans réponses. De nombreux événements autour de l’outil Odoo sont également proposés, comme les conférences « Odoo Experience » qui présentent chaque nouvelle version d’Odoo.

De plus, une association s’est formée autour de l’outil Odoo Community : l'Odoo Community Association (OCA). C’est une association suisse dont le but est de promouvoir l’utilisation d’Odoo Community en proposant des modules et des fonctionnalités supplémentaires à l’outil de base. L’association se constitue d’environ 130 adhérents, et compte un millier de contributeurs. Ils interagissent entre eux en publiant du code sur le dépôt GitHub de l’OCA ou par des canaux de communication comme leur mailing list ou leur groupe Discord.

L’entreprise comme l’association mettent en avant les entreprises qui proposent des services autour de l’ERP Odoo.

Points positifs :

  • Les très nombreux outils proposés par les contributeurs de l'OCA qui permettent d’obtenir des fonctionnalités avancées et opensources

Points négatifs :

  • L’algorithme de recherche du forum qui ne permet pas de trouver les résultats pertinents
  • L’absence de réponse ou de solution à un très grand nombre de questions sur le forum
  • Le manque de modération du forum, qui ne permet pas d’en avoir une utilisation optimale

Les licences

Jusqu’à la version 8, Odoo était sous licence GNU Affero General Public License, une licence semblable à la GNU General Public License, obligeant en plus à toute personne hébergeant l'application de rendre disponible son code à ses utilisateurs. Cette licence ne permettant pas de créer d’outil propriétaire à partir d’Odoo, l’entreprise a souhaité changer de licence afin de pouvoir lancer sa version proprétaire : Odoo Enterprise. Odoo Community est donc, depuis 2015, sous licence GNU Lesser General Public License, qui est une licence libre permettant de créer des applications propriétaires à partir d’Odoo Community.

Pour les modules proposés par l'OCA, les statuts de l’association stipulent que tous les outils qu’ils conçoivent doivent être sous une licence respectant les principes énoncés par l’Open Source Initiative.

L'ergonomieSchéma ergonomie Odoo

Points positifs :

  • Le fait de pouvoir accéder à des outils d’autres modules dans le module courant, de pouvoir y faire des modifications qui seront prises en compte partout
  • Les tutoriels d’utilisation lorsque c’est la première fois qu’on utilise un module, qui permettent de le prendre très rapidement en main

Points négatifs :

  • Il y a beaucoup de chemins différents pour accéder à un même outil, ce qui est déroutant au début
  • L’outil calendrier n’est pas très lisible

Les fonctionnalités

Fonctionnalités Présente ? Community ou OCA ?
CRM Oui Community
Vente Oui Community
Facturation Oui Community
Comptabilité Oui OCA
Notes de frais Oui Community
Congés Oui Community
Fiches Oui Community
Planning prévisionnel Non
Gestion de projet Oui Community
Messagerie Oui Community
Point de vente Oui Community
Gestion des stocks Oui Divers modules de Community
Billeterie Oui Community

Odoo dispose d’une documentation très riche, divisée en thématiques et sous-thématiques. On y trouve une documentation d’utilisation, d’installation ou encore de développement, et chacune de ces documentations est constituée d’une vingtaine ou une trentaine de sections rangées dans des catégories. Les sections peuvent être de différents types : tutoriels, explications théoriques, liste de commandes, etc. Les documentations de toutes les versions antérieures sont disponibles. Les explications sont illustrées par un grand nombre de captures légendées. Enfin, si une section est obsolète, elle présentera un message d’avertissement au début de la section.

Points positifs :

  • La très grande richesse des informations données, la complétude de la documentation
  • L’explication du fonctionnement et de l’architecture d’Odoo dans les tutoriels
  • Des captures très précises, bien légendées

Points négatifs :

  • Des informations ne se trouvent parfois pas aux bons endroits (des informations à la fin du tutoriel alors qu’elles seraient beaucoup plus utiles au début)
  • La documentation ne fait pas la différence entre Odoo Community et Odoo Enterprise, on ne peut donc pas savoir si la fonctionnalité présentée est disponible sur Odoo Community ou non

Les technologies utilisées

Pour gérer ses bases de données, Odoo utilise PostgreSQL, un gestionnaire de bases de données relationnelles libre. Il utilise également sa propre API d’Object-Relational Mapping (ORM), qui permet, à la place de manipuler des tables et de faire des requêtes SQL, de manipuler des classes et faire appel à des fonctions Python pour interagir avec la base de données. Pour développer son interface graphique, Odoo utilise son propre framework : Odoo Web Library (OWL). C’est un framework permettant de développer et de maintenir le client web Odoo, et répondant spécifiquement aux besoin d’Odoo, notamment au niveau de son architecture particulière.

L'architecture

Odoo possède une architecture dite multi-tenant : pour une même instance d’Odoo, il est possible d’avoir plusieurs bases de données et de sélectionner quelle base de données on souhaite utiliser. C’est une fonctionnalité qui peut être très utile pour héberger les données de plusieurs entreprises avec la même instance.

Odoo est composé de ce qu’on appelle des « modules », ou addons. Un module est un outil d’Odoo ayant un rôle spécifique dans l’application, par exemple le module de gestion de projet. Tous ces modules, s'ils sont installés sur la même base de données, peuvent interagir et partager des données.

Chaque module a son propre dossier dans l’architecture, et tous les modules sont constitués de ce qu’on appelle des « modèles » et des « vues ». Les modèles sont les classes ORM qui sont déclarées dans des fichiers python, chaque modèle correspond donc à une nouvelle table dans la base de données. Les vues sont les fichiers XML qui codent l’interface utilisateur. Ce sont les fichiers dans lesquels des instances des modèles sont utilisées, et dans lesquels sont instanciés tous les boutons, menus, et autres éléments graphiques disponibles sur Odoo. Chaque module dispose également d’un fichier de sécurité permettant de gérer les permissions d’accès à chaque modèle.

Points positifs :

  • Possibilité de créer un module dans un dossier à part, sans avoir à toucher au code de base d’Odoo
  • Possibilité d’interagir avec et d’hériter de modèles présents dans des modules de base d’Odoo depuis un module custom

Les API

Il est possible d'accéder aux données de son instance Odoo en tant qu'API depuis une autre application utilisant le protocole XML-RPC. La documentation développeur présente un tutoriel permettant de se connecter à l'API d'Odoo depuis des applications dans divers langages. Cependant, le tutoriel n'existe pour les applications utilisant le langage Javascript, un langage pourtant répandu dans les applications web.

Il est également possible d'accéder aux données de son instance Odoo en utilisant cette API grâce aux librairies communautaires Odooly et OdooRPC, ce qui permet par exemple manipuler les données de manière plus libre que ce que l'interface permet.

L'installation

Il est possible d’installer Odoo de plusieurs manières différentes : la démo en ligne, l’image Docker, l’installation par paquets Linux et le clonage git. Mais une seule permet d’avoir accès au code de base et de pouvoir y ajouter des modules custom ou des modules proposés par l'OCA : l’installation par clonage git. Chaque installation est assez simple à faire et très bien expliquée, malgré quelques indications parfois au mauvais endroit dans la documentation.

Points positifs :

  • La facilité d’installation pour toutes les manières proposées
  • La clarté des explications de la documentation

Points négatifs :

  • Quelques indications à aller chercher dans des endroits non intuitifs

La customisation

Différents tutoriels sont disponibles dans la documentation développeur afin de pouvoir customiser son instance d’Odoo, comme par exemple le tutoriel « Building a module » qui permet d’apprendre à créer et intégrer dans son instance Odoo un module custom, ou encore le tutoriel « Theme tutorial » qui permet de créer son propre thème dans Odoo.

En créant un module custom, il est possible d’exploiter tous les éléments graphiques mis à disposition par l’API d’Odoo. Il est également possible d'hériter de modèles venant d'autres modules, et de leur apporter des modifications pour les adapter au module que l’on souhaite créer. Enfin, créer un thème permet de manipuler le frontend général d’Odoo.

Points positifs :

  • La grande facilité de création de nouveaux modules qui peuvent interagir avec les autres
  • La grande diversité d’éléments graphiques mis à disposition par Odoo pour customiser le frontend de son module
  • La possibilité de gérer les permissions d’accès sur chaque modèle du module
  • La possibilité de customiser le frontend général grâce à la création de thème

Points négatifs :

  • Il existe un très grand nombre de composants graphiques et d'API ce qui peut rendre perdre une personne dans son apprentissage du développement avec Odoo.

La gestion de permissions des utilisateurs

Il est possible de gérer les permissions d’accès, de lecture, d’écriture, etc., de chaque utilisateur pour telle ou telle fonctionnalité, que ce soit côté développement ou directement dans l’application Odoo en tant qu’administrateur. Il est aussi possible de créer des modèles de permissions à appliquer à plusieurs utilisateurs.

Cependant il n’est pas du tout conseillé d'ajouter des permissions nécessaires à un module par l’interface. En effet, cette donnée n’est pas inscrite dans la base de code, ce qui fait qu’au moment de faire une installation du module sur une autre instance, la permission ne sera pas retrouvée. Il est donc conseillé de faire la création des permissions via la base de code, ce qui a par ailleurs l’avantage de pouvoir être documenté et d’être réutilisable pour d’autres instances.

Points positifs :

  • Pouvoir faire des groupes de permission
  • Pouvoir gérer les permissions et groupes de permission par le code

Points négatifs :

  • Les groupes de permissions créés dans l'interface ne peuvent pas être exportés puis importés dans une autre instance d'Odoo

Les tests unitaires

Le développement de modules sur Odoo est tout à fait compatible avec l’utilisation de tests unitaires python . Odoo rajoute par ailleurs des fonctions de tests, en particulier des fonctions qui permettent de tester des modules dans leur ensemble, ce qui est plus puissant que de ne tester que les fonctions définies dans le module.

Si on souhaite développer des modules pour l'OCA, il est conseillé, pour les modules non triviaux, d’écrire des tests unitaires avant de soumettre son module. De plus, il existe des protocoles de test assez élaborés conçus par l'OCA afin que, à chaque pull request, l’ajout soit automatiquement testé, et rejeté s’il échoue aux tests. Cela permet de mieux protéger le dépôt d’éventuelles détériorations.

Points positifs :

  • Les tests automatisés pour protéger le dépôt d’OCA
  • Les fonctions de tests supplémentaires pour tester un module dans son ensemble

Le déploiement

La documentation de développement comporte un tutoriel permettant de déployer une instance d’Odoo sur ses propres serveurs.

Points positifs :

  • Les migrationsTrès bien expliqué et très simple à faire

Les migrations

L'entreprise Odoo ne propose pas d'outil de migration opensource pour Odoo Community, le service de montée de version est un service payant qui est inclu dans l'abonnement à Odoo Enterprise. Cela fait d'Odoo Community un logiciel libre "piégé", au sens où il dépend d'un logiciel propriètaire dans son cycle de vie.

Cependant, l'OCA a créé un outil de migration opensource : OpenUpgrade. Il permet de faire une migration d’Odoo d’une version à sa version suivante. Il est cependant extrêmement dépendant de l’investissement de la communauté : si un module qu’on utilise n’est pas mis à jour, c’est à nous de le faire et de partager cette mise à jour à la communauté. Il y a donc naturellement un travail de migration assez conséquent.

Points positifs :

  • L’existence d’un outil libre pour faire ses migrations

Points négatifs :

  • Odoo ne propose pas d'outil de migration pour Odoo Community, ce qui complique grandement son utilisation à long terme
  • Ne pas pouvoir faire de sauts de versions avec OpenUpgrade, il faut faire toutes les migrations intermédiaires
  • Faire à la main la mise à jour de modules utilisés s’ils ne le sont pas encore (en particulier pour ses modules customs)

La cohérence entre les versions

Lors de la réalisation d’un test utilisateur des versions 12 et 14 d’Odoo, nous avons pu constaté que beaucoup de modules gardaient une bonne cohérence dans l’interface : les mêmes boutons étaient présents, souvent au même endroit ou presque. L’interface générale de l’outil était très ressemblante à celle de la version précédente.

Cependant, depuis qu'Odoo est passé en licence LGPL, on peut observer des disparitions de certains modules d'Odoo Community au profit d'Odoo Enterprise, comme par exemple le module de comptabilité, qui était présent dans la version opensource jusqu’à la version 12. De plus, ces disparitions ne sont pas clairement annoncées et il faut surveiller les commits sur le dépôt. Le site Odoo dispose de release notes décrivant les changements par rapport à la version précédente, mais ils ne concernent que l'édition Enterprise.

Points positifs :

  • La cohérence de l’interface entre les versions proches, qui permet de ne pas avoir à reformer le personnel à chaque migration

Points négatifs :

  • La disparition de certains modules de l'édition Community
  • L’absence de CHANGELOG, qui donne l’impression qu'Odoo ne souhaite pas être transparent sur ses changements dans Odoo Community.

Conclusion

Notre évaluation nous amène à penser qu'Odoo Community est un ERP très puissant, par son architecture adaptable à l'ajout de modules, la communauté de l'OCA qui développe énormément d'outils, sa documentation très riche et son ergonomie pratique et élégante. Cependant, la difficulté de migration et le manque de transparence sur l'évolution d'Odoo Community semblent compromettre la durabilité et la maintenabilité d'un outil créé à partir d'Odoo.

Nous tenons à remercier Sylvain LE GAL pour nous avoir aidé dans notre évaluation d'Odoo.

Derniers articles

Pourquoi nous utilisons Wagtail : le CMS Django qui sépare les casquettes

Une introduction à Wagtail et son Zen : comment laisser à l'éditeur·i·ce de contenu un peu de choix, mais pas trop.

Comment devenir un bureau d'enregistrement ?

Devenir bureau d'enregistrement est un parcours de la combattante au niveau technique, administratif et financier. Il y a des cas simples et d'autres qui demandent de raser un Yack.

Précisions sur le projet de bureau d'enregistrement coopératif

L'appel à intérêt lancé la semaine dernière a suscité plusieurs réactions sur les valeurs proposées : clarifions quelques points aujourd'hui.

Appel à intérêt pour un bureau d'enregistrement coopératif

Qui serait partant·e pour participer (ou être client·e) du premier registrar sous forme de société coopérative d'intérêt collectif ?