Overview
The Reports page lists the three reports that Tenant Manager creates for a tenant: the User report, the License report, and the Cost report. Each report can run on a weekly or monthly schedule, or on demand. Tenant Manager delivers it by email or to notification channels, and keeps every run in Generation history as a PDF or Excel file.
This article covers what the three reports share: switching a report on, scheduling it, choosing who receives it, adding a logo, reading Generation history, and the PDF and Excel formats. For the contents of each report, see User report, License report, and Cost report.
Business value
Each report is written for the person who has to make a decision. The User report helps approvers decide which licenses to remove. The License report helps approvers size a renewal. The Cost report shows finance teams what licenses cost and how much of that money is unused. Scheduled delivery puts current figures in the right inbox without anyone opening Tenant Manager.
Prerequisites
Before you set up a report, connect a tenant and wait for its first sync to finish. A report uses the data from the last sync, so it has nothing to show until a sync has completed.
Required permissions
You need Read on Reports to open the page and read Generation history. You need Manage on Reports to switch a report on or off, configure it, and generate it on demand. For details, see Roles and permissions in Tenant Manager.
| Role | Access |
|---|---|
| Owner, Contributor | Read and Manage on Reports. |
| Reader | Read on Reports only. |
| Custom role | Whatever the role's Read and Manage switches for Reports allow. |
Dependencies
- Synced data: a report uses the data from the last sync and does not read Microsoft 365 when it runs. See How data sync works.
- Prices: cost figures use prices from your Microsoft billing or from the Global price catalog. See Global price catalog.
- Notification channels and email templates: to send reports to channels, set them up under Settings > Notification channels. Custom email templates are under Settings > Email templates.
- Email delivery: recipient email addresses need outbound email. On private hosting, you cannot add recipient addresses, so use notification channels instead.
- Theme: PDF reports use the theme color and logo from Settings > Theme. A custom logo that you add to a report is an extra logo at the top of the cover.
How it works
Select the tenant in the tree view, expand License management, and select Reports. Tenant groups have no Reports page, so you set up reports on each tenant.
The grid has one row for each report, with these columns: the Disabled or Enabled switch, Report type, Description, and Actions. The actions menu offers Generate now, Configure, and Generation history.
Each report answers one question for one audience.
| Report | What it shows | Intended for |
|---|---|---|
| User report | Every licensed user with their account status, last activity, licenses, monthly cost, and how many of those licenses come from a Microsoft Entra ID group. | License removal approvers |
| License report | Every purchased license with seats purchased, assigned, available and idle, utilization, unit price, and monthly cost. | License renewal approvers |
| Cost report | Monthly cost and unused spend for the tenant, with the agreement type and where each price comes from. | Finance teams |
A report that you have never configured is switched off, and its switch stays unavailable until you configure it. The Configure dialog starts at weekly, Monday, 09:00, PDF, with no channels selected. On SaaS, the dialog also fills in the recipient and email template from your account's notification defaults, when they are set. Save the report, and then switch it on. On private hosting there is no default recipient, so select a channel before you save.
Schedule and failing tenants
A weekly report runs on the Days of week you choose. A monthly report runs on the Days of month you choose, and in a month without a selected day it runs on the last day. Both run at every time you select under Hours, in half-hour steps, in the Background activity time zone from General settings. Every selected day runs at every selected time. All days and All hours select every option.
A report uses the data from the last sync. It does not read Microsoft 365 when it runs, and Generate now does not start a sync. A tenant syncs every 6 hours.
A report covers one tenant. If the tenant's connection is disconnected or its sync is failing, the run is recorded as Abandoned. Tenant Manager creates no file and sends nothing, because the figures would be only as old as the last successful sync. Generation history says why the run was abandoned. After the connection or sync is fixed, the next run uses the tenant again.
A tenant counts as failing when its sync logs any issue, not only when the sync stops. For example, the sync logs an issue when it cannot read the audit log, billing prices, Microsoft Entra ID group owners, sign-in activity, or multi-factor authentication (MFA) data. So a tenant that is missing only an optional permission, such as the one that lets Tenant Manager read the audit log, also has its reports abandoned. A missing Reports.Read.All or CallRecord-PstnCalls.Read.All permission does not make a tenant failing.
When the last sync of the tenant failed, a warning note appears above the grid. The note names the cause, shows the last successful sync, and has a Details tooltip with the reason. The note is hidden while a new sync is queued or running. It comes back only if that sync also fails.
| Cause | What the note says | What to do |
|---|---|---|
| Microsoft limited requests | The last sync did not finish because Microsoft 365 limited the number of requests. | Wait a few minutes, and then select Sync. |
| Credential not working | The last sync failed because the tenant's credential is not working. | Update the client secret in Edit tenant, and then select Sync. See Managing Microsoft 365 tenants. |
| Any other cause | The last sync failed. | Select Sync to try again. |
Delivery and files
Tenant Manager links the file and never attaches it. An email or channel message shows the report name, the tenant, the format, when the report was generated, and how many rows it holds. It previews the first 10 rows and the first 4 columns, and it notes when the data was last synced. The file itself has every row and column. Two buttons can appear in an email. View in Turbo360 opens the run in Generation history. Download report appears when you tick Download report from notifications. Without it, the message carries only View in Turbo360. A Microsoft Teams card has one button: Download report when that option is on, otherwise View in Turbo360. A Download report link in a message stays valid for 7 days. To download the file later, open Generation history and select Download in the File column. If the column shows Not stored, the file was not kept. The message is still sent, but it has no Download report link.
You can send a report to recipient email addresses and to notification channels such as Slack, Microsoft Teams, webhooks, ServiceNow, PagerDuty, Opsgenie, and Azure DevOps. Separate recipient addresses with commas to send each person their own email. Use semicolons to send one email to everyone. A report needs at least one notification channel or recipient email address. Without one, it can't be saved or generated.
Every report is offered in both formats.
| Format | What the file holds |
|---|---|
| A cover page with the theme logo, your custom logo if you added one, the report name, the tenant, and the date it was generated. A Report summary page with Key facts (the scope, when the data was last synced, the activity window, and the currency, plus the price coverage in the User and Cost reports) and At a glance figures. Then the details table, followed by Definitions and Notes. A Tenants in this report section lists the tenant. Each page shows its page number. | |
| Excel | The rows only, on one sheet named Rows with filters turned on. It has no cover sheet. |
The activity window is set by No activity for more than (days) on each report. The default is 90 days, and the report file reads "Last N days". Amounts show the currency symbol, for example £1,234.50. Reports don't convert currencies. Each license is priced in its own currency, and where a PDF shows totals, it shows one subtotal for each currency, for example £10.87 + $10.00. The Excel file has no totals. Schedules run in the Background activity time zone from General settings. Dates and times inside the report file and in messages are in UTC, for example 10 Oct 2026, 11:27 UTC. The file name is made of the scope, the report name, the date, and the time in UTC, for example Ironwood-Madrid_User-report_20261021_0700_UTC.pdf. Spaces in the scope and report name are shown as hyphens, and the extension is .pdf or .xlsx. A custom logo appears only in PDF files.
History and activity log
Generation history lists the newest 50 runs of one report, newest first, 25 to a page. Its columns are Generated at, Details, Format, Status, Notifications, and File. The Details column holds a one-line summary of what the run carried when it ran, for example "383 users - 312 enabled, 71 disabled, 90 inactive (23.5%)" for the User report. Open the file for the full figures.
The Status badge reads Succeeded, Succeeded with issues, Abandoned, or Failed. Hover over the badge to read the issues. A run that succeeds with issues still has its file, but a part failed, for example a destination that could not be reached or a file that could not be saved for download. The Notifications column opens the destinations of the run and whether each one received the report. The File column offers Download, or shows Not stored when there is no file. Dates use your browser's time zone and the date-time format in General settings.
Tenant Manager records report changes in User activities, under the Reports category. You see Enabled, Disabled, Configured for the first save, Updated for later saves, and Generation initiated each time someone selects Generate now. Scheduled runs are not logged there. They appear in Generation history. The details of an entry show the frequency, for example "weekly on Monday at 07:00", the format, the Inactive after value, the recipients, the number of notification channels, whether Download report from notifications is on, whether a logo is set, and when the next run is due. The frequency is in your account's Background activity time zone, and the next run is shown in UTC. See Tenant Manager user activities.
Steps
The steps below cover switching a report on or off, generating it on demand, configuring it, adding a logo, and reading its history. You start on the Reports page of the tenant.
Enable or disable report generation
This procedure starts or stops the scheduled runs of one report.
- Find the report in the grid.
- Select the switch in the first column.
- Read the confirmation. It reads "This action will enable generation of ... It runs on its schedule and is sent to the configured recipients and channels." or "This action will disable generation of ... Its settings are kept, and it doesn't run until you enable it again."
- Select Continue. Select Cancel to put the switch back.
A message confirms the change. If the report has no notification channel or recipient email address, the switch is unavailable, and its tooltip reads "Configure this report first. Choose a notification channel or a recipient email address, then enable it." On private hosting, the tooltip asks only for a notification channel. Open Configure, enter a recipient (SaaS) or select a channel, select Save, and then switch the report on. If enabling fails for another reason, Tenant Manager shows "The report cannot be enabled with these settings", followed by the reason. Open Configure and fix that setting. Disabling a report keeps its settings.
Generate a report now
This procedure creates one copy of a report straight away, in addition to its schedule.
- In the Actions column, open the actions menu and select Generate now. The report must be switched on and must have a notification channel or a recipient email address. Without one, Generate now is unavailable, and its hover text reads "Select a notification channel or enter a recipient email address in Configure first". On private hosting, it reads "Select a notification channel in Configure first".
- Read the confirmation, "This action will generate ... as PDF and send it to the configured recipients and channels", and select Continue. The confirmation names the format the report is set to.
- Wait while the menu item reads Queued or Generating. The page updates on its own.
- Open Generation history to see the result.
The report uses the data from the last sync. You cannot generate a report again while one is queued or running.
Configure a report
This procedure sets the inactivity window, the format, the schedule, and the delivery of one report.
- In the Actions column, open the actions menu and select Configure. The Configure dialog opens with a one-line title that holds the report's name, for example Configure - User report.
- Read the note at the top. It explains what to keep in mind about the report's figures.
- Tick Download report from notifications at the top of the dialog if you want a Download report button in every message.
- For a PDF report, select Branding settings on the same row as Download report from notifications, at the right, to add a logo. See Add a logo to a PDF report.
- Under Report settings, enter No activity for more than (days). See the Configuration table.
- Choose the Format: PDF or Excel.
- Under Frequency settings, choose Select the interval: Weekly or Monthly.
- Choose the Days of week or Days of month, and the Hours the report runs at.
- Open Notification settings. On SaaS, enter Recipient email address values, and choose an Email template and Email subject if you want to.
- Tick the channels that should receive the report.
- Select Save.
For a report that you have configured before, Save stays disabled until something changes. Saving does not switch the report on or off. Use the switch in the grid for that. A report can't be saved until it has a notification channel or a recipient email address. While it has neither, a warning icon appears at the right of the Notification settings header, beside the chevron, with the tooltip "At least one notification channel must be added." If you close the dialog while a save is running, the save still completes. For an email (SMTP) channel, you can also set the recipients, template, and subject for that channel. On private hosting, the recipient, template, and subject fields for direct email are not shown, so select a notification channel instead.
Add a logo to a PDF report
This procedure puts your own logo on the cover page of a PDF report.
- In the Configure dialog, select Branding settings on the same row as Download report from notifications, at the right. A logo applies to PDF reports only.
- In the Logo configuration dialog, select the Logo box and choose a PNG, JPG, or SVG image under 100 kb.
- Check the Preview, which shows page one of the report.
- To use the logo on the other reports of this tenant that you have already configured, tick Apply this for all reports.
- Select Save in the logo dialog, and then select Save in the Configure dialog.
The logo is stored only when you save the Configure dialog. To remove it, select Remove logo. Reports of other tenants keep their own logo, and Apply this for all reports is never shown ticked when you reopen the dialog. The cover always carries the theme logo at the bottom. A custom logo adds your logo at the top of the cover. Choose a PNG, JPG, or SVG image under 100 kb. Otherwise you see "Use a PNG, JPG or SVG image." or "The image must be under 100 kb."
View generation history
This procedure shows the past runs of one report, and lets you download their files.
- In the Actions column, open the actions menu and select Generation history.
- Check the Status of the run. Hover over the badge to read any issues.
- In the Notifications column, select View details to see who received the report.
- In the File column, select Download.
When you follow View in Turbo360 in a message, Tenant Manager opens Generation history, highlights that run, and opens its notification details.
Configuration
The options below are in the Configure dialog.
| Option | Description |
|---|---|
| Download report from notifications | Adds a Download report button to every email and channel message. It is off by default. The link in a message stays valid for 7 days. |
| No activity for more than (days) | The number of days without activity after which the report treats a user, a seat, or spend as inactive. The default is 90. The User report uses it for its Inactive column, the License report for idle seats, and the Cost report for unused spend. |
| Format | The file type the report is sent as: PDF or Excel. The default is PDF. |
| Select the interval | How often the report is created: Weekly or Monthly. The default is Weekly. |
| Days of week | Weekly reports only. The days the report runs on, or All days. The default is Monday. |
| Days of month | Monthly reports only. The days the report runs on, from 1st to 31st and Last day, or All days. The default is 1st. |
| Hours | The times the report runs, in half-hour steps from 00:00 to 23:30 in the Background activity time zone from General settings, or All hours. The default is 09:00. |
| Recipient email address | SaaS only. The people to email. On private hosting, use notification channels. |
| Email template | SaaS only. The template the email is written in. The default is System template. |
| Email subject | SaaS only. The subject line for direct recipients and for email (SMTP) channels that have no subject of their own. Leave it empty to use the report name and tenant name. |
| Channels | The notification channels that receive the report. Each email (SMTP) channel can have its own recipients, template, and subject. |
| Logo | A PNG, JPG, or SVG image under 100 kb for the PDF cover page. Available for PDF only. |
| Apply this for all reports | On save, applies the logo to the other reports of this tenant that are already configured. |
Permission behavior
What you can do on the page depends on your role.
- With Manage on Reports, the switch, Generate now, and Configure are available.
- Without Manage, the switch, Generate now, and Configure stay visible but are disabled. Hover over them to see "You are not authorized to perform this operation".
- Without Read on Reports, the Reports row is not shown under License management.
- Generation history is open to everyone who can read Reports.
Example scenario
The license approvers at Ironwood Engineering want a fresh list of users at the end of every week, delivered where they already work. Diego Fernandez, a module owner, sets it up.
He opens Reports for the Ironwood Madrid tenant and selects Configure on the User report. He changes the format to Excel and ticks Download report from notifications. He sets the interval to Weekly, selects Friday, and chooses the 15:00 hour. He ticks the Microsoft Teams channel of the approvers. He saves, turns on the switch, and confirms. To check the setup, he opens the actions menu, selects Generate now, and confirms.
When the run finishes, the approvers get a Teams message with a Download report button. Diego opens Generation history to check that the run shows Succeeded.
Limitations
- Reports are set up per tenant. Tenant groups have no Reports page.
- You cannot add, rename, or delete reports. Tenant Manager offers the User report, the License report, and the Cost report.
- Reports run weekly or monthly only. You choose the days and times.
- You cannot set a date range. A report shows the data from the last sync, and activity covers the last N days set in No activity for more than (days).
- You cannot add columns to a report. PDF and Excel are the only formats.
- A report can't be saved or generated without a notification channel or a recipient email address.
- Tenant Manager sends a link to the file and never attaches it.
- A Download report link in a message stays valid for 7 days.
- Generation history lists the newest 50 runs. You cannot delete a run, send it again, or filter the list.
- A custom logo must be a PNG, JPG, or SVG image under 100 kb, and it appears only in PDF files. Excel files hold the rows only.
- On private hosting, you cannot add recipient email addresses. Use notification channels.
Troubleshooting
-
Generate now is disabled.
Cause: the report is switched off, it has no notification channel or recipient email address, you do not have Manage on Reports, or a run is already queued or running.
Fix: if the tooltip reads "Enable report generation to generate this report", turn the switch on first. If it reads "Select a notification channel or enter a recipient email address in Configure first" (on private hosting, "Select a notification channel in Configure first"), open Configure and add one. If it reads "You are not authorized to perform this operation", ask for Manage on Reports. Otherwise wait for the current run to finish in Generation history. -
A warning note about a failed sync appears above the grid.
Cause: the last sync of the tenant failed or logged an issue, so reports on the tenant are abandoned until a sync finishes without issues.
Fix: follow the note. Wait and select Sync, or update the client secret in Edit tenant and then select Sync. -
A run shows Abandoned.
Cause: the tenant's connection was disconnected or its sync was failing when the report ran, so there was no current data to report.
Fix: fix the connection or sync, and then select Generate now. See Syncing a Microsoft 365 tenant. -
A run shows Succeeded with issues, or the File column shows Not stored.
Cause: a destination could not be reached, or the file could not be saved for download. A run that is Abandoned or Failed has no file.
Fix: hover over the Status badge to read the issues, and select View details in the Notifications column to see which destination failed. When the file is Not stored, the message is still sent, but it has no Download report link. If a destination shows that its channel was deleted or refused the message, select a working channel in Configure or check the channel's settings under Settings > Notification channels. -
The recipient field is disabled with the message "Email sending is not set up for this deployment."
Cause: outbound email is not set up for this deployment.
Fix: use a notification channel instead, or set up outbound email.
FAQs
-
Does a report read Microsoft 365 when it runs?
No. A report uses the data from the last sync. A tenant syncs every 6 hours, and Generate now does not start a sync. -
Why is the file not attached to the email?
Tenant Manager links the file and never attaches it. Select Download report in the message, or download the file from Generation history. -
Why does the link in an email no longer work?
A Download report link stays valid for 7 days. After that, download the file from Generation history, when the File column offers Download. -
Can I get one report for a whole tenant group?
No. Reports are created for one tenant at a time.