Fabric setup guide
The recommended path. Notebooks pull your Copilot data from Microsoft Graph and write Delta tables straight into a Lakehouse; the Power BI template is a thin client over the Lakehouse SQL endpoint, so the heavy JSON parsing happens in Spark and the dataset stays small and fast. Three core notebooks land the required tables; the rest are optional.
1. Create a Lakehouse
In a Fabric workspace on a capacity (F2+ or trial): + New → Lakehouse, name it, and note its
SQL endpoint from Lakehouse settings — it looks like
<workspace-guid>.datawarehouse.fabric.microsoft.com.
2. Register an Entra app
Create an app registration with these Microsoft Graph application permissions (admin consent required), then note the Tenant ID, Client ID, and a Client secret value. One app registration covers all three core sources.
| Permission | Used by |
|---|---|
AuditLogsQuery.Read.All |
Audit log notebook |
Reports.Read.All |
Licensed users notebook |
User.Read.All |
Org data notebook |
IDVL-FABRIC-002
CaptureCapture the Entra app registration API permissions page for the ValueLens Fabric path. Show the required Microsoft Graph application permissions with admin consent; exclude application names, tenant identifiers, client identifiers, and credentials.
Proposed altRequired Microsoft Graph application permissions for ValueLens Fabric ingestion.
3. Run the three required core notebooks
Import each core notebook (+ New → Import notebook), attach it to your Lakehouse and pin it as
default, then paste your three values into the # === CONFIG === cell and run. These three are the
dashboard’s required backbone:
| Notebook | Cadence | Output table |
|---|---|---|
Copilot_Audit_Log_Direct_Ingester.ipynb |
Daily (Graph caps audit queries to a 7-day window) | dbo.Copilot_Interactions_Parsed |
Copilot_Licensed_Users_Direct_Ingester.ipynb |
Weekly / monthly | dbo.copilot_licensed_users |
Copilot_Org_Data_Direct_Ingester.ipynb |
Weekly | dbo.copilot_org_data |
IDVL-FABRIC-001
CaptureCapture the Fabric Lakehouse explorer after the three required ValueLens core notebooks have run. Show dbo.Copilot_Interactions_Parsed, dbo.copilot_licensed_users, and dbo.copilot_org_data; exclude workspace names, lakehouse names, tenant identifiers, and customer data.
Proposed altFabric Lakehouse with the three required ValueLens core tables.
4. Connect the template
Open ValueLens - Fabric.pbit in Power BI Desktop and supply the parameters. The Enable_* controls
are list parameters offering Include / Exclude (a dropdown in Edit Parameters) — set a
source to Include only after you have configured and landed it, and Exclude when you are not
using it. The optional-source fallback keeps the model refreshing whether or not a source is present.
| Parameter | Required? | Value |
|---|---|---|
| Fabric SQL Endpoint | Yes | <workspace-guid>.datawarehouse.fabric.microsoft.com |
| Lakehouse Name | Yes | Your Lakehouse name |
Enable_ProductFeedback |
Optional | Include after landing dbo.user_feedback, else Exclude |
Enable_Agent365 |
Optional | Include after landing dbo.agents_365, else Exclude |
Enable_CostConsumption |
Optional | Include after landing copilot_cost_consumption, else Exclude |
Enable_Dataverse |
Optional | Include only on the Fabric Extended build (Copilot Studio agent tables), else Exclude |
Enable_Consumption |
Optional | PPAC per-agent credit build — a Fabric Extended add-on; set Exclude on the base Fabric build |
Click Load, then Publish — ideally to a workspace on the same Fabric capacity so Direct Lake works without cross-capacity overhead.
IDVL-FABRIC-003
CaptureCapture the ValueLens Fabric template's Edit Parameters dialog using synthetic values. Include Fabric SQL Endpoint, Lakehouse Name, and the Enable_* list parameters; exclude real endpoints, workspace names, tenant identifiers, and credentials.
Proposed altValueLens Fabric template parameters with synthetic Lakehouse values.
5. Schedule the refresh
Wire the three core notebooks into a single Fabric data pipeline and schedule it. The three tables are independent (joined later in the model), so their activities run in parallel. Because Microsoft Graph’s audit API caps each query at a 7-day window, a weekly cadence (for example Sundays 02:00 UTC) matches that window cleanly with no overlap or gaps. Then, in the Service, open the dataset Settings → Data source credentials, sign in to the SQL endpoint, and enable Scheduled refresh on a cadence that matches your notebook schedule.
IDVL-FABRIC-004
CaptureCapture the Fabric pipeline or schedule view containing the three required ValueLens core notebooks. Show the audit, licensed-users, and org-data activities and their scheduling controls; exclude workspace names, notebook identifiers, tenant identifiers, and run data.
Proposed altFabric pipeline scheduling the three required ValueLens core notebooks.
Optional sources
Leave every Enable_* toggle on Exclude and the core dashboard still works — optional tables load
empty. To switch one on, run its notebook and set the matching toggle to Include:
- Product feedback (optional) — run
Copilot_ProductFeedback_Ingester.ipynb(outputdbo.user_feedback), then setEnable_ProductFeedback = Include. - Agents 365 (optional) — use
Copilot_Agent365_Registry_Ingester.ipynbby default (Graph API app-only, runs headless on a schedule; needsCopilotPackages.Read.All+Application.Read.All). Fall back toCopilot_Agent365_Lander.ipynb(CSV drop) only if you cannot grant those app-registration permissions. Both write the samedbo.agents_365table — pick one, don’t run both. Then setEnable_Agent365 = Include. - Cowork / Work IQ consumption (optional) — the Microsoft 365 Admin Center → Copilot → Cost
management export is export-only. Land the CSV in
Files/cost_consumption/, runCopilot_Cost_Consumption_Ingester.ipynb(outputcopilot_cost_consumption), then setEnable_CostConsumption = Include.
Secrets and Key Vault
For production, read the client secret from Azure Key Vault rather than a literal in the CONFIG
cell — each CONFIG cell ships with a commented notebookutils.credentials.getSecret(...) example.
Load strategy and resiliency
Pick a write mode per source: event streams (audit) append or merge; current-state snapshots
(org, licensed users, agents registry) overwrite. The audit ingester uses a retrying HTTP session
(429/500/502/503/504 with exponential backoff) and windows each run into chunks, so transient
gateway timeouts don’t abort the run.
For a stable production build, pin your automation to a full commit revision SHA of the repository rather than tracking the moving branch, so an upstream change can’t break a running pipeline. Treat the Delta table contracts (table and column names) as the integration surface.
Troubleshooting
Common Fabric symptoms — Graph 401/403, an audit query that never finishes, Login failed /
cannot open database, everyone showing “Unlicensed”, and slow refresh — are consolidated in
Troubleshooting & FAQ.
