Skip to content

SoD, delegation, and deny grants

Three mechanisms make access in X7 Insight safe and manageable: separation of duties prevents combining conflicting roles, delegation allows correctly covering for a colleague, and deny grants provide pinpoint exceptions that no broad role can override.

Separation of duties does not allow one person to combine permissions that, by regulation, should belong to different people. Classic pairs:

  • whoever enters data (data.enter) should not verify it (data.sdv.verify);
  • the author of design edits (studyversion.update) should not approve them themselves (studyversion.approve);
  • whoever grants access (access.grant) is kept in check when this is combined with editing data.

Each SoD rule is data (a pair of conflicting permissions + a policy), configurable to your sponsor’s regulations. There are two policies:

Policy What the system does
block strictly rejects the grant: the restriction cannot be bypassed; you need to change the scope, the role, or the permission set
warn performs the operation but warns about the conflict; the fact of the combination is recorded in the audit

SoD on approval acts — a policy, not a constant

Section titled “SoD on approval acts — a policy, not a constant”

The “approved by someone other than the author” rule for approval acts (a design version, a translation bundle) is controlled by the “Strict separation of duties on approvals” setting (core.sod.strict_approvals) — for the whole tenant or for a single study (Admin → Settings).

  • Default — lenient: the author may approve their own work; the system always marks the fact of self-approval in the audit trail (self_approved) — the trace does not depend on the policy.
  • Strict mode: a design or a translation can only be approved by a different person. If the very author tries to approve it, the system tells you directly — “Approval must be done by a different user with the studyversion.approve permission” — with a “Configure access” link.

Strict mode fits organizations whose sponsor’s or QMS rules require it; lenient fits teams where a second pair of hands is not part of the process. The issuance-time pair studyversion.update × studyversion.approve follows the same policy: in lenient mode the grant goes through with a warning (otherwise the approval permission could not even be granted to the author). The other pairs — above all data.enter × data.sdv.verify — do not depend on this setting.

Small organizations: a documented exception

Section titled “Small organizations: a documented exception”

In strict mode, a second pair of hands for approval may simply not exist — say, in an investigator-initiated trial or in a one- or two-person CRO (if strict mode is not required at all, simply leave it off — see the policy above). Data-integrity guidance (PIC/S PI 041, MHRA GxP Data Integrity) allows departing from separation of duties in such cases — but documented and authorized, never silent.

In X7 Insight the carrier of such an exception is an ordinary grant of a dedicated permission:

  • studyversion.self_approve — the author of a design version may approve it themselves;
  • translation.self_approve — a translator may approve their own translation.

The issuance rules are strict and cannot be bypassed:

  • it cannot be granted to oneself — the exception is authorized by a different person (in a one-person organization — a sponsor representative, a QA consultant, or a platform administrator): the four-eyes principle is not abolished, it moves from the act of approval to the act of authorization;
  • an expiry is mandatory (valid_to) — there are no open-ended exceptions; the door closes by itself when the term runs out;
  • a reason is mandatory — reference the risk assessment in your QMS;
  • it cannot be put into a role — the permission is personal and is issued only as a direct grant.

What happens next: an author holding an active exception approves their own version, and the system marks the fact of self-approval in the audit trail (self_approved) — an inspector will see it first. The blocking pair studyversion.update × studyversion.approve is downgraded to a warning while the exception is active: the permissions are issued, the conflict stays visible.

Delegation is when you temporarily transfer your own permissions to a stand-in (for example, a monitor goes on vacation and a colleague picks up their sites). Delegation follows strict rules:

  • you can transfer only a subset of your own effective permissions (⊆ your permissions) and only into a subset of your scope;
  • depth is one level: the person you delegated to cannot delegate further;
  • the term of delegation does not exceed the term of your own permissions;
  • when your permissions are revoked or expire, the delegated ones are automatically revoked in a cascade.
  1. In the Admin → Access area, create a temporary assignment of the same role for the stand-in, on the same (or a narrower) scope.

  2. Set the “from — to” dates — the coverage applies exactly within this window.

  3. When the vacation ends, access ceases on its own (or is revoked manually).

A deny grant is a pinpoint denial of a specific permission to a specific principal in a specific scope. Its distinguishing property: a deny wins over any grant on the path. Even if a person has a broad role that gives this permission, a pinpoint deny overrides it.

Deny grants are a surgical tool for exceptions: a conflict of interest, an internal investigation, a temporary restriction. Example: deny one coordinator data.update on one site, without touching their role and without affecting the other sites.

  1. On the “Grants” tab, select a principal and click “New grant.”

  2. Specify the permission and scope, and in the “Effect” field choose “deny — forbid (deny always wins).”

  3. Confirm. The system warns: “A deny wins over any grant on the path — a surgical exception that no role can override.”