> For the complete documentation index, see [llms.txt](https://docs.silkline.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.silkline.ai/administration-tools/data-cleaning-mode.md).

# Data Cleaning Mode

Turn on data cleaning mode to select rows on Silkline tables and bulk edit a field across all of them, or permanently delete the selection

Data cleaning mode adds row selection to Silkline's tables, with bulk actions on the selection: change one field across every selected row, or permanently delete the rows. It is designed for cleanup work — normalizing statuses, reassigning owners, archiving stale records, or removing bad imports.

Using it requires the **Data cleaning mode** permission (see [Administration Tools](/administration-tools.md#permissions)).

## Turning it on and off

{% stepper %}
{% step %}

### Open the Admin tools palette

On a page that supports it (such as Suppliers or Parts), click the wrench button in the top-right action bar.
{% endstep %}

{% step %}

### Choose "Enable data cleaning mode"

A toast confirms the mode is on. You can also toggle it from the command palette (`⌘K`) with the **Enable Data Cleaning Mode** command.
{% endstep %}

{% step %}

### Work, then turn it off

While the mode is on, a green **Data cleaning** indicator is pinned next to the Silkline logo as a reminder. Turn the mode off from that indicator, from the Admin tools palette (**Disable data cleaning mode**), or from the command palette. The mode stays on in your browser until you turn it off — it does not affect other users.
{% endstep %}
{% endstepper %}

## Selecting rows

With the mode on, supported tables show a checkbox on every row. Selecting rows raises a floating toolbar with the selection count and the available actions.

<figure><img src="https://2684497859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwPsevXC0g5kNMF7GTyPN%2Fuploads%2Fgit-blob-90c8253f279ac9cbf2fbd52b0cad127163a0bfcc%2Fdata-cleaning-selection-toolbar.png?alt=media" alt="Suppliers table with three rows selected and a floating toolbar showing the selection count, a clear button, and Edit and Delete actions"><figcaption><p>Selected rows raise a floating toolbar with the bulk actions</p></figcaption></figure>

* The header checkbox selects every row on the current page.
* When the whole page is selected and more rows match your current search and filters, the toolbar offers **Select all N** — the bulk action then applies to every matching row, not just the visible page.
* The **×** button beside the selection count drops the selection.
* Tables with many bulk actions keep the most common ones visible and group the rest under **More**.

Row selection with bulk edit is available on the major data tables, including Suppliers, Parts, Bills of Materials, Line Items, the line-item tables on requests and quotes, and the user list under **Users and Access**. Under **Organization Settings** it covers the Public Files, Configurable Fields, Validation Rules, Tags, Locations, Quality Clauses, Pedigree, and Taxes tables, and the step definitions table under **Supplier Evaluations**. Selecting exactly two rows on the Suppliers, Parts, Locations, Tags, Quality Clauses, or Pedigree table also offers a **Merge** action — see [Merging Duplicate Records](/administration-tools/merging-records.md).

When supplier evaluations are turned on, the Suppliers table is selectable even with data cleaning mode off, and the toolbar offers **Send evaluation** — see [Sending to many suppliers](/suppliers/supplier-evaluations.md#sending-to-many-suppliers). Edit, Delete and Merge still need data cleaning mode.

## Bulk editing a field

Click **Edit** on the selection toolbar to open the **Edit rows** modal. Each pass applies one field change to every selected row.

{% stepper %}
{% step %}

### Pick the field

The **Field** dropdown lists the fields that support bulk editing on this table — for suppliers, for example: approval status, status (archived), purchasing and quality owner, payment/delivery terms, delivery mode, supplier tier, tags, approved pedigrees, and address.
{% endstep %}

{% step %}

### Review the current values

Once a field is picked, the modal shows the **Current values** across the selection, with a row count per value — so you can confirm you selected the right records before changing anything.
{% endstep %}

{% step %}

### Set the new value and apply

Fill in the field's editor and click **Apply to N rows**. A toast reports how many rows were updated.
{% endstep %}
{% endstepper %}

<figure><img src="https://2684497859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwPsevXC0g5kNMF7GTyPN%2Fuploads%2Fgit-blob-f8521b2823659edda59394e6fbff3614872f03af%2Fdata-cleaning-bulk-edit.png?alt=media" alt="The Edit rows modal with the Status field selected, showing current values across the selection and an Apply to 3 rows button"><figcaption><p>The Edit rows modal previews the current values before you apply a change</p></figcaption></figure>

To change several fields, run the edit again with a different field — the selection is kept between passes.

## Bulk deleting rows

Click **Delete** on the selection toolbar to permanently delete the selected rows. Tables whose rows cannot be deleted, such as the user list, Configurable Fields, and Bills of Materials, offer only **Edit**. A confirmation dialog spells out the impact and requires typing `delete` before the **Delete rows** button activates.

<figure><img src="https://2684497859-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwPsevXC0g5kNMF7GTyPN%2Fuploads%2Fgit-blob-8c1372102d3dd086e668edf85b4eac0604d8402d%2Fdata-cleaning-bulk-delete.png?alt=media" alt="The Delete 3 rows confirmation dialog requiring the word delete to be typed"><figcaption><p>Bulk delete requires a typed confirmation</p></figcaption></figure>

{% hint style="danger" %}
Bulk delete is permanent and cannot be undone. Related records configured for cascading deletion are removed along with the selected rows. If you only need records out of the way, prefer bulk editing the **Status** field to archive them instead.
{% endhint %}
