A client finished user testing and wanted their Service Requests table empty before go-live. Selecting test rows one page at a time isn’t a plan when there are thousands of them, and one wrong click deletes real data.
In this tutorial, we’ll delete all records from a Dataverse table four ways: a bulk delete job, the table editor, a Power Automate flow and RemoveIf in a canvas app. I ran every method on 10/21/2026 in our Power Platform developer environment, and I’ll show you how to get the rows back if you delete too much.
Quick answer: There’s no truncate button in Dataverse. To clear a whole table, open the Power Platform admin center, go to your environment’s Settings > Data management > Bulk deletion, select New, pick the table, check the rows with Preview Records and save the job. For a few rows, select them in the table editor and choose Delete N record(s). In a flow, use List rows + Apply to each + Delete a row. In a canvas app, use RemoveIf().
Which Method Should You Use?
Dataverse stores data in tables made of rows (records) and columns. If those terms are new, start with what Microsoft Dataverse is and how it stores data. Then pick a method by how many rows you’re removing and who runs it:
| Method | Best for | Watch out for |
|---|---|---|
| Bulk delete job | A whole table or thousands of filtered rows | Runs in the background; admin privileges |
| Table editor | A handful of rows you can see | No confirmation dialog |
| Power Automate | Repeatable cleanups with custom logic | One call per row; 5,000 rows per page |
| Canvas app RemoveIf | Letting users clear their own test rows | Delegation limits on big tables |
Our demo table is Service Requests. For each test, I added named test rows so I could watch exactly those disappear.
Before You Delete: Turn On Deleted Record Keeping
Getting deleted rows back only works if an admin turned this on first:
- In the Power Platform admin center, select Manage > Environments and open your environment.
- Select Settings > Product > Features.
- Under Deleted records, turn on Keep deleted Dataverse records.
- Enter 1 to 90 days in Keep deleted records (days), select Save, and give it about 30 minutes.
Only rows deleted after that can be restored, and kept rows count against storage. Auditing is different: it records old values but doesn’t restore rows, as I explain in the Dataverse version history guide.
Method 1: Bulk Delete All Rows With a Bulk Delete Job
Bulk delete is the built-in way to clear a Dataverse table. It runs as a background system job and can repeat on a schedule.
In the Power Platform admin center, open your environment, select Settings, expand Data management and select Bulk deletion. You land on the All Bulk Deletion System Jobs view. Select New Job:

The New Bulk Delete Operation form opens. Under Job Details, enter a title. For a recurring cleanup, check Run job after every N days (30 by default).
The Permanent deletion checkbox matters most. The form says it “permanently deletes data with no recovery, but allows the job to run faster.” I leave it unchecked.

Under Select records to delete, set Look for Entity to your table. A saved view adds its filter as a criteria row (see creating a Dataverse view). I added Subject Begins with Bulk Delete Test.

To delete every row, remove all criteria rows, including any Status Equals Active row from a saved view. Microsoft’s own “Delete all accounts” example is a job with no criteria.
Always select Preview Records before you save. The preview dialog, titled “New bulk record deletion.”, listed exactly our three Bulk Delete Test rows:

Then select Save and close. Our job finished in about 12 seconds with Records Deleted 3, Records Failed 0 and no errors. The completed job shows a Restore command because Permanent deletion was unchecked:

The job only deletes rows created before it starts. If it fails halfway, deleted rows stay deleted; errors show on the Run details tab.
Is There a Dataverse Truncate Table Command?
No. Dataverse doesn’t offer a SQL-style TRUNCATE TABLE in the maker portal or admin center. The closest thing is a bulk delete job with no criteria and Permanent deletion checked, which skips the deleted-records copy and runs faster.
Developers can call the BulkDelete Web API action instead. Its sandbox fast delete option bypasses plug-ins and workflows, but it only works in sandbox environments.
Method 2: Delete Selected Rows in the Table Editor
For a few rows, the table editor is fastest. In Power Apps (make.powerapps.com), select Tables, open your table and select Edit. (the editor from creating a Dataverse table). Select the circle next to each row; the command bar changes to Delete N record(s).

Be careful here. When I clicked Delete 3 record(s), the three rows vanished immediately. There was no “Are you sure?” dialog. Double-check your selection.
Method 3: Delete All Rows From a Dataverse Table With Power Automate
Power Automate has no single “delete all rows” action. You use List rows, then Delete a row inside Apply to each:
- Create an instant cloud flow with the Manually trigger a flow trigger.
- Add the Microsoft Dataverse action List rows (I renamed it List test rows) and set Table name to Service Requests.
- In Filter rows, enter an OData filter so only the rows you want come back. Leave it empty to return every row.
- Add Delete a row, set Table name to the same table and Row ID to the row’s ID column. Power Automate wraps it in Apply to each.

The filter uses the column’s logical name (cr85a_subject), not the display name. For more Dataverse queries in flows, see counting Dataverse rows in Power Automate.
startswith(cr85a_subject,'Flow Delete Test')

The Row ID comes from the current loop item. Pick the table’s unique identifier column from dynamic content, or type this expression:
items('Apply_to_each')?['cr85a_servicerequestid']

A Compose action named Rows found logs the count:
length(outputs('List_test_rows')?['body/value'])
Select Test > Manually > Run flow. Ours showed “Your flow ran successfully”, Rows found 3, and Apply to each finished three iterations in 2 seconds:

List rows returns up to 5,000 rows unless you turn on Pagination under the action’s Settings, and the threshold maxes out at 100,000. Each Delete a row took about 0.8 seconds in my run, so bulk delete wins on big tables. The SharePoint version is in deleting all SharePoint list items with Power Automate.
Method 4: Delete Records From a Dataverse Table in Power Apps
In a canvas app, Remove() deletes one row and RemoveIf() deletes every row that matches a condition. New to canvas apps? Here’s the short path (more in our Power Apps tutorials hub):
- Go to make.powerapps.com, select Create, then Start with design > Blank canvas app, and pick Tablet.
- Select Data > Add data, search for your table (Service Requests) and select it. It becomes a data source the app reads and writes.
- From Insert, add a vertical gallery, a text label and a button.
- Select a control, choose a property in the dropdown left of the formula bar (fx), and type the formula.
I set the gallery galDel’s Items to show only the test rows, and a label to count them. The five test rows came from a Collect button covered in adding data to a Dataverse table from Power Apps.
Filter('Service Requests', StartsWith(Subject, "Delete Test"))
CountRows(galDel.AllItems) & " test rows"
A trash button inside the gallery deletes a single row. The Power Apps Remove function guide covers more patterns:
Remove('Service Requests', ThisItem)
For the delete-all button, I set btnRemoveIf’s OnSelect to RemoveIf. Studio showed no delegation warning for this formula:
RemoveIf('Service Requests', StartsWith(Subject, "Delete Test"))

Save with Ctrl+S, then press F5 (or the Play button, top right) to preview. Before the click, the label showed 5 test rows:

After one click, the label showed 0 test rows. The Web API confirmed all five were gone and the other 10 rows untouched.

Delegation means Power Apps hands the filter to Dataverse instead of downloading rows first. Microsoft notes RemoveIf is delegated by only a few data sources; elsewhere it fetches up to the data row limit (500 or 2,000) and deletes rows one by one. See how to fix Power Apps delegation warnings. To delete exactly what a gallery shows, use:
Remove('Service Requests', galDel.AllItems)
Common Errors and How to Fix Them
- Inactive rows survive the bulk delete. A saved view like Active Service Requests adds Status Equals Active. Remove that criteria row to clear the whole table.
- Rows deleted with no warning. The table editor’s Delete N record(s) has no confirmation. Turn on deleted record keeping first.
- The flow stops at 5,000 rows. Turn on Pagination in List rows settings, or run the flow again until Rows found is 0.
- The flow won’t turn on (ConnectionAuthorizationFailed). The Dataverse connection reference isn’t authorized. Pick a working connection in the flow’s connection references.
- You can’t create the job. Bulk delete needs the BulkDelete and Delete privileges on the table; see the commands unavailable due to your current privileges error.
- Related rows disappeared too. Deletes follow the table relationship cascade rules. Check them before you clear a parent table.
If you’re cleaning up data on more than one platform, these walk through the next steps:
Frequently Asked Questions
How do I delete all rows in a Dataverse table?
Create a bulk delete job: Power Platform admin center > your environment > Settings > Data management > Bulk deletion > New. Pick the table, remove every criteria row, check Preview Records and save. The job runs in the background.
Can I truncate a Dataverse table?
There’s no TRUNCATE command. A bulk delete job with no criteria and Permanent deletion checked is the closest option, and it runs faster because it skips keeping deleted records.
Can I undo a Dataverse bulk delete?
Yes, if Permanent deletion was unchecked and Keep deleted Dataverse records was on before the delete. Open the job and select Restore. Microsoft explains the options in Restore deleted Dataverse table records.
How do I delete a record from a Dataverse table in Power Apps?
Use Remove(‘Service Requests’, ThisItem) on a gallery button for one row, or RemoveIf(‘Service Requests’, condition) for every matching row.
Who can run a bulk delete job in Dataverse?
Users with the BulkDelete and Delete privileges on the table and read access to its rows. System Administrators have them by default. See Delete bulk records on Microsoft Learn.

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.