Glossary
Quick definitions of key terms
Role permissions, user permissions, permission levels and sharing are four different mechanisms answering four different questions. Most access problems come from using one to do another's job.
Role permissions decide which document types a role can act on. User permissions restrict which records of that type a specific user sees. Permission levels hide individual fields within a document. Sharing grants access to one record regardless of the rules. Access is the sum of a user's roles, so adding a role can only widen access, never narrow it.
Start from the restrictions, because permissive defaults are easy and the exclusions are what you are actually designing. Payroll, margin and supplier pricing are the usual three.
A role named after a person becomes wrong the moment they change job. Name roles for what they permit — Purchase Approver, Stock Entry Clerk.
Where Users and Permissions > Role
For each role decide read, write, create, submit, cancel and amend separately. Submit and cancel are the meaningful controls in an approval workflow; read and write alone rarely express what you intend.
Where Users and Permissions > Role Permissions Manager
When one role should see a document but not one field on it, raise that field to a higher permission level and grant the level only to roles that should read it. This is how you show a purchase order without showing its cost.
Level 0 is the document itself. Levels 1 and above are field groups you grant separately.
To limit someone to one company, warehouse or territory, set a user permission on their user record. This filters which records they see, and it is the mechanism people most often try to replicate with roles.
Where Users and Permissions > User Permissions
Once the set is stable, group the roles a job needs into a role profile and assign that. Onboarding then means one selection rather than fifteen checkboxes, and the fifteen stay consistent between people.
Use a test user for each profile and attempt the things that should fail. The permission matrix describes intent; the login shows behaviour.
Permissions are additive across roles. If a user can see something they should not, the cause is another role they hold, not a missing restriction on this one.
Creating a role per branch to keep branches apart produces an unmanageable matrix. That is what user permissions exist for.
System Manager overrides most restrictions. Testing while holding it shows you a permission model that does not exist for anyone else.
Access that blocks legitimate work gets routed around, and a shared login destroys the audit trail the permissions were protecting.
Almost always another role. Open the user, list every role they hold, and check each one against the document type. Access is the union of all of them, so the widest role wins.
A role permission answers whether this kind of user may act on this type of document. A user permission answers which specific records of that type this individual may see. You usually need both.
Yes, using permission levels. Raise the field above level 0 and grant the higher level only to the roles that should read it. Applied to fields, not to whole documents.
Document-level permissions apply throughout, including the REST API. Query reports can bypass expectations if written carelessly, so treat any custom report that reads restricted data as part of the permission design.
Nearly every case comes down to additive roles or the wrong mechanism for the job. Describe what a user can see that they should not, and we will tell you which layer to look at.
Ask about permissions