Managing access
Access is managed in the Admin → Access area. The screen is split into three tabs that together cover the whole path: first we describe what is possible (roles), then to whom and where (assignments), and for pinpoint exceptions — separate grants.
| Tab | About | Main object |
|---|---|---|
| Roles | tenant permission sets | Role |
| Assignments | who received a role and in which scope | RoleAssignment |
| Grants | pinpoint permissions for a single principal | PermissionGrant |
Access requests
Section titled “Access requests”Access is always granted by an administrator — there is no self-service automated request queue yet. When a user lacks permission for a screen, they see the “Insufficient permissions” state showing which permission and which scope is required, plus a “Copy access request” button. The button copies a ready-made, structured request to the clipboard (who, which permission, which scope, and a request id) — the user hands it to an access administrator by whatever means your organization uses.
Once you receive the request, you grant the permission here — with a role assignment (the “Assignments” tab) or a pinpoint grant (the “Grants” tab) at the required scope. The new access takes effect immediately: worklists and queues are built from permissions, not from cached roles.
The “Roles” tab
Section titled “The “Roles” tab”A role is tenant data: a template is copied and then freely edited. Here you can see how many permissions and active assignments a role has.
Create a role from a template
Section titled “Create a role from a template”-
On the “Roles” tab, click “Create from template.”
-
Choose a template (Study Builder, CRC, Investigator, CRA, Data Manager, Medical Monitor, Medical Coder, Inspector, Tenant Admin). You can leave the name empty — then the template’s name is used.
-
The role is created with the template’s set of permissions. Open its page to fine-tune the permission set: they are grouped by object, with module permissions under their own module.
-
Save your changes.
The “Assignments” tab
Section titled “The “Assignments” tab”An assignment links principal × role × scope × term. This is precisely where a role turns into real access.
-
Click “New assignment,” choose a principal and a role.
-
Set the scope — along the hierarchy, without skipping segments. You cannot grant access “to a subject” while skipping the site: the path is built in order, study → site → subject. A handy scope builder helps assemble the path, or it can be entered manually.
-
If needed, set a term (“Valid until”). Empty means indefinite. All timestamps are stored in UTC.
-
Click “Assign.” The action is recorded in the audit trail (the
core.access.grantedevent).
The “Grants” tab
Section titled “The “Grants” tab”Grants are pinpoint permissions for a single principal, in addition to roles.
They are used for exceptions: give one person one permission (grant) or, conversely,
deny one pinpoint permission (deny). Select a principal to see and change their
grants.
- grant — allow. Give a specific permission in a specific scope.
- deny — forbid. A pinpoint denial that always wins over any grant on the path — “a surgical exception that no role can override.”
Deny grants and delegation are covered in detail in SoD and delegation.
Restricting entry into a specific form
Section titled “Restricting entry into a specific form”A common SOP: laboratory results are entered only by a lab data enterer, drug accountability only by an unblinded pharmacist, while everyone else sees those forms read-only. In X7 Insight this is a design × access pairing:
-
The designer tags the form with an entry-restriction tag (a form property in the builder, e.g.
lab). The tag is part of the design: versioned and shown in amendment diffs. -
The platform automatically adds the permission “Enter forms tagged ‘lab’” (
form.entry.lab) to the catalog. -
The administrator builds the dedicated enterer’s role — e.g. “Lab Data Entry”: the usual entry permissions (
data.enter,data.update, …) plusform.entry.lab— and assigns it to the right people at the right scope.
Writing into the tagged form now requires both permissions: a coordinator without
form.entry.lab gets the form read-only with an explanatory banner (queries, SDV and
review keep working), while the lab enterer fills it in normally. If the tag is set but
nobody holds the permission, the design validator warns that nobody will be able to fill
the form in.
Revoking access and the cascade
Section titled “Revoking access and the cascade”Both a role assignment and an individual grant can be revoked with the “Revoke” button. Revoking does not delete the record: the assignment is closed (its term is set to “now”), and history is preserved.
Why a person does or does not have access
Section titled “Why a person does or does not have access”If access behaves unexpectedly (“I see less than I should” or “why does this person have access to X”), do not guess — use the “Check access” tool on the principal’s card (Admin → Users).
-
Open the principal’s card and choose “Check access.”
-
Specify the scope you want to check.
-
For each applicable permission, the system shows the outcome — “allowed” or “denied” — and the source of the decision: from which role (
role "…" @ scope) or from which grant (grant grant/deny @ scope).
The tool reproduces the same logic as the entire access engine: all applicable grants are collected by path prefixes, with any deny winning; when there are no applicable grants, default deny applies. If the principal is deactivated, everything is denied, regardless of sources.