-
Notifications
You must be signed in to change notification settings - Fork 0
Get MigrationWizLicensing
Calculates BitTitan MigrationWiz license requirements and costs based on Microsoft 365 assessment data. The script analyzes user mailboxes, shared mailboxes, Teams sites, SharePoint libraries, OneDrive sites, and public folders to provide accurate license recommendations and cost estimates.
- Smart License Selection: Automatically chooses the most cost-effective license tier based on migration scope
- Data-Driven Filtering: Only licenses resources that contain actual data to migrate
- Tiered Pricing: Applies correct pricing tiers based on data size (e.g., 50GB vs 100GB SharePoint libraries)
- Teams Site Detection: Identifies genuine Teams sites with data vs empty M365 Group sites
- Shared Mailbox Separation: Distinguishes between user and shared mailboxes for accurate licensing
- Professional Reports: Generates formatted text reports with tables and cost breakdowns
- Flexible Bundles: Supports Mailbox ($14), User Migration Bundle ($17.50), and Tenant Migration Bundle ($57)
- PowerShell: 5.1 or later
- ImportExcel Module: Auto-installs if missing
- Assessment Excel File: Output from Get-QuickO365Report.ps1 or Get-ComprehensiveO365Report.ps1
The script expects an Excel file with these worksheets:
-
Mailboxes: User and shared mailbox data with
MailboxTypeandTotalSizeGBcolumns - OneDrive (optional): OneDrive site data
-
Teams Sites (optional): Teams data with
HasTeamsIntegrationandStorageUsedGBcolumns -
SharePoint (optional): SharePoint site data with
UsedGBandTemplatecolumns - Public Folders (optional): Public folder data with size information
- Type: String
- Description: Path to the Microsoft 365 assessment Excel file
- Validation: File must exist
-
Example:
"C:\Assessments\Contoso_Assessment.xlsx"
- Type: String
-
Default:
C:\Temp\MigrationWiz - Description: Directory where license calculation reports will be saved
- Type: String
-
Default:
"Organization" - Description: Organization name displayed in the report header
- Type: Switch
- Description: Include archive mailboxes in calculations (requires User Migration Bundle)
- Type: Switch
- Description: Include Microsoft Teams sites in calculations
- Type: Switch
- Description: Include SharePoint document libraries in calculations
- Type: Switch
- Description: Include public folders in calculations
- Type: Switch
- Description: Use User Migration Bundle ($17.50) instead of basic Mailbox license ($14)
- Recommended: For mailboxes >50GB or when OneDrive migration is needed
- Type: Switch
- Description: Use Tenant Migration Bundle ($57) for comprehensive migrations
- Includes: Mailbox + OneDrive + Archives + Teams/SharePoint (100GB)
.\Get-MigrationWizLicensing.ps1 -InputExcelFile "C:\Assessments\Contoso_Assessment.xlsx"Calculates licensing for mailboxes only using the basic $14/user pricing.
.\Get-MigrationWizLicensing.ps1 `
-InputExcelFile "C:\Assessments\Contoso_Assessment.xlsx" `
-UseUserMigrationBundle `
-OrganizationName "Contoso Corporation"Uses User Migration Bundle ($17.50) for unlimited mailbox data and includes OneDrive.
.\Get-MigrationWizLicensing.ps1 `
-InputExcelFile "C:\Assessments\Assessment.xlsx" `
-UseUserMigrationBundle `
-IncludeTeams `
-IncludeSharePoint `
-OrganizationName "Fabrikam Inc"Comprehensive migration including Teams sites and SharePoint libraries.
.\Get-MigrationWizLicensing.ps1 `
-InputExcelFile "C:\Assessments\Assessment.xlsx" `
-UseTenantMigrationBundle `
-IncludeTeams `
-IncludeSharePoint `
-IncludeArchives `
-IncludePublicFolders `
-OutputDirectory "D:\Reports"Full tenant migration with all workloads using Tenant Migration Bundle.
.\Get-MigrationWizLicensing.ps1 `
-InputExcelFile "C:\Assessments\Assessment.xlsx" `
-UseUserMigrationBundle `
-IncludeTeams `
-OutputDirectory "C:\Reports\Licensing"Saves report to custom directory location.
Pattern: MigrationWiz_Licensing_{OrganizationName}_{YYYYMMDD_HHmmss}.txt
Example: MigrationWiz_Licensing_Contoso_20251223_161143.txt
Summary of discovered resources:
User Mailboxes: 69
Shared Mailboxes: 39
OneDrive Sites: 69
Teams Sites: 15 total
(Licensed): 1 with data & Teams integration
SharePoint Sites: 20 total
(M365 Groups): 15 (potential Teams sites)
(Licensed): 4 with data
Professional table showing license breakdown:
ββββββββββββββββββββββββββββββββββ¬βββββββββββ¬ββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ
β License Type β Quantity β Unit β Price/Unit β Subtotal β
ββββββββββββββββββββββββββββββββββΌβββββββββββΌββββββββββββββΌβββββββββββββββΌβββββββββββββββ€
β User Migration Bundle β 69 β user β $17.5 β $1207.5 β
β Teams Collaboration β 1 β team β $48 β $48 β
β Shared Documents (50GB) β 4 β library β $25 β $100 β
β Mailbox (Shared) β 39 β shared mail β $14 β $546 β
ββββββββββββββββββββββββββββββββββ΄βββββββββββ΄ββββββββββββββ΄βββββββββββββββΌβββββββββββββββ€
β TOTAL ESTIMATED COST β $ 1,901.50β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββββ
Details about each license type's features and limitations.
- Pricing effective date
- Volume discount availability
- Educational/non-profit discounts
- PowerSyncPro requirements
Context-aware suggestions based on migration scope.
- User Mailboxes: Excludes mailboxes with 0 GB data
- Shared Mailboxes: Always use basic Mailbox license ($14)
-
Bundle Selection:
- Basic Mailbox ($14): Up to 50GB per mailbox
- User Migration Bundle ($17.50): Unlimited data, includes OneDrive
- Tenant Migration Bundle ($57): Includes Teams/SharePoint
Only licenses Teams sites that meet BOTH criteria:
-
HasTeamsIntegration = True(actual Teams site, not just M365 Group) -
StorageUsedGB > 0(contains data to migrate)
- 50GB Tier ($25): Libraries with β€50GB data
- 100GB Tier ($48): Libraries with >50GB data
- Filtering: Only licenses libraries with data (UsedGB > 0)
- Detection: Identifies M365 Group sites (GROUP#0 template)
Priced at $114 per 10GB block (rounded up).
The script automatically optimizes costs by:
-
Excluding Empty Resources
- Mailboxes with 0 GB data
- Teams sites without data or Teams integration
- SharePoint libraries with no content
-
Tiered Pricing
- Uses $25 license for SharePoint libraries under 50GB
- Uses $48 license only for libraries over 50GB
-
Smart Bundle Selection
- Recommends User Migration Bundle when OneDrive detected
- Suggests Tenant Migration Bundle for Teams migrations
-
Shared Mailbox Separation
- Licenses shared mailboxes separately at basic $14 rate
- Doesn't apply expensive bundles to shared mailboxes
Error: ImportExcel module not installed
Solution: The script auto-installs the module. If this fails:
Install-Module ImportExcel -Scope CurrentUser -ForceError: Worksheet 'Users' not found
Solution: Ensure the Excel file is from Get-QuickO365Report.ps1 or contains the expected worksheet names:
- "Mailboxes" (not "Users")
- "Teams Sites" (not "Teams")
- "SharePoint"
Symptom: Report shows "0 with data & Teams integration"
Cause: Teams sites either lack data or don't have Teams integration enabled
Verification: Check the "Teams Sites" worksheet for:
-
HasTeamsIntegrationcolumn = True -
StorageUsedGBcolumn > 0
Symptom: "(Licensed): 0 with data"
Cause: Column name mismatch or all libraries are empty
Solution: Verify SharePoint worksheet has UsedGB column with numeric values
Symptom: Total cost seems high
Analysis Steps:
- Check if empty resources are being excluded (look for "Excluded" messages)
- Verify correct bundle is selected (User vs Tenant)
- Review SharePoint tier distribution (50GB vs 100GB)
- Confirm Teams filtering is working (Teams integration + data)
Current pricing as of 2025-12-23:
| License Type | Price | Notes |
|---|---|---|
| Mailbox | $14/user | Up to 50GB per mailbox |
| User Migration Bundle | $17.50/user | Unlimited mailbox + OneDrive + archives |
| Tenant Migration Bundle | $57/user | Full tenant including Teams/SharePoint (100GB) |
| Teams Collaboration | $48/team | Up to 100GB per team |
| Shared Documents (50GB) | $25/library | Up to 50GB per library |
| Shared Documents (100GB) | $48/library | Up to 100GB per library |
| Public Folders | $114/10GB | Per 10GB block |
| AD/Entra ID SMB | $6.25/user | β€1000 users, 12 months |
| AD/Entra ID Enterprise | $8/user | 12 months |
| Migration Agent | $13.50/device | 12 months validity |
Note: Volume discounts and educational/non-profit pricing available through BitTitan sales.
- Excel Reading: Uses ImportExcel module for efficient data import
- Memory Usage: Processes large datasets in memory; tested with 1000+ mailboxes
- Execution Time: Typically completes in 5-15 seconds depending on Excel file size
- Output Size: Text reports are typically 2-5 KB
This script works seamlessly with:
# Run assessment
.\Get-QuickO365Report.ps1 -OutputPath "C:\Assessments"
# Calculate licensing
.\Get-MigrationWizLicensing.ps1 `
-InputExcelFile "C:\Assessments\O365_Assessment_20251223_134603.xlsx" `
-UseUserMigrationBundle `
-IncludeTeams `
-IncludeSharePointCompatible with comprehensive assessment output as long as worksheet names match.
- Get-QuickO365Report - Quick O365 tenant assessment
- Get-MailboxPermissionsReport - Mailbox delegation analysis
- Get-MailboxRules - Mailbox rule auditing
- v1.2 (2025-12-23): Added Teams site filtering, SharePoint tier pricing, empty mailbox exclusion, M365 Group detection, table format output
- v1.1 (2025-12-23): Added shared mailbox distinction, SharePoint data filtering
- v1.0 (2025-12-23): Initial release - Core functionality
- Overview
- Start-LyncCsvExporter
- Get-ComprehensiveLyncReport
- Get-LyncHealthReport
- Get-LyncInfrastructureReport
- Get-LyncServiceStatus
- Get-LyncUserRegistrationReport
- Export-ADLyncTeamsMigrationData
- New-Office365Accounts
- Sync-ContactsFromCsv
- Set-EmailToSharedAccount
- Set-SMTPForward
- Invoke-UserSignOutAndBlock
- Security Assessment Scripts (coming soon)
- Azure Automation (documentation pending)
- Get-GraphToken
- Get-GraphHeaders
- Get-AzureResourcePaging
- Get-EnterpriseAppUsage
- Get-ExchangeErrorsGraph
- Get-PBIWorkspaceUsageReport
- Intune Management (documentation pending)