skills/bulk-delete/SKILL.md
Create, monitor, and manage bulk deletion jobs in Dynamics 365. Use when asked "bulk delete", "delete all records of type X", "create a bulk delete job", "check bulk delete status", "cancel bulk delete", "why did bulk delete fail".
npx skillsauth add nickmeron/Dataverse-MCP-Server skills/bulk-deleteInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The user wants to create or manage bulk deletion jobs in Dynamics 365.
Argument provided: $ARGUMENTS
Select environment — call list_environments, ask the user, call select_environment.
Confirm scope — ask the user to confirm the target entity and any filter conditions before creating the job. Bulk deletion is irreversible.
Resolve the entity logical name — if the user provides a display name (e.g. "Knowledge Article"), use list_entities to find the logical name (e.g. knowledgearticle).
Build filter conditions (optional) — if the user wants to delete a subset of records, map their criteria to QueryExpression conditions:
attribute (logical name), operator, and optionally valuesEqual, NotEqual, Null, NotNull, Like, In, GreaterThan, LessThan, OlderThanXDays{ attribute: "statecode", operator: "Equal", values: ["1"] }Create the job — call create_bulk_delete_job:
job_name: descriptive name (e.g. "Delete all Knowledge Articles – 2026-05-04")
entity: logical name (e.g. "knowledgearticle")
filter_conditions: [...] or omit for all records
Returns a JobId (asyncoperationid) — save this for monitoring.
Confirm to the user — report the JobId and explain they can monitor it with get_bulk_delete_job.
Call get_bulk_delete_job with the job_id.
Status interpretation:
| statecode | statuscode | Meaning | |-----------|------------|---------| | 0 | 0 | Waiting for resources | | 1 | 10 | Waiting | | 2 | 20 | In progress | | 2 | 21 | Pausing | | 2 | 22 | Canceling | | 3 | 30 | Succeeded | | 3 | 32 | Cancelled | | 3 | 33 | Failed |
get_bulk_delete_failures.get_bulk_delete_failures to show which records could not be deleted and why.Call list_bulk_delete_jobs. Optional status filter: waiting, running, completed, failed, cancelled.
Present results as a table: Job Name | Status | Created | Completed | JobId.
get_bulk_delete_job to confirm the job is still active (statecode 0, 1, or 2).cancel_bulk_delete_job with the job_id.Call get_bulk_delete_failures with the job_id. The response includes:
objectid — the GUID of the record that failederrordescription — the reason for failure (e.g. cascading relationships, active child records)Common failure reasons:
recurrence_pattern to run the job on a schedule (e.g. daily cleanup). Leave empty for a one-time run.get_bulk_delete_job.get_bulk_delete_failures after completion.data-ai
Produce a business-readable summary of a Dynamics 365 record or set of records. Uses metadata to understand the schema before querying.
testing
Investigate users, security roles, teams, and permissions in Dynamics 365. Use when asked "who has access to...", "what roles does X have?", "compare roles", or "show me users".
data-ai
Query Dynamics 365 records using natural language. Translates questions into OData queries with metadata-aware field selection.
tools
Pack, unpack, clone, and manage Dynamics 365 solutions using the PAC CLI. Use when asked "unpack solution", "pack solution", "clone solution", "source control my solution", "compare solution files".