Stage 2026 - 3Dmap

Migration et stabilisation d'un ERP Odoo en production (v17 vers v18), avec debug SQL bas niveau, fiabilisation Linux et remise en accessibilite publique.

Voir l'instance Odoo

3Dmap — cartes en relief fabriquées en France
3Dmap — entreprise d'accueil du stage (cartes 3D Made in France).
Odoo — plateforme ERP modulaire
Odoo — ERP modulaire migré et stabilisé en production (v17 → v18).

Contexte et objectifs

Dans le cadre de mon stage chez 3Dmap, j'ai travaille sur la migration d'une instance Odoo de production vers une version majeure. L'objectif n'etait pas uniquement de migrer la base, mais surtout de rendre l'ERP stable et exploitable apres la bascule.

  • Migrer la base de donnees d'Odoo 17 vers Odoo 18.
  • Assurer la compatibilite des modules custom et OCA.
  • Corriger les erreurs critiques post-migration (SQL et HTTP).
  • Stabiliser la configuration serveur Linux.
  • Rendre l'instance accessible publiquement.

1) Migration de la base vers Odoo 18

Apres migration, la base semblait en version 18, mais l'instance ne demarrait pas correctement et retournait des erreurs 500.

  • Verification SQL de l'etat du module base.
  • Analyse complete des logs: /var/log/odoo/odoo18.log.
  • Correction d'erreurs de manifest (version invalide).
  • Nettoyage de la configuration openupgrade_framework.
SELECT name, state, latest_version
FROM ir_module_module
WHERE name='base';

2) Debug SQL post-migration

Odoo generait des erreurs UndefinedColumn, signe que le schema PostgreSQL n'etait pas parfaitement aligne avec les attentes d'Odoo 18.

  • Analyse des requetes SQL produites par Odoo dans les logs.
  • Ajout manuel de colonnes manquantes dans la table website.
  • Disparition des erreurs InFailedSqlTransaction.
  • Retablissement progressif du backend.
ALTER TABLE website ADD COLUMN IF NOT EXISTS shop_gap integer;
ALTER TABLE website ADD COLUMN IF NOT EXISTS ecommerce_access boolean;

3) Configuration serveur et service Linux

Le service Odoo crashait a cause d'une mauvaise configuration (db_port invalide, parametres incomplets).

  • Correction des parametres db_port, proxy_mode, dbfilter.
  • Verification du lancement via systemd.
  • Controle des ports d'ecoute.
sudo systemctl restart odoo18
sudo systemctl status odoo18
sudo ss -lntp | grep 8070

4) Resolution des erreurs HTTP (302 / 500)

Le comportement differait entre localhost et le domaine public avec des redirections et erreurs 500.

  • Desactivation temporaire de proxy_mode=True (sans Nginx).
  • Tests curl en local puis via domaine.
  • Analyse des headers HTTP et verification DNS/port 8070.
  • Instance accessible sur dev.3dmap.fr:8070.

5) Modules custom et OCA

Plusieurs modules etaient marques installed en base, mais ignores au demarrage (not installable, skipped), avec risque de vues cassees et dependances incompletes.

  • Analyse croisee entre ir_module_module, addons_path et manifests.
  • Identification des modules critiques a traiter en priorite.
  • Strategie de stabilisation progressive du registry Odoo.

Competences developpees

  • Migration d'ERP complexe entre versions majeures.
  • Debug SQL bas niveau sur PostgreSQL.
  • Analyse de logs et stack traces Python.
  • Administration Linux et gestion service systemd.
  • Diagnostic HTTP (302/500, cookies, proxy mode).
  • Approche methodique: fix, test, logs, correction.

Compétences mobilisées

Stage 2026 — 3Dmap (Odoo)

Période : février 2026

  • Migration ERP Odoo et administration PostgreSQL
  • Debug SQL, logs Python et stabilisation Linux
  • Remise en production d'un service métier critique

Migration Odoo 17 vers 18, correction SQL, stabilisation Linux/systemd, développement de module sur mesure et remise en production.