Read Replicas and 10,000 Users: Odoo 20’s Performance Architecture

Abstract illustration of a database primary with read replicas fanning out to serve thousands of users

Odoo 20 adds native read-replica support, letting the framework route dashboard, report and API reads to PostgreSQL replicas while writes stay on the primary — an architecture Odoo positions for deployments beyond 10,000 concurrent users. This article explains how the routing works, which reads stay on the primary for consistency, and which organisations actually need it.

Pricelists and Promotions in Odoo 20

Abstract illustration of price lists and promotion badges layered over a product catalogue

Odoo keeps structural pricing in pricelists and behavioural pricing in discount and loyalty programs, and Odoo 20 sharpens both with periodic pricing, packaging rules, single-use discount codes, and expiring loyalty points. This guide explains how the two engines fit together, the documented rule priority, and what is genuinely new in 20.

Odoo 20 Access Rights: Life After Record Rules

Abstract illustration of access rights as layered filters controlling which records different users can see

Odoo 20 removes record rules entirely and folds record-level filtering into a single ir.access model, where each access right carries its operations plus a domain. This article explains the old two-layer system, the new grant-versus-restriction semantics, the new ir.access.csv format, and a step-by-step migration plan for custom rules.

Expenses in Odoo 20: Why Approved Expenses Now Become Draft Bills

Abstract illustration of an approved expense receipt transforming into a draft vendor bill in accounting

Odoo 20 removes the standalone Employee Expenses menu item from Accounting: approved expenses now generate draft bills in the default expense journal, reviewed and posted alongside vendor bills. Here is what changes for employees, managers, and accountants — plus the new consolidated report, per-position expense limits, and salary rules for expense products.

Odoo 20 Payroll: The Dashboard That Replaced Work Entries

Abstract illustration of a payroll dashboard replacing a stack of work entries, with payslip cards and warning flags

Odoo 20 removes work entries — and the Planning-Payroll integration — from the payroll flow, merging work entry types into time off types and replacing the old cleanup queue with a revamped, warnings-focused Payroll dashboard. This article covers the enhanced pay run workflow, protected contract dates, simpler working schedules, reusable salary rules, indexation, and net-to-gross simulation.

Odoo 20 Inventory: Simpler Stock Tracking, Explained

Abstract illustration of simplified stock tracking with a clean inventory dashboard and replenishment cards

Odoo 20 streamlines stock tracking: reordering rules now suggest minimum and maximum levels from demand history, the replenishment dashboard has a single Order button, returns lose the wizard, and the stock report can show inventory at a past date. This guide explains each change, how they fit together, and a practical order for adopting them.