Automating Microsoft 365 License Reports: Save Time and Reduce Costs

Microsoft 365 license reports are essential in today’s cost-conscious business environment, as inefficient license management represents a significant recurring expense for organizations of all sizes. Studies show that more than half (56%) of enterprise Office 365/M365 licenses are inactive, underutilized, oversized, or completely unassigned. This wastage translates directly into unnecessary

Picture of Archie Nair

Archie Nair

Microsoft 365 License Reports

Microsoft 365 license reports are essential in today’s cost-conscious business environment, as inefficient license management represents a significant recurring expense for organizations of all sizes. Studies show that more than half (56%) of enterprise Office 365/M365 licenses are inactive, underutilized, oversized, or completely unassigned. This wastage translates directly into unnecessary IT spending, with the average business able to reduce their total Microsoft 365 costs by 14% through better management of inactive licenses.

If you’re an IT administrator or leader responsible for managing your organization’s Microsoft 365 environment, you’ve likely experienced the frustration of trying to optimize licensing costs without the right tools or processes. The good news? Automated license reporting can transform this challenge into a strategic opportunity to reclaim budget while ensuring users have exactly what they need.

In this comprehensive guide, you’ll discover:

  • Why license reporting is crucial for cost optimization in 2025
  • How to implement automated reporting solutions using PowerShell
  • Practical strategies to identify and eliminate license waste
  • Tools and techniques to maintain ongoing optimization

Let’s dive into how you can take control of your Microsoft 365 licensing and turn it into a strategic advantage for your organization.

The Growing Importance of Microsoft 365 License Management

As Microsoft continues to evolve its licensing models and pricing structures, effective license management has never been more critical. With price increases of up to 25% implemented in recent years, organizations need to be increasingly vigilant about optimizing their license usage.

The Real Cost of Poor License Management

The financial impact of inefficient license management extends far beyond the direct costs of unused licenses. Consider these statistics:

  • Most organizations can save 20-30% on their Microsoft 365 licensing costs through proper optimization8
  • For a company spending $1 million annually on Microsoft 365, that’s $200,000-$300,000 in potential savings
  • One global engineering firm saved $4.5 million over three years by auditing usage and standardizing appropriate license levels

Beyond direct cost savings, proper license management also reduces security risks associated with orphaned accounts, improves compliance posture, and streamlines IT operations.

Key Changes Impacting License Management in 2025

Microsoft has implemented significant changes to its licensing validation process that IT administrators need to be aware of:

  • As of April 30, 2025, users without proper licenses began receiving notifications in finance and operations apps1
  • Starting August 30, 2025, users without required licenses will lose access to apps including Dynamics 365 Finance, Supply Chain Management, Commerce, Project Operations, and Human Resources1
  • Administrators now have improved license reporting capabilities in the Power Platform admin center and Microsoft Dynamics 365 Lifecycle Services

These changes make proactive license management more important than ever for maintaining business continuity and controlling costs.

Essential Microsoft 365 License Reports Every IT Admin Should Run

Effective license optimization starts with visibility. Here are the critical reports you should be generating regularly to understand your licensing landscape.

License Utilization Reports

License utilization reports provide insights into how effectively your purchased licenses are being used. These reports help identify:

  • Inactive licenses assigned to users who aren’t using the services
  • Underutilized licenses where users only access a small subset of available features
  • Oversized licenses where users have more capabilities than they need

By running these reports monthly, you can quickly identify opportunities to downgrade, reassign, or remove licenses based on actual usage patterns.

User Activity and Adoption Reports

Understanding how users interact with Microsoft 365 services helps determine the appropriate license level for each user. Key metrics to track include:

  • Login frequency and last login date
  • Application usage (which apps are being used and how often)
  • Feature utilization within applications
  • Storage consumption

These insights allow you to make data-driven decisions about right-sizing licenses based on actual needs rather than assumptions or organizational hierarchy.

License Assignment and Distribution Reports

These reports provide a comprehensive view of your current license allocation across the organization, including:

  • Distribution of license types across departments or business units
  • Users with multiple license assignments
  • Special license types (like Power BI, Project, or Visio) that often go underutilized
  • Disabled or inactive user accounts that still consume licenses

With this information, you can identify immediate opportunities to reclaim and reallocate licenses.

Cost Allocation and Chargeback Reports

For organizations that implement internal chargeback models, these reports are essential for:

  • Allocating licensing costs to appropriate departments or cost centers
  • Tracking license expenses against budgets
  • Providing transparency into IT costs
  • Building accountability for license usage at the department level

How to Automate Microsoft 365 License Reporting with PowerShell

PowerShell provides powerful capabilities for automating license reporting in Microsoft 365 environments. Here’s a step-by-step approach to implementing automated reports.

Setting Up Your PowerShell Environment

Before creating reports, you’ll need to set up your environment properly:

  1. Install the required PowerShell modules: powershellInstall-Module Microsoft.Graph Install-Module ExchangeOnlineManagement
  2. Connect to Microsoft Graph with appropriate permissions: powershellConnect-MgGraph -Scopes "Directory.Read.All", "Organization.Read.All", "User.Read.All"
  3. Create a directory for storing your reports: powershellNew-Item -Path "C:\M365Reports" -ItemType Directory -Force

Creating Basic License Inventory Reports

This script provides a comprehensive view of all licenses in your tenant:

powershell# Get all subscribed SKUs in the tenant
$licenses = Get-MgSubscribedSku

# Create a report object
$report = @()

foreach ($license in $licenses) {
    # Get friendly name for the license
    $skuPartNumber = $license.SkuPartNumber
    
    # Calculate usage percentages
    $totalUnits = $license.PrepaidUnits.Enabled
    $consumedUnits = $license.ConsumedUnits
    $availableUnits = $totalUnits - $consumedUnits
    $usagePercentage = [math]::Round(($consumedUnits / $totalUnits) * 100, 2)
    
    # Create report entry
    $reportEntry = [PSCustomObject]@{
        LicenseName = $skuPartNumber
        TotalLicenses = $totalUnits
        AssignedLicenses = $consumedUnits
        AvailableLicenses = $availableUnits
        UsagePercentage = $usagePercentage
    }
    
    $report += $reportEntry
}

# Export to CSV
$report | Export-Csv -Path "C:\M365Reports\LicenseInventory_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation

Identifying Inactive Licensed Users

This script helps identify users with licenses who haven’t logged in recently:

powershell# Set the threshold for inactivity (in days)
$inactivityThreshold = 30

# Get current date
$currentDate = Get-Date

# Get all licensed users
$licensedUsers = Get-MgUser -Filter "assignedLicenses/`$count ne 0" -All -Property DisplayName,UserPrincipalName,SignInActivity,AssignedLicenses

# Create a report object
$inactiveUsers = @()

foreach ($user in $licensedUsers) {
    # Check if the user has sign-in activity
    if ($user.SignInActivity -and $user.SignInActivity.LastSignInDateTime) {
        $lastSignIn = $user.SignInActivity.LastSignInDateTime
        $daysSinceLastSignIn = ($currentDate - $lastSignIn).Days
        
        # Check if the user is inactive based on the threshold
        if ($daysSinceLastSignIn -gt $inactivityThreshold) {
            $inactiveUsers += [PSCustomObject]@{
                DisplayName = $user.DisplayName
                UserPrincipalName = $user.UserPrincipalName
                LastSignIn = $lastSignIn
                DaysSinceLastSignIn = $daysSinceLastSignIn
                LicenseCount = $user.AssignedLicenses.Count
            }
        }
    } else {
        # User has never signed in
        $inactiveUsers += [PSCustomObject]@{
            DisplayName = $user.DisplayName
            UserPrincipalName = $user.UserPrincipalName
            LastSignIn = "Never"
            DaysSinceLastSignIn = "N/A"
            LicenseCount = $user.AssignedLicenses.Count
        }
    }
}

# Export to CSV
$inactiveUsers | Export-Csv -Path "C:\M365Reports\InactiveLicensedUsers_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation

Scheduling Automated Reports

To ensure consistent reporting, set up scheduled tasks to run your scripts automatically:

  1. Create a PowerShell script file containing your reporting scripts
  2. Use Windows Task Scheduler to run the script at regular intervals: powershell$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\Scripts\M365LicenseReports.ps1" $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 7am Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "M365 License Reports" -Description "Generate weekly Microsoft 365 license reports"

Practical Strategies to Optimize Microsoft 365 License Costs

With your reporting infrastructure in place, you can implement these proven strategies to reduce costs.

Right-Sizing User Licenses

One of the most effective optimization strategies is ensuring users have the appropriate license tier for their needs:

  • Downgrade from E5 to E3: If users don’t need advanced security features, Power BI Pro, or Phone System capabilities, downgrading from E5 to E3 can save approximately $22 per user per month
  • Downgrade from E3 to E1: For users who primarily use web-based applications and don’t require desktop Office applications, moving from E3 to E1 can save about $14 per user per month
  • Implement F1/F3 licenses: For frontline workers who need limited functionality, F1/F3 licenses can provide significant savings compared to E3/E5 licenses

A mid-market business achieved a 20% reduction in Microsoft 365 spend by strategically moving light users to cheaper plans while maintaining premium licenses only for those who needed them.

Reclaiming Inactive Licenses

Inactive licenses represent immediate cost-saving opportunities:

  • Establish a process to automatically reclaim licenses from users who haven’t logged in for a specified period (typically 30-60 days)
  • Create a license reclamation policy for employees who leave the organization
  • Implement a workflow for temporary license assignments for contractors or project-based needs

One organization discovered that 56% of their Office 365 licenses were not fully utilized. Through a combination of downgrades and removals, they significantly reduced their license count and reallocated many licenses for growth without incurring new expenses.

Implementing License Pools and Workflows

Rather than assigning licenses permanently, consider implementing a more dynamic approach:

  • Create license pools for specialized applications like Project, Visio, or Power BI
  • Implement approval workflows for premium license requests
  • Set up regular reviews of specialized license usage
  • Establish clear criteria for different license tiers based on job roles and requirements

Leveraging Group-Based Licensing

Microsoft’s group-based licensing capabilities can streamline license management:

  • Assign licenses automatically based on security group membership
  • Create standardized license packages for different job roles
  • Automate license assignment during onboarding and removal during offboarding
  • Use dynamic groups to ensure licenses align with changing organizational roles

Tools and Technologies to Enhance License Management

While PowerShell provides powerful capabilities, additional tools can further enhance your license management efforts.

Microsoft Admin Center and Built-in Tools

Microsoft provides several native tools for license management:

  • Microsoft 365 Admin Center: Offers basic license management capabilities and usage reports
  • Microsoft 365 Usage Analytics: Provides Power BI templates for analyzing usage patterns
  • Microsoft Entra ID: Enables group-based licensing and automated provisioning

These tools provide a solid foundation but may lack the depth and automation capabilities required for large organizations.

Third-Party License Management Solutions

For more comprehensive management, consider specialized tools:

  • 365Tune: 365TUNE offer advanced analytics and eliminates manual processes by automating detailed financial reports. Gain clarity, accuracy, and speed in tracking Microsoft 365 expenses and ROI.
  • CoreView: Offers features for automating and managing licenses, with deeper insights and reporting capabilities than native Microsoft tools
  • Syskit Point: Provides comprehensive auditing and reporting for Microsoft 365, including license utilization
  • Zluri: Helps evaluate Microsoft 365 license usage and identify opportunities for optimization

These solutions typically offer more sophisticated features like automated workflows, detailed usage analytics, and cost allocation capabilities.

Custom PowerShell Solutions

For organizations with specific requirements, custom PowerShell solutions can provide tailored functionality:

  • The “O365LicenseReportingAndManagement.ps1” script can perform more than 10 Office 365 license reporting and management activities, including bulk assignment or removal of licenses
  • The “Microsoft 365 Licensing Report” PowerShell script provides comprehensive insights into license allocation and usage

Common Challenges and How to Overcome Them

Despite the clear benefits, organizations often face obstacles when implementing license optimization initiatives.

Resistance to Change

Users and departments may resist having their licenses downgraded or removed. To address this:

  • Communicate the business rationale for optimization
  • Implement a clear escalation process for exceptions
  • Provide temporary license upgrades for specific projects or needs
  • Focus on the user experience rather than the license tier

Lack of Visibility Across Complex Organizations

Large or decentralized organizations often struggle with comprehensive visibility:

  • Implement centralized reporting across all tenants and subscriptions
  • Establish consistent naming conventions and tagging for resources
  • Create dashboards that provide both high-level and detailed views
  • Regularly share insights with stakeholders across the organization

Integration with Existing Processes

License management should integrate seamlessly with existing IT processes:

  • Connect license management with HR systems for automated onboarding/offboarding
  • Integrate with ITSM platforms for request management and approvals
  • Align license reviews with budgeting cycles
  • Incorporate license optimization into regular IT governance reviews

Building a Sustainable License Optimization Program

To ensure ongoing success, license optimization should become a continuous program rather than a one-time project.

Establishing Governance and Ownership

Clear governance is essential for sustainable optimization:

  • Designate a license management owner or team
  • Establish a regular cadence for license reviews (monthly or quarterly)
  • Create clear policies for license allocation and exceptions
  • Develop KPIs to measure the effectiveness of your optimization efforts

Implementing Continuous Monitoring

Rather than relying on periodic reviews, implement continuous monitoring:

  • Set up automated alerts for unusual license consumption patterns
  • Create dashboards that provide real-time visibility into license utilization
  • Implement trend analysis to identify changing usage patterns
  • Regularly benchmark your license costs against industry standards

Measuring and Reporting Success

To maintain momentum and executive support, consistently measure and report on the impact of your optimization efforts:

  • Track cost savings from license optimization initiatives
  • Report on improvements in license utilization rates
  • Highlight process improvements and efficiency gains
  • Connect license optimization to broader IT and business objectives

Ready to Transform Your Microsoft 365 License Management?

Effective license management represents one of the most immediate opportunities to reduce IT costs while improving operational efficiency. By implementing automated reporting and following the strategies outlined in this guide, you can achieve significant savings while ensuring users have the tools they need to be productive.

The key is to start with visibility, implement data-driven optimization strategies, and establish sustainable processes for ongoing management. With the right approach, you can transform license management from a necessary administrative task into a strategic advantage for your organization.

Want to learn more about how automated license reporting can help your organization reduce costs and improve efficiency? Sign up for our free license optimization assessment and discover your potential savings.

Have you implemented automated license reporting in your organization?

365TUNE simplifies Microsoft 365 management by delivering powerful insights into license usage, financial performance, and security compliance audit. 

Table of Contents

Ready to See Your Microsoft 365 Dashboard with Real Numbers?

Start your free 365UTNE trial today and discover exactly where your Microsoft 365 budget is going. 

Microsoft 365 Reporting tool

Related articles

x Audit Microsoft 365 Security Configurations Against 300+ Checkpoints
Microsoft 365 Security

Audit Microsoft 365 Security Configurations Against 300+ Checkpoints

    Here’s an uncomfortable truth: over 80% of cloud security failures are caused by misconfiguration, not zero-day exploits. Legacy authentication left open, MFA policies with carve-outs, unrestricted external sharing in SharePoint—these are the quiet vulnerabilities that lead to breaches. And in a Microsoft 365 environment with dozens of interlocking

Read More »
Office 365 SMTP Settings

Office 365 SMTP Settings: A Complete Guide for Reliable Email Delivery

Table of Contents Understanding SMTP in Office 365 Office 365 SMTP Methods Explained Core Office 365 SMTP Configuration Requirements Security Considerations Common Challenges Organizations Face Best Practices for Reliable Email Delivery Where Modern Management Platforms Make a Difference How 365tune Enhances Office 365 SMTP Management Why This Matters for Modern

Read More »