Odoo 20 Access Rights: Migrating to ir.access
Odoo 20 removes record rules and merges them into access rights with domains. What changed, how to migrate ir.model.access.csv and ir.rule, and what to test.
Service · Run & Improve
Overview
Slowness almost always has a specific cause: a custom computed field recalculating on every read, a report looping over a million records in Python, a missing index, too few worker processes, or an integration hammering the database at peak hours. We find it by measuring.
01The problem
List views and forms slow down as data grows, especially those with custom fields.
Month-end reports run for minutes or fail outright.
MRP, invoicing or sync jobs still running when the morning shift starts.
Bigger servers bought without understanding the bottleneck, with little improvement.
02Our approach
We start by defining what 'slow' means in numbers: which screens, reports and jobs, how long they take, and what acceptable looks like. Then we profile — application-level traces, database query analysis and infrastructure metrics — until the bottleneck is identified with evidence.
Fixes are prioritised by impact. Often a handful of changes — rewriting one computed field, adding two indexes, moving an integration to off-peak batches — deliver most of the improvement. Every change is measured before and after.
03Capabilities
Tracing slow requests to the specific code paths responsible.
Analysing slow SQL, adding indexes and rewriting expensive queries.
Replacing row-by-row loops with batched operations and stored fields.
Configuring application workers, memory limits and caching for your load.
Matching CPU, memory and storage to measured demand.
Moving heavy sync jobs off peak and batching high-frequency updates.
04Technical considerations
Testing against a production-sized copy, because performance problems rarely appear on small datasets.
Table bloat, vacuum status, connection limits and lock contention reviewed.
Detection of code that issues one query per record instead of one query per batch.
Timing benchmarks on critical flows added to the test suite to prevent future slowdowns.
05Process
Baseline timings for the flows that matter.
Identify bottlenecks with traces, query plans and metrics.
Targeted changes in priority order.
Before/after measurements and regression benchmarks.
06Outcomes
Common transactions complete in seconds again.
Overnight jobs finish well before the business day.
Infrastructure sized to evidence rather than guesswork.
Where it applies
Related services
Insights
Odoo 20 removes record rules and merges them into access rights with domains. What changed, how to migrate ir.model.access.csv and ir.rule, and what to test.
When custom ERP development makes sense, when off-the-shelf ERP is the better choice, and why a hybrid — standard core plus custom domain app — is often the answer.
What Odoo Studio does well, where it creates trouble, and when to switch to custom module development. A practical decision guide with examples.
FAQ
Sometimes, but usually not by itself. Most ERP slowness comes from specific code, queries or configuration. Measuring first avoids spending money on hardware that does not address the cause.
An initial diagnosis typically takes one to three weeks depending on system size and access. Fixes are then scheduled by impact.
Infrastructure is controlled by the vendor, but custom code, reports, integrations and configuration often account for the slowness and can be fixed.
Next step
Send us the three slowest things your team complains about. We will tell you where to look first.