Written guide
Roles, records, pages and menus
Cedar & Form needs Maya Chen to handle incoming enquiries. She should read, create and update lead records, without deleting them, approving decisions or editing page components. Her navigation should lead to the enquiries work, while the administrator retains a separate account for configuration. This is the starting permission profile; you will also build a page-editor alternative and practise removing access.
A role supplies permissions. A group supplies membership and can grant roles to its members. A person's effective access can therefore come from direct role assignments and several groups. Looking only at the role you are editing misses those other sources. Before changing Maya's account, open her profile in User Management and note her direct roles, group memberships and inherited roles. Use a training account without Owner, RootAdmin or RootUser privileges for the colleague side of this exercise.
Record permissions describe actions on records. Page permissions describe actions on components. Menu access describes which screens are available. These controls answer different questions: a visible Leads link does not by itself authorize changing a lead; permission to update records does not by itself add that link to navigation. A role name such as cedar-enquiry-editor is an identifier, not a rule restricting records to Cedar enquiries. Collection access, ownership, workflow state and server authorization can impose additional conditions.
Use a training organisation containing disposable lead records and a draft page. Create the records through the CRM course or your normal Leads form and give the lead a recognisable training name such as Cedar permission practice. Avoid deleting a real lead merely to demonstrate a denied action. Keep an administrator session available in one browser profile and Maya's session in another so that each result belongs to the correct identity. Record the organisation shown in each session before starting.
The finished example will contain a saved custom role, a group granting that role, Maya's membership, and observed allowed and denied actions in Maya's fresh session. A list of selected checkboxes is an intermediate result. The colleague's actual experience is the final result of the exercise.
System roles and custom role creation
Open Configuration → Role & Permission. The Role Manager sidebar lists available roles; New Role opens a blank custom role in the main editor. On a narrow screen, use Roles to reach the sidebar. Always read the selected role name before changing permissions. The separate Menu Access entry opens the same manager in its menu view and can initially select the built-in User role; it does not mean your custom role is selected.
First select a system role and inspect its badge. Its name, description, record permissions and page permissions are read-only in this editor. Menu access remains editable. The read-only banner therefore has a specific scope: it does not disable the menu panel. Do not change a shared system role for this first exercise, because its menu changes may affect many existing colleagues.
Now create the Cedar role:
- Click New Role. Enter
cedar-enquiry-editor in Name.
- Enter
Cedar & Form enquiry staff: read, create and update leads; no deletion or page editing in Description.
- In What this role can do with records, select Read, Create and Update. Leave Delete, Review and Approve clear.
- Expand What this role can do on pages and leave its four permissions clear.
- Click Create role at the bottom of the form. Wait for the save to finish. If an error appears, keep the form open and correct it before continuing.
- Select another role and return to
cedar-enquiry-editor, or reload the manager and select it again. Read back its description and the three selected record permissions.
Names accept letters, numbers, hyphens and underscores. Spaces and punctuation such as & are not accepted in the identifier; use the description for readable wording. The saved name is immutable in this editor, while a custom role's description remains editable. Choose the identifier before assigning it to groups. If you need a different identifier later, create a replacement role, transfer intended assignments and test the replacement before retiring the old assignment.
A successful first save changes the primary action from Create role to Save role and makes Name read-only. The sidebar also has Save for custom roles. Prefer the form's primary action for creation because it presents name validation with the form. Do not treat switching roles or closing the screen as a save.
System roles have predefined capabilities. Editing their menus creates or updates the organisation's saved representation of that role; it does not rewrite the platform's global built-in definition. For a job with different record or component capabilities, make a custom role instead of trying to unlock disabled system-role checkboxes.
Record permissions and job responsibilities
The six record permissions let you describe different responsibilities without assuming that everyone who can read information should also change it. Read opens and views records. Create adds records. Update changes existing records. Delete removes records. Review concerns items waiting for a decision, and Approve concerns signing those items off. The editor exposes separate checkboxes; selecting Review does not automatically select Approve.
Return to the saved cedar-enquiry-editor role. Read, Create and Update should be selected, and the section should report three grants. That combination describes Maya's intended work. It does not identify a particular collection and does not select the CRM screen. Leave the role at these three permissions while you configure navigation in the following section.
For a read-only variation, create cedar-enquiry-reader with only Read selected. Use the description Cedar & Form enquiry observation; no record changes. Save it, then give it only the menus needed for the intended reading task. Test with a second training account or replace the editor role temporarily; adding reader to an account that already has editor will not remove the editor's update grant.
For a review workflow, create cedar-enquiry-reviewer and choose Read and Review initially. Open a training item already waiting for review in a module that implements that workflow. Review and approval are meaningful only where the module has corresponding states and actions. If the colleague must also sign off, add Approve, save and repeat the same item-stage exercise with a fresh session. Do not assume an approval queue appears simply because the checkbox is selected. Nor should you grant Create, Update or Delete by habit when the task is only reviewing.
A practical decision table for the main Cedar role is:
A hidden action establishes a UI outcome; it does not alone establish that the server rejects a direct request. In an authorised test environment, use the same module's documented API with the colleague's own credentials to check the denied operation as well. Do not copy an administrator request with administrator credentials and call it a colleague test.
If Update still works after removing it from this role, inspect every role and group applied to the account, refresh the account's session, and examine collection or module rules. If a permitted save fails, read the error before changing permissions: a required field, invalid record state or missing collection-level rule can fail independently of the role.
Page-component permissions and the editor role
Expand What this role can do on pages. The four permissions are View, Add, Remove and Configure. They refer to seeing components, placing new components, taking components off a page and changing component behaviour. They are separate from record Create, Update and Delete. A person who maintains lead data does not need component editing capabilities merely because the data appears on a page.
Keep all four clear on cedar-enquiry-editor. For the alternative Cedar page-maintenance job, create a separate custom role named cedar-page-editor, with description Cedar & Form draft page maintenance. Give it View, Add and Configure, leaving Remove clear for the first test. Choose any record permissions only after considering the draft-page workflow you are authorising; page components are stored and loaded through application services, so the component controls alone are not a promise that every editor action will succeed.
Save the role and give it the Build Studio menu entries needed for the exercise. Assign it to a separate training colleague or replace Maya's earlier assignment temporarily so that the test does not combine unrelated grants. Use an unpublished practice page with a heading Cedar component practice and an expendable text component. Record the page's initial saved state in the administrator session.
Sign in as the page editor. Open the draft page and try viewing its components. Add a text component containing Training hours: Monday to Friday, then change its configuration through the actual component controls. Save the page using the editor's own save action, reopen it and read back the value. Role saving and page saving are separate operations: saving permissions does not save a page draft, and saving a page does not change a role.
Next attempt to remove the expendable component. The intended role profile lacks Remove. Observe the actual control and outcome. If removal succeeds, stop and inspect the account's other grants and the editor's enforcement rather than claiming that the role worked. If an action is simply unavailable, record that UI result and keep server enforcement as a separate test.
To demonstrate a complete page-maintainer role, the administrator can add Remove, click Save role, refresh the colleague's session, and repeat removal on the expendable component. Reopen the page to confirm the persisted result. Use a new expendable component if the first attempt unexpectedly succeeded.
None of these four labels says Publish. Publishing can involve other menus, organisation configuration and deployment-specific authorization. Teach publication through the Build Studio course's explicit save, preview and publication steps, then check that action independently for the colleague. A visible editor or a Configure grant is insufficient evidence of publishing permission.
Menu presets, broad access and save controls
The controls above the menu tabs have different meanings. Use a disposable custom role named cedar-menu-practice to compare them, so the comparison does not disturb Maya's working role. Save that new role before experimenting and keep it unassigned until a particular profile is ready for testing.
Preset… replaces the current route selection with the chosen preset's menu paths. It is a starting menu layout, not a command that changes the role's name, record permissions or component permissions. Choose a preset, inspect all three tabs, then add or remove individual routes as necessary. Reapplying a preset after customising the list can replace those custom selections. A preset whose resolved path list is empty becomes explicit No access in this editor.
Select all selects the currently available catalogue paths across all three tabs, not only the tab on screen. It stores an explicit list. This distinction matters when the product later adds a new screen: a list assembled from today's catalogue is different from an unrestricted policy. After clicking it, inspect the counts on Appmint, Business Made and Mobile app before saving.
Allow everything clears the explicit include and exclude lists. For a custom role, this is the editor's no-restriction menu setting. It is not a grant of every record action or component action. Built-in roles can also carry default menu tiers in the signed-in profile; runtime handling may resolve a built-in default when its explicit web list is empty. Check the actual built-in role with a nonprivileged account instead of assuming this button overrides every built-in default.
No access clears the include list and records an explicit deny-all marker. It is different from clearing the last individual checkbox. For an ordinary staff profile, the current web menu logic gives this explicit deny priority over other ordinary menu grants. Platform operators and roles defined as all-access are handled earlier, so Owner or root accounts are unsuitable for proving ordinary restrictions. Customer and workspace guest identities have their own navigation rules as well.
To compare these settings, select an explicit menu item on the practice role, save and reopen it. Then choose No access, save and reopen. Note that the panel now says No access. Next choose Allow everything, save and reopen; note the changed summary. Restore the intended explicit list before assigning the role to a colleague. If you test No access with a dedicated account, an application landing or welcome screen may still be reachable. No access is a menu policy, not an account lock or token revocation action.
The menu panel has Save menu access; the custom-role form has Save role, and its sidebar has Save. These are separate visible save actions, but they currently serialize the same role object. If you change record permissions and menus before pressing Save menu access, that save can persist both changes. Do not treat either button as an isolated transaction over only its nearby controls.
Use a clear working sequence: finish record/page permissions, Save role, reopen; then finish the menu profile, Save menu access, reopen. For a system role the menu button is the available save route because the general role controls are read-only. On failure the panel keeps an inline error; the selected ticks alone are not evidence of persistence. Read the failure, correct it, retry once appropriate, and reopen the role before moving to colleague testing.
Group grants and direct role assignment
Once the editor role has a saved menu profile, assign it through a group. Open User Management → User Groups and create or edit cedar-enquiries. Use Description Cedar & Form enquiry handling team. In Roles this group grants, add cedar-enquiry-editor. Select Maya's training account by its controlled email address in the membership controls. Click Add 1 to stage Maya as the selected member, then click Create group or Save group to persist the change.

Historical unsaved group form: LeadEditor is available but unchecked, and the selected-role count is zero. The front-desk text is the name-field example, not proof of an existing Cedar group. Select your actual saved role and intended member, save, and reopen both the group and the person to prove the relationship.
The group operation saves the group and then applies added or removed explicit memberships to the affected users. Reopen both the group and Maya's profile afterwards. A group-save message should not be the only evidence for a membership change; a later membership request can fail separately. The saved result should show the named role on the group and Maya as an explicit member, with the corresponding inherited role in her profile.
Groups can also show members present through a role relationship. The group editor distinguishes these from explicitly added members, and they cannot be removed by the explicit-member control. If Maya appears through such a relationship, trace that underlying assignment rather than repeatedly trying to remove her from the visible list. Built-in group roles can be fixed rather than freely removable. Work in the custom Cedar group for this lesson.
A direct role assignment is useful for a deliberate individual exception. The current modern profile supports removing certain direct roles for an eligible administrator, but it does not expose a corresponding general Add role control. Do not search indefinitely for one based on an older screenshot. Use the group workflow for the ordinary visual lesson. For administrators with an authorised API workflow, the application service exposes this advanced alternative:
{
"email": "<Maya's controlled training-account email>",
"roles": ["cedar-enquiry-editor"]
}
Use the organisation and authentication mechanism already configured for your approved API client. The base URL placeholder is not a hostname to paste literally. The email placeholder must be replaced with the actual training account, and the role must already exist under the exact saved name. Keep tokens and session headers out of screenshots and course notes. This request changes access when sent; submit it only for the training assignment you intend.
Read the API response, reopen Maya's profile, and distinguish the new direct assignment from group inheritance. To remove that direct grant through the same API workflow, use POST <configured API base>/profile/user/role/remove with the same email/roles payload. An HTTP success alone is insufficient for the lesson: follow it with the refreshed profile and the colleague's fresh sign-in.
Avoid leaving both a direct assignment and a group grant accidentally. They can be intentional, but removing one will not demonstrate full revocation while the other remains. Record why each source exists, then choose one source for the basic Cedar exercise.
Allowed screens, denied actions and fresh sessions
Now use Maya's separate browser profile. Sign out and sign back in after the administrator's role and membership saves, or use the product's supported session refresh and inspect the returned identity. The current profile carries resolved roles and permissions, so an older open tab may not reflect a recent change.
Start with the allowed workflow. Open the Appmint CRM Leads screen through the visible menu. Open Cedar permission practice, read its details and make a harmless change to its training note. Save the lead with the module's own save action. Reload or reopen it and read the changed value. Create a second disposable lead through the normal form, supplying the required values shown by that form, and reopen it after saving. These outcomes demonstrate the intended Read/Create/Update path under the actual account.
Next test the intended boundaries. Inspect Delete on a disposable lead. If it is absent or disabled, record that exact UI result. If it is available, attempt deletion only on the disposable record and observe whether the server accepts or rejects it. Check the record afterwards from the administrator session. An unexpectedly successful delete is a failed restriction test, even if the role editor still displays an unchecked Delete box.
Test a restricted screen both through navigation and through its actual URL. Copy the administrator's URL for a training-only configuration destination, then open it in Maya's browser profile. Observe the route guard, displayed screen and any loaded data. Do not invent a URL from its sidebar label or assume hiding a menu prevents a direct URL. Record both the menu result and the direct-navigation result. If the screen opens, inspect other assigned roles and report the remaining authorization issue before calling the role ready.
Repeat the relevant component tests only with the cedar-page-editor alternative. Keeping those tests separate makes it clear which role grants which operation. Where an approval workflow exists, attempt the real review and approval actions at the correct workflow state. A missing workflow or an invalid test item cannot establish that Approve is denied.
Use a simple observation sheet with columns for account, organisation, role sources, application, action, intended result, actual result and saved-state check. Enter what happened: for example, Update allowed; training note remains after reload, or Delete visible; server refused; record remains. Avoid substituting checkbox unchecked for an action result.
If the UI fails before it reaches the permission check, resolve the actual issue first. A network failure, missing record, invalid required field, feature entitlement or expired session is not evidence of a denied permission. Re-run only the affected case after correction. A completed permission profile has both successful intended work and observed boundaries; neither side alone is enough.
Access removal and role maintenance
For the final exercise, remove the source of Maya's editor access. In the administrator session open cedar-enquiries, remove Maya's explicit membership, and Save group. Reopen the group and her profile. If she has a direct cedar-enquiry-editor assignment, remove that separately through the available direct-role removal action or the authorised API method from the previous section. The profile's removal controls are restricted and protect roles such as Owner and system roles; do not use a privileged account as the disposable subject.
Refresh Maya's session and repeat the same Leads screen, direct URL and training-record action cases. Use the same observation sheet so the before and after results are comparable. Confirm the remaining role sources rather than expecting an account with baseline User permissions to become completely unable to sign in. Removing one business role is not equivalent to locking the account or revoking every device.
If access remains, work through its sources in order. Reopen the account after the save, check direct roles, check every group, identify any all-access role, then sign in afresh. Check whether the intended restriction was a menu selection, a record action or a collection/module rule. An inherited grant cannot be removed by deleting an unrelated direct grant. A No access menu test also has different semantics from removing an update permission.
After the revocation exercise, restore only the assignment that Cedar intends to retain. Reopen the group, refresh Maya's session and repeat one allowed and one denied case. Keep the administrator recovery session separate throughout; there is no need to grant Maya Owner to make the workflow pass.
For ongoing changes, edit a role according to a named job responsibility. Before changing a shared role, identify its directly assigned users and granting groups through the available directories. Test the proposed profile with a training account first. Save one coherent change, read it back and re-run the affected operations in each application the role serves. A mobile-only adjustment still deserves a mobile test, and a web-menu change does not establish record enforcement.
If a new responsibility should apply to only some members, create a separate custom role or group assignment instead of broadening the shared role silently. For an identifier change, create the replacement role and migrate assignments deliberately; the Name field on the existing saved role is not editable. Keep the old assignment until the replacement's intended operations work, then remove the old grant and repeat the denied cases to catch permissions it had contributed.
The Cedar exercise is complete when the saved role and group explain Maya's effective access, the intended actions persist their results, denied actions actually fail in the tested paths, and removing the grant changes her refreshed access as expected. Keep any untested application, physical device, workflow or API case as an open item in the observation sheet rather than assuming that one web screenshot covers it.
BusinessMade Roles and Permissions: Record, Page and Menu Access — supporting guide
BusinessMade route: Admin → Roles & permissions (/admin/roles).
This route mounts the shared account/access component, checked against BusinessMade's route registry. Use the Business Made menu-access tab for BusinessMade screen permissions. Appmint Mobile access remains separate; a staff account, HR employee and Device Hub are not interchangeable identities. Main demonstrations stay in BusinessMade; any optional Studio Manager branch is explicitly identified.
**Written course script · documented draft **
Overview
Why this matters
BusinessMade separates what people can do with records, what they can change on pages and which screens they can open. We'll configure those controls, assign a role through a group and check the result using a colleague's account. We'll also look at mobile access, presets and how to remove a grant without overlooking another source of access.
Preparation
Keep administrator and ordinary colleague sessions in separate browser profiles, in the same training organization. The colleague must not have Owner, RootAdmin or RootUser privileges. Have a disposable customer. A draft website page is needed only for the optional shared Build Studio permission branch. Inspect existing direct roles and groups before starting; these are cumulative sources of access, with additional menu-policy exceptions described below.
1. Find the role editor and distinguish system roles
Open Admin → Roles & permissions. Select a system role and inspect its badge. Show that name, description, record and page permissions are read-only while its menu panel remains editable. Do not change a widely assigned system role for the practice exercise.
Why this matters
System roles have built-in capabilities. Their menu access can still be customized for this organization. For a different set of record or component actions, create a custom role.
Use Roles to reopen the sidebar on a narrow screen. If entering through Menu Access, inspect the selected role: that route can start on the built-in User role rather than the custom role you intended.

Find your place: the list on the left contains role definitions; it is not a list of staff accounts. The empty main panel means no role is selected. Select an existing definition to inspect it, or New Role for the custom example below. This retained image predates the current menu-tab layout; it is used only to identify the role list and entry point, not as proof of a saved custom role. Do not use Owner as the ordinary employee test account.
2. Create and save a custom role
Choose New Role, enter Name counter-record-editor and a description identifying counter staff who read, create and update records. In What this role can do with records, select Read, Create, Update. Leave Delete, Review and Approve clear. In What this role can do on pages, leave the four component permissions clear. Choose Create role, wait for the result, switch away and reopen it.
The saved name becomes read-only; its description remains editable for custom roles. Names accept letters, numbers, hyphens and underscores. A name describing counter staff does not limit all record access to one collection. Collection rules, record ownership, workflow state and server authorization are separate constraints.
3. Compare record responsibilities
Why this matters
Read, Create, Update and Delete separate ordinary record operations. Review and Approve are distinct decisions where a module implements that workflow. Selecting Review doesn't automatically select Approve or create an approval queue.
Create a reader alternative with Read alone. Do not assign it on top of the editor and expect Update to disappear. Test it with a separate account or replace the existing grant. For a reviewer alternative, select Read and Review, assign it to the controlled account and use an actual item waiting for review. Add Approve only for the sign-off branch, save and refresh the account before repeating.
Demonstration outcome
The editor reads a training customer, creates a disposable customer and saves a non-sensitive field change through the Customers & Benefits editor. Delete should be refused or unavailable; record the actual outcome. If the action is hidden, separately test server refusal through the same documented API with the colleague's credentials. A required-field error or network failure is not a permission-denied result.
4. Advanced shared capability: page-component permissions
This optional branch is for a person who also maintains the organization website through Appmint Build Studio. It does not add a website editor to BusinessMade or grant POS operation through a page checkbox. Keep it separate from the counter role. Create cedar-page-editor. Under What this role can do on pages, select View, Add and Configure, initially leaving Remove clear. Choose any necessary record grants explicitly for the page workflow, and save the role. Configure the required Build Studio routes in its menu profile.
Why this matters
These controls concern website page components, not customer records or POS sales. We'll test this role on a draft page with an expendable component, so the result belongs to the capability we're configuring.
Assign the role to a separate ordinary account. Open the draft page, add a text component, configure its text, save the page and reopen. Attempt removing the expendable component and record whether the control or server refuses it. If removal succeeds unexpectedly, investigate other grants or enforcement; do not describe that result as success.
For the full-maintainer alternative, enable Remove, save, refresh the colleague identity and repeat on a disposable component. The four labels do not include Publish. Publication needs its own Build Studio action and authorization check.
5. Choose Appmint, Business Made and Mobile menus
Open Menu access on the intended saved role. Show the Appmint, Business Made and Mobile app tabs. Select Business Made, then Customers & Benefits, checking /crm/customer-groups as well as its label. Add only the other screens needed for the counter role. Section-heading selection toggles its children; a single row selects its route. Labels sharing one route may move together.
Switch to Appmint only when the person also needs Studio Manager access. Return and confirm the Business Made selection remains. The tabs contribute to one profile rather than three discarded drafts.
Important mobile explanation
An empty mobile selection is shown as No mobile restriction. Selecting web screens doesn't deny the phone app. Choosing a mobile item changes this role's mobile profile to the selected items.
Select the actual required mobile route from the installed catalogue. Save and inspect it on a controlled mobile account. If mobile is not part of the job, do not describe an empty mobile tab as a deny rule. Global No access is not a mobile-only restriction.
Choose Save menu access, wait for the result and reopen the role. A selected count establishes configured routes, not successful application access; features, account type and other role logic also influence what the person sees.
6. Compare presets and broad-access controls
Use an unassigned disposable custom role for this comparison. Explain each control beside its actual result rather than narrating all four while clicking unpredictably.
Why this matters
Select all saves today's list. Allow everything removes the role's explicit menu restriction. No access stores a deliberate denial. Those are different policies, even when two screens initially look similar.
Demonstrate explicit route → Save → reopen; No access → Save → reopen; Allow everything → Save → reopen. Restore the intended list before assignment. An empty resolved preset becomes explicit No access in this editor. Ordinary explicit menu denial can override other ordinary menu grants; privileged identities are handled earlier, so an owner account is unsuitable for proving denial. Landing or welcome screens can remain reachable.
7. Save without accidentally combining draft changes
Explain with the actual controls visible
Save role and Save menu access are separate buttons, but they currently save the same role object. If you change both areas before saving, either operation may persist both drafts.
Finish record/component changes, Save role, reopen, then finish menus, Save menu access, reopen. System roles use the menu save route because the other controls stay locked. Show an actual save error if one occurs, correct it and read the saved state again. Switching roles or closing the panel is not a save operation.
Do not illustrate this with a text warning slide; show the two controls and the shared saved role in a brief focused illustration, followed by the actual clean save sequence.
8. Assign the role through a group
Open Admin → Users → User Groups, create or edit counter-team, and select counter-record-editor under Roles this group grants. Find the controlled colleague by email, choose Add 1, then Create group or Save group.
Reopen group and user profile. Confirm the role on the group and explicit membership on the person. The group save and membership synchronization use separate operations; a later failure can leave a partial result.
Why this matters
Add stages the selected person. Save applies the group change. I'll check the group and the person's profile so a partial membership failure doesn't go unnoticed.
Rows marked as present through a role cannot be removed as ordinary explicit membership. Trace that role assignment. A fixed built-in group role is not a freely editable custom group grant.
9. Advanced alternative: direct role assignment
The modern profile exposes eligible direct-role removal but no general Add Role button. Teach the group route for ordinary UI work. For an authorized administrative API client, the current service exposes:
{
"email": "<controlled colleague email>",
"roles": ["counter-record-editor"]
}
Use the configured organization's authentication and actual saved role name. Keep credentials private. Inspect the response, reopen the user profile and distinguish direct assignment from inherited roles. The matching removal endpoint is POST <configured API base>/profile/user/role/remove with the same payload shape.
Why this matters
A direct assignment is an individual grant. Removing group membership won't remove this second source. We'll retain only the source intended for this example.
Do not execute the literal placeholder URL or show an administrator request as a restricted-user test.
Check where the grant comes from

This retained account has the User group and role. Your custom test account must show the intended assignment instead. Write down each direct and inherited source before testing: otherwise a second grant can make an operation succeed even after the role you are inspecting was restricted. The linked employee below is a staff relationship, not another permission grant.
10. Prove allowed work and denied boundaries
Sign the colleague out and back in after changes, or use the supported identity-refresh route. Confirm account and organization. Open Operations → Customers & Benefits through its permitted menu. Inspect the controlled customer, make an allowed non-sensitive edit through its actual editor, save and reopen. Create and reopen a disposable customer only with all required fields and in the training organization.
Attempt deletion only on that disposable record and inspect its existence afterward from the administrator session. Test a restricted screen using its actual copied URL in the colleague session as well as checking the menu. Hidden navigation does not alone establish route or API protection.
Capture account, organization, role sources, action, intended result, actual response and saved-state check. Keep optional page, approval and mobile tests tied to the product, role and module that implement them. A missing workflow cannot prove approval is denied; an unavailable feature cannot prove menu authorization works.

Read a denial precisely: this historical fixture reports that /operations/hubs is not available for the role. It shows the route that was refused and an optional Request access control. It is not proof that your new role denies deletion of a customer; that requires the operation-specific check described above. Nor should this old owner-access finding be copied as a desired Owner policy. If an intended action is refused, give the administrator the exact route and current account context.
11. Remove access and maintain shared roles
Remove the colleague's explicit group membership and save. Remove any separate direct editor grant through the eligible profile Remove action or the authorized API. Reopen the profile, refresh the colleague's session and repeat the same record, route and action checks.
Why this matters
We're removing the source of access, then repeating the same test. If access remains, we'll check the other roles and groups before changing unrelated controls.
Removing a business role does not lock the account or revoke every device. If a new responsibility applies to only part of a group, create a separate role/group rather than broadening the shared role for everyone. A renamed role identifier requires a replacement role and deliberate assignment migration; existing Name is immutable. Test the replacement before withdrawing the old grant, then repeat denied operations to catch privileges the old role contributed.
Limitations and checks
Why this matters
A useful permission profile lets the intended work succeed and makes its boundaries predictable. Keep records, components and menus distinct, trace every assignment source, and verify changes through the person's own refreshed session.
Source review does not establish backend enforcement, mobile results or immediate session propagation. Preserve any failed restriction as an application finding; do not edit it into a successful course outcome.
BusinessMade result verification
Confirm the ordinary colleague can open the intended BusinessMade route in a fresh session and complete the authorized record operation. Test denied routes separately from hidden menus. Check the linked HR employee without assuming it is the login account. A branch selector is not a substitute for data authorization. BusinessMade source entries: packages/ui/src/ui/sidebars/business-made-links.ts, apps/business-made/src/shell/route-registry.ts.
BusinessMade Password Policy: Rules, Assignments and Self-Service Access — supporting guide
BusinessMade entry: Admin → Password policy (/admin/password-policy).
Use a controlled staff login and retain another administrator while changing password rules. A password policy is separate from an employee clock-in passcode or a Device Hub connection credential.
Scope: This BusinessMade route uses the shared component whose complete procedures follow. Use the BusinessMade menu and organization throughout. Shared references are implementation evidence, not instructions to switch products. These written steps have not been replayed as a new BusinessMade live walkthrough.
BusinessMade Password Policy combines password requirements with who may change or reset their password. We will create a controlled policy, assign it and test which policy applies, without experimenting on the only administrator account.
1. Create the requirements
The policy record holds constraints; an assignment makes those constraints relevant to a person. Keep a separate administrator available during testing.
Open Admin → Password policy. In the policy list below the assignments panel, use the add control to create the record. Use a recognizable training name such as course-staff-policy and keep it separate from your active default.

Historical empty-list capture, despite its filename: this is not a policy editor or an assigned policy. Current source adds Who each policy applies to above the list. A fresh form, saved assignment and effective-password result are still missing from the course evidence.
Enter Name and Description. Set the intended password age in days, reset delay in minutes, failure limit, dictionary allowance, minimum length (the source field is minLenght), lowercase, uppercase, number and symbol requirements, Pattern and excluded characters. Inspect History Age before setting it: this schema provides no unit explanation, so do not invent one. Save and reopen the exact policy.
Check the result: Requirements persist; enforcement is not claimed until exercised through an actual password flow.
2. Control self-service and assign the policy
Person assignments take precedence over group, then role, then the organization default. With no policy the interface states people can change and reset their own passwords.
Set People can change their own password and People can reset a forgotten password deliberately. Use Organisation default only when the policy should cover those without a more specific assignment. In Who each policy applies to, locate the saved policy by name. Choose People, Groups or Roles, choose the controlled target in Choose…, then select Apply this policy. Wait for the response; this assignment has its own save action and does not wait for a policy-form Save. Refresh and inspect that target under the policy. Recheck an explicitly assigned person when also testing a group or role policy.
Check the result: The intended assignment is returned by the server and effective precedence is checked.
3. Test password change and recovery
Disabling forgotten-password reset means no reset is sent for people under that policy. Completing a temporary-password sign-in is described as still allowed; do not confuse that exception with unrestricted self-service.
In the controlled account attempt a password that violates one configured requirement, read validation, then use an allowed new password. Sign out and sign in again to prove the change. Test Forgot password with the controlled inbox only when reset is enabled. When testing reset disabled, show the actual user-facing outcome and confirm the policy with the administrator rather than repeatedly sending requests. Do not show passwords or reset tokens in recording.
Check the result: The new password works and the recovery behavior matches the effective policy.
4. Replace an assignment and recover
Removing an explicit policy can expose a group, role or default policy underneath it; it does not necessarily mean no restrictions.
In Who each policy applies to, remove the controlled target with the Remove cross next to its chip. To replace it instead, choose that target under the replacement policy and select Apply this policy. The chooser indicates an existing assignment with “now …”; inspect that before replacing it. Refresh. Repeat the effective-policy check using the same controlled account. If policy retrieval fails use the displayed Retry/Refresh action; do not save an empty replacement over missing data. Restore the original controlled assignment after the exercise.
Check the result: Fallback and restoration are verified without locking out the administrator.
Troubleshooting and recovery
Read the actual error and inspect persisted state before retrying a create or other write. Keep the selected organization, record and operation visible. A saved configuration, permission, provider connection and working consumer are separate checks; verify the one the lesson claims. Reopen after saving and compare a controlled alternate/failure path where the chapter calls for it. If the consumer does not behave as expected, retain the error and the saved record identity before changing more fields.
Check your result
You can now follow the module’s setup and check its result. Use the relevant chapter for an alternative, and verify the actual consumer before treating configuration as complete.
Limitations and checks
Current assignments component and SDK PasswordPolicySchema inspected. Exact backend enforcement of every numeric/pattern field needs controlled live tests. History Age lacks a clear unit in the schema; record as a UI documentation gap, not a guessed instruction. No passwords, assignments or email were changed here.
BusinessMade routing and outcome check
The menu and route were checked in packages/ui/src/ui/sidebars/business-made-links.ts and apps/business-made/src/shell/route-registry.ts. Open the module through the route stated at the start, perform the controlled procedure, save, reopen and inspect its actual BusinessMade consumer. Do not infer branch isolation from a header location selection when this shared screen reads organization-wide records. Record any access refusal or consumer mismatch with the exact record identity. No new provider, payment, physical-device or live-tenant action was performed for this adaptation.
Related courses