# pete-mc/dataverse-powertools architecture

> Architecture diagram of the GitHub repository pete-mc/dataverse-powertools, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pete-mc/dataverse-powertools
- Repository: https://github.com/pete-mc/dataverse-powertools

## Overview

Dataverse PowerTools is a VS Code extension for scaffolding, building, testing, debugging, and deploying Dataverse projects. Users initialize a workspace, connect to an environment, then work with one or more solution, web-resource, plug-in, PCF, or Power Pages components through the extension’s panel and commands. The graph preserves those distinct workflows and the preview query/custom API/Azure Functions features. README claims support several broad capability links; sampled source confirms query execution and webhook registration details, but not every subsystem’s internal wiring.

Main entry points: [`src/solution/deploySolution.ts`](https://github.com/pete-mc/dataverse-powertools/blob/main/src/solution/deploySolution.ts) (Solution pack and deploy), [`src/plugins/buildAndDeploy.ts`](https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/buildAndDeploy.ts) (Plug-in build and deploy), [`src/query/queryCommands.ts`](https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/queryCommands.ts) (Query commands and CodeLens), [`src/query/runQuery.ts`](https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/runQuery.ts) (Query execution)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Workspace and connections"]
  node_extension["Extension entry<br/>[extension.ts]"]
  node_panel["Project panel<br/>[menuPanel.ts]"]
  node_components["Component discovery"]
  node_connection["Environment connection"]
end

subgraph group_solutions["Solutions and web resources"]
  node_solution["Solution lifecycle"]
  node_solutionops["Solution pack and deploy<br/>[deploySolution.ts]"]
  node_webresources["Web-resource workflow"]
  node_webbuild["Web-resource build and deploy"]
  node_webdebug["Live web-resource debugging"]
  node_webtests["Web-resource tests"]
end

subgraph group_plugins["Plug-ins"]
  node_plugins["Plug-in workflow"]
  node_plugbuild["Plug-in build and deploy<br/>[buildAndDeploy.ts]"]
  node_plugdebug["Profiler and replay<br/>[profilerCapture.ts]"]
  node_plugtests["Plug-in tests"]
end

subgraph group_extensions["Additional project types"]
  node_pcf["PCF controls<br/>[initialisePcf.ts]"]
  node_portals["Power Pages"]
  node_customapi["Custom APIs"]
  node_azurefn["Azure Functions"]
  node_webhook["Webhook registration"]
end

subgraph group_query["FetchXML query tools"]
  node_querycmd["Query commands and CodeLens<br/>[queryCommands.ts]"]
  node_generator["FetchXML generator<br/>[generatorPanel.ts]"]
  node_queryrun["Query execution<br/>[runQuery.ts]"]
  node_queryresults["Query results view<br/>[resultsPanel.ts]"]
end

node_developer(("Developer"))
node_vscode["VS Code"]
node_dataverse[("Dataverse environment")]
node_pac["Power Platform CLI"]
node_dotnet[".NET SDK"]

node_developer -->|"uses"| node_vscode
node_vscode -->|"activates"| node_extension
node_extension -->|"registers"| node_panel
node_developer -->|"chooses project"| node_panel
node_panel -->|"discovers components"| node_components
node_developer -->|"connects"| node_connection
node_connection -->|"authenticates"| node_dataverse
node_developer -->|"initializes"| node_solution
node_developer -->|"packs or deploys"| node_solutionops
node_solutionops -->|"runs commands"| node_pac
node_solutionops -->|"imports or exports"| node_dataverse
node_developer -->|"scaffolds"| node_webresources
node_developer -->|"builds or deploys"| node_webbuild
node_webbuild -->|"deploys resources"| node_dataverse
node_developer -->|"debugs live"| node_webdebug
node_webdebug -->|"connects to app"| node_dataverse
node_developer -->|"runs tests"| node_webtests
node_webtests -->|"reports results"| node_vscode
node_developer -->|"scaffolds"| node_plugins
node_developer -->|"builds or deploys"| node_plugbuild
node_plugbuild -->|"builds with"| node_dotnet
node_plugbuild -->|"deploys package"| node_dataverse
node_developer -->|"profiles or replays"| node_plugdebug
node_plugdebug -->|"captures execution"| node_dataverse
node_developer -->|"runs tests"| node_plugtests
node_plugtests -->|"runs tests"| node_dotnet
node_developer -->|"scaffolds or builds"| node_pcf
node_pcf -->|"pushes or refreshes"| node_dataverse
node_developer -->|"builds or connects"| node_portals
node_portals -->|"runs commands"| node_pac
node_developer -.->|"defines or invokes"| node_customapi
node_customapi -.->|"deploys or invokes"| node_dataverse
node_developer -.->|"scaffolds"| node_azurefn
node_azurefn -.->|"registers webhook"| node_webhook
node_webhook -.->|"registers endpoint"| node_dataverse
node_developer -.->|"runs or edits query"| node_querycmd
node_querycmd -.->|"opens generator"| node_generator
node_querycmd -.->|"runs FetchXML"| node_queryrun
node_queryrun -.->|"queries Web API"| node_dataverse
node_queryrun -.->|"returns results"| node_queryresults

click node_extension "https://github.com/pete-mc/dataverse-powertools/blob/main/src/extension.ts"
click node_panel "https://github.com/pete-mc/dataverse-powertools/blob/main/src/panel/menuPanel.ts"
click node_components "https://github.com/pete-mc/dataverse-powertools/blob/main/src/components/componentDiscovery.ts"
click node_connection "https://github.com/pete-mc/dataverse-powertools/blob/main/src/general/connectionStringManager.ts"
click node_solution "https://github.com/pete-mc/dataverse-powertools/blob/main/src/solution/initialiseSolutions.ts"
click node_solutionops "https://github.com/pete-mc/dataverse-powertools/blob/main/src/solution/deploySolution.ts"
click node_webresources "https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/initialiseWebresources.ts"
click node_webbuild "https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/buildWebresources.ts"
click node_webdebug "https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/debug/debugWebresources.ts"
click node_webtests "https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/webresourceTestController.ts"
click node_plugins "https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/initialisePlugins.ts"
click node_plugbuild "https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/buildAndDeploy.ts"
click node_plugdebug "https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/profilerCapture.ts"
click node_plugtests "https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/pluginTestController.ts"
click node_pcf "https://github.com/pete-mc/dataverse-powertools/blob/main/src/pcf/initialisePcf.ts"
click node_portals "https://github.com/pete-mc/dataverse-powertools/blob/main/src/portals/initialisePortals.ts"
click node_customapi "https://github.com/pete-mc/dataverse-powertools/blob/main/src/customapi/customApiCommands.ts"
click node_azurefn "https://github.com/pete-mc/dataverse-powertools/blob/main/src/azurefunction/initialiseAzureFunction.ts"
click node_webhook "https://github.com/pete-mc/dataverse-powertools/blob/main/src/azurefunction/registerWebhookStep.ts"
click node_querycmd "https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/queryCommands.ts"
click node_generator "https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/generatorPanel.ts"
click node_queryrun "https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/runQuery.ts"
click node_queryresults "https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/resultsPanel.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_extension,node_panel,node_components,node_connection toneBlue
class node_solution,node_solutionops,node_webresources,node_webbuild,node_webdebug,node_webtests,node_dataverse toneAmber
class node_plugins,node_plugbuild,node_plugdebug,node_plugtests toneMint
class node_pcf,node_portals,node_customapi,node_azurefn,node_webhook toneRose
class node_querycmd,node_generator,node_queryrun,node_queryresults,node_developer,node_vscode,node_pac,node_dotnet toneIndigo
```

## Components

### Workspace and connections

- [Extension entry](https://github.com/pete-mc/dataverse-powertools/blob/main/src/extension.ts): `src/extension.ts`
- [Project panel](https://github.com/pete-mc/dataverse-powertools/blob/main/src/panel/menuPanel.ts): `src/panel/menuPanel.ts`
- [Component discovery](https://github.com/pete-mc/dataverse-powertools/blob/main/src/components/componentDiscovery.ts): `src/components/componentDiscovery.ts`
- [Environment connection](https://github.com/pete-mc/dataverse-powertools/blob/main/src/general/connectionStringManager.ts): `src/general/connectionStringManager.ts`

### Solutions and web resources

- [Solution lifecycle](https://github.com/pete-mc/dataverse-powertools/blob/main/src/solution/initialiseSolutions.ts): `src/solution/initialiseSolutions.ts`
- [Solution pack and deploy](https://github.com/pete-mc/dataverse-powertools/blob/main/src/solution/deploySolution.ts): `src/solution/deploySolution.ts`
- [Web-resource workflow](https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/initialiseWebresources.ts): `src/webresources/initialiseWebresources.ts`
- [Web-resource build and deploy](https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/buildWebresources.ts): `src/webresources/buildWebresources.ts`
- [Live web-resource debugging](https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/debug/debugWebresources.ts): `src/webresources/debug/debugWebresources.ts`
- [Web-resource tests](https://github.com/pete-mc/dataverse-powertools/blob/main/src/webresources/webresourceTestController.ts): `src/webresources/webresourceTestController.ts`

### Plug-ins

- [Plug-in workflow](https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/initialisePlugins.ts): `src/plugins/initialisePlugins.ts`
- [Plug-in build and deploy](https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/buildAndDeploy.ts): `src/plugins/buildAndDeploy.ts`
- [Profiler and replay](https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/profilerCapture.ts): `src/plugins/profilerCapture.ts`
- [Plug-in tests](https://github.com/pete-mc/dataverse-powertools/blob/main/src/plugins/pluginTestController.ts): `src/plugins/pluginTestController.ts`

### Additional project types

- [PCF controls](https://github.com/pete-mc/dataverse-powertools/blob/main/src/pcf/initialisePcf.ts): `src/pcf/initialisePcf.ts`
- [Power Pages](https://github.com/pete-mc/dataverse-powertools/blob/main/src/portals/initialisePortals.ts): `src/portals/initialisePortals.ts`
- [Custom APIs](https://github.com/pete-mc/dataverse-powertools/blob/main/src/customapi/customApiCommands.ts): `src/customapi/customApiCommands.ts`
- [Azure Functions](https://github.com/pete-mc/dataverse-powertools/blob/main/src/azurefunction/initialiseAzureFunction.ts): `src/azurefunction/initialiseAzureFunction.ts`
- [Webhook registration](https://github.com/pete-mc/dataverse-powertools/blob/main/src/azurefunction/registerWebhookStep.ts): `src/azurefunction/registerWebhookStep.ts`

### FetchXML query tools

- [Query commands and CodeLens](https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/queryCommands.ts): `src/query/queryCommands.ts`
- [FetchXML generator](https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/generatorPanel.ts): `src/query/generatorPanel.ts`
- [Query execution](https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/runQuery.ts): `src/query/runQuery.ts`
- [Query results view](https://github.com/pete-mc/dataverse-powertools/blob/main/src/query/resultsPanel.ts): `src/query/resultsPanel.ts`

### Other components

- **Developer**
- **VS Code**
- **Dataverse environment**
- **Power Platform CLI**
- **.NET SDK**

## Connections

- Developer → VS Code: uses
- VS Code → Extension entry: activates
- Extension entry → Project panel: registers
- Developer → Project panel: chooses project
- Project panel → Component discovery: discovers components
- Developer → Environment connection: connects
- Environment connection → Dataverse environment: authenticates
- Developer → Solution lifecycle: initializes
- Developer → Solution pack and deploy: packs or deploys
- Solution pack and deploy → Power Platform CLI: runs commands
- Solution pack and deploy → Dataverse environment: imports or exports
- Developer → Web-resource workflow: scaffolds
- Developer → Web-resource build and deploy: builds or deploys
- Web-resource build and deploy → Dataverse environment: deploys resources
- Developer → Live web-resource debugging: debugs live
- Live web-resource debugging → Dataverse environment: connects to app
- Developer → Web-resource tests: runs tests
- Web-resource tests → VS Code: reports results
- Developer → Plug-in workflow: scaffolds
- Developer → Plug-in build and deploy: builds or deploys
- Plug-in build and deploy → .NET SDK: builds with
- Plug-in build and deploy → Dataverse environment: deploys package
- Developer → Profiler and replay: profiles or replays
- Profiler and replay → Dataverse environment: captures execution
- Developer → Plug-in tests: runs tests
- Plug-in tests → .NET SDK: runs tests
- Developer → PCF controls: scaffolds or builds
- PCF controls → Dataverse environment: pushes or refreshes
- Developer → Power Pages: builds or connects
- Power Pages → Power Platform CLI: runs commands
- Developer → Custom APIs: defines or invokes
- Custom APIs → Dataverse environment: deploys or invokes
- Developer → Azure Functions: scaffolds
- Azure Functions → Webhook registration: registers webhook
- Webhook registration → Dataverse environment: registers endpoint
- Developer → Query commands and CodeLens: runs or edits query
- Query commands and CodeLens → FetchXML generator: opens generator
- Query commands and CodeLens → Query execution: runs FetchXML
- Query execution → Dataverse environment: queries Web API
- Query execution → Query results view: returns results
