By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.
(Classic vs. Modern App Workspaces, Apps, and Production Realities)
You’re a Power BI engineer at a mid-sized company. Your team just inherited a mess: - 20+ "Classic" workspaces with no clear ownership, some abandoned, others with broken permissions.- Reports deployed as "My Workspace" (yes, that workspace) because "it was faster." - Stakeholders complain that they can’t find the latest version of a report, or worse—they’re editing the wrong one.- Security audits flag that external contractors have access to internal data because someone shared a workspace link instead of an app.
This guide fixes that.
If you ignore this:❌ Reports get overwritten by accident.❌ External users see internal data.❌ Your Power BI Premium capacity gets wasted on abandoned workspaces.❌ You fail compliance audits (GDPR, HIPAA, etc.).
If you master this:✅ One source of truth – No more "which version is the right one?" ✅ Proper access control – External contractors see only what they’re supposed to.✅ Cost savings – No more paying for Premium capacity on unused workspaces.✅ Audit-ready governance – Every change is tracked, every user is accounted for.
main
✅ Power BI Admin rights (or at least workspace Admin).✅ Azure AD security groups (for permissions).✅ Power BI Premium capacity (if using Premium).
# PowerShell: List all Classic workspaces (requires Power BI Admin API) Connect-PowerBIServiceAccount Get-PowerBIWorkspace -Scope Organization -Filter "type eq 'Workspace'" | Where-Object { $_.IsOnDedicatedCapacity -eq $false } | Select-Object Name, Id, Type
Expected Output:
Name Id Type ---- -- ---- Sales Reports 1234abcd-5678-90ef-ghij-klmnopqrstuv Workspace HR Analytics 9876zyxw-5432-10uv-wxyz-abcdefghijkl Workspace
Why? You need to know what you’re migrating before you start.
Sales Reports (Modern)
Migrated from Classic - Do not edit directly
⚠️ Trap: If you select Pro instead of Premium, you cannot use Premium features later.
⚠️ Trap: Dataflows cannot be exported this way—you’ll need to recreate them.
# PowerShell: Clone a workspace (requires Admin API) $classicWorkspaceId = "1234abcd-5678-90ef-ghij-klmnopqrstuv" $modernWorkspaceId = "9876zyxw-5432-10uv-wxyz-abcdefghijkl" # Get all reports in Classic workspace $reports = Get-PowerBIReport -WorkspaceId $classicWorkspaceId # Clone each report to Modern workspace foreach ($report in $reports) { Export-PowerBIReport -WorkspaceId $classicWorkspaceId -Id $report.Id -OutFile "C:\temp\$($report.Name).pbix" New-PowerBIReport -WorkspaceId $modernWorkspaceId -Path "C:\temp\$($report.Name).pbix" -ConflictAction CreateOrOverwrite }
Why? Faster for large workspaces, but does not copy dataflows or dashboards.
Power BI - Sales Reports - Viewers
⚠️ Trap: Never assign individual users—always use Azure AD groups for scalability.
Sales Reports (Prod)
Official production version - Last updated: $(Get-Date -Format "yyyy-MM-dd")
⚠️ Trap: Never publish an app with "Entire organization" unless it’s truly public.
[Team] [Purpose] (Dev/Test/Prod)
[Team] [Purpose] (v1.2)
Sales Reports (v2.1)
Owner: [email protected]
Department: Sales
powershell # PowerShell: Get workspace usage metrics Get-PowerBIWorkspace -Scope Organization | ForEach-Object { $usage = Get-PowerBIWorkspaceUsage -Id $_.Id [PSCustomObject]@{ Name = $_.Name LastActivityDate = $usage.LastActivityDate ReportCount = $usage.ReportCount DatasetCount = $usage.DatasetCount } }
❌ Classic Workspace
"How should you share a report with external contractors?"
❌ Give them "Viewer" access in the workspace.
"What’s the difference between a workspace and an app?"
App = Production deployment (read-only, versioned).
"Which role can publish an app?"
Scenario:You’re a Power BI admin. A user complains that they can’t see the latest version of a report. You check and find: - The report is in a Classic workspace.- The user was given "Viewer" access in the workspace (not via an App).- The workspace has 3 draft reports that the user shouldn’t see.
Task:1. Migrate the Classic workspace to Modern.2. Publish an App with only the final report (hide drafts).3. Grant the user access via the App (not the workspace).
Solution:1. Create a Modern workspace (Sales Reports (Modern)).2. Export/import the final report (not drafts).3. Publish an App and hide drafts.4. Grant the user access to the App (not the workspace).
Why it works:- The user only sees the published App (no drafts).- The workspace is now governed by Azure AD (better security).- Future updates can be version-controlled via Apps.
Get-PowerBIWorkspace -Scope Organization -Filter "type eq 'Workspace'" \| Where-Object { $_.IsOnDedicatedCapacity -eq $false }
Export-PowerBIReport
New-PowerBIReport
"If you’re not using Modern workspaces and Apps, you’re doing Power BI wrong. Migrate today—your future self (and your security team) will thank you."
Join 4M+ learners. Unlock unlimited quizzes, wrong-answer tracking, flashcards + reminders, study guides, and 1-on-1 challenges.