Odoo 19 vs Odoo 20: Perbedaan Teknis dan Panduan Migrasi
Perbandingan Teknis untuk Pengembang Komunitas Odoo
Untuk pengembang yang membangun addon kustom untuk Odoo Community, membandingkan Odoo 19 dan Odoo 20 melibatkan jauh lebih banyak daripada perubahan pada struktur folder modul.
Ada 10 area teknis kunci yang harus dievaluasi dengan cermat oleh para pengembang:
- Kerangka Kerja Inti & ORM — Perubahan pada API Python, model, bidang, dan metode.
- Database & PostgreSQL — Perubahan pada skema basis data, hubungan, dan persyaratan sistem.
- Security & Access Rights — Perubahan pada ACLs, Record Rules, Groups, dan permissions.
- XML Views & XPath — Perubahan pada view structures and inheritance mechanisms.
- JavaScript & OWL — Perubahan pada the frontend framework, components, dan assets.
- API & Integration — Perubahan pada external APIs, controllers, authentication, dan integrations.
- Module Structure & Manifest — Perubahan pada addon structures, dependencies, dan module declarations.
- Background Jobs & Automation — Perubahan pada cron jobs, scheduled actions, dan background processing.
- Deployment & Dependencies — Persyaratan kompatibilitas untuk Python, PostgreSQL, Linux, and external libraries.
- Migration & Compatibility — Dampak pada addon kustom dan proses peningkatan secara keseluruhan.
Catatan Penting: Mulai 2 November 2026, perbedaan teknis harus diverifikasi terhadap dokumentasi resmi Odoo 20 dan kode sumber. Perubahan yang telah dikonfirmasi harus jelas dibedakan dari prediksi, diskusi komunitas, atau klaim teknis yang belum diverifikasi..
1. Ikhtisar Perbedaan Teknis Utama
Analisis teknis yang tersedia menunjukkan bahwa Odoo 20 dirilis pada September 2026, memperkenalkan perubahan signifikan pada tingkat kerangka dibandingkan dengan Odoo 19.
Perubahan ini melampaui sekadar mengganti nama file CSV keamanan.
| Area Teknis | Odoo 19 | Odoo 20 | Dampak |
| Minimum Python Version | Python 3.10 | Python 3.12 | High |
| Minimum PostgreSQL Version | PostgreSQL 13 | PostgreSQL 16 | High |
| Access Rights | ir.model.access | ir.access | Critical |
| Record Rules | Separate ir.rule model | Dikonsolidasikan menjadi ir.access | Critical |
| Security CSV | ir.model.access.csv | ir.access.csv | Critical |
| Frontend Framework | Owl 2.8 | Owl 3 with compatibility layer | High |
| Icon Framework | Font Awesome / Odoo Icons | Material Symbols | Medium |
| Binary Fields | Base64-based representation | BinaryValue | High |
| Attachment API | datas | raw | High |
| Configuration Parameters | get_param() / set_param() | Typed getters and setters | High |
| ORM Grouping | read_group() | Replacement grouping API | High |
| Timezone Handling | pytz | zoneinfo | Medium |
| Web Server | Werkzeug-based | Changes to HTTP server implementation | Medium |
| Module Migration | Manual adjustments and scripts | Additional upgrade scripts | Medium |
Referensi: Perbandingan teknis antara cabang Odoo 19.0 dan 20.0, termasuk analisis Odoo Digest yang diterbitkan pada 24 Oktober 2026.
Catatan Verifikasi: Tabel ini merangkum perubahan teknis yang dilaporkan dalam materi yang disediakan. Perubahan individu harus dikonfirmasi terhadap cabang kode sumber Odoo yang relevan sebelum diperlakukan sebagai persyaratan migrasi yang wajib.
2. Perubahan Kerangka Keamanan — Dampak Kritis
Salah satu perubahan yang paling signifikan yang dilaporkan dalam Odoo 20 berkaitan dengan arsitektur keamanannya.
Odoo 19 Security Architecture
Odoo 19 menggunakan dua model utama untuk mengelola keamanan:
self.env['ir.model.access'] self.env['ir.rule']
Model-model ini memiliki tujuan yang berbeda:
- ir.model.access mengelola izin akses tingkat model, termasuk Create, Read, Update, and Delete (CRUD).
- ir.rule mengelola pembatasan akses tingkat catatan menggunakan aturan berbasis domain.
Arsitektur Keamanan Odoo 20
Menurut perubahan yang dilaporkan, Odoo 20 mengkonsolidasikan mekanisme ini menjadi:
self.env['ir.access']
Ini berarti bahwa perubahan tersebut berpotensi melampaui konvensi penamaan file CSV ke arsitektur manajemen keamanan yang mendasarinya.
Dampak pada Addon Kustom
Pengembang harus dengan cermat meninjau area berikut:
- Referensi ke model keamanan lama harus diidentifikasi dan dipindahkan jika perlu.
- Struktur file keamanan dan deklarasi mungkin memerlukan penyesuaian.
- Kode kustom yang membuat atau memodifikasi catatan ir.rule harus ditinjau.
- Access-control pengujian harus mencakup kelompok pengguna, CRUD permissions, domain restrictions, dan Skenario multi-company.
- Migrasi keamanan harus mengikuti prosedur peningkatan resmi dan mencakup pengujian regresi yang komprehensif.
3. Perubahan ORM dan API Python
Beberapa API warisan dilaporkan telah dihapus, diganti, atau direfaktor di Odoo 20.
Perubahan ini dapat secara langsung mempengaruhi logika bisnis kustom dan integrasi backend.
| API / Component | Reported Odoo 20 Change | Recommended Developer Action |
| read_group() | Removed | Migrate to the supported grouping API |
| odoo.osv.expression | Removed | Refactor domain expressions |
| @ormcache_context | Removed | Review caching strategies |
| check_access_rights() | Removed | Migrate access validation logic |
| check_access_rule() | Removed | Adapt to the updated security API |
| _check_recursion() | Removed | Review recursive validation logic |
| group_operator | Removed | Perbarui deklarasi agregasi |
| toggle_active() | Removed | Refactor active/archive operations |
| ir.attachment.datas | Removed | Gunakan bahan mentah yang sesuai API |
Dampak Teknis Potensial
Perubahan ini dapat memperkenalkan beberapa masalah kompatibilitas:
1. Kegagalan Instalasi Modul
Addon kustom mungkin gagal saat instalasi jika mereka merujuk pada API yang dihapus atau tidak kompatibel.
2. Eksepsi Waktu Jalan
Metode yang ada dapat memicu kesalahan ketika dipanggil oleh proses bisnis.
3. Masalah Pengolahan Data
Perubahan pada pengelompokan ORM, agregasi, atau penanganan data biner dapat mempengaruhi laporan, dasbor, dan integrasi.
4. Kegagalan Validasi Keamanan
Perubahan pada metode pemeriksaan akses dapat mempengaruhi logika otorisasi kustom.
5. Ketidakcocokan Logika Bisnis
Metode Python kustom mungkin memerlukan refactoring untuk disesuaikan dengan kerangka ORM yang diperbarui. Bahkan ketika struktur folder addon dan manifest tetap tidak berubah, kompatibilitas tidak dijamin.
Rekomendasi: Lakukan audit kode sumber untuk mengidentifikasi API yang sudah tidak digunakan, metode yang dihapus, dan operasi ORM yang tidak kompatibel sebelum melakukan upgrade.
4. Perubahan JavaScript dan Kerangka OWL
Odoo 20 dilaporkan memperkenalkan transisi dari Owl 2.8 ke Owl 3, membawa perubahan pada komponen frontend, direktif, dan mekanisme rendering.
Perbandingan Framework Frontend
| Odoo 19 | Odoo 20 |
| t-portal | t-custom-portal |
| t-model | t-custom-model |
| useEffect | useLayoutEffect |
| Owl 2 components | Owl 3 components with a compatibility layer |
| Font Awesome icons | Material Symbols |
Pertimbangan Kompatibilitas
Odoo 20 dilaporkan menyertakan lapisan kompatibilitas untuk mendukung beberapa komponen Owl 2 yang ada. Namun, kompatibilitas tidak selalu berlaku untuk setiap implementasi kustom..
Pengembang harus secara khusus mengevaluasi addon yang:
- Perbaiki komponen klien web Odoo asli.
- Perpanjang Owl components dan templates.
- Daftarkan layanan kustom atau komponen frontend.
- Modifikasi JavaScript registries.
- Implementasikan widget kustom dan dasbor interaktif.
- Gunakan aset JavaScript kustom atau Library frontend.
- Menimpa perilaku standar situs web Odoo.
5. Perubahan Database dan Penyebaran
Perubahan pada persyaratan minimum Python dan PostgreSQL dapat secara signifikan mempengaruhi lingkungan pengembangan, staging, dan produksi.
Persyaratan Migrasi Infrastruktur
| Component | Direkomendasikan Migration Action |
| Python | Perbarui ke versi runtime yang didukungUpgrade to a supported runtime version |
| PostgreSQL | Rencanakan migrasi basis data ke PostgreSQL 16 atau versi lain yang didukung secara resmi |
| Python Packages | Verifikasi kompatibilitas semua paket di requirements.txt |
| Timezone Handling | Refactor pytz implementasi di mana diperlukan |
| HTTP Server | Tinjau konfigurasi reverse proxy dan penyebaran |
| Docker | Bangun kembali Image container menggunakan ketergantungan Odoo 20 yang kompatibel |
| Database Migration | Ikuti prosedur peningkatan basis data resmi daripada hanya mengganti kode sumber |
Pertimbangan Teknis Tambahan
Kecocokan Sistem Operasi
Verifikasi bahwa distribusi Linux mendukung Python, PostgreSQL, dan pustaka sistem yang diperlukan.
Konfigurasi Reverse Proxy
Tinjau pengaturan Nginx atau proxy terbalik lainnya, termasuk pengaturan rute permintaan, waktu tunggu, dan konfigurasi terkait WebSocket.
External Libraries
Validasi kompatibilitas dengan paket Python pihak ketiga yang digunakan oleh addon kustom.
Database Backup and Recovery
Tetapkan strategi cadangan dan pemulihan yang telah diuji sebelum melakukan migrasi produksi.
Environment Isolation
Deploy Odoo 20 di lingkungan pengembangan atau staging terpisah sebelum memigrasi beban kerja produksi.
Pendekatan Penerapan yang Direkomendasikan
Untuk penerapan berbasis Linux yang menggunakan Nginx, PostgreSQL, dan beberapa addon kustom, proses migrasi yang terkontrol sangat dianjurkan. Lingkungan produksi harus tetap tidak berubah sampai pengujian fungsional, integrasi, keamanan, dan kinerja telah selesai dilakukan dengan sukses.
7. Alat Migrasi Odoo 19 ke Odoo 20
Odoo 20 dilaporkan menyediakan perintah upgrade_code untuk membantu pengembang dalam menyesuaikan kode sumber addon kustom.
Langkah 1 — Lakukan Uji Coba Kering
Jalankan utilitas migrasi dalam mode simulasi sebelum menerapkan perubahan:
./odoo-bin upgrade_code \ --addons-path=/opt/odoo/custom_addons \ --from 19.0 \ --dry-run
Tujuan dari dry run adalah untuk mengidentifikasi potensi modifikasi kode sumber tanpa mengubah file addon secara langsung, di mana didukung oleh alat yang terpasang.
Langkah 2 — Laksanakan Peningkatan Kode
Setelah membuat cadangan dan cabang migrasi Git yang khusus:
./odoo-bin upgrade_code \ --addons-path=/opt/odoo/custom_addons \ --from 19.0
Langkah 3 — Lakukan Migrasi Owl 3
Untuk perubahan yang terkait dengan frontend, perintah migrasi yang dilaporkan adalah:
./odoo-bin upgrade_code \ --addons-path=/opt/odoo/custom_addons \ --script owl3-migration
Penting: Perintah-perintah ini diambil dari materi teknis yang disediakan. Ketersediaan, sintaksis, dan opsi yang didukung harus diverifikasi terhadap antarmuka baris perintah Odoo 20 yang sebenarnya sebelum dieksekusi.
Limitasi Alat Migrasi
Utilitas migrasi otomatis dapat membantu dalam transformasi kode sumber, tetapi mereka tidak dapat menjamin kompatibilitas yang lengkap.
Validasi manual tetap diperlukan untuk:
- Logika bisnis kustom
- Security permissions
- Record Rules
- JavaScript and Owl components
- Database migrations
- External API integrations
- Kustom reports dan dashboards
- Third-party dependencies
Migrasi otomatis yang berhasil tidak selalu berarti bahwa sebuah addon siap untuk produksi.
8. Referensi Teknis
Sumber resmi berikut harus digunakan untuk verifikasi teknis lebih lanjut dan penilaian kompatibilitas:
- Odoo 20 Developer Documentation
- Odoo 20 ORM API Reference
- Odoo 20 Security Framework
- Odoo 20 Source Code — GitHub
Sumber daya ini harus dikonsultasikan untuk mengonfirmasi perubahan pada API kerangka kerja, model keamanan, ketergantungan, dan prosedur migrasi.
9. Kesimpulan dan Rekomendasi
Migrasi dari Odoo 19 ke Odoo 20 melibatkan jauh lebih banyak daripada sekadar memperbarui versi manifest modul atau mengganti nama file konfigurasi keamanan.
Proses migrasi mungkin memerlukan penyesuaian substansial pada arsitektur backend, komponen frontend, mekanisme keamanan, infrastruktur basis data, dan integrasi eksternal.
Tiga area prioritas tertinggi untuk penilaian teknis adalah:
- Security Framework Migration — Meninjau ACL, Aturan Rekaman, grup pengguna, dan mekanisme otorisasi.
- Python and ORM API Refactoring — Mengidentifikasi API yang dihapus, tidak lagi didukung, atau dimodifikasi dan memperbarui logika bisnis kustom.
- Owl 3 Compatibility Testing — Memvalidasi komponen frontend kustom, ekstensi JavaScript, dan antarmuka interaktif.