Odoo tips

Gebruikers enkel hun eigen contacten laten zien in Odoo 20 (en waar de record rules naartoe zijn)

Wil je dat een verkoper in Odoo enkel zijn eigen klanten ziet? Tot Odoo 19 deed je dat met een record rule. In Odoo 20 bestaat dat menu niet meer: je zet een domein rechtstreeks op een toegangsrecht.

Gepubliceerd op 05-11-2026 · Odoo 19 en 20

Volgens de release notes van Odoo 20 zijn de toegangsrechten vereenvoudigd "by removing record rules and adding a domain directly at the access right level". Wie het menu Record Rules zoekt, vindt het dus niet meer. Op het Odoo-forum bevestigt Odoo dat dit zo bedoeld is.

Wat is er veranderd?

  • Tot en met Odoo 19 had je twee aparte zaken: toegangsrechten (ir.model.access) bepaalden per groep of je mag lezen, schrijven, aanmaken of verwijderen. Record rules (ir.rule) bepaalden met een domein welke records je ziet.
  • In Odoo 20 zit alles in één model, ir.access. Elke regel heeft een model, een set bewerkingen (Create, Read, Update, Delete), een optioneel domein en een optionele groep.
  • Een regel met groep is een Permission: hij geeft de gebruikers van die groep toegang tot de records binnen het domein. Meerdere permissions worden gecombineerd met OF.
  • Een regel zonder groep is een Restriction: die geldt voor iedereen en gaat altijd voor. Restrictions worden gecombineerd met EN. Een voorbeeld is de standaardregel die contacten per bedrijf afschermt in een multi-company database.

Je vindt de lijst in de ontwikkelaarsmodus via Settings → Technical → Security → Access Rights. De kolom Type toont of een regel een Permission of een Restriction is. Standaardregels uit een module kun je niet rechtstreeks aanpassen. Met de knop Customize maakt Odoo een kopie die je wel kunt bewerken, en archiveert het de originele regel. De technische details staan in pull request 166359 en in odoo/addons/base/models/ir_access.py op de 20.0-branch.

Waarom een extra regel alleen niet volstaat

Dit is het belangrijkste verschil met de oude werkwijze. In de standaard van Odoo 20 krijgt elke interne gebruiker leesrecht op alle contacten via de regel user read access voor de groep Role / User (technisch base.group_user), zonder domein. Omdat permissions met OF samengaan, maakt een nieuwe regel met een domein voor je verkopers niets uit: de brede regel geeft hen nog altijd alles.

Odoo doet het zelf zo voor leads in CRM. De regel Personal Leads geeft de groep User: Own Documents Only toegang met het domein ['|',('user_id','=',user.id),('user_id','=',False)]. De regels All Leads geven de groepen User: All Documents en de verkoopbeheerders toegang zonder domein. CRM geeft gewone interne gebruikers geen brede leesregel op leads, en daarom werkt de beperking.

Stappenplan: enkel eigen klanten tonen

Neem een groothandel in Hasselt met drie buitendienstmedewerkers. Elke verkoper mag enkel de klanten zien waarbij hij als verkoper staat. De zaakvoerder en de boekhouding zien alles.

  1. Werk eerst in een testdatabase

    Een fout in een toegangsregel kan gebruikers uit hun dagelijkse werk houden. Test op een kopie of een staging-build.

  2. Maak een groep voor wie alles mag zien

    Ga in de ontwikkelaarsmodus naar Settings → Users & Companies → Groups, maak een groep zoals Alle contacten zien en voeg de zaakvoerder en de boekhouding toe.

  3. Zoek alle leesregels op Contact

    Open Settings → Technical → Security → Access Rights, groepeer op Model en bekijk alle regels voor res.partner met type Permission en de bewerking Read. Naast de regel voor Role / User voegen apps zoals CRM hun eigen leesregel voor verkopers toe.

  4. Pas de brede leesregels aan

    Klik bij elke leesregel zonder domein die je verkopers raakt op Customize en zet een domein op de kopie, bijvoorbeeld: ['|', '|', ('user_id', '=', user.id), ('commercial_partner_id.user_id', '=', user.id), ('partner_share', '=', False)]. Zo ziet een verkoper zijn eigen klanten, de contactpersonen van die klanten en de contacten van interne gebruikers.

  5. Geef de groep met volledige toegang een eigen regel

    Maak een nieuwe regel op Contact met de bewerking Read, zonder domein, voor de groep Alle contacten zien.

  6. Test als verkoper

    Log in als een van de verkopers en controleer contacten, offertes, leveringen en facturen.

En in Odoo 17, 18 of 19?

Daar werkt het nog met record rules via Settings → Technical → Security → Record Rules. Een forumdraad beschrijft een werkende aanpak: een aparte groep voor de beperkte gebruikers, een record rule op Contact met een domein op user_id, en een label op interne contacten zodat chatter en multi-company blijven werken. Een reactie in dezelfde draad waarschuwt dat zo'n regel ook verkooporders, leveringen en inkopen raakt. Upgrade je later naar Odoo 20, test dan zeker of je eigen regels nog doen wat je verwacht.

Veelgestelde vragen

Waar zijn de record rules in Odoo 20?

Ze bestaan niet meer als apart menu. Je zet een domein op een toegangsrecht via Settings, Technical, Security, Access Rights in de ontwikkelaarsmodus.

Wat is het verschil tussen een Permission en een Restriction?

Een Permission hoort bij een groep en geeft toegang tot de records binnen het domein. Een Restriction heeft geen groep, geldt voor iedereen en gaat voor op permissions.

Waarom zien mijn verkopers nog alle contacten na een nieuwe regel?

Omdat permissions met OF samengaan. De standaardregel voor interne gebruikers geeft leesrecht op alle contacten. Die brede regel moet je aanpassen met Customize.

Kan ik een standaardregel van Odoo rechtstreeks wijzigen?

Nee. Met Customize maakt Odoo een kopie die je kunt bewerken en archiveert het de originele regel.

← Alle artikels

WhatsApp