Skip to content
Odoo Migration

Odoo Migration: Managing User Roles and Permission Sets in New Versions

A practical guide for CIOs and ERP administrators on migrating user roles, groups, and access rights in Odoo upgrades. Learn how to audit permissions, handle deprecated groups, and validate security rules to prevent data exposure and operational disruption.

9 min readSysGenPro Editorial
Odoo Migration: Managing User Roles and Permission Sets in New Versions

Direct Answer: Auditing and Mapping Roles Before Migration

Managing user roles and permission sets during an Odoo migration requires a proactive audit of existing access rights, a detailed mapping of old groups to new version equivalents, and rigorous validation in a staging environment. Unlike standard data records, security configurations are deeply tied to module dependencies and code logic. If you assume that user roles migrate automatically without verification, you risk creating security gaps where users lose access to critical business processes or, worse, gain unauthorized access to sensitive data. The primary risks to control are broken access control lists (ACLs), deprecated security groups that no longer exist in the target version, and custom security rules that reference changed model fields. A successful migration treats permission sets as critical business data, requiring the same level of care as financial records or inventory levels.

Preparation: Auditing Current Security Architecture

Before initiating any technical migration steps, you must establish a baseline of the current security architecture. This involves documenting every user group, the modules that define them, and the specific access rights (create, read, write, unlink) assigned to each group for every model. In Odoo, permissions are often inherited through group hierarchies. For example, a 'Sales Manager' group may inherit from 'Sales User' and 'Base User'. If the target version changes the inheritance structure of these base groups, the effective permissions for all downstream users will change. You must identify which groups are standard Odoo groups and which are defined in custom modules or third-party add-ons. Custom groups are the highest risk area because their definitions may rely on APIs or model fields that have been deprecated or renamed in the new version.

Identifying Deprecated and Changed Groups

Odoo versions frequently refactor security groups to align with new business logic or module structures. For instance, a group named 'Accountant' in an older version might be split into 'Accountant' and 'Journal Entry Editor' in a newer version. You must compare the security definitions in the source version's module XML files with those in the target version. This comparison should be done at the code level, not just the UI level, because UI labels can change while the underlying technical identifiers (XML IDs) remain the same, or vice versa. Document any groups that are removed, renamed, or have changed inheritance. For each changed group, determine the functional equivalent in the new version. If no direct equivalent exists, you must decide whether to create a custom group in the new version to replicate the old behavior or to retrain users to use the new standard groups.

Technical Execution: Migrating Security Configurations

The technical execution of migrating user roles involves updating the database records that define groups and access rights. In Odoo, this is primarily handled by the 'ir.model.access' and 'res.groups' tables. During a standard database upgrade, Odoo's upgrade mechanism will attempt to update these tables based on the manifest files of the installed modules. However, this process is not infallible. If a custom module defines a security group that references a model field that no longer exists, the upgrade may fail or silently drop the permission. You must ensure that all custom modules are updated to be compatible with the target version before running the migration. This includes updating the 'security/ir.model.access.csv' files in your custom modules to reflect any changes in model names or field names. If you are using third-party add-ons, you must verify with the vendor that their security definitions are compatible with your target version. Do not assume that a module that works in the source version will have valid security definitions in the target version.

Handling Custom Security Rules

Custom security rules, defined in the 'ir.rule' table, are particularly fragile during migrations. These rules often contain Python expressions that reference specific model fields. If a field is renamed, removed, or its data type changes in the new version, the security rule will break. A broken security rule can result in a 'AccessError' for users, preventing them from accessing records they should be able to see. To mitigate this, you must review all custom security rules in your source database. For each rule, verify that the referenced fields exist in the target version's model definitions. If a field has changed, you must update the security rule expression accordingly. This is a code-level task that requires a developer with deep knowledge of Odoo's ORM and security model. Do not attempt to migrate custom security rules without a thorough code review and testing in a staging environment.

Validation: Testing Access Rights in Staging

Validation is the most critical phase of managing user roles during migration. You must create a representative staging environment that mirrors your production database, including all custom modules and third-party add-ons. In this environment, you should perform a full migration of the security configurations. After the migration, you must test access rights for a representative sample of users across all key business roles. This includes testing not just the ability to access a menu, but the ability to create, read, update, and delete records. You should also test negative cases, ensuring that users who should not have access to certain data are indeed blocked. For example, a sales user should not be able to see the cost price of products if that permission is restricted. Use automated testing scripts where possible to verify access rights for all users and all models. This is more reliable and faster than manual testing. If you do not have automated tests, you must create a detailed test plan that covers all critical business processes and all user roles.

Validation StepDescriptionResponsible RoleSuccess Criteria
Group Mapping VerificationCompare source and target group definitionsERP DeveloperAll groups mapped correctly, no missing permissions
Access Rights TestingTest CRUD operations for sample usersQA TeamNo access errors, correct permissions enforced
Security Rule ValidationVerify custom security rules execute correctlyERP DeveloperNo broken rules, correct record filtering
Negative TestingVerify unauthorized users are blockedQA TeamAccess denied for unauthorized actions

Deployment: Cutover and Go-Live

During the cutover phase, you must ensure that the security configurations are migrated along with the rest of the data. This is typically done as part of the database upgrade process. However, you must have a rollback plan in case the security migration fails. If the upgrade fails, you must be able to restore the database to its pre-upgrade state. This includes restoring the security configurations. You should also have a contingency plan for users who experience access issues after go-live. This could include a temporary manual override process or a quick-fix script to adjust permissions. You must communicate the cutover plan to all stakeholders, including IT support and business users. Users should be informed that they may experience temporary access issues and that they should report any problems immediately. You should also have a dedicated support team available during the first few days after go-live to address any security-related issues.

Stabilization: Post-Migration Monitoring

After go-live, you must monitor the system for any security-related issues. This includes monitoring the Odoo logs for 'AccessError' exceptions. These exceptions indicate that a user attempted to perform an action that they are not authorized to do. You should also monitor for any unusual patterns of access, such as a user suddenly gaining access to sensitive data. You should also conduct a post-migration security audit to verify that all permissions are correctly configured. This audit should be performed by an independent party, such as an internal audit team or an external consultant. The audit should verify that the security configurations in the production environment match the approved security baseline. Any discrepancies should be documented and resolved. You should also review the user feedback and address any concerns about access rights. This may involve adjusting permissions or providing additional training to users.

Risk Management: Mitigating Security Breaches

The primary risk of migrating user roles and permission sets is a security breach. This can occur if permissions are not correctly migrated, resulting in users having more access than they should. This is particularly dangerous if the breach involves sensitive data, such as financial records or customer personal information. To mitigate this risk, you must follow the principle of least privilege. This means that users should only have the minimum level of access necessary to perform their job functions. You should also regularly review user permissions to ensure that they are still appropriate. This is especially important after a migration, as the migration process may inadvertently grant users additional permissions. You should also implement multi-factor authentication (MFA) for all users, especially those with elevated privileges. MFA adds an extra layer of security and can help prevent unauthorized access even if a user's credentials are compromised.

Compliance and Governance

Managing user roles and permission sets is not just a technical task; it is also a compliance and governance issue. Many industries have strict regulations regarding data access and privacy. For example, the General Data Protection Regulation (GDPR) requires that personal data be protected and that access to personal data be restricted to authorized individuals. If you fail to correctly migrate user roles and permission sets, you may be in violation of these regulations. This can result in fines and reputational damage. To ensure compliance, you must document your security configurations and maintain an audit trail of all changes to user roles and permissions. You should also have a process for reviewing and approving changes to user roles and permissions. This process should involve both IT and business stakeholders. By following these practices, you can ensure that your Odoo migration is not only technically successful but also compliant with relevant regulations.

Conclusion: A Systematic Approach to Security Migration

Managing user roles and permission sets in new Odoo versions requires a systematic approach that combines technical expertise with business understanding. You must audit your current security architecture, map old groups to new equivalents, and validate access rights in a staging environment. You must also have a robust rollback plan and a post-migration monitoring process. By following these steps, you can minimize the risk of security breaches and ensure that your users have the correct level of access to perform their job functions. Remember that security is not a one-time task; it is an ongoing process that requires continuous monitoring and improvement. By treating user roles and permission sets as critical business data, you can ensure that your Odoo migration is successful and secure.

Written by
SysGenPro Editorial

SysGenPro Editorial

Platform & solutions team

Practical guidance on ERP, AI automation, cloud deployment and enterprise transformation from the SysGenPro team.

Share this article

Frequently asked questions

Common questions on this topic. Talk to our team for anything specific to your business.

01Do Odoo user roles migrate automatically during an upgrade?

Standard Odoo groups are typically updated by the upgrade mechanism, but custom groups and security rules require manual verification and potential code updates. You must not assume automatic migration for custom configurations.

02How do I check if a user has lost access after an Odoo upgrade?

Use the Odoo logs to search for 'AccessError' exceptions. Additionally, perform manual testing with sample users across key roles to verify they can access required menus and perform CRUD operations.

03What happens to custom security rules during an Odoo version change?

Custom security rules may break if they reference fields or models that have changed in the new version. You must review and update these rules in your custom modules before migrating.

04Should I reset all user passwords after an Odoo migration?

It is not strictly necessary to reset all passwords if the database is migrated correctly, but it is a recommended security practice to force password resets for all users after a major upgrade to ensure credential integrity.

05How do I map old Odoo groups to new version equivalents?

Compare the security definitions in the source and target version module files. Identify groups that have been renamed, removed, or changed in inheritance. Document the functional equivalent for each old group.

06What are the risks of not auditing permissions before an Odoo upgrade?

The primary risks are security breaches (users gaining unauthorized access) and operational disruption (users losing access to critical functions). This can lead to data exposure and business downtime.

Continue learning
View all articles
Explore the platform

Where to go next

Browse the knowledge hub

See how SysGenPro fits your business

Discuss your workflows, modules and deployment options with our team.

Back to resources