Reference · built on requestOperator by FibricIT & reliability

Seat Drift

Compares every assigned SaaS seat to its last sign-in and proposes which to reclaim and what to true up before the renewal.

About

Seats are assigned in a hurry and reclaimed never. Seat Drift reads what each console says is assigned: subscribedSkus with consumedUnits and each user's licenseDetails in Microsoft Entra ID, license assignments per product and SKU in Google Workspace, Copilot seats with last_activity_at and the plan's filled_seats in GitHub, and application user assignments in Okta. It reads when each person last signed in from the Okta System Log, the Entra sign-in log, and the Google login audit, and it reads the renewal dates you enter.

For each product it separates seats in use, seats idle past your threshold, and seats held by users who have left. Ahead of each renewal it proposes the reclaims, one per seat, to the license owner, and a true-up count with the evidence behind it. Removals run through the same console APIs after approval.

This is a reference listing. It documents what Fibric would read from Seat Drift and what it could propose, based on the vendor's published interfaces. Fibric builds it under a managed deployment when you request it; selecting it here installs nothing.

Inputs

  • subscribedSkus with skuPartNumber, consumedUnits, and prepaidUnits, and each user's licenseDetails, through Microsoft Graph
  • License assignments per productId and skuId through the Google Workspace Enterprise License Manager API
  • Copilot seat assignments with assignee, last_activity_at, and pending_cancellation_date, and the organization plan's filled_seats and seats, from GitHub
  • Application user assignments with scope, status, and lastSync through the Okta Apps API
  • Last sign-in per person: user.session.start events in the Okta System Log, /auditLogs/signIns in Entra ID, and login_success events in the Google Reports API
  • Renewal dates, contracted seat counts, and the license owner per product, entered by you

Proposed actions

  • Target capability: propose removing a license from a user through POST /users/{id}/assignLicense with removeLicenses, one seat per proposal
  • Target capability: propose deleting a license assignment through the Enterprise License Manager API for an idle Google Workspace seat
  • Target capability: propose removing users from Copilot through DELETE /orgs/{org}/copilot/billing/selected_users
  • Target capability: propose unassigning an application from a user through DELETE /api/v1/apps/{appId}/users/{userId} in Okta
  • Target capability: propose a true-up summary per product before renewal, with seats in use, idle, and reclaimable, as a Jira issue for the owner

Proposed actions are target capabilities. Every action runs propose-first and needs a validated deployment and the appropriate permissions.

What you can build

  • Reclaim Copilot seats nobody uses

    Copilot seats whose last_activity_at is older than your threshold are listed with the assignee. The operator proposes removing each from selected_users; the owner approves the list before the billing cycle.

    With GitHub

  • Free Microsoft 365 licenses held by leavers

    licenseDetails show SKUs on users whose last Entra sign-in is months old or whose account is disabled. Seat Drift proposes removeLicenses per user and shows consumedUnits against prepaidUnits.

    With Microsoft Entra ID, Okta

  • True up before the Workspace renewal

    Ahead of the renewal date you entered, the operator counts assignments per SKU against login_success events and proposes a Jira issue with the seats to keep, reclaim, and renew.

    With Google Workspace, Jira

Requirements

  • Microsoft Graph Organization.Read.All for subscribedSkus and LicenseAssignment.ReadWrite.All if removals are to be applied
  • A Google Workspace admin grant for the apps.licensing scope and reports.audit.readonly for login events
  • A GitHub token from an organization owner with manage_billing:copilot, since only owners manage Copilot seats
  • Okta scopes okta.apps.read and okta.logs.read, with okta.apps.manage for unassignments
  • The renewal date, seat count, and owner for each product, kept by you
Authentication
Seat Drift keeps no credentials. License reads and approved removals run through the Microsoft Entra ID, Google Workspace, GitHub, and Okta connectors, and true-up tickets through Jira, each with the grant you made.

Limits

  • Retention bounds the evidence: 90 days in the Okta System Log, 180 days in the Google login audit, 30 days for Entra P1 or P2.
  • Google audits only explicit password and SAML sign-ins. Apps reached another way show no login event and are flagged as unknown, not idle.
  • Removing a Google Workspace license on a flexible plan changes what you are billed. The proposal says so before you approve.
  • It proposes reclaims and a true-up count. It does not change the contract, cancel a subscription, or buy seats.

Access and pricing

Reference listing. Fibric builds the operator under a managed deployment when you request it. Your quote covers the build, capabilities, usage, and support.

Request Seat Drift ↗

Questions and answers

What does the license owner approve?
One reclaim per seat, each showing the user, the product, the last sign-in and its source, and the API call that will remove it. And one true-up per product, which is a count and its evidence, not a change to any account.
What record is left?
Per product and renewal: the assignments read, the sign-in evidence per user, each reclaim proposed and approved, the API response, and how to reassign the seat. The true-up summary is kept as the basis for the renewal conversation.
Will it remove a seat by itself?
No. A seat is removed only after its owner approves that row, through the console's own API. Users the operator cannot match to a sign-in source are listed as unknown and never proposed for reclaim.
Ask about Seat Drift

Ask about the capabilities and requirements in this listing.

For project-specific requirements, contact Fibric.