Skip to content
RolloutDocs
NL
Using and running Rollout

One-click fix

By default Rollout only reads. With "one-click fix" Rollout may do a few fixed things in a client tenant: assign a license, add someone to a group or link a laptop to an employee. Only with consent, four eyes and a plan that can't change any more.

Who it's for

Professional Plus, Enterprise and trial licenses. It's off by default; an administrator switches it on per organization.

What it does, and what it never does

ChangeRollbackPermission of the write app
Assign a license from the role profileRemove the licenseLicenseAssignment.ReadWrite.All
Add to a group from the profile, or to the assignment group of a required appRemove from that groupGroupMember.ReadWrite.All
Link the Autopilot laptop to the employeeUnlinkDeviceManagementServiceConfig.ReadWrite.All

Never: creating or deleting accounts, roles, passwords, MFA methods, Conditional Access, policies, mailboxes or apps. The database and the server both refuse anything not on this list.

From plan to execution

Four eyes
Step 0 / 7
Engineercreates the plan
Second administratorapproves
Rollout serverexecutes
Client tenantMicrosoft 365
Plan: 12 changes
For approval
↻ Sign in again
Approved (valid 2 hours)
Executeserver gateway
Read first, then write
10 done, 2 already fine

Scroll here or press play.

Thirteen layers

Each layer stands on its own; if one fails, nothing happens.

  1. Separate write app, only for tenants in both allowlists, never with a client secret.
  2. Exactly three permissions: if the write app has one more, Rollout executes nothing.
  3. Only what belongs to the project: licenses and groups from the role profiles. Role-assignable groups, dynamic groups and groups from on-premises AD are always refused.
  4. Read first, then write.
  5. Four eyes, checked in the database.
  6. Step-up when approving and when switching it on.
  7. Sealed plan with a fingerprint.
  8. Short-lived and single-use: two hours, once.
  9. Limits: max 200 changes per plan, 50 plans per day, 10 executions per hour, stop after 5 failures in a row.
  10. Kill switches: per organization (a button) and per installation (EXECUTION_DISABLED=1).
  11. License is checked on the server.
  12. Everything recorded in the audit log, with an alert to Teams.
  13. Rollback only of what Rollout actually changed.

Setting it up (once per MSP)

Only do this for clients who agreed to it in writing, for example in the data processing agreement.

  1. App registration Rollout – Write

    In your own tenant, multi-tenant, without a redirect URI. Give it a federated credential for your Vercel project (as in step 3), never a client secret.

  2. Exactly three permissions

    Application permissions: LicenseAssignment.ReadWrite.All, GroupMember.ReadWrite.All and DeviceManagementServiceConfig.ReadWrite.All. Nothing more.

  3. Environment variables

    GRAPH_WRITE_CLIENT_ID (must be a different app from the read app), GRAPH_WRITE_FEDERATION=vercel and GRAPH_WRITE_ALLOWED_TENANTS with only the tenants where this is allowed.

  4. Client consent and switching it on

    The client grants consent to the write app (same flow as for reading). Then an administrator switches One-click fix on in Rollout; that requires signing in again.

One-click fix · Rollout Docs