--- title: "Reports in Tenant Manager" slug: "reports-in-tenant-manager" updated: 2026-11-02T06:53:54Z published: 2026-11-02T06:53:54Z canonical: "docs.turbo360.com/reports-in-tenant-manager" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.turbo360.com/llms.txt > Use this file to discover all available pages before exploring further. # Reports in Tenant Manager ## 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](https://docs.turbo360.com/docs/user-report-in-tenant-manager), [License report](https://docs.turbo360.com/docs/license-report-in-tenant-manager), and [Cost report](https://docs.turbo360.com/docs/cost-report-in-tenant-manager). ### 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](https://docs.turbo360.com/docs/tenant-manager-roles-and-permissions). | 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](https://docs.turbo360.com/docs/how-data-sync-works). - **Prices:** cost figures use prices from your Microsoft billing or from the Global price catalog. See [Global price catalog](https://docs.turbo360.com/docs/global-price-catalog-in-tenant-manager). - **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. Note: 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](https://docs.turbo360.com/docs/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 | | --- | --- | | PDF | 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](https://docs.turbo360.com/docs/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. 1. Find the report in the grid. 2. Select the switch in the first column. 3. 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." 4. 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. 1. 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". 2. 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. 3. Wait while the menu item reads **Queued** or **Generating**. The page updates on its own. 4. 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. 1. 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**. 2. Read the note at the top. It explains what to keep in mind about the report's figures. 3. Tick **Download report from notifications** at the top of the dialog if you want a **Download report** button in every message. 4. 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. 5. Under **Report settings**, enter **No activity for more than (days)**. See the Configuration table. 6. Choose the **Format**: **PDF** or **Excel**. 7. Under **Frequency settings**, choose **Select the interval**: **Weekly** or **Monthly**. 8. Choose the **Days of week** or **Days of month**, and the **Hours** the report runs at. 9. Open **Notification settings**. On SaaS, enter **Recipient email address** values, and choose an **Email template** and **Email subject** if you want to. 10. Tick the channels that should receive the report. 11. 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. 1. 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. 2. In the **Logo configuration** dialog, select the **Logo** box and choose a PNG, JPG, or SVG image under 100 kb. 3. Check the **Preview**, which shows page one of the report. 4. To use the logo on the other reports of this tenant that you have already configured, tick **Apply this for all reports**. 5. 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. 1. In the **Actions** column, open the actions menu and select **Generation history**. 2. Check the **Status** of the run. Hover over the badge to read any issues. 3. In the **Notifications** column, select **View details** to see who received the report. 4. 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 1. **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. 2. **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**. 3. **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](https://docs.turbo360.com/docs/syncing-a-microsoft-365-tenant). 4. **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. 5. **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 1. **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. 2. **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. 3. **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**. 4. **Can I get one report for a whole tenant group?** No. Reports are created for one tenant at a time. ## Related articles - [User report](https://docs.turbo360.com/docs/user-report-in-tenant-manager) - [License report](https://docs.turbo360.com/docs/license-report-in-tenant-manager) - [Cost report](https://docs.turbo360.com/docs/cost-report-in-tenant-manager) - [Syncing a Microsoft 365 tenant](https://docs.turbo360.com/docs/syncing-a-microsoft-365-tenant) - [How data sync works](https://docs.turbo360.com/docs/how-data-sync-works) - [Global price catalog](https://docs.turbo360.com/docs/global-price-catalog-in-tenant-manager) - [Tenant Manager user activities](https://docs.turbo360.com/docs/tenant-manager-user-activities) - [Notification emails](https://docs.turbo360.com/docs/notification-emails-in-tenant-manager) - [Roles and permissions in Tenant Manager](https://docs.turbo360.com/docs/tenant-manager-roles-and-permissions)