Admin Portal — Tenant Settings (/admin/tenant-settings) — Parity Gap¶
Validator: v2 fabric-parity-loop · 4-phase check
Run date: 2026-05-26
Fabric reference: Fabric admin portal → Tenant settings (the single largest admin surface in Fabric)
Loom URL: https://loom-console-fvbbctd4eehqbkcs.b02.azurefd.net/admin/tenant-settings
Captures¶
| Loom | Fabric |
|---|---|
Live capture blocked by session expiry; structure from apps/fiab-console/app/admin/tenant-settings/page.tsx | Microsoft Learn — https://learn.microsoft.com/fabric/admin/tenant-settings-index (full markdown fetched, parsed below) |
Phase 1 — What Fabric provides (authoritative count)¶
Fetched the official tenant-settings-index page from Microsoft Learn and parsed it programmatically. Result:
- 25 categorized sections in Fabric Tenant settings:
- Microsoft Fabric
- Help and support settings
- Workspace settings
- Information protection
- Export and sharing settings
- Discovery settings
- Integration settings
- Power BI visuals
- R and Python visuals settings
- Audit and usage settings
- Dashboard settings
- Developer settings
- Admin API settings
- Gen1 dataflow settings
- Template app settings
- Q&A settings
- Advanced networking
- User experience experiments
- Share data with your Microsoft 365 services
- Insights settings
- Datamart settings
- Scale-out settings
- OneLake settings
- Git integration
-
Copilot and Azure OpenAI Service
-
~160 individual toggle / setting rows across those 25 sections (count from parsing the table rows; some sections contain >20 toggles e.g. "Microsoft Fabric" and "Export and sharing settings"; some have 2-3).
Each toggle has: - Title + (link to learn-more docs page) - Description text - Enabled / Disabled switch - Apply to: Entire organization / Specific security groups / Except specific groups - For some: parameter inputs (e.g. "Define maximum number of Fabric identities" takes an int; "Define workspace retention period" takes days) - Audit log entries on every change (UpdatedAdminFeatureSwitch and similar) - Some toggles can be delegated to capacity-admin or domain-admin level - Search box at the top to filter across all 25 sections
Phase 2 — What Loom provides¶
Source: apps/fiab-console/app/admin/tenant-settings/page.tsx (15 lines total, including imports and JSX):
export default function TenantSettingsPage() {
return (
<AdminShell sectionTitle="Tenant settings">
<EmptyState icon="⚙"
title="Loom tenant switches"
body="Per-area toggles that control what Loom surfaces across the tenant: OneLake, Real-Time Intelligence, AI & Copilot, Mirroring, Synapse passthrough, Databricks passthrough, ADF passthrough, U-SQL legacy enablement, Git integration, Domain management, Information protection, Export & sharing, Help & support, Billing connections (Azure Cost Management hookup for the Capacity page), Purview account binding (for the Governance portal embed)." />
</AdminShell>
);
}
A single EmptyState. Zero categories. Zero toggles. Zero input fields. No persistence layer. No backend route (apps/fiab-console/app/api/admin/tenant-settings/ does not exist). No Cosmos container. No bicep module.
The body text lists ~15 categories that the page would control, but none are rendered.
Phase 3 — Gap matrix (counting)¶
| Dimension | Fabric | Loom | Severity |
|---|---|---|---|
| Number of categorized sections | 25 | 0 | BLOCKER |
| Number of individual toggle rows | ~160 | 0 | BLOCKER |
| Per-toggle "Apply to" scope (org / security group / except group) | Yes (every toggle) | Absent | BLOCKER |
| Search bar across all toggles | Yes | Absent | MAJOR |
| Persistence backend | Fabric tenant ARM resource | None — no Cosmos, no DB, no file | BLOCKER |
| Audit-log emission on toggle change | Yes (logged as UpdatedAdminFeatureSwitch) | Absent | BLOCKER |
| Delegation to capacity-admin / domain-admin | Yes (selected toggles) | Absent | MAJOR |
| Honest MessageBar disclosing none of this is implemented + how to set the env-var equivalents | Absent — instead the body lists 15 categories as if the UI could control them | MAJOR |
Loom delivers 0% of Fabric's tenant-settings surface area — both in terms of categories (0/25) and individual toggles (0/~160).
Phase 4 — Functional verification¶
No interactive controls. The page text promises a switchboard; none of the switches exist.
Grade: F¶
- This is the single biggest vaporware violation in the admin portal, by area. Fabric exposes 160+ toggles across 25 categories. Loom shows promotional copy and nothing else.
- Per
.claude/rules/no-vaporware.md— "Tabs that show static content" + "What's explicitly forbidden — Pre-configured / hard-coded UI values that look like real data but aren't" both apply. The page text implies Loom has tenant-level toggles. It does not. - For a B-grade fix: implement at least the Loom-specific tenant toggles the body promises (OneLake / RTI / AI&Copilot / Mirroring / Synapse / Databricks / ADF / U-SQL legacy / Git / Domains / Info protection / Export & sharing / Help & support / Billing connections / Purview binding) — that's a
loom-tenant-settingsCosmos container +/api/admin/tenant-settingsGET/PATCH + a Fluent form. Probably 1-2 sessions of work. - For A-grade: replicate Fabric's full 25-section / 160-toggle structure with
Apply toscoping. Not realistic without months of work. - Until either ships, this is F. Anyone reading the page text and seeing zero toggles is in vaporware territory.