The short answer

Build roles from the jobs in your company, not from people, and give each job the least level it needs in each area, from nothing up to approve. Keep the person who enters a transaction apart from the one who approves it. Test each role with a test user before assigning it, and change access the day someone joins, moves or leaves.

Key takeaways

  • Name each role after the job, such as warehouse keeper, so it survives staff changes.
  • Err on the low side: someone short of access asks within a day, someone with too much never mentions it.
  • When testing a role, confirm forbidden actions are refused on the server, not only that the button has gone.
  • Once a quarter, list every user with their role and have each manager confirm their team.
  • Require two-step sign-in for everyone who can approve or pay.

Start from jobs, not people

Access set person by person drifts. One clerk is given a little more to cover a holiday, nobody takes it back, and a year later nobody can say why the van driver can approve credit notes. Design access around jobs instead: write down each job, decide what it needs, and give each person the role of their job.

Most distributors need fewer jobs than they expect: sales clerk, collector, warehouse keeper, buyer, accountant, field supervisor, branch manager and owner. A person who really does two jobs gets one role built for the pair and named for it, rather than a pile of exceptions.

TipName each role after the job, such as warehouse keeper, never after a person, so it survives staff changes.

Give each job a level in each area

For every job, go area by area through the system: customers, sales orders, invoices, payments, stock, purchasing, the ledger and settings. For each, decide the least the job needs: nothing, view, create, edit, full control or approve. Each level should include the ones below it, so granting edit already allows view and create.

Err on the low side. Someone who finds they cannot do part of their job will ask within a day; someone with too much access will never mention it.

Keep approval apart from entry

The simplest control in any company is that the person who enters a transaction is not the one who approves it. The clerk who raises a purchase order should not release it; the rep who sells on credit should not lift the customer’s credit hold; the cashier who counts the till should not approve the shift.

Treat approve as a separate level, granted only to the few who need it, and check each role for pairs of rights that should not sit together.

  • Raising and approving purchase orders.
  • Entering vendor bills and paying them.
  • Selling on credit and releasing credit holds.
  • Counting cash and approving the count.
  • Changing prices and approving discounts above the ceiling.
  • Creating users and granting them roles.

TipIn a small company where one person must do both, keep the right, but have the owner read a weekly list of what that person approved.

Build, test, then assign

Build each role once, with the levels you agreed, then try it before anyone relies on it. Sign in as a test user with that role and walk through a normal day of that job. Every refusal you hit is a missing grant; every screen you can change but should not is a grant to remove.

  1. Write the role on paper: job name and level per area.
  2. Create the role and set its levels.
  3. Give it to a test user and work through a day of that job.
  4. Fix what was missing or too wide.
  5. Assign the role to everyone in that job.
  6. Keep the paper version as the record of what was agreed.

A hidden button is not a lock

Many systems control access by hiding menus. That keeps screens tidy, but it is not protection: anyone who finds the address of a hidden page, or sends a request from outside the screen, may still get through. The rule must be checked where the data lives, on the server, every time a record is read or saved.

When you test a role, try the actions it should not do and confirm they are refused, not only that the button has gone. A screen that shows a record read-only, rather than hiding it, also tells the user why they cannot change it.

Review access when people move

Access goes wrong at the moments people join, change job or leave. Make each of those moments trigger a change: a new starter gets the role of their job on day one, a person who moves gets the new role the same day, and a leaver is deactivated before they walk out.

Once a quarter, list every user with their role and have each manager confirm their team. Look hardest at anyone who can approve, pay or change settings.

TipRequire two-step sign-in for everyone who can approve or pay, since a stolen password there costs the most.

Checklist: Roles and permissions checklist

  • List the jobs in the company, not the people
  • Set the least level each job needs in each area
  • Name roles after jobs
  • Keep approving apart from entering
  • Test each role with a test user before assigning it
  • Check that forbidden actions are refused, not just hidden
  • Change roles the day someone moves or leaves
  • Review every user’s role once a quarter
  • Require two-step sign-in for approvers and payers

In Axon Suite

How Axon Suite handles it

In Axon Suite every user holds one role, and every role holds a level per area: View, Create, Edit, Full or Approve, with granting Edit including Create and View. Five starter roles come ready and you can build your own; without the level a screen turns read-only and the server refuses the change all the same. Changes to users, roles and permissions are logged with who made them, when, and the record before and after.

Feature

Roles that decide who does what

Every user holds one role, and every role holds a level per area: View, Create, Edit, Full or Approve. Without the level, the screen turns read-only and the server refuses the change all the same.

Open: Roles that decide who does what
Feature

Who changed what, and when

Changes to users, roles, their permissions and document numbering are logged with who made them, when, from which address, and the record before and after. Every record also carries who created it and who changed it last.

Open: Who changed what, and when
Feature

Sign-in that resists guessing

Repeated wrong passwords lock the account. A reused session token ends the session outright. Office users can be asked for an authenticator code, and the office can sign a rep’s phone out remotely.

Open: Sign-in that resists guessing
Feature

Who may change a price

A price typed away from the list, a header discount past your maximum, or a line discount while line discounts are switched off all need the price-override permission. Without it the document is refused, on the preview and on save alike, from the office or the rep app.

Open: Who may change a price

Before you go

Questions owners ask

Can one person hold two roles?

Not in Axon Suite. Each user holds one role, so build a custom role that combines the levels that person needs.

Can we change the five starter roles?

No. In Axon Suite the five starter roles stay as shipped. Create your own role, set its level per area and assign it instead.

What should we do the day someone leaves?

Deactivate the user before they leave the building. In Axon Suite that ends their open sessions at once.

Glossary

Terms in this guide

Open the glossary

See your own van sale reach the ledger in 30 minutes.

Chat on WhatsApp