# Porting status — Odoo 14.0 branch This branch targets **Odoo Community 14.0** — the version **ITSulu runs in production**. It was **seeded from the 17.0 baseline** and the Odoo-14 porting is tracked here. Until every item is verified, treat this branch as **work in progress** — do not deploy to the production 14.0 instance unverified. > The product feature set is the same across all Odoo branches; only the Odoo-API-specific code > differs. Odoo 14 is **older** than the 17.0 baseline, so several things move *backwards*. > See `CLAUDE.md` §15 for the branch model and §11.5 / §12 for version-specific gotchas. ## Series markers (done) - [x] `.odoo-series` = `14.0` - [x] `Dockerfile` base image = `odoo:14.0` - [x] manifest version prefix = `14.0.` (via `bump-version.sh`) ## API porting checklist (verify on a real Odoo 14.0 instance) - [ ] **Mail template syntax — REVERT to Jinja2.** Odoo 14 renders `mail.template` with Jinja2 (`${object.blog_post_id.name}`, `% if`, `% for`), **not** the qweb `` used on 17.0. The 17.0 template in `data/mail_template_data.xml` must be converted back to Jinja for 14.0. - [ ] **Mail render API.** 14.0 uses `template.render_template(...)` / `_render_template(...)`, not 17.0's `_render_field`. Update `blog_generation_log.send_notification_email` + tests. - [ ] `blog.post` body field name on 14.0 (the 17.0 baseline writes `content` — confirm 14.0). - [ ] Python 3.6–3.8 only — remove any 3.9+ syntax (dict `|` merge, `str.removeprefix`, etc.). - [ ] `@api.model_create_multi`, `name_get`, and other ORM signatures valid on 14.0. - [ ] View/RELAXNG validation for 14.0 (attrs/states syntax differs from 17.0). - [ ] `ir.cron` + mail data XML formats. - [ ] Full test suite green on a 14.0 template DB (K8s job, §8, base image `odoo:14.0`). - [ ] pytest-odoo / pytest-bdd versions compatible with the 14.0 Python. ## How to work this branch 1. Stand up a 14.0 template DB (mirror §8, base image `odoo:14.0`). 2. Start with the mail template (Jinja revert) and the render API — those are the biggest deltas. 3. Run the suite, fix one Odoo-API difference at a time. 4. Record each gotcha in `CLAUDE.md` §12 tagged with the series. 5. When green, cut a release on this branch (`bump-version.sh` → tag `14.0-vX.Y.Z`).