ServiceNow IT Dashboard with Copilot

Build a Power BI IT dashboard using GitHub Copilot and AI-driven prompts.

Introduction

30 Second Summary

Every IT team has a pile of incident data sitting in ServiceNow. Turning that raw data into a dashboard that leadership actually uses usually means hours of dragging visuals, tweaking DAX formulas, and fixing layout issues by hand.

In this project, you will build a complete IT operations dashboard in Power BI by describing what you want in plain English to GitHub Copilot. Instead of manual authoring, you will use Microsoft's Power BI Agentic toolchain to generate measures, place visuals, and validate the result through conversational prompts.

What You'll Build

You describe a dashboard in natural language, and moments later Power BI Desktop shows KPI cards, trend charts, and detail tables populated with your live ServiceNow data.

By the end of this project, you'll have:

  • A live IT operations dashboard where you can modify any visual by describing the change in plain English and watching Copilot update the report files.
  • Validated DAX measures for incident volume, resolution time, and SLA compliance that Copilot wrote and tested against your semantic model.
  • A repeatable AI-driven workflow for generating report pages through natural-language prompts instead of manual drag-and-drop authoring.
  • Secret Mission: A structured design brief and a second executive summary page built from it using the Report Planner skill.

Are there any prerequisites?

This project assumes you have Power BI Desktop installed with a working semantic model connected to ServiceNow or Snowflake data. You also need an enterprise GitHub Copilot license and PowerShell 7 installed.

Familiarity with DAX is helpful but not required. Copilot handles the formula generation for you.

Before We Start

Before we dive into installing tools and configuring plugins, let's lock in what you're about to build and why it matters for your IT operations team.

Set Up the Power BI Agentic Toolchain

GitHub Copilot can generate DAX measures and build report visuals for you. But it needs the right tools connected first.

Without the Power BI Agentic toolchain, Copilot has no way to read your semantic model or write to PBIR report files. In this step, you'll install the prerequisites, authenticate with Azure, and register the Power BI agent skills in VS Code.

In this step, get ready to:
  • Install Node.js and Azure CLI.
  • Sign in to Azure for Fabric authentication.
  • Install the powerbi-authoring plugin and confirm the agent skills are available.
Install Node.js and Azure CLI

The Power BI Modeling MCP server runs on Node.js. The Azure CLI handles authentication to Microsoft Fabric. Both must be installed before the plugin can function.

  • Press the Windows key, type PowerShell 7, and press Enter to open it.
  • Check whether Node.js is already installed by running this command:
node --version

✔️ I see version 18 or higher

Node.js is ready. Any version from 18 upward satisfies the requirement. Move on to the Azure CLI check below.

ⓧ I see an older version

You need Node.js 18 or later. Upgrade by running the following command:

winget install --id OpenJS.NodeJS.LTS

After the install completes, close and reopen PowerShell 7, then run node --version again to confirm the new version.

ⓧ Command not found

Node.js is not installed yet. Install it by running:

winget install --id OpenJS.NodeJS.LTS

After the install completes, close and reopen PowerShell 7, then run node --version to confirm it returns a version number.

Now check whether Azure CLI is installed by running:

az --version

✔️ I see a version number

Azure CLI is ready. You should see a JSON-like output listing the azure-cli version. Move on to signing in below.

ⓧ Command not found

Azure CLI is not installed yet. Install it by running:

winget install --exact --id Microsoft.AzureCLI

After the install completes, close and reopen PowerShell 7, then run az --version to confirm it returns a version number.

Why close and reopen the terminal?

Both Node.js and Azure CLI add themselves to your system PATH during installation. Your current terminal session still holds the old PATH. Reopening it picks up the new entries so the commands are recognized.

Sign in to Azure

The Power BI Agentic tools authenticate to Microsoft Fabric through your Azure identity. You establish that identity by signing in with the Azure CLI.

  • In your PowerShell 7 window, sign in to Azure by running:
az login

What happens when you run this?

A browser window opens and asks you to sign in with your Microsoft account. Use the same enterprise account that has access to your Power BI tenant.

After you sign in, the browser shows a success message and you can return to PowerShell. The terminal displays your subscription details in JSON format.

You should see JSON output listing your Azure subscription name and tenant ID. This confirms Fabric operations will authenticate under your identity.

Sign-in failed or no subscription listed?

Make sure you used your enterprise Microsoft account, not a personal one. Your account must have a Power BI Pro or Premium Per User license.

If your browser didn't open, try running az login --use-device-code instead and follow the on-screen instructions.

Still stuck? Help me troubleshoot my az login failure

Install the powerbi-authoring plugin in VS Code

The powerbi-authoring plugin registers the Power BI Modeling MCP server and all five agent skills inside VS Code. You install it through the Customize AI workflow.

  • Press the Windows key, type VS Code, and press Enter to open it.
  • Open the Command Palette by pressing Ctrl+Shift+P.
  • Type Customize AI and select Customize AI in Visual Studio Code from the dropdown.
  • In the search field that appears, type powerbi-authoring.
  • Select the powerbi-authoring plugin from the results and follow the prompts to install it.

What does this plugin include?

The powerbi-authoring plugin ships five skills: semantic-model-authoring, power-bi-report-authoring, power-bi-report-design, power-bi-report-planner, and power-bi-report-management. It also registers the Power BI Modeling MCP server automatically, so Copilot can connect to your running Power BI Desktop instance.

Before you run the next command, what do you think you'll see when you ask Copilot to list its skills?

  • Open the Copilot Chat panel in VS Code by pressing Ctrl+Shift+I.
  • Type the following into the chat input and press Enter:
/skills

You should see semantic-model-authoring and power-bi-report-authoring listed among the available skills. This confirms the MCP server is registered and Copilot can interact with your Power BI models and reports.

Skills not appearing?

Make sure you restarted VS Code after installing the plugin. The MCP server registration only takes effect after a fresh launch.

Confirm that Node.js is accessible from within VS Code's terminal. Open the VS Code integrated terminal (Ctrl+`) and run node --version. If it returns nothing, VS Code may be using a different PATH. Close VS Code entirely, reopen it, and try /skills again.

Still stuck? Help me troubleshoot why the Power BI skills aren't showing up

Your toolchain is locked in. Copilot now has the agent skills to read your semantic model and author report visuals. Next up, you'll convert your Power BI file to PBIP format so Copilot can actually write to the report layer.

Convert to PBIP and Connect Your Model

Your toolchain is installed and authenticated. Now it is time to connect it to your actual Power BI model.

There is one blocker. Your current .pbix file is a compressed binary. No AI tool can read or write inside it. Converting to the PBIP format stores every report visual as its own JSON file on disk, giving GitHub Copilot full access to the report layer.

In this step, get ready to:
  • Save your Power BI file as a PBIP project.
  • Connect the MCP server to your live semantic model.
  • Verify that Copilot can inventory your tables and measures.
Save your file as a Power BI Project

The PBIR format breaks your report into individual JSON files for each page, visual, and bookmark. This is what the report authoring skill reads and writes. You need to enable two preview features in Power BI Desktop before saving.

  • Switch back to Power BI Desktop (where your ServiceNow/Snowflake model is already open).
  • Click File in the top menu bar.
  • Select Options and settings, then Options.
  • In the left pane, click Preview features.
  • Check the box next to Power BI Project (.pbip) save option.
  • Check the box next to Store reports using enhanced metadata format (PBIR).
  • Click OK and restart Power BI Desktop if prompted.

Why enable two preview features?

The PBIP save option unlocks the folder-based project format. The PBIR option goes further, splitting each visual into its own visual.json file inside the report folder.

Without PBIR enabled, the report layer stays in a single legacy file that the report authoring skill cannot edit at the visual level.

  • After Power BI Desktop reopens with your model, click File, then Save As.
  • In the Save as type dropdown, select Power BI Project (.pbip).
  • Choose your Desktop as the save location and click Save.

Power BI Desktop may prompt you to upgrade to the PBIR format. Select Upgrade when prompted.

  • Open File Explorer and navigate to your Desktop. You should see a new project folder containing a .Report/ folder, a .SemanticModel/ folder, a .gitignore file, and a .pbip file.

Don't see the Power BI Project save option?

Make sure you enabled the preview feature and restarted Power BI Desktop. The Power BI Project (.pbip) save option checkbox must be checked under File > Options and settings > Options > Preview features.

Also ensure your path is short. Windows limits PBIP paths to 260 characters, so saving to your Desktop avoids path-length errors.

ask me for help

Run the smoke-test prompt in Copilot Chat

With your project saved as PBIP, the MCP server can now connect to the running Power BI Desktop instance and read your semantic model directly. Time to verify the connection.

  • Return to VS Code.
  • Click File in the top menu, then Open Folder.
  • Select the PBIP project folder you just saved on your Desktop, then click Open.
  • Open Copilot Chat in VS Code (click the Copilot icon in the sidebar or press Ctrl+Shift+I on Windows, Cmd+Shift+I on macOS).

Before you run the next prompt, what do you think Copilot will be able to tell you about your model? Will it see your ServiceNow tables?

  • Type the following smoke-test prompt into Copilot Chat and press Enter:
/semantic-model-authoring Connect to Power BI Desktop and analyze the semantic model against best practices

What does this prompt do?

The /semantic-model-authoring prefix routes the prompt to the semantic model authoring skill. The skill then connects the Power BI Modeling MCP server to your running Desktop instance.

It inventories every table, column, and existing measure in your model. It then checks them against best practices and groups findings by severity: critical, warning, and informational.

Wait for Copilot to return its analysis. This may take 10 to 30 seconds depending on model size.

You should see a structured response listing your ServiceNow tables (such as incident and change_request) and any Snowflake tables, along with columns, existing measures, and best-practice recommendations grouped by severity.

What proves the connection is working?

If Copilot returns your actual table names and column names from the live model, the MCP server has successfully connected to Power BI Desktop. This means both the semantic-model-authoring and report-authoring skills can now read your model for the rest of the project.

Copilot not returning your tables?

Make sure Power BI Desktop is still running with your model open. The MCP server connects to the active Desktop instance.

Confirm the PBIP folder you opened in VS Code is the same one you just saved from Power BI Desktop.

If Copilot responds but does not list your tables, try closing and reopening the Copilot Chat panel, then re-run the prompt.

help me debug my MCP connection

Your model is now fully connected to the agentic toolchain. Copilot can see every table, column, and measure in your live semantic model. Next up, you will use that connection to generate DAX measures through natural-language prompts instead of writing them by hand.

Generate DAX Measures with Copilot

In the previous step, you connected the MCP server to your live semantic model and confirmed Copilot can read your tables and columns. Now it's time to put that connection to work by generating the calculated metrics your dashboard needs.

Your model has raw data from ServiceNow and Snowflake, but dashboards need DAX measures for things like incident counts and resolution times. The semantic-model-authoring skill can generate all three measures from a single natural-language prompt.

In this step, get ready to:
  • Prompt Copilot to generate DAX measures for incident metrics.
  • Review the generated DAX for best-practice patterns.
  • Validate that all measures return actual data from your model.
Prompt Copilot to create incident performance measures

The semantic-model-authoring skill knows your column names because the MCP server already inventoried your model. You can describe the measures you want in plain English, and Copilot generates the DAX using your actual table and column references.

  • In VS Code, open GitHub Copilot Chat by pressing Cmd+Shift+I (macOS) or Ctrl+Shift+I (Windows).
  • Type the following prompt to generate three measures at once:
/semantic-model-authoring Create measures for: Total Incidents (count of incidents), Average Resolution Time (hours between opened_at and resolved_at), and SLA Compliance Rate (percentage of incidents resolved within SLA). Use DIVIDE with zero guards and VAR/RETURN pattern.

What does this prompt do?

  • The /semantic-model-authoring prefix tells Copilot to invoke the Power BI semantic model skill, which has access to your live model through the MCP server.
  • Each measure description includes the business logic in parentheses so Copilot knows exactly what calculation to write.
  • The instruction to use DIVIDE with zero guards and VAR/RETURN ensures Copilot follows DAX best practices instead of using raw division operators that can error on empty data.

Copilot responds with the generated DAX formulas for all three measures. You should see the full DAX code in the chat response, using your actual column names like opened_at and resolved_at from the incident table.

Review the generated DAX for best practices

Before accepting the measures, verify that Copilot applied the patterns you asked for. The MCP server gives Copilot access to your real column names, so the formulas should reference your actual model rather than generic placeholders.

  • Check that each measure uses the VAR/RETURN pattern, which stores intermediate calculations in named variables before returning the final result.
  • Confirm that division operations use DIVIDE instead of the / operator. DIVIDE returns a safe fallback (like 0 or BLANK) when the denominator is zero.
  • Look for ISBLANK guards on the SLA Compliance Rate measure, which prevent the formula from counting rows with missing data.
  • Verify the column references match your model. For example, Total Incidents should count rows from the incident table, and Average Resolution Time should reference opened_at and resolved_at.

Why these patterns matter

ServiceNow data often has blank fields. An incident might still be open (no resolved_at value), or an entire day might have zero incidents. Without DIVIDE and ISBLANK guards, your dashboard would show errors or misleading results for those cases.

The VAR/RETURN pattern makes the DAX readable for future maintenance. When you revisit these measures in six months, named variables tell you what each step calculates.

Copilot used different column names?

If the generated DAX references columns that don't exist in your model, the MCP connection may have dropped. Run the smoke-test prompt again to reconnect:

/semantic-model-authoring Connect to Power BI Desktop and analyze the semantic model against best practices

Once Copilot confirms it can see your tables, re-run the measure creation prompt. Help me reconnect the MCP server to my Power BI model.

Validate the measures and confirm in Power BI Desktop

Generating the DAX is only half the job. You need to confirm the measures actually return values when evaluated against your live data.

  • Ask Copilot to validate all three measures by running this prompt:
/semantic-model-authoring Validate all measures I just created. Execute a test DAX query for each and confirm they return results.

What does validation do?

The skill sends a test DAX query to Power BI Desktop through the MCP server for each measure. If a measure has a syntax error or references a missing column, the query fails and Copilot reports the issue so you can fix it before building visuals.

Copilot should report that all three measures executed successfully and returned numeric results. If any measure fails, Copilot will explain the error and offer a fix.

Before you switch to Power BI Desktop, what do you expect to see in the Fields pane that wasn't there before?

  • Switch to Power BI Desktop.
  • Look in the Fields pane on the right side. Your three new measures (Total Incidents, Average Resolution Time, SLA Compliance Rate) should appear with a calculator icon.
  • Open DAX query view (from the left sidebar in Power BI Desktop) and run a quick query referencing one of the measures to confirm it returns actual values from your ServiceNow data.

You should see numeric results. Total Incidents returns a count, Average Resolution Time returns hours, and SLA Compliance Rate returns a percentage.

Measures not showing in the Fields pane?

If the measures don't appear, the model may need a refresh. Click Refresh in the Power BI Desktop ribbon or close and reopen the .pbip project file.

If measures appear but show errors in DAX query view, ask Copilot to diagnose: "The measure Total Incidents is returning an error. Check the DAX syntax and fix it."

Help me troubleshoot measures not appearing in Power BI Desktop.

You now have three validated DAX measures powering your incident metrics. Next up, you'll use these measures to build an entire dashboard page through a single natural-language prompt.

Build the Dashboard Page

Your semantic model now has three validated measures, but there are no visuals yet.

Instead of dragging visuals onto a canvas and configuring each one manually, you will describe the entire page layout in natural language. Copilot generates the PBIR JSON definitions for each visual, and Power BI Desktop renders them.

In this step, get ready to:
  • Prompt Copilot to generate a full dashboard page with five visuals.
  • Reload the report in Power BI Desktop.
  • Identify visuals with binding errors or empty frames.
Describe the dashboard page to Copilot

The power-bi-report-authoring skill can create an entire page of visuals from a single natural-language description. You tell it the page name, the visual types, and which measures or columns to bind.

  • Switch back to VS Code and open Copilot Chat.
  • Enter the following prompt to generate your dashboard page:
/power-bi-report-authoring Create a new page called "IT Operations Overview" with: three KPI cards at the top (Total Incidents, Average Resolution Time, SLA Compliance Rate), a line chart showing incident volume by month, and a table showing top 10 longest-resolution incidents with columns for Number, Short Description, Priority, and Resolution Time.

What does this prompt do?

  • It invokes the power-bi-report-authoring skill, which writes PBIR JSON files to your project folder on disk.
  • "IT Operations Overview" becomes the page name in the report.
  • Each visual type (card, line chart, table) gets its own JSON definition with field bindings referencing your semantic model columns and measures.

Copilot will take a few seconds to generate the definitions. You should see output confirming that it created a new page with five visuals.

Copilot not recognising the skill?

Make sure you are using the Copilot Chat panel in VS Code, not a terminal. Confirm the powerbi-authoring plugin is still listed by running /skills in Copilot Chat.

If the skill is missing, reinstall it through Customize AI in Visual Studio Code and search for powerbi-authoring.

Help me fix the power-bi-report-authoring skill not appearing in VS Code Copilot Chat

Reload the report in Power BI Desktop

Copilot wrote new PBIR files to your project folder, but Power BI Desktop does not detect external file changes automatically. You need to close and reopen the project for Desktop to render the new page.

  • Switch to Power BI Desktop.
  • Click File in the top menu bar.
  • Click Close.
  • Click File again.
  • Click Open and navigate to the .pbip file in your PBIP project folder.

Why close and reopen?

Power BI Desktop is not aware of changes made to project files by external tools. Closing and reopening forces Desktop to read the updated PBIR definitions from disk, including the new page and visuals Copilot generated.

Inspect the generated visuals

Before you look at the report, make a prediction: do you think all five visuals will render perfectly with live data on the first try?

  • Click on the IT Operations Overview page tab at the bottom of the Power BI Desktop canvas.

You will see the page structure with five visuals laid out. Some visuals render correctly with live data from your ServiceNow tables.

Others appear as empty frames, show error icons, or display binding warnings. This is expected and intentional.

Why do some visuals break?

The report authoring skill generates JSON definitions based on the semantic model schema it discovered via the MCP server. It does not visually verify that each field binding resolves correctly at render time.

Common causes include date columns bound without the correct hierarchy level, table columns referenced by display name instead of internal name, and KPI cards missing their target formatting. The next step uses the validation workflow to catch and fix these programmatically.

  • Note which visuals render data correctly and which show issues (empty frames, error icons, or missing data).
  • You will fix these in the next step using the validation tool.

Page not appearing at all?

If you do not see the IT Operations Overview page tab, the PBIR files may not have been saved to the correct location.

In VS Code, check the Explorer sidebar for new files under the report folder (look for a folder matching the page name). If the files are not there, re-run the prompt in Copilot Chat and confirm it completes without errors.

Help me troubleshoot why the IT Operations Overview page is not appearing after reopening

Your dashboard page exists and the structure is in place. Next up, you will use the validation workflow to diagnose those broken visuals and fix them in a single pass.

Validate and Fix Rendering Issues

In the previous step, you described a full dashboard page in natural language and Copilot generated the PBIR definitions for five visuals. You also noticed that some visuals rendered as error icons or empty frames.

This is expected behavior for AI-generated report definitions. Binding mismatches and incorrect field references only surface when Power BI Desktop actually renders the visuals. The validate-report tool catches these issues programmatically so you can fix them in one pass instead of hunting manually.

In this step, get ready to:
  • Run the validation tool against the IT Operations Overview page.
  • Fix binding errors and empty data references through targeted Copilot prompts.
  • Reload in Power BI Desktop and confirm all five visuals render correctly with live data.
Ask Copilot to validate the report page

The validate-report tool scans your PBIR JSON files and compares them against your semantic model. It identifies visuals with binding errors, empty data references, or formatting issues that prevent proper rendering.

  • In VS Code Copilot Chat, type the following prompt to validate your dashboard page:
/power-bi-report-authoring Validate the "IT Operations Overview" page. Report any visuals with binding errors, empty data references, or formatting issues.

What does this prompt do?

  • The /power-bi-report-authoring prefix routes the request to the report authoring skill.
  • The skill reads the PBIR JSON definitions for your page and checks each visual's field bindings against your connected semantic model.
  • It returns a structured list of issues grouped by visual, naming the specific binding or formatting problem for each one.
  • Press Enter to run the prompt.

Copilot returns a list of issues found on the page. You may see problems like incorrect column bindings, missing field references, or date columns that are not grouped correctly.

Not seeing any issues reported?

  • If Copilot reports zero issues but your visuals still show errors in Desktop, try closing and reopening Power BI Desktop before running validation again.
  • Make sure the MCP server is still connected by checking that Copilot references your table and column names in its response.
  • Why isn't the validate tool finding the binding errors I can see in Power BI Desktop?
Fix binding errors with targeted prompts

Now that you have a list of issues, you can ask Copilot to fix each one individually. The most common problem is date fields that are not bound to the correct column or are not grouped properly.

  • For each issue Copilot identified, type a fix prompt that names the specific visual and problem. Here is an example for a common line chart binding error:
Fix the line chart on IT Operations Overview. It's showing empty because the date field isn't bound correctly. Bind it to the opened_at column from the incident table, grouped by month.

What's happening here?

Copilot edits the PBIR JSON file for the affected visual directly on disk. It updates the queryState and role bindings to reference the correct column from your semantic model.

Each fix targets one visual at a time, making it easy to verify changes incrementally. Adapt the prompt to match the specific issues the validation tool reported for your model.

  • Press Enter and wait for Copilot to confirm the fix.
  • Repeat for any other issues reported in the validation output, adjusting the prompt to name the specific visual and binding problem each time.

Be specific in fix prompts

Name the exact visual, the problem, and the correct column or measure. Vague prompts like "fix it" produce unreliable results because Copilot cannot infer which binding you mean.

Copilot not fixing the issue?

  • Make sure you reference the exact column names from your semantic model (e.g., opened_at, resolved_at, number).
  • If a fix does not take, ask Copilot to show the current binding for that visual before attempting the repair again.
  • Why isn't Copilot able to fix the field binding for my visual?
Reload the report and verify all visuals render

After Copilot has fixed the identified issues, you need to reload the report in Power BI Desktop to see the corrected visuals rendered with live data.

  • Switch to Power BI Desktop.
  • Close the current report.
  • Reopen your .pbip project file to reload the updated PBIR definitions from disk.

Before you look at the page, take a moment to predict: do you think all five visuals will render correctly this time, or will some still need another round of fixes?

  • Navigate to the "IT Operations Overview" page.

All five visuals should now render with live data from your ServiceNow/Snowflake model. You should see three KPI cards displaying values for Total Incidents, Average Resolution Time, and SLA Compliance Rate.

What should I see?

  • Three KPI cards at the top with numeric values pulled from your DAX measures.
  • A line chart with data points showing monthly incident volume over time, bound to the opened_at column from the incident table.
  • A table with rows of incident data including Number, Short Description, Priority, and Resolution Time columns.
  • No error icons (yellow triangles) or empty frames anywhere on the page.
  • If any visuals still show error icons or empty frames, return to VS Code and repeat the validate-fix cycle: run the validation prompt again, then fix the newly identified issues, then reload in Desktop.

Still seeing errors after reloading?

  • Some issues only appear after the first round of fixes reveals deeper binding problems. Running validate a second time is normal and expected.
  • Check that Power BI Desktop is still connected to your data source. If the connection timed out, refresh credentials under Home > Transform data > Data source settings.
  • I've run the validate-fix cycle twice and still have rendering errors on my IT Operations Overview page.

Secret mission

Design Brief and Executive Page

You built one dashboard page by describing what you wanted. Now take it further with the Report Planner skill, which produces a structured design brief before generating any visuals. This workflow mirrors how enterprise teams plan multi-page reports at scale.

Clean Up Your Resources

Clean Up Your Resources

This project runs entirely locally. No paid cloud resources were created. The Azure CLI login and MCP server are session-based and stop when you close VS Code and Power BI Desktop.

Decide whether to keep your resources running, pause them to come back later, or delete them entirely.

Resources you used:

  • PBIP project folder on disk (local files, free).
  • Azure CLI session (session-based, free).
  • powerbi-authoring VS Code plugin (local extension, free).
  • Node.js (installed locally, free).
  • Azure CLI (installed locally, free).

Keep everything running

No action needed. Choose this if you plan to continue building Power BI reports with Copilot.

  • Your PBIP folder and VS Code configuration persist on disk.
  • Next time you open VS Code in the project folder, the powerbi-authoring skills are ready to use immediately.
  • Node.js and Azure CLI remain installed and available for other projects.
  • Your Azure CLI session may expire after a period of inactivity. Run az login again when you return.

Pause - I'll come back to this later

Sign out of Azure to revoke the session, but keep your project files intact for later.

  • Sign out of Azure CLI by running:
  • Your PBIP project folder stays on disk. You can reopen it anytime.
  • The powerbi-authoring plugin stays installed in VS Code. It will activate the next time you open the project folder.
  • If your team workflow requires .pbix files, you can open the .pbip project in Power BI Desktop and save as .pbix. The measures remain, but Copilot can no longer edit the report layer directly.
az logout

Delete - I don't want to use this again

Remove all project resources and clean up installed tools.

  • Sign out of Azure CLI:
  • Delete your PBIP project folder. Replace the path below with the actual location of your project folder:
az logout

macOS

rm -rf ~/Desktop/your-pbip-project-folder

Windows

Remove-Item -Recurse -Force "$HOME\Desktop\your-pbip-project-folder"
  • Uninstall the powerbi-authoring plugin from VS Code. Open the Extensions view with Ctrl+Shift+X (Windows) or Cmd+Shift+X (macOS), find the powerbi-authoring extension, click the gear icon, and select Uninstall.
  • Remove Azure CLI data:

macOS

Uninstall Azure CLI with Homebrew:

brew uninstall azure-cli
rm -rf ~/.azure

Windows

Uninstall Azure CLI through Windows settings:

  • Open Settings then Apps then Installed apps.
  • Search for Microsoft CLI 2.0 for Azure and click Uninstall.
  • Delete Azure config data by running:
Remove-Item -Recurse -Force "$env:USERPROFILE\.azure"

What about Node.js?

Node.js is a general-purpose runtime used by many development tools. If you use it for other projects, leave it installed. If you only installed it for this project and want to remove it, follow the uninstall guide for your platform on the official Node.js website.

Nice Work!

Nice Work!

You just built a complete ServiceNow IT Operations dashboard in Power BI, driven almost entirely by natural-language prompts to GitHub Copilot.

You've learned how to:

  • Configure the Power BI Agentic toolchain (Node.js, Azure CLI, powerbi-authoring plugin) and convert a .pbix file to PBIP format so Copilot can read and write your report layer.
  • Generate and validate DAX measures through natural-language prompts using the semantic-model-authoring skill, replacing manual DAX authoring with conversational AI.
  • Build a full dashboard page and fix rendering issues programmatically using the power-bi-report-authoring skill and its validate-report workflow.
  • Secret Mission: Used the Report Planner skill to generate a structured design brief and built an executive summary page from it.

Ready to quiz yourself?