From dataverse
Assigns security roles, manages user access, and handles admin self-elevation in Dataverse environments using PAC CLI. Activate when granting roles, adding service principals, or becoming admin.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dataverse:dv-securityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**This skill uses PAC CLI exclusively.** Do NOT write Python scripts for role operations.
This skill uses PAC CLI exclusively. Do NOT write Python scripts for role operations.
Role grants and self-elevate are destructive (they change security posture and are logged to Purview). Before running, preview the action in plain prose — target user, role, environment(s) — using placeholders (<ENV_URL>, <USER_EMAIL>) for anything unknown, and ask for confirmation and missing values in the same turn. Skip the raw pac admin block; the user shouldn't have to read CLI syntax to approve a security change.
Key principle: the user should be able to evaluate what's about to happen from your first response. A bare "which environment?" fails that test; a one-line prose preview passes it.
Assign role (user given, env missing):
[email protected] on <ENV_URL>. Confirm to proceed and provide the target environment URL (or 'all' to list and batch)."Admin access across all environments:
<YOUR_UPN>. If assign-user fails on any environment, I'll fall back to self-elevate (logged to Purview) for that one. Confirm to proceed and provide your UPN."| Need | Use instead |
|---|---|
| Create or modify tables, columns, relationships | dv-metadata |
| Manage org settings, audit, bulk delete, retention | dv-admin |
| Query or read records | dv-query |
| Write, update, or delete records | dv-data |
| Tenant-level governance (DLP, env lifecycle) | pac admin --help |
pac auth create)pac auth listpac admin assign-user --user <email-or-object-id> --role "System Administrator" --environment <url>
| Argument | Alias | Required | Description |
|---|---|---|---|
--user | -u | Yes | User email (UPN) or Azure AD object ID |
--role | -r | Yes | Security role name (e.g., System Administrator, Basic User) |
--environment | -env | Yes | Target environment URL or ID |
--application-user | -au | No | Treat user as an application user (service principal) |
--business-unit | -bu | No | Business unit ID. Defaults to the caller's business unit |
Run in parallel — never sequentially:
Step 1: pac admin list -> Get all environments
Step 2: Filter by type if needed (e.g., Developer, Sandbox) -> Identify targets
Step 3: Confirm with user — show list of target environments
Step 4: Run ALL assignments in a single bash call:
pac admin assign-user --user [email protected] --role "System Administrator" --environment https://dev1.crm.dynamics.com &
pac admin assign-user --user [email protected] --role "System Administrator" --environment https://dev2.crm.dynamics.com &
pac admin assign-user --user [email protected] --role "System Administrator" --environment https://dev3.crm.dynamics.com &
wait
Step 5: Report summary ("Assigned System Administrator on 3/3 environments")
Important: Always confirm which environments will be affected before assigning roles.
Self-elevation is materially different from assigning a role to another user. pac admin assign-user <other> grants privilege to someone else; pac admin self-elevate grants privilege to the caller. The risk profile and audit posture are different, so the confirmation protocol is stricter.
If pac admin assign-user fails with "user has not been assigned any roles", use:
pac admin self-elevate --environment https://myorg.crm.dynamics.com
--environment is omittedBefore running pac admin self-elevate, the agent MUST:
"This grants YOU System Administrator on
<env>. The action is logged to Microsoft Purview with your identity and timestamp."
"dev sandbox access — no ticket". Echo the reason back in the pre-run summary so the user sees what will be on the record.pac admin assign-user fails, surface the failure first, then offer self-elevate with this protocol — never chain them automatically.Flow: Always try pac admin assign-user first. admin self-elevate is the documented fallback, gated by the protocol above.
CLI fallback: If pac admin self-elevate errors out, self-elevate manually via Power Platform Admin Center → select the environment → Access → System Administrator role. All elevations are still logged to Purview. (In PAC CLI 2.6.4 the command fails with bolt.authentication.http.AuthenticatedClientException / ApiVersionInvalid because the CLI sends an empty api-version= to the backend.)
npx claudepluginhub anthropics/claude-plugins-official --plugin dataverseRoutes Dataverse tasks to specialist skills (connect, data, metadata, query, etc.) and enforces cross-cutting rules (Python-only, MCP-first, init checks).
Implements Supabase RBAC using JWT app_metadata.role claims, RLS policies with auth.jwt(), organization-scoped access, and per-role API key scoping for admin/member/viewer hierarchies.
Audits table permissions on Power Pages sites against site code and Dataverse metadata. Generates HTML report with severity-grouped findings (critical, warning, info, pass) and fix suggestions.