Troubleshooting

A Permission Change Did Not Take Effect: Causes and Fixes

User Solutions TeamUser Solutions Team
|
6 min read

When a permission you granted does not reach the user, the usual cause is that their session captured its permission set at sign-in, so the change takes effect only after they sign out and back in. EDGEBIC by User Solutions resolves effective access once per session rather than re-checking on every click, which keeps a screen consistent while a user works but delays new grants until the next login.

This post is the detailed version of the permission-lag symptom in the EDGEBIC troubleshooting guide. For the model behind it, what an effective permission is explains how roles and overrides combine into one set.

What You Are Seeing

You edit a role, tick the code the user is asking for, and save. The user tries the action again and gets the same permission denied message, or the button is still grayed out, or the tab is still absent. You re-open the role and the code is clearly ticked. Nothing about the configuration looks wrong, because nothing about the configuration is wrong.

Why It Happens

Cause 1: The session holds the permission set captured at sign-in. This is the answer in the large majority of cases. Effective access is resolved once when the user authenticates, and that immutable set is what every screen consults for the rest of the session. A grant added afterward is in the database but not in the running session. Signing out and back in re-resolves the set.

Note the difference between closing a window and signing out. Users often report "I restarted it" when they closed a screen and reopened it inside the same session. Only a genuine sign-out and sign-in refreshes the set.

Cause 2: You are hunting for a per-user override that does not exist. Administrators who have used other access systems often start looking for a user-level exception that is quietly blocking the grant. There isn't one. Permissions come only from roles, and roles only ever add, so nothing is subtracting this code from one person. That is worth knowing early, because it means the answer is always in the roles the user holds and the causes below are the whole list.

Cause 3: The code was granted on a role the user does not hold. Roles with similar names are easy to confuse, and a user can hold more than one. Confirm the role assignment on the user, not just the tick on the role.

Cause 4: You granted a neighboring code. Modules commonly expose several actions: view, add, edit, delete, plus module-specific ones such as generating a schedule, drag rescheduling, editing actuals, logging actuals, running imports, or managing import masks. Granting View when the user needs Edit produces exactly this symptom. Read the blocked action and match the code to it.

Cause 5: A newly shipped code never reached the custom role. The catalog sync at startup inserts codes the software defines and grants every one of them to the Administrator role. Custom roles are left alone on purpose so an update cannot silently widen access. A screen gated by a new code stays invisible to custom roles until an administrator ticks it.

Cause 6: Startup did not finish the sync. If startup stops before the catalog sync runs, for example because a pending database update failed to apply, the catalog stays stale and permission checks against new codes fail silently. Fix the startup problem first, then restart and re-check.

How to Fix It

  1. Have the user sign out and sign back in. Do this before changing anything else. It resolves the majority of these reports and costs less than a minute.
  2. Confirm the exact code the blocked action needs. Open Settings, Security, Roles, edit a role, and read the permission tree by section, module, and action. Match the code to the action the user is attempting, not the module they are standing in.
  3. Confirm the user actually holds the role you edited. Open Settings, Security, Users, select the user, and read the role selections in the edit dialog.
  4. Compare against a colleague who can do it. Open somebody who performs the action successfully and read their role selections. The difference between the two lists is the fix, and this catches wrong-role and similar-name mistakes faster than reading a permission tree does.
  5. If the code belongs to the job, add it to the main role rather than a side one. A grant that lives on the role matching the person's function stays legible six months later. See how to create a role and how to give one user extra access when only one person needs it.
  6. Re-test after a fresh sign-in. Any change made in steps 3 to 5 needs one more sign-out and sign-in before it reaches the user.

How to Prevent It

  • Make "sign out and back in" the standard closing line of every permission change. Tell the requester at the time you make the grant so they are not left retrying a stale session.
  • Grant at the role level whenever the need belongs to a job function. Role grants reach every holder of that role on their next sign-in, and they stay legible six months later. When only one person needs it, assign a narrow add-on role rather than widening the shared one.
  • Read the user's role assignments before the role's permission tree. The commonest contradiction is a correct grant on a role the person does not actually hold, and the user record is where that shows up.
  • Add a custom-role review to your upgrade checklist. After each update, walk each custom role's permission tree and tick the newly shipped codes that role should have.
  • Match the code to the action, not the module. Reading the blocked action literally, and finding the code that names it, is faster than reasoning backward from a grayed-out button. If the module is missing entirely rather than blocked, a tab I expect is missing covers that variant, and user and permission mistakes catalogs the wider set.

The permission set is captured once at sign-in and held for the duration of the session. That keeps every screen consistent and avoids a user's access changing mid-task, but it also means a grant made while the user is signed in does not reach them until the next sign-in. Ask the user to sign out and back in, then re-test the action. No restart of the whole workstation is needed.

Work back through the roles, because roles are the only place rights come from. Confirm the user genuinely holds the role you edited rather than one with a similar name, by reading the role selections on their user record instead of trusting the role screen. Confirm they signed out and back in rather than closing and reopening a window. Then check you granted the exact code the action needs, since granting View when the user needs Edit produces this symptom precisely. There is no per-user override to hunt for: permissions come only from roles, so the answer is always in the role assignments.

Yes, but only from their next sign-in. Adding a code to a role updates the role immediately and applies to every user assigned to it, so you rarely need to touch users individually. Anyone currently signed in keeps the permission set their session captured until they sign out and back in. Anyone signing in after the change picks it up straight away.

Expert Q&A: Deep Dive

Q: I ticked the clear-data permission for a supervisor and he still gets a permission denied message. He says he restarted the application. What should I check?

A: First confirm he actually signed out rather than just closing and reopening a window, because the permission set is captured at sign-in. Then confirm the code was ticked on a role he actually holds, not on a similarly named role, by opening his user record and reading the role selections rather than trusting the role screen. That permission is intentionally excluded from planner-style role templates, so it is a common one to grant on the wrong role. There is no per-user override that could be blocking it, since permissions come only from roles and roles only add, which means the discrepancy is always somewhere in the assignment.

Q: After an upgrade our custom Supervisor role lost access to a screen it used to have. Nothing was changed on purpose. Why?

A: Custom roles never lose codes on their own, so the more likely explanation is that the screen is now gated by a new code that only the Administrator role received in the startup sync. The catalog sync inserts new codes and grants them to Administrator, but it deliberately leaves custom roles untouched. Edit the Supervisor role, find the module in the permission tree, tick the new code, and have the affected users sign out and back in.

Frequently Asked Questions

Ready to Transform Your Production Scheduling?

User Solutions has been helping manufacturers optimize their production schedules for over 35 years. One-time license, 5-day implementation.

User Solutions Team

User Solutions Team

Manufacturing Software Experts

User Solutions has been developing production planning and scheduling software for manufacturers since 1991. Our team combines 35+ years of manufacturing software expertise with deep industry knowledge to help factories optimize their operations.

Let's Solve Your Challenges Together