Dans un contexte où les entreprises marocaines cherchent à synchroniser leurs processus métiers – point de vente, gestion de stock, facturation, ressources humaines – avec d’autres systèmes (ERP, systèmes bancaires, plateformes e‑commerce), l’intégration via l’API Odoo devient un enjeu majeur.
Cette note rassemble les meilleures pratiques à adopter pour exploiter les API d’Odoo en toute fiabilité, sécurité et conformité aux exigences locales.
1. Pourquoi l’API Odoo ?
Odoo expose deux types d’interfaces :
| Type | Protocole | Syntaxe | Idéal pour… |
|---|---|---|---|
| XML‑RPC | HTTP | xmlrpc.client.ServerProxy |
Applications Java, PHP, autres langages legacy |
| JSON‑RPC | HTTPS (ou HTTP si non sensible) | requests.post(url, json=payload) |
Langages modernes, JavaScript, environnements Node.js |
| REST (Odoo 15+) | HTTPS | POST /api/v1/ |
Architectures micro‑services, outils modernes |
Les deux premiers ont une documentation officielle exhaustive, tandis que le composant REST a été introduit progressivement et reste non‑complet dans la version Community.
Pour un projet Marocain (par ex. intégration d’un portail de déclaration de TVA ou d’un module d’agence logistique), choisissez la technologie qui correspond à votre stack.
2. Authentification : sécuriser l’accès natif
2.1. IRP en mode “hash”
Pour toutes les requêtes XML‑/JSON‑RPC, Odoo supporte le login/password et le token key.
import xmlrpc.client
common = xmlrpc.client.ServerProxy('https://odoo.tn/xmlrpc/2/common')
uid = common.authenticate('database', 'user', 'password', {})
Bullet‑point
Never embed raw passwords in code. Utilisez un service de secrets (HashiCorp Vault, Azure Key Vault, ou même le gestionnaire de secrets native de Docker).
2.2. OAuth 2.0 (API REST)
Pour un exposage public ou une plateforme micro‑services, l’intégration OAuth peut restreindre plus finement les permissions et éviter de transmettre le mot‑de‑passe.
- Régler une application Odoo OAuth dans
Paramètres > Utilisateurs > OAuth. - Conserver le
client_id/client_secretdans un coffre‑fort.
3. Gestion des données locales (FR, DR, etc.)
- Monnaie – Odoo utilise l’abréviation ISO 4217. En Maroc, utilisez toujours
MAD."currency_id": (4, currency_mad_id) - Date/heure – La timezone par défaut est
UTC. Ajustez :env.context.update({"tz": "Africa/Casablanca"}) - Nomenclature fiscale – La taxonomie TVA (20 % vs 7 %) doit être pré‑configurée. Les modèles
account.taxdoivent être clairement nommés. - Données personnelles – Respectez la Loi 09-08 (Régulation des données personnelles). Utilisez
account.data_protectionpour la gestion des consentements.
4. Bonnes pratiques de développement
| Étape | Recommandations |
|---|---|
| Versioning | Attachez une version d’Odoo (https://www.odoo.com/documentation/15.0) dans votre module via __manifest__.py. |
| Gestion de code | Mettez votre code dans un dépôt Git (GitHub, GitLab, Azure DevOps). Utilisez des branches de feature, merge‑requests, CI. |
| Tests | – Unitaires (suite unittest de Python).– Intégration (utiliser addons/odoo_test ou cheetah). |
| Validation des données | Utilisez la fonction model._constrain() ou model._check_XXX() avant de créer/mettre à jour des enregistrements. |
| Pagination | Pour search_read, utilisez limit et offset pour éviter de charger toutes les données. |
| Retries | Implémentez un back‑off exponentiel pour les appels réseau. |
| Logging | Configurez logging avec différents niveaux (DEBUG, INFO, WARNING, ERROR). |
| Performance | – Mettez en cache les réponses fréquentes (cachetools).– Fournissez un index sur les champs fréquemment recherchés. |
| Sécurité | – Désactivez les API pour les comptes non‑administrateurs. – Appliquez les ir.model.access, ir.rule, resource.group. |
5. Déploiement & maintenance au Maroc
-
Hébergement
- Odoo.sh (cloud) – Offre certificats TLS, backups automatisés.
- Serveurs locaux – Hébergez sur un serveur dédié en Maroc (pack MSD, VPS, ou même Kimsufi).
- Pensez à la conformité Données à caractère personnel RH : hébergement sur de la bandée « GDPR‑compatible » (amplitude de la norme ISO 27001).
-
Backup
- Snapshot complet (base + documents) quotidien.
- Plan « Restore » (tests tout le mois).
-
Monitoring
- Google Cloud Monitoring / Prometheus avec Grafana.
- Alertes Slack/Telegram pour
downtime,error 5xx,slow queries.
- Gestion des mises à jour
- Planifiez les mises à jour majeures (Odoo 15→16…) en test sur un clone.
- Sauvegardez les modules customisés.
- Vérifiez la compatibilité via tests automatisés.
6. Exemple concret : intégration d’un portail de déclaration de TVA
| Étape | Action | Code (Python) |
|---|---|---|
| ✔️ Authentifier | authenticate() |
uid = common.authenticate('db', 'user', 'pwd', {}) |
| ✔️ Lire TVA | search_read() |
taxes = models.execute_kw('db', uid, 'pwd', 'account.tax', 'search_read', [[['type_tax_use', '=', 'sale']]], {'fields': ['name', 'amount']} ) |
| ✔️ Créer une déclaration | create() |
invoice_id = models.execute_kw('db', uid, 'pwd', 'account.move', 'create', [{'move_type': 'in_invoice', 'invoice_line_ids': [(0,0, line_dict)], ...}]) |
| ✔️ Envoyer au service de paiement | requests.post('https://paiement.maroc.gov/submit', json={...}) |
Astuce
Utilisezjsonrpcplutôt quexmlrpcsi vous avez besoin de HTTP/2 support et plus de contrôle sur letimeout.
7. Sécurité et conformité
| Point | Recommandation |
|---|---|
| VPN | Mettez en place un VPN (OpenVPN, WireGuard) entre votre application externe et le serveur Odoo. |
| TLS | Utilisez https:// ; certifiants TLS légitimes (Encrypt). |
| SSL SNI | Configurer votre reverse‑proxy (NGINX, Traefik). |
| Rate Limiting | Implémentez sur le reverse‑proxy pour éviter le DoS. |
| Monitoring des logs | Analysez access.log/error.log avec logwatch. |
| Audits | Réalisez des audits de sécurité annuels, test de pénétration. |
8. Ressources & lectures complémentaires
- Documentation officielle Odoo – https://www.odoo.com/documentation/15.0/
- Guide d’API Odoo – https://www.odoo.com/documentation/15.0/reference/api.html
- API REST pour Odoo – https://github.com/OCA/REST »**
- Mises à jour Odoo Maroc – Blog OdooMarrakech, OdooAlliance au Maroc
- Loi 09‑08 – https://www.entreprises.gov.ma – Protection des données personnelles
9. Conclusion
L’intégration d’Odoo via API ouvre de vastes possibilités aux entreprises marocaines, mais exige une approche structurée : sécuriser l’authentification, gérer les spécificités locales (monnaie, date, fiscalité), respecter les bonnes pratiques de développement, et surveiller la santé du système.
En suivant ces recommandations, vous pouvez déployer des interactions API robustes, évolutives, et conformes aux réglementations marocaines, tout en tirant pleinement parti de la flexibilité du framework Odoo.
Bonne intégration !