Compare software licenses with approved account purposes
Match purchased capacity, assignments and documented account needs.
Tools for the documented steps
Practice relevance
Cross-practice idea · A general operational method. Review the stated tool and jurisdiction limits before use.
The problem
Match purchased capacity, assignments and documented account needs.
Why it matters: Unused capacity can be intentional, and a service account may be essential. Reviewing assignments against approved purposes gives the owner a clearer list of questions before any license or access change.
Sources & evidence
Proposed / not tested. The public source describes the problem. Documentation supports only the stated method components; no result from this recipe has been verified.
What’s been verified
Source methods and reported problems have been reviewed. We have not run the adapted workflow. The sample below describes expected behavior on synthetic data, not a customer result.
What to measure: In a synthetic pilot, count correctly found exceptions, false alarms, and unresolved inputs. No time or cost saving is assumed.
- Pain evidence: Microsoft subscriptions for a small law firm ↗Microsoft subscriptions for a small law firm, 2026-06-29, older: a six-lawyer/two-admin firm operator describes confusing subscriptions and an earlier count of 15 licenses, later 10. The account does not establish that any particular license was unnecessary.
- Method: View licensed and unlicensed Microsoft 365 users ↗View licensed and unlicensed Microsoft 365 users documents licensed-user and assigned-plan inspection. This recipe consumes an export supplied by an already-authorized administrator; it does not create credentials, grant access or run tenant changes.
Source checked: October 15, 2026. Pain accounts are self-reported. Documentation supports components; this adapted recipe and prompt have not been tested. We wrote these prompts. The adapted workflow hasn’t been tested.
Suggested approach
Start when: Monthly billing review or scheduled renewal review
- reconcile purchased seats, assigned seats and administrator-approved account purposes
- Keep source references and report unknowns instead of filling gaps.
- The responsible reviewer checks the report before any separately approved action.
Limits and review
The assistant drafts or reports only. Check source records and review the output before a human performs any separately approved send or change. No automatic legal decision, money movement, account connection or publication is included.
Who reviews it: IT and billing owner check purpose, contract terms and feature requirements. Test a legitimate service account, prepaid spare capacity and a renamed SKU. No cancellation, purchase or permission change is made.
What you need
Your firm-approved AI assistant · prepared files
- Existing Microsoft 365 admin access to subscription details and selected users’ license assignments; billing/global admin for subscription inventory.
- Actual purchase/invoice approvals and account-purpose/capability records; a snapshot does not establish purchase authorization.
- Firm-approved Excel; optional Copilot entitlement and tenant approval for the exact minimized data. Native Excel analysis can be done manually if Copilot is absent.
- Keep raw exports and identifying source pointers in a separate restricted location. The AI workbook contains only approved alias-based tables and visible policy/scope text, never raw client records on another tab.
- Use synthetic inputs first. Keep real data in firm-approved accounts and processing, with appropriate access, confidentiality and retention controls. Aliases alone do not anonymize records. Never paste credentials, API keys or unnecessary client details.
How to use
Documentation-checked proposed route; source collection and human approval required
- This route manually reads the documented native screens. It does not invent an assignment-history CSV or assigned_at timestamp.
- Licenses are not safely removable just because an account seems unused. Shared/service accounts, legal holds, required capabilities and group-assigned licenses require IT review.
Check access and setup
- Actual account access, plan and source-data completeness have not been tested.
Read purchased subscription quantities
Microsoft 365 admin center · Dashboard view: Billing > Your products; Simplified view: Subscriptions
Read product name, total licenses, assigned licenses and subscription status. Open the subscription for its actual details; check each authorized billing account separately. Read the actual invoice/order/approval record locally for approved cost, currency, period and approval reference. Do not buy, cancel or change recurring billing.
- Expected output
- Observed subscription inventory plus independent purchase/approval evidence.
- Next step
- Create a SKU/product crosswalk approved by IT; do not assume friendly names are canonical SKU codes.
- Check before continuing
- Quantity in the portal and approved purchased quantity are separate facts; note multiple subscriptions/billing accounts and reseller gaps.
Read actual user assignments without saving
Microsoft 365 admin center · Users > Active users > select user > Licenses and Apps > Licenses
For each authorized account in the defined roster, inspect currently assigned products and relevant service capabilities. Record the observation and source reference without changing checkboxes or selecting Save changes. Use actual historical audit evidence for assigned_at only if already available; otherwise unknown.
- Expected output
- Manual account/product assignment snapshot, with capture time and coverage.
- Next step
- Combine with the IT-approved purpose/owner roster in a separate alias-based workbook.
- Check before continuing
- Do not infer account type/purpose from a name or assume current assignment date equals capture date.
Map the observed records to the starter input
Excel and authorized staff · Separate analysis workbook > Home > Format as Table
Populate purchases.csv from actual approved orders; assignments.csv from observed account_alias/sku,assigned_at (if evidenced),source_ref; account-purposes.csv from owner-approved account_type,approved_purpose,required_capabilities,owner_alias,approval_ref. Paste scope.txt and capture time into Scope. Preserve active quantities versus historical periods and document SKU aliases. Create named tables for Purchases, Assignments and AccountPurposes. Put the policy and review scope in visible worksheets or paste them into the next prompt.
- Expected output
- Purchases, Assignments and AccountPurposes tables with explicit missing approvals/coverage.
- Next step
- Check the mapping against each original source before using AI.
- Check before continuing
- Aliases and missing policy fields are staff-created; do not relabel a native export as the kit schema. Unknown stays blank/unknown, not false or zero.
Review the bounded evidence with Copilot
Excel Copilot, optional · Approved analysis workbook > Copilot icon at lower right > Chat only
Use Chat only and submit the prompt. Without Copilot: count per-SKU assignments, compare active purchase scope and check each account against its approved capability needs.
- Expected output
- License evidence exceptions and owner questions.
- Next step
- Copy the draft exception list to the reviewer; retain row references.
- Check before continuing
- Check every flagged row and the scope. A fluent answer is not evidence of completeness; no automatic workbook or source-system edits.
Approve the review result
Final human reviewResponsible staff reviewer · Reviewed local worksheet
IT and the budget owner validate SKU mapping, group licensing, required capabilities and contractual quantities before considering a separate license change.
- Expected output
- Reviewed licensing exception list.
- Next step
- Any external message, source change, payment or deletion requires its own authorized process.
- Check before continuing
- No savings estimate or removal decision is valid from incomplete assignment/purpose evidence.
What you’ll get
license-review.csv: sku, purchased_quantity, assigned_quantity, unassigned_capacity, account_alias, approved_purpose, source_ref, missing_evidence, reviewer_question. Do not call a spare or service account waste or cancel access.
Inputs and a sample test Synthetic example · not a measured result
Input files
- purchases.csv: purchase_id, sku, quantity, period_start, period_end, approved_cost, currency, approval_ref
- assignments.csv: account_alias, sku, assigned_at, source_ref
- account-purposes.csv: account_alias, account_type, approved_purpose, required_capabilities, owner_alias, approval_ref; scope.txt: export cutoff, coverage and approved SKU mappings
Synthetic example
Synthetic inputs are included in the starter kit. purchases.example.csv assignments.example.csv account-purposes.example.csv scope.example.txt
Expected output
SKU-A purchased 3 and assigned 2 gives 1 unassigned capacity, documented as prepaid spare capacity. ACC2 is an approved service account. Do not call it waste or remove its license. ACC3 has undocumented purpose and SKU-LEGACY with no matching purchased SKU/mapping. Keep purpose and SKU evidence gaps separate. Do not subtract unknown SKU-LEGACY from SKU-A capacity or recommend cancelling security capabilities.
Test a failure
IT and billing owner check purpose, contract terms and feature requirements. Test a legitimate service account, prepaid spare capacity and a renamed SKU. No cancellation, purchase or permission change is made.
Try with the sample files
Follow the tool steps above and use the inputs named in each step. Where provided, native-* files are blank scaffolds and NATIVE-INPUT-MAPPING explains their fields. Original examples and the optional full review prompt use a separate prepared-input schema. Keep them separate unless the mapping explicitly connects them. Downloading a kit does not connect accounts or prove the workflow works.
Download inputs and checklist 12 files
Instructions, blank templates and separate synthetic examples; these files do not install an automation. Blank templates still need verified source data.
- Download starter kit All inputs, synthetic examples and review notes in one ZIP. No automation is installed.
- Start here: get the sources and prepare the review Documentation-checked acquisition, explicit manual mapping, exact prompts and human review limits
- purchases.csv Blank input template with exact recipe headers.
- purchases.example.csv Separate synthetic fixture input. Do not mix these rows into real exports.
- assignments.csv Blank input template with exact recipe headers.
- assignments.example.csv Separate synthetic fixture input. Do not mix these rows into real exports.
- account-purposes.csv Blank input template with exact recipe headers.
- account-purposes.example.csv Separate synthetic fixture input. Do not mix these rows into real exports.
- scope.txt Blank text input worksheet. Fill its fields with approved evidence; no default assumptions are supplied.
- scope.example.txt Separate synthetic text input fixture; use with the example CSV files only.
- Expected fixture findings Read-only expected output and failure conditions for the included synthetic input files.
- Setup and review checklist Recipe-specific prerequisites, file mapping, prompt, setup steps, checklist and limits.
Optional full review prompt for prepared inputs
Prepared-input review prompt with Your firm-approved AI assistant · prepared files
Proposed / not tested · editorial prompt. This prompt uses the original prepared-input schema shown in the sample test. Step prompts may use different tables. Follow NATIVE-INPUT-MAPPING where supplied; do not mix the original examples with native-step inputs without mapping and checking every field.