XrmToolSuite.PrivilegeGapAnalyzer 1.2026.7.10

dotnet add package XrmToolSuite.PrivilegeGapAnalyzer --version 1.2026.7.10
                    
NuGet\Install-Package XrmToolSuite.PrivilegeGapAnalyzer -Version 1.2026.7.10
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="XrmToolSuite.PrivilegeGapAnalyzer" Version="1.2026.7.10" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="XrmToolSuite.PrivilegeGapAnalyzer" Version="1.2026.7.10" />
                    
Directory.Packages.props
<PackageReference Include="XrmToolSuite.PrivilegeGapAnalyzer" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add XrmToolSuite.PrivilegeGapAnalyzer --version 1.2026.7.10
                    
#r "nuget: XrmToolSuite.PrivilegeGapAnalyzer, 1.2026.7.10"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package XrmToolSuite.PrivilegeGapAnalyzer@1.2026.7.10
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=XrmToolSuite.PrivilegeGapAnalyzer&version=1.2026.7.10
                    
Install as a Cake Addin
#tool nuget:?package=XrmToolSuite.PrivilegeGapAnalyzer&version=1.2026.7.10
                    
Install as a Cake Tool

🔑 Privilege Gap Analyzer

An XrmToolBox plugin that answers "why can't this user do X?" — it computes a principal's effective privileges for a table + operation and shows the precise missing privilege, insufficient scope, or append-pair reason, with a recommended fix. Read-only: it never edits roles, recommendations are suggestions only, and sensitive principal names are masked in exports.

Features

  • Pick the subject — a user, team, or role, loaded via RetrieveAll; selection persists in settings.
  • Pick a table + operation — Create, Read, Write, Delete, Append, Append To, Assign, Share. The operation maps to the concrete required privilege(s), including the Append/AppendTo pair (a common silent gap: append A→B needs Append on A and AppendTo on B), with a related-table selector for Append.
  • Effective-privilege calculation — the union of direct-role and team-inherited privileges, resolved to the deepest access scope per privilege (Basic/Local/Deep/Global). Team-inherited entries are labelled with their source team/role and flagged ViaTeam only when there is no direct grant.
  • Summary grid — privilege × scope × source, so you see the whole picture, not just the failing one.
  • Verdict & explanation — each case is classified as Access allowed / Missing privilege / Insufficient scope / Team inheritance only / Append mismatch / Business unit boundary, with the exact privilege name and scope required vs held, plus a plain-language explanation you can paste into a support ticket.
  • Recommendation — a single read-only suggested fix (which role to grant / which scope to raise).
  • Compare two principals — diff two users/teams/roles side by side; highlights privileges present in one but not the other, and differing scopes.

The resolution engine (Privileges/PrivilegeEngine.cs + PrivilegeModels.cs) is UI-free and SDK-free, so it is unit-tested without a live org and liftable into a console/CI check; the Dataverse collector (PrivilegeCollector.cs) is kept separate.

Exports

Excel, PDF, CSV, JSON, and HTML. Principal names are masked in every export. Excel (ClosedXML) and native PDF (PdfSharp/MigraDoc-GDI) go through the shared ReportModel; JSON reuses the shared exporter; CSV/HTML are BCL writers.

Help & Support

A right-aligned Help button opens a Help & Support dialog with Documentation, Report an issue, and a support link, each opened in the browser. The tool implements IHelpPlugin and IGitHubPlugin, so XrmToolBox's own tool-menu links resolve to the same GitHub project (kkora/XrmToolSuite).

Build & install

This tool is not a single-DLL tool — it ships the Excel/PDF export dependency chains (the ClosedXML + PdfSharp/MigraDoc-GDI DLLs). The one-step build copies the whole chain into the XrmToolBox Plugins root for you:

dotnet build src\Tools\XrmToolSuite.PrivilegeGapAnalyzer\XrmToolSuite.PrivilegeGapAnalyzer.csproj -c Release -p:DeployToXTB=true

Then restart XrmToolBox and open Privilege Gap Analyzer. For a manual copy to another machine, copy every DLL from the tool's bin\Release\net48\ folder — flat in the Plugins root, never a subfolder — or XrmToolBox silently drops the tool. Full details in ./DEPLOYMENT.md and the suite guide Deployment_Guide_XrmToolBox.md.

Usage

  1. Connect to your environment (System Customizer or higher recommended).
  2. Pick the subject principal (user / team / role), a table, and an operation (add the related table for Append).
  3. Review the effective-privilege summary grid, the verdict, and the plain-language explanation.
  4. Read the recommended fix; optionally compare against a second principal.
  5. Export the gap report in any of the supported formats.

Notes & limitations

  • Read-only — the tool never edits roles; every recommendation is a suggestion only.
  • Sensitive principal names are masked in all exports.
  • Append/AppendTo is modelled explicitly across the two related tables (append A→B = Append on A AND AppendTo on B).
  • The SDK-free engine is covered by xUnit in testing/UnitTests/.
Product Compatible and additional computed target framework versions.
.NET Framework net48 is compatible.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2026.7.10 97 7/11/2026
1.2026.7.9 100 7/11/2026
1.2026.7.8 95 7/11/2026
1.2026.7.7 101 7/11/2026
1.2026.7.6 101 7/10/2026
1.2026.7.5 92 7/9/2026
1.2026.7.3 100 7/7/2026
1.2026.7.2 98 7/5/2026

1.2026.7.10: Package health - deterministic CI builds with SourceLink and embedded symbols (PDB inside the DLL), and the package now links its GitHub source repository. No functional change to any tool.