TR Start free
HomeBlog › Guide

User roles and permissions in a CRM: who should see what once the team grows

O Ohana360 Team • September 20, 2026 • 12 min read
Illustration of the five access layers a record passes before reaching a user, next to a permission table for a five-person team

Nobody noticed when Brightwell Lighting hired its ninth employee. They noticed at the twenty-fourth. An intern, in his first week, could open a list holding every customer, the value of every live deal and last year's discount percentages. No one had done anything wrong and no one had changed a setting. When the CRM went in there were five of them and it felt natural that everybody saw everything. The problem was that the setting never changed afterwards.

The Manchester company sells commercial lighting to contractors and facilities teams: 24 people, with eight on the sales side, a small technical team, a bookkeeper who comes in two days a month, one intern and an office manager who keeps the place running. (Demo data.) What they needed was not a security programme. It was three sentences: a rep sees their own accounts, the bookkeeper sees invoices but not the discount history, the intern works the incoming leads but cannot export the customer list.

This guide is about turning those three sentences into settings: the difference between a role and a permission, what least privilege means in daily use, practical answers to the who-sees-what question, and how the model actually behaves in Ohana360. The legal side of personal data is a separate subject, covered in the GDPR guide.

A role and a permission are not the same thing

Most teams collapse the two into one word: "I gave Sarah sales permissions." There are really two questions. A role says who somebody is. A permission says what they may do. Someone can be a sales manager and still have no business editing invoices; two people can do the same job while only one of them should see beyond their own records.

In Ohana360 the distinction is spread across four settings. They work together, and knowing which does what removes half of the later "why can't I see this record" questions.

SettingWhat it decidesWhere it lives
RoleAdmin, Standard or Portal. An Admin passes every restriction; a Portal user only reaches the portal and never the CRM itself.Inline in the Users list
ProfileWhich apps are open, and the read, create, edit and delete level on every object. This is the real permission shell.Setup > Profiles
Permission setGrants extra rights on top of a profile and never removes any. Assigned to a person or to a whole profile.Setup > Permission Sets
Hierarchy roleNot a permission but a field of view: a level above sees records owned by the levels below it.Setup > Role Hierarchy

On top of those sits a sharing default for each object. The illustration walks through the five gates a record passes before it lands on somebody's screen.

Five gates a record passes before you see it In Ohana360 access is not one switch but five settings stacked on top of each other Setup screens 1 Role Admin, Standard or Portal. The Admin role skips all four gates below. Users 2 Profile Which apps are open; read, create, edit and delete on each object. Profiles 3 Permission set Adds rights on top of a profile and never takes any away. Permission Sets 4 Sharing default Per object: open to all, read only for others, or private to the owner. Sharing Settings 5 Hierarchy and rules A level above sees below it; a rule opens a closed door to chosen people. Role Hierarchy The decision is made on the server: a record you may not see never reaches the browser. Permissions are per object, not per field.

You rarely need to touch three of those gates at once. In practice the setup runs in one direction: give everybody a profile first, tighten the sharing default on the sensitive objects next, and open the individual exceptions last with a sharing rule or a permission set.

Where does least privilege actually start?

Least privilege is one sentence: a person should hold the smallest access that lets them do their job. It sounds restrictive, but the point is not restriction. It is fewer accidents and less ambiguity. The record deleted by mistake, the price list forwarded to the wrong recipient and the argument about who changed a field usually come from unnecessarily wide access rather than bad intent.

Putting it in place takes three steps, and the first two happen on paper rather than in the CRM.

Careful: in Ohana360 a user with no profile assigned counts as unrestricted. Object permissions only apply to people who have a profile; on an account without one, only the sharing defaults are left. Pick the profile while you create the account rather than leaving it for later.

Should a rep see their own records or all of them?

There is no single right answer, but there are two extremes and a middle. In an org where everyone sees every deal, reps call each other's customers, negotiation history gets muddled and whoever leaves walks out with the whole pipeline. In an org where everyone sees only their own record, the manager sees nothing, a customer goes dark while their rep is on holiday and the forecast never adds up.

The middle in Ohana360 is a combination of three settings. The first is the sharing default: the Sharing Settings screen in Setup gives every object one of three values.

DefaultWhat it meansWhere it fits
Open to allEveryone in the org reads and editsProducts, knowledge base, shared tasks
Read only for othersEveryone reads, only the owner and those above editAccounts, contacts, support cases
PrivateOnly the owner, people above them and admins see itDeals, leads, invoices, employee records

The second is the role hierarchy. The ladder that ships with a new org has five rungs and is meant to be renamed for your structure. The rule is short: somebody on a higher rung sees the records owned by everybody on the rungs below. Even with deals set to private, a sales manager keeps seeing the team's pipeline, because the rung is above theirs.

The third is sharing rules. A rule opens a closed door to a chosen target. The source can be ownership based (records owned by a role, by a role and everyone under it, by a public group or by a queue) or criteria based (records whose amount is above a figure). The target is a role, a public group or one named user, and the access is either read, or read and write. A common shape: deals are private, and one rule grants the support group read access to deals owned by the sales roles.

There is a fourth tool worth knowing: queues. A record's owner can be a queue rather than a person, and members of that queue treat its records as their own, picking them up when they take them on. For incoming work that lands in a pool before anyone claims it, that is far tidier than granting access person by person.

Separating the manager, the bookkeeper and the intern

The arrangement Brightwell settled on is in the table below. The detail worth noticing is that none of the five holds the Admin role. Because the Admin role skips profile limits and sharing rules altogether, even the person who needs Setup to keep the office running was given a permission set instead.

One org, five people, five kinds of access Brightwell Lighting, Manchester, 24 people (demo data) None of them is Admin PERSON AND PROFILE LEADS DEALS INVOICES SETUP Nadia Okafor Account exec • Own Records Own Own None Closed Tom Brennan Sales manager • one rung above Team Team Read only Closed Priya Raman Bookkeeper • Finance profile None Read only All Closed Jonas Weber Intern • Own + lead queue Queue None None Closed Claire Fenton Office manager • permission set All All None Users Claire's Setup access comes from the Manage Users permission set, not from the Admin role. Priya works two days a month: her account is deactivated between visits and switched on for the day.

The account executive (Nadia). Read and edit at Own level on Leads and Deals. Invoices are closed off on her profile, so the object does not appear in the app at all. Team chat, the knowledge base and the shared product catalogue are fully open to her.

The sales manager (Tom). His profile could be identical to hers; the difference comes from the hierarchy. Sitting a rung above, he sees every lead and deal owned by the eight people below him. On invoices he has read but not edit: the profile sets that object's read to all and its edit to none.

The bookkeeper (Priya). A finance profile: full rights on Invoices, Orders and Payments, read only on Deals and Contacts, Leads closed. She can chase payment without reading how a discount was negotiated.

The intern (Jonas). The narrowest profile in the org. Deals and invoices are closed and only Leads are open, at Own level. Web form leads land in a queue; he picks up what he works on and sees nothing he has not claimed. He has no export rights at all, because exporting is not a profile setting but a separate permission set, and it is granted to nobody by default.

The office manager (Claire). She needs to create users, reset passwords and read the audit log, but not to change how the org is configured. Rather than the Admin role she was given the Manage Users permission set, which opens only the user and access sections of Setup and leaves company settings, billing and security closed. It carries one more boundary: that permission cannot grant the Admin role and cannot touch admin accounts.

Ready-made permission sets include Data Manager, Reporting and Export, Auditor, Support Specialist, API Integrator and Setup Assistant. They all follow one idea: add a single right without rewriting a profile.

Which route fits somebody outside the company?

A freelance designer, a bookkeeper who visits twice a month, a three-month intern. Three situations, three different answers.

One habit for interns: when the placement starts, put its end date in the calendar as a task. The most common reason expired access stays open is that nothing anywhere was due to remind anybody to close it.

Who deleted it, who changed it? Where the trail lives

However well the permission model is built, the "who did this" question arrives eventually. In Ohana360 the answer is not on one screen but in four separate trails.

TrailWhat it recordsIts limit
Audit LogUsers added, roles changed, sessions ended, data exported, accounts entered with Login AsThe most recent 1,000 entries per org; the screen shows the last 200
Login HistorySuccessful and failed sign-ins, the method (password, two-factor, invite, mobile) and the IPKept for two years
Record viewsWho opened which record, when, and from which IP addressOne line per person and record every ten minutes
Field HistoryWhich field, the old value, the new value, by whom and whenA Marketplace add-on; only records changes made after it is enabled

One detail matters more than it first appears: Login As, where an administrator enters somebody else's account, is written to both the audit log and login history with the names of both parties. That right also lives in its own permission set, and it refuses to enter admin accounts.

What to do the day somebody leaves

The leaving-day checklist has to be short, because long ones do not get done on the day. The order matters: hand the records over first, close the access second.

OrderStepWhere
1Hand over open records: select them in the list view and use Change Owner in bulkDeals, Accounts and related lists
2Deactivate the account: sign-in is blocked, records and history stay in placeSetup > Users, the status switch
3Sign them out everywhere: browser and app sessions drop, the password is untouchedThe menu on the user's row
4Review device sessions and end anything still listedSetup > Devices and Sessions
5Read the last week of exports and record views on that accountSetup > Audit Log
6Do not delete the account, and do not reuse the name: ownership is stored as a nameSetup > Users
Careful: API keys the person created themselves are not revoked by Sign out everywhere. They stop working once the account is deactivated, which is why step two should not be skipped. If that person is named as an approver anywhere, update those too; the approval workflow guide covers where approvers are defined.

What it does not do

Week one: a schedule for building the permission model

DayTaskTime
1List the users: who does which job, and how many have no profile assigned20 minutes
2Draft three profiles: field, back office, management. Copy a ready-made one and narrow it40 minutes
3Set the sensitive objects to private in Sharing Settings: deals, leads, invoices, employees15 minutes
4Rename the hierarchy rungs to match the company and give everyone a rung25 minutes
5Write the exceptions as sharing rules, naming each one after the reason it exists30 minutes
6Count the people on the Admin role. If it is more than two, move the extras to permission sets20 minutes
7Use Login As to view the org from three different profiles: is what they see what you expected?20 minutes

That last test is the valuable one. Whether a permission model is right is visible from the user's screen, not from the settings page. Brightwell's round turned up two things: the technical team could still open the price list, and the intern had in fact never been given a profile at all. Both took ten minutes to fix, and both would have stayed that way for months if nobody had looked.

Frequently asked questions

What is the difference between a role, a profile and a permission set?
The role says who someone is, the profile says what they can do. Ohana360 has three roles: Admin, Standard and Portal. An Admin passes every restriction, a Portal user only reaches the customer or supplier portal, and everyone else is Standard. The profile is the real permission shell: it defines which apps are open and the read, create, edit and delete level on every object. A permission set is the third layer, and its rule is simple: it adds on top of a profile and never subtracts. That way one person can be given the audit log or data export without rewriting their profile. The fourth setting, the hierarchy role, is not a permission but a field of view: a level above sees the records owned by the levels below it.
What happens if I never assign a profile to a user?
They count as unrestricted. When no profile is assigned, object permissions are simply not applied to that person, and only the org-wide sharing defaults remain in force. So if most objects are still set to open, the account you just created can in practice read and edit every record. This is why the profile field is filled in on both the new user form and the invite form: choose it while you set the person up, not afterwards. The hierarchy role works the other way round: with no role assigned, nobody's records are inherited.
I want a rep to see only their own records. Where is that set?
There are two routes and they do different jobs. Sharing Settings in Setup fixes the org-wide default per object: set Opportunities to Private and everyone sees only the deals they own, except admins and anyone above them in the hierarchy. Setting Read to Own in a profile's object permissions restricts only the people on that profile and leaves the rest of the org untouched. The arrangement that usually works is both together: make the default private, then use a sharing rule to open read access back up to one role or group.
Can I give the bookkeeper every invoice but hide salary figures from them?
Opening the invoices is easy: on a finance-style profile, Invoices, Orders and Payments get read and edit on all records, while Opportunities and Leads stay read only or closed. Hiding one field is a different matter, because permissions are defined per object. If a figure such as a salary genuinely has to be hidden, keep it on a separate object and set that object's read permission to none on the relevant profile. Page layouts can hide a field per profile, but that is a display setting rather than a security boundary.
Where can I see who deleted or changed a record?
There are four separate trails. The Audit Log in Setup records administrative actions: users added, roles changed, sessions ended, data exported. Login History on the same screen keeps successful and failed sign-ins with the method and the IP address. The record view report shows who opened which record and when, writing one line per person and record every ten minutes. To see the old and new value of a single field, enable the Field History add-on from the Marketplace; from then on changes are listed in the Field History card on the record page.
Someone has left. Should I delete the account or deactivate it?
Deactivate it. Record ownership in Ohana360 is stored as the user's NAME rather than an internal id, so deleting an account moves nothing and leaves the old name sitting on every record. Worse, creating a new user with that same name hands them the old records. The order that works: reassign the records in bulk with Change Owner from the list views, deactivate the account, then use Sign out everywhere from the row menu. Deactivating also stops any API keys that person created, which ending sessions on its own does not do.

Let everyone see what their job needs, and no more

Set the profile once, close the sensitive objects, open the exceptions with a rule. Close a leaver's access the same day and keep the change trail on the record.

Read next