Can Power BI Handle Multi-Tenant Reporting?

Introduction
Imagine you run a SaaS company, or you provide BI dashboards to multiple clients. Each client must see only their own data. Yet you want to reuse your report templates, avoid duplicating work, manage costs, and keep your architecture maintainable. That’s where multi‑tenant reporting comes in.
The big question: Can Power BI handle multi‑tenant reporting in a scalable, secure, cost‑efficient way? If yes, what are the trade‑offs, design patterns, and what skills do you need?
If you’re considering Power bi training and placement, Power bi server training, or enrolling in Power bi training courses online, knowing how to implement multi‑tenant scenarios gives you a strong real world skill. For people preparing for Microsoft bi developer certification, mastering multi‑tenant embedding, cross‑tenant dataset sharing, and service principal profiles is a big plus.
In this post I’ll explain:
-
What “multi‑tenant reporting” means in the Power BI world
-
What options Power BI offers for it (embedding, cross‑tenant sharing, etc.)
-
Key practical patterns, tradeoffs, real‑world examples
-
How to build a simple multi‑tenant embed scenario step by step
-
What licensing, security, and performance you must plan for
Let’s dive in.
What Is Multi‑Tenant Reporting?
“Tenant” in this context usually refers to a customer, client organization, or logically isolated group of users that should only access their own data. Multi‑tenant reporting means managing multiple such tenants using shared infrastructure (reports, templates, possibly shared datasets), while ensuring:
-
Data isolation no tenant can see another’s data
-
Security both in access control & identity
-
Scalability adding many tenants without exploding overhead
-
Cost control minimizing licensing and compute costs
Power BI supports multiple ways to serve multi‑tenant reporting. Here are the main approaches:
-
Embedding (App‑Owns‑Data)
-
Share reports/datasets across tenants (cross‑tenant dataset sharing)
-
Row Level Security (RLS)
-
Guest users via Azure AD B2B
-
Service principal profiles
Power BI Features That Support Multi‑Tenant Reporting
Here are the features, how they work, and when to use them:
1. Power BI Embedding: App‑Owns‑Data
In this model, your application (or your service) owns the data and the reports. You embed Power BI content (dashboards, reports) into your own app or portal. External users (your tenants) interact via your app. They don’t need direct access to your Power BI service UI.
Key elements:
-
Use a Service Principal (preferred for production) or a Master User identity to authenticate the embedding. Microsoft Learn
-
Each tenant often has its own workspace, model parameters, credentials. You may automatically provision new workspaces via REST API. Microsoft Learn
-
Use service principal profiles to scale (if many tenants and many workspaces). This helps isolate metadata, security, and avoid excessive overhead on single service principal. Microsoft Learn+1
Pros:
-
Full control over UX
-
You control refresh schedules, security
-
Easier to isolate data
Challenges:
-
Licensing cost: if many external users, embedding capacity or premium capacity needed.
-
Management: provisioning, maintenance, monitoring many workspaces.
-
Limits: by default, a service principal being assigned to too many workspaces may degrade performance. Microsoft Learn
2. Cross‑Tenant Dataset Sharing
This is a newer capability. It allows one tenant (provider) to share its datasets with other tenant(s) (consumers) in a way that the consumers can build reports using those shared datasets from their own tenant. The data stays in provider tenant. The consumer uses DirectQuery or composite models to combine shared datasets with their own data. Power BI
Use cases:
-
Subsidiaries, partner companies, clients who want to build customized reports on shared data.
-
Scenarios where you don’t want to re‑duplicate datasets for every tenant.
Pros:
-
Data duplication is minimized.
-
Each tenant can build their own reports.
-
Can enforce governance & control from provider side (which datasets to share, what permissions).
Challenges:
-
Consumer users may need Azure AD guest accounts. Power BI
-
Some administrative settings needed (external sharing, tenant settings, possibly regulation issues).
-
Performance / latency considerations, especially with DirectQuery or with complex composite models.
3. Row‑Level Security (RLS)
RLS adds filters in the data model so that different users see only the data relevant to them (based on some attribute, e.g. TenantID). This works well when the model contains data for many tenants.
Use this when:
-
You have one dataset / workspace, but many tenants/users.
-
The data volume for tenants is manageable in one model.
Pros:
-
Simplifies maintenance (single dataset/model).
-
Less duplication.
Challenges:
-
RLS is enforced at query time, so performance for large models or many users/filters can suffer.
-
Deploying updates, data schema changes must consider impact on all tenants.
-
More complex identity management: users need to be mapped to tenant identifiers properly.
4. Azure AD B2B Guest Users & Tenant Settings
You can invite external users (from another tenant) as guest users via Azure Active Directory B2B. Then you can share dashboards, reports with them (assuming licensing allows). However this is more suitable for occasional external sharing rather than full multi‑tenant SaaS embedding. Some of the cross‑tenant dataset sharing depends on guest user identity. Power BI
5. Service Principal Profiles & Scaling
When embedding for many tenants, Microsoft’s service principal profiles feature helps you scale better. Instead of one service principal identity being tied to all tenants/workspaces, you create profiles. Each profile represents a “ghost” identity under which the tenant’s content (workspace, credentials, etc.) are managed. That helps with:
-
Performance: avoids huge ACLs (access control lists) growing too large. Microsoft Learn+1
-
Security / isolation
-
Easier provisioning and lifecycle management
How Power BI Handles Multi‑Tenant Reporting in Practice
Let’s look at some real scenarios / examples of how companies / Microsoft handle this. These will help you see what works, what tradeoffs happen.
Example: SaaS Company using Power BI Embedded + Service Principal Profiles
Suppose you run a SaaS product that serves 200 clients. Each client (tenant) needs dashboards: sales, usage, performance. You want your app to show these dashboards embedded in your portal. You want clients to log in via your app, see only their data, without requiring them to log into the Power BI service.
Architecture might be:
-
Use App‑Owns‑Data embedding
-
Use Service Principal with service principal profiles
-
For each client tenant, automatically create a workspace, set up data sources (connection strings specific to that tenant), model templates (perhaps using a common .pbix file + parameterization), set up refresh schedules.
-
All embedding done via REST API (for workspace creation, .pbix import, credential setting, etc.)
-
Use RLS if multiple tenants share a model, or separate datasets per tenant as needed
Outcomes / tradeoffs:
-
Good isolation: each client’s data is isolated
-
Performance: With many clients (say thousands), service principal profile helps avoid performance penalty.
-
Cost: need embedding capacity or premium capacity; need to manage licensing of users, possibly only a few should have editing rights.
Example: Shared Dataset with Cross‑Tenant Sharing
Another scenario: A large corporation has a central data provider team that owns core datasets (e.g., finance, HR, operations). Subsidiaries or partner companies want to build their own custom reports using those datasets plus their local data.
Using cross‑tenant dataset sharing, the corporation shares the core datasets with the partner tenants. Partners use their own tenant to build reports, dashboards. They might combine shared datasets with their own local data. Data remains in provider tenant. Governance is enforced centrally. Power BI
This reduces duplication, simplifies maintenance of core models. But users in partner tenants must have proper permissions, guest accounts, and the tenant settings must allow sharing.
How To Build a Basic Multi‑Tenant Embed Scenario: Step‑by‑Step Guide
Here is a hands‑on guide for building a simple Power BI multi‑tenant embed (App‑Owns‑Data) solution. This helps clarify what skills are needed (useful for learners, trainees, certification seekers).
Preliminaries
You need:
-
Power BI Premium or Embedded capacity (or a license plan that supports embedding)
-
Azure subscription with Azure Active Directory
-
Power BI REST API access
-
Some sample data per tenant (for example, separate database schemas or separate connection strings)
-
Basic programming environment (e.g. .NET / .NET Core, or Node.js, or any language that can call REST APIs and expose web endpoints)
Step 1: Create App Registration & Service Principal
-
Go to Azure AD → App Registrations → New Registration. Give it a name, configure redirect URIs if needed.
-
Under “API Permissions”, add permissions for the Power BI Service (for example Dataset.ReadWrite.All, Tenant.Read.All as needed). Grant admin consent.
-
Create a Client Secret (or certificate) to authenticate.
Step 2: Provisioning Tenant Workspaces Programmatically
Your code (say in C# or Node.js) will do the following via Power BI REST API:
Create workspace for tenant:
POST https://api.powerbi.com/v1.0/myorg/groups
{ "name": "TenantA_Workspace", "capacityId": "<your capacity if embedding>" }
Import report template (a .pbix) if you have a standard report:
POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/imports?datasetDisplayName=TenantA_Model
-
Set data source parameters, credentials so that the dataset connects to the tenant’s data store.
-
Schedule refresh for dataset.
Step 3: Implement Row‑Level Security or Data Isolation
Depending on how you architected your data:
-
If each tenant has its own database or schema, you may set up separate data source where reports/dataset use that.
-
Or, if a single dataset holds many tenants, define RLS: define a table of Tenants, a mapping of user identity’s TenantID, apply filter so each user sees only their tenant data.
Example of RLS in DAX:
-- in the model define a table TenantMapping(UserPrincipalName, TenantID)
-- then in your fact table, have TenantID column
FactSales_Tenant filtered =
FILTER(
FactSales,
FactSales[TenantID] =
LOOKUPVALUE(
TenantMapping[TenantID],
TenantMapping[UserPrincipalName],
USERPRINCIPALNAME()
)
)
Step 4: Embedding for External Users (Tenants)
Assuming your app handles user authentication (users log in to your app):
-
Use the service principal and REST API to generate an embed token for reports in specific workspaces.
-
Pass embed token + report id + embed URL to your front‑end to show the report via Power BI JavaScript SDK or equivalent.
Example pseudocode (C# style):
// Acquire access token using service principal
var authResult = await ConfidentialClientApplication
.Builder(clientId, secret)
.WithAuthority(tenantId)
.AcquireTokenForClient(scopes)
.ExecuteAsync();
// Use Power BI SDK to generate embed token
var embedToken = await powerBiClient.Reports.GenerateTokenAsync(
workspaceId, reportId,
new GenerateTokenRequest(accessLevel: "View")
);
-
In your front‑end, embed using something like:
powerbi.embed(reportContainer, {
type: 'report',
embedUrl: embedUrl,
token: embedToken.Token,
settings: { … }
});
Step 5: Manage Scaling & Automation
-
Use service principal profiles when you have many tenants/workspaces. Microsoft recommends this when you have more than ~1000 workspaces or many application users. Microsoft Learn+1
-
Automate creation / deletion of tenant workspaces, monitoring, data refresh, credential management.
-
Monitor performance, usage, license consumption.
Licensing, Security, Performance & Limitations
When implementing multi‑tenant reporting with Power BI, these are the practical constraints and considerations you must plan for. They often determine whether the architecture is viable.
Licensing
-
Embedding content (App‑Owns‑Data) often requires Power BI Embedded capacity (Azure) or Premium capacity. Free or Pro licenses are limited.
-
External users (guests) may need Pro/PPU licenses, depending on content shared and capacity used.
-
Cross‑tenant dataset sharing may require both provider and consumer tenants to have licenses/permissions.
-
Cost of data storage, refresh, and capacity must be balanced.
Security
-
Data isolation: enforce via separate workspaces, separate datasets, or via RLS.
-
Identity management: use Azure AD, guest accounts, service principal, B2B setups.
-
Permissions: define who can share, who can build reports, who can view only.
-
Auditability & compliance: ensure governance settings, tenant settings, monitoring are in place.
Performance & Scalability
-
Many workspaces or datasets under single service principal without profiles may degrade performance due to large ACL metadata. Microsoft Learn
-
Data volumes, complexity of queries (especially with RLS, cross‑tenant queries, composite models) affect latency.
-
Scheduling refreshes: many tenants means many refresh jobs; capacity may need to scale.
Limitations & Gotchas
-
There is a workspace limit of ~1,000 per service principal for “supported” state; beyond that, Microsoft indicates risk of unsupported behaviors. That is part of the reason service principal profiles exist. Microsoft Learn
-
Some features may be in preview (e.g. cross‑tenant dataset sharing was in public preview at time of writing) so subject to change. Power BI
-
Some compliance / regulation issues (data residency, GDPR) may complicate cross‑tenant sharing, especially across regions.
Real‑World Use Cases & Case Studies
Here are some specific real‑world examples of companies and scenarios, to show how this works in practice.
-
Franchise networks or distributor networks: A company with many distributors wants each distributor to see their sales, commissions, etc. Power BI multi‑tenant embedding allows sharing dashboards with each distributor in their own workspace or via RLS. A vendor described this on QBICO’s offering: using Power BI Multitenant system to share dashboards with external entities (suppliers, customers) without having to purchase a license for each external user. qbico.pl
-
ISVs (Independent Software Vendors) embedding analytics into their SaaS products: Many ISVs embed Power BI for customers, using the “Embed for your customer” scenario with separate workspaces per customer, and often service principal profiles.
-
Large enterprise partner data sharing: A central analytics team shares core datasets with partner or subsidiary organizations, who then build local reports. Cross‑tenant dataset sharing helps here, reducing duplication of data models and ensuring consistency.
-
Azure migration cases: When organizations have multiple Active Directory tenants or subsidiary companies, they may need to set up cross‑tenant sharing and in‑place datasets for internal consolidation while retaining data separation.
Comparing Approaches: Tradeoffs Table (in narrative)
To choose the right multi‑tenant model, here are trade‑offs in different approaches:
Approach |
Pros |
Cons |
Best Suited For |
Separate datasets & workspaces per tenant (embed) |
Strong isolation; flexible; better performance per tenant |
More overhead; cost higher; many refresh jobs |
SaaS providers; many external clients; strong security needs |
Single dataset + RLS |
Less duplication; easier updates; lower admin overhead |
Greater complexity; performance hit under scale; schema changes affect all tenants |
Many tenants but moderate size; shared characteristics; fewer differences between tenants |
Cross‑tenant dataset sharing |
Less duplication; consumer‑tenant custom reports; central governance |
Permission and licensing complexity; preview features; guest account management |
Scenarios with partner organizations or subsidiaries; when you want shared core datasets + local flexibility |
What Skills / Training Do You Need
If you are a learner or preparing for job placement in Power BI roles, here are the skills and training components you should build:
-
Deep understanding of Power BI service architecture
-
Working knowledge of Azure Active Directory, guest accounts, B2B sharing
-
Experience with Power BI REST API: creating workspaces, importing PBIX, setting credentials, scheduling refresh
-
Embedding: building web apps that embed Power BI reports (JavaScript, C#, or another language)
-
Understanding licensing (Pro, Premium, Embedded, PPU) and cost models
-
Knowledge of Row‑Level Security and best practices for data modelling for multi‑tenant datasets
-
Monitoring, performance tuning, governance
These are topics you’ll often see in Power bi training courses online, Power bi server training, or modules of Microsoft BI developer certification. If you seek Power bi training and placement, ensure the training includes hands‑on labs around embedding, multi‑tenant scenarios, cross‑tenant sharing.
Step‑By‑Step: Example Setup Code Snippet
Here’s a code snippet (simplified) in C# showing how to generate embed tokens and embed a report for a tenant. Useful if you’re practising or following along in a course.
// using Microsoft.PowerBI.Api, Microsoft.Identity.Client etc.
string tenantId = "<your‑AAD‑tenant‑id>";
string clientId = "<app registration client id>";
string clientSecret = "<app registration secret>";
string workspaceId = "<workspace id for tenant‑A>";
string reportId = "<report id>";
var authority = $"https://login.microsoftonline.com/{tenantId}/";
var scopes = new[] { "https://analysis.windows.net/powerbi/api/.default" };
var cca = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(authority)
.Build();
var authResult = await cca.AcquireTokenForClient(scopes).ExecuteAsync();
var tokenCredentials = new TokenCredentials(authResult.AccessToken, "Bearer");
using(var pbiClient = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials))
{
var report = await pbiClient.Reports.GetReportInGroupAsync(workspaceId, reportId);
var generateTokenRequestParameters = new GenerateTokenRequest("View", datasetId: null);
var embedToken = await pbiClient.Reports.GenerateTokenAsync(workspaceId, reportId, generateTokenRequestParameters);
// send embedToken.Token & report.EmbedUrl to your front end
}
Then front‑end JavaScript to embed:
// assuming powerbi‑client is loaded
const embedConfig = {
type: 'report',
id: '<reportId>',
embedUrl: '<embedUrl from report.EmbedUrl>',
accessToken: '<embedToken>',
tokenType: window['powerbi-client'].models.TokenType.Embed,
settings: {
filterPaneEnabled: false,
navContentPaneEnabled: true
}
};
powerbi.embed(document.getElementById('reportContainer'), embedConfig);
Real World Example with Cross‑Tenant Dataset Sharing Settings
Here’s how cross‑tenant dataset sharing works in Microsoft Power BI:
-
The provider tenant holds the dataset. In its dataset settings, “External sharing” must be enabled. Power BI
-
The consumer must have an Azure AD guest account in the provider tenant, minimum build permissions on the dataset. Power BI
-
The consumer can then discover shared datasets in Power BI Desktop and build reports combining shared datasets and their own local data (composite models). Power BI
-
The shared datasets remain in provider tenant. Data refreshes are managed there. Consumer builds on top.
Summary & Conclusion
Yes Power BI can handle multi‑tenant reporting. It offers multiple viable architectures: embedding (App‑Owns‑Data), cross‑tenant dataset sharing, RLS, etc. With correct design, you can deliver reports to many tenants, each seeing only their data, while reusing templates, controlling costs, and maintaining governance.
However, it’s not automatic. You must plan around licensing, capacity, identity, security, and performance. Also, keep an eye on Microsoft’s updates: cross‑tenant dataset sharing was preview (at time of writing), and features like service principal profiles are evolving.
Key Takeaways
-
Multi‑tenant reporting means serving multiple isolated groups (tenants), each with their own data and permissions, often using shared infrastructure.
-
Use embedding (App‑Owns‑Data) + service principal (or profiles) when you are distributing reports via your own app/portal.
-
Cross‑tenant dataset sharing helps when you want partner/subsidiary/consumer tenants to build their own reports on shared data.
-
Row‑Level Security can help but has performance and manageability trade‑offs.
-
Licensing (Pro, Premium, Embedded), identity (Azure AD, guest accounts), and permissions are central constraints.
Where This Fits in Training & Certification
If you are doing Power bi training courses online, Power bi server training, or preparing for Microsoft BI developer certification, make sure your coursework includes:
-
Modules on embedding Power BI (App‑Owns‑Data)
-
REST API usage (workspace creation, dataset import, embedding, refresh)
-
Hands‑on labs for multi‑tenant embedding, service principal profiles
-
Cross‑tenant sharing & governance
-
RLS and security best practices
With such skills you increase your chances of strong outcomes in Powerbi online training roles (BI developer, embedded analytics engineer, consultant, etc.).
Conclusion
Power BI not only can handle multi‑tenant reporting it does so in many real‑world applications, given the right design. If you build your skills in embedding, cross‑tenant sharing, service principal profiles, and secure modeling, you’ll be well prepared for modern BI roles or certification.
- Art
- Causes
- Crafts
- Dance
- Drinks
- Film
- Fitness
- Food
- Jeux
- Gardening
- Health
- Domicile
- Literature
- Music
- Networking
- Autre
- Party
- Religion
- Shopping
- Sports
- Theater
- Wellness