Docs · Updated October 2026
Deploy FabriBuddy¶
About 15 minutes of work, plus waiting for the first scan. You import one notebook and run it. It creates everything else, then prints the commands that add the app.
Before you start¶
| You need | Why |
|---|---|
| A workspace on a Fabric capacity (F SKU or trial), where you're Admin | FabriBuddy's items live there. Fabric Apps don't run on Pro or PPU. A new workspace keeps sharing simple. |
| A service principal, with its secret in Azure Key Vault | The scan reads your tenant as this principal. Set it up → |
| Key Vault Secrets User on that vault, for you | The scan reads the secret as whoever runs the pipeline, or owns its schedule. |
| Fabric Apps (preview) turned on | Admin portal → Tenant settings → Fabric Apps (preview). Needed for the app only. |
| Node.js 20 or later on your computer | To add the app, once. |
1. Run the deploy notebook¶
- Download
scripts/Deploy_FabriBuddy.ipynb. - In your workspace: Import → Notebook → From this computer, and choose the file.
- Open Deploy_FabriBuddy. Check that the language at the top is Python (not PySpark).
-
Fill in the first code cell:
KEY_VAULT_URL = "https://<your-vault>.vault.azure.net/" SP_TENANT_ID = "<directory (tenant) id>" SP_CLIENT_ID = "<application (client) id>" SP_SECRET_NAME = "fabribuddy-sp-secret" # the secret's name in Key VaultThe other settings are optional:
Setting Default WORKSPACES""Workspace IDs to scan, comma-separated. Empty means every workspace. INCLUDE_PERSONALFalseReport Audience: include people's personal My workspace. TENANT_NAME""How the app names your tenant, for example "Contoso".SCHEDULE_DAILY_AT_UTC"05:00"The daily scan time, in UTC. ""means no schedule.RUN_AFTER_DEPLOYTrueStart the first scan when deployment finishes. -
Choose Run all.
The notebook prints each step:
FabriBuddy 0.1.0 from zan-tavcar/msfabric-fabribuddy@main
✓ FabriBuddy_DB
✓ FabriBuddy 0.1.0 stored in FabriBuddy_DB
✓ FabriBuddy_Scan.Notebook created
✓ Check_FabriBuddy_Version.Notebook created
✓ Load_FabriBuddy_E2E.DataPipeline created
✓ Scan: Load_FabriBuddy_E2E, FabriBuddy_Scan
✓ Storage: FabriBuddy_DB
✓ Maintenance: Check_FabriBuddy_Version, Deploy_FabriBuddy
✓ Schedule: Load_FabriBuddy_E2E daily at 05:00 UTC
✓ First scan started: open Load_FabriBuddy_E2E → View run history (10–30 minutes).
Your workspace now has three folders:
| Folder | Items |
|---|---|
| Scan | Load_FabriBuddy_E2E (pipeline, scheduled) and FabriBuddy_Scan (notebook) |
| Storage | FabriBuddy_DB (SQL database) |
| Maintenance | Check_FabriBuddy_Version and Deploy_FabriBuddy (notebooks) |
Try it without a service principal
To look at the app before setting anything up, deploy with the service principal left empty
and RUN_AFTER_DEPLOY = False. Then run Load_FabriBuddy_E2E with the parameter
demo set to true. It loads the fictional Contoso tenant instead of scanning yours.
2. Add the app¶
The deploy notebook's last cell prints these commands, with your workspace and database IDs already in them. Run them on your computer:
git clone https://github.com/zan-tavcar/msfabric-fabribuddy.git
cd msfabric-fabribuddy/app
npm install
npx rayfin login # sign in with your Fabric account
npm run connect -- <workspace-id> <sql-database-id>
npx rayfin up --workspace-id <workspace-id>
npm run connectpoints the app at yourFabriBuddy_DB.npx rayfin upcreates the fabribuddy app in your workspace, builds it and uploads it. It takes a minute or two and prints the app's address at the end.
More on the app, including sharing, in The app.
3. Open it¶
Open fabribuddy in the workspace. Fabric signs you in. Until the first scan has finished, the pages say Not in the last scan; reload once it has.