Skip to main content
Embedsy logo
vb_leaf

Scheduling Reports for Automatic Email Delivery

★ Premium feature

This is a premium feature, available with an active premium subscription or trial. If you don't see it, contact us or your Admin to add it to your plan.

Preview feature

This feature is currently in preview. If you don't see it, contact us or your Admin to activate it.

Preview features:

  • are provided as-is and aren't meant for production use.
  • may have limited or restricted functionality, and details may change before general availability.
  • are supported on a best-effort basis and may be subject to reduced or different security, compliance, and privacy commitments.

The Embedsy Portal can export a Power BI report on a recurring schedule and email it to each recipient as an attachment - yourself, other portal users, or (for admins) people who don't have a portal account at all. Regular reports can be exported as PDF, PowerPoint (PPTX) or PNG; paginated reports as PDF or Excel (XLSX).

Emails are sent through Microsoft Graph from your own Microsoft 365 tenant, from the Sender Email Address set in Global Settings, using the mail permissions granted to the service principal during installation - no third-party email service is involved.

Enabling scheduling permissions

Scheduling is permission-based. Nobody - including admins - sees the Schedule Report entry until an admin has granted it:

  1. Open Roles/Pages/Users, go to the Roles tab and add or edit a role. Check Can schedule reports so users with this role can create schedules. Also check Can schedule reports for other recipients if they should be able to send to people other than themselves. The same two options are available on the Entra Roles tab.
    Can schedule reports and Can schedule reports for other recipients checkboxes on a role
  2. Sending to other recipients additionally has to be allowed per report: on the Pages tab, click Edit Page on the report's page, check Allow scheduling to other recipients and save.
    Allow scheduling to other recipients checkbox in the page settings

Both halves are required to send to anyone but yourself: one of your roles needs Can schedule reports for other recipients, and that same role needs the report on a page with Allow scheduling to other recipients checked. Admins are not exempt. Permissions are re-checked before every delivery, so removing them later pauses affected schedules (see auto-pause).

Scheduling a report

  1. Open the report you want to schedule, click your name at the bottom of the navigation and select Schedule Report. The entry only appears while a report is open and your role has Can schedule reports.
    Schedule Report entry in the user menu while a report is open
  2. The dialog lists the schedules you already have for this report. Click Add Schedule to create a new one.
    Schedule this report dialog with an existing schedule and the Add Schedule button
  3. Choose the Export Type and, if bookmarks are enabled for the report, optionally one of your own saved bookmark (otherwise the default view is exported). Set the frequency, time and timezone (see below), adjust the Subject (pre-filled with "Your scheduled report: <report name>"), write a Message and click Save. Subject and message are both required.
    Schedule form with export type, weekly frequency, time, timezone, subject and message

Frequency, time, and timezone

  • Weekly - pick any combination of days, for example every weekday, or just Tuesday and Friday. All seven days means daily.
  • Monthly - pick one or more days of the month and/or Last day. A month that doesn't contain a selected day (e.g. day 31 in April) is skipped for that day, not moved.

The time uses the 24-hour format and defaults to 09:00. The timezone defaults to your browser's timezone; search the list by city or region - each entry shows the country and current UTC offset. Daylight saving time is handled automatically.

Searchable timezone field showing city, country and UTC offset

Scheduling to other recipients

You are always a recipient of your own schedule. The Recipients field for adding more people only appears when scheduling for others is enabled for you on this report (see Enabling scheduling permissions). Type an email address and click Add.

Recipients section with your own address pinned and an added recipient
  • Recipients must already have a portal account - only admins can add addresses without one (see below).
  • At every delivery, each recipient's own access to the report is checked and the export is filtered by their own row-level security role. A recipient who has lost access doesn't receive the report, and the run is recorded as failed for them.
  • If a recipient's roles give them the report under several different row-level security roles, they receive one email per role, with the role name added to the subject.

If you open a schedule that already sends to others but the permission has since been removed, the form tells you that saving will fail until the permission is restored or the other recipients are removed.

What recipients receive

  • A plain-text email with your subject and message, and the export attached, named after the report (e.g. P&L.pdf).
  • PNG exports of reports with more than one page arrive as a .zip file with one image per page.
  • Exports larger than the sending limit are not sent; the run is marked too_large in the run history. The limit is 20 MB by default; admins change it with Max Email Attachment Size for Scheduled Reports (MB) in Global Settings.

Managing your schedules

Each schedule in the dialog shows its frequency and export type, an on/off switch to pause or re-activate it, its health status, and the buttons Send Test Now, History, Edit and Delete.

Testing a schedule

Send Test Now runs the export and emails every recipient immediately. The result opens in a dialog with the delivery status per recipient - large reports can take a while. Test sends are labelled Test in the history and don't affect the health status or the auto-pause counter.

Test Send Result dialog with the delivery status per recipient

Run history

History shows the last 10 deliveries: whether each was a scheduled or a test run, the recipient, the row-level role used, status, scheduled time, attempts, file size and the error message if something went wrong. Every export and every email is attempted up to three times before it counts as failed. Run history is kept for 180 days.

Run History table with test and scheduled runs

Health status, notifications, and auto-pause

The on/off switch and the health status are independent: a schedule can be switched on and still be failing. The health pill reflects the most recent delivery:

  • Healthy - every recipient received the report.
  • Partial failures - some recipients received it, others didn't.
  • Failing - nobody received it.
Schedules with Failing, Partial failures and Healthy status, one paused after repeated failures

A delivery that fails is retried automatically, so a temporary problem usually resolves itself without anyone stepping in.

The schedule owner gets an email whenever a scheduled delivery fails or partially fails, including the error and, for common problems, a plain-language hint.

A schedule pauses itself automatically, and emails the owner, in two situations:

  • After three failed deliveries in a row. Fix the cause, use Send Test Now to confirm, then switch the schedule back on.
  • When the owner loses a permission it needs - Can schedule reports, access to the report, or (for schedules that send to others) the "schedule for others" permission. This is checked before every delivery and every test send. Nothing is deleted: restore the permission, then re-activate the schedule.
Schedule paused because the owner's role no longer has permission

Editing a schedule's settings clears its health status and failure counter.

Report Scheduling requires an active Premium subscription or trial. If it lapses, no scheduled or test emails are sent, but your schedules, recipients and history are kept and resume once the subscription is active again.

Admin: managing all schedules

Admins and super admins have a Report Schedules page that lists every schedule in the portal, across all users.

  1. Click your name at the bottom of the navigation and select Report Schedules.
    Report Schedules entry in the Embedsy Portal user menu
  2. Each schedule shows its owner, number of recipients, status and health. Search by report, subject or owner, and filter by Owner, Workspace, Status, RLS override, Allow scheduling to recipients (without a portal account) and Health.
    Admin Report Schedules page with its filters highlighted
  3. Click Add Schedule to create a schedule for any report in any Power BI workspace, including reports that aren't added to a page. This requires Can schedule reports on one of your roles.
    Admin Add Report Schedule form with workspace and report pickers

Schedules owned by other users

Admins oversee other people's schedules, but only the owner can change them, because deliveries run under the owner's permissions. On a schedule you don't own you can:

  • View it - the form opens read-only with the owner's name at the top.
  • History - see its deliveries and errors.
  • Pause it with the status switch. You'll be asked to confirm, because only the owner can switch it back on.
  • Delete it. The owner is not notified.

Editing, sending a test and re-activating are reserved for the owner.

Read-only View Report Schedule dialog showing the owner

Admin: recipients without a portal account

The Allow scheduling to recipients without a portal account checkbox (admins only) lets a schedule go to any email address. It skips each recipient's individual access check: the report is exported once and the same file is sent to every recipient.

It requires the same "schedule for others" permission described above - a role permission plus the per-report toggle. Until both are in place, the checkbox is greyed out with an explanation.

Greyed-out checkbox for recipients without a portal account, with hint text

Admin: RLS override and dynamic row-level security

If the report's semantic model uses row-level security, admins see an RLS override section with the option Use a shared RLS role for all recipients.

  • Off (default) - each recipient's own role and identity are resolved automatically.
  • On - one role is applied to the whole export. Each recipient's access to the report is still checked, unless "recipients without a portal account" is also enabled.
  • When "recipients without a portal account" is enabled, the shared role is switched on automatically and a row-level role is required, since one shared export can't resolve a separate role per recipient.
RLS override section with the shared RLS role option highlighted

The override has two fields: Row-level role (required, and it must match a role name defined in the semantic model exactly) and Identity (optional, defaults to the email of whoever creates the schedule). Whether you need to change the identity depends on how the role's filter is defined:

  • Static RLS (for example [Region] = "West") filters on a fixed value. The identity has no effect, so the default is fine.
  • Dynamic RLS uses USERNAME() or USERPRINCIPALNAME() in the filter. Those functions return the Identity value, so set it to whatever the model expects (often an email address, but model-dependent).

To check which kind you have, look at the role's DAX filter in Power BI Desktop (Modeling → Manage roles). See Microsoft's documentation on embedding a report with RLS and the row-level security guidance for details.

Permissions summary

To do thisYou need
Schedule a report to yourselfA role with Can schedule reports, and access to the report (admins can pick any report)
Add other portal usersAdditionally Can schedule reports for other recipients on a role that has the report on a page with Allow scheduling to other recipients
Add recipients without a portal account, or set an RLS overrideAdmin or super admin, plus the permissions above
See, pause and delete every scheduleAdmin or super admin
Edit, test or re-activate a scheduleBeing its owner, with Can schedule reports

Troubleshooting

Error containsWhat to check
ErrorAccessDeniedThe app's email permissions - see Service Principal.
Export report was called with a bad requestThe row-level role doesn't exactly match a role in the semantic model (typos, extra spaces).
requires effective identity to be providedThe semantic model uses row-level security but no role is configured - set one on the page or in the schedule's RLS override.
Power BI capacity is not currently availableThe capacity couldn't be resumed in time for the delivery. A delivery starts a paused, auto-managed capacity itself and waits up to three minutes for it.
Export did not complete withinThe export took longer than 5 minutes - usually a very large report or a capacity under heavy load.
exceeds the ... MB sending limitThe file is too large to email - use a bookmark or filters to reduce the content, or a different export type.

Was this article helpful?