Docs/ Custom Migrator

Choose what to track ​

The DocType Configuration table in Migrator Settings decides which record types show on the Custom Migrator page.

The DocType Configuration table with the eight default types

The defaults ​

DocTypeDefault filterWhy
DocType{"custom": 1}Only DocTypes made in Desk, not ones from apps
Custom Field{"is_system_generated": 0}Skips fields apps create for themselves
Property Setter{"is_system_generated": 0}Same
Client Scriptnone
Server Scriptnone
Workflownone
Workflow Statenone
Notificationnone

To stop tracking a default type, untick Enabled. Don't delete the row: default rows come back every time bench migrate runs. Is Default is set by Custom Migrator and can't be changed.

Filters ​

Filters (JSON) narrows a type down to the records you care about. It takes the same format as a Frappe filter object:

json
{"module": "Acme ERP"}
json
{"dt": ["in", ["Sales Invoice", "Sales Order"]]}

A filter is tested when you save. A bad field name, invalid JSON or anything that isn't an object stops the save with a message saying which row is wrong.

TIP

ERPNext ships its own notifications and workflow states. If they clutter the list, filter by module, or turn on Hide Already Migrated on the page, which hides records that come from other installed apps.

Add more types ​

On the Custom Migrator page, click + Add next to DocTypes in the sidebar, pick a DocType and optionally give it a filter. Or add a row to the table in Migrator Settings.

Anything you add is exported to fixtures/<doctype>.json in your app. Check that it's applied correctly on another site before you rely on it.

Next ​

Updated 7 Oct 2026