Why does this security rule not work? (No matching record found for external id 'model_project_project')

Hi guys,

I have a strange issue regarding a new security rule that I've added.
Under I added a dependency to the following modules:

'depends': ['website_portal', 'project_issue', 'website_project_issue', 'project']

I then created a new CSV for the security rules (named ir.model.access.csv) with the following rule:


"access_project_project_public_access","Public user access to project.project","model_project_project","base.group_portal",1,1,1,0

When I now try to install / update the module I will get the following error:

Exception: Module loading my_custom_module failed: file my_custom_module/security/ir.model.access.csv could not be processed:

Line 4 : No matching record found for external id 'model_project_project' in field 'Object'

Why do I get this? I have a dependency on the project module, it is installed and a very similar security rule for project.issue works fine:

access_project_issue_public_access","Public user access to project.issue","model_project_issue","base.group_portal",1,1,1,

So what is wrong with this?


1 Answer
Axel Mendoza
Best Answer

If the model it's not defined in the same module of the ir.model.access.csv then you need to specify the module when defining the security line,

like in the module portal_project:


For your case is the same:

"access_project_project_public_access","Public user access to project.project","project.model_project_project","base.group_portal",1,1,1,0

Also the "..." are not necessary, the separator is the comma


Wow, that was a really stupid mistake there, sorry.. @Axel what I do find strange is that my other security rule for the model project.issue is working fine without adding project. in front of it, why is this the case? Could this be because I have an inherit of project.issue in one of my Python files?

Axel Mendoza

That's the only reason that I could imagine for that

Interesting that this one option slipped through, I'm going to guess it comes because of the inherit. This set me on the wrong side and never made me think about adding the external module name in front of it. Thank you Axel.


I found myself, in the exact situation. I found success with an inherited module and could not for the life of me understand why other modules (not inherited) would not allow me to alter their permissions. Great job Axel