By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.

How Do You Migrate Record Types in Salesforce?

Migrating Salesforce records to a new Record Type means updating the RecordTypeId field across every affected record while keeping validation rules, Flows, Apex, and approval processes aligned to the new configuration. Skip the audit step and automations break silently. This article covers the five-phase process CRM teams use to migrate Record Types without breaking existing business logic.

What Does a Salesforce Record Type Migration Actually Change?

A Salesforce Record Type controls three things for a given record: which picklist values are available, which page layout the user sees, and which business process the record follows. Record Types let organizations offer different processes to different users on the same object. Migrating to a new Record Type means every affected record gets a new RecordTypeId, which can change its picklist options, its layout, and which Sales Process governs it. This is why a migration is never a pure data update. It touches every piece of automation that reads or filters on RecordTypeId.

Validation rules, Flows, Apex triggers, approval processes, and even report filters frequently reference a specific Record Type, either by hardcoded ID or by name. When you swap the RecordTypeId on a record, any automation still pointing at the old configuration either stops firing or fires incorrectly. Salesforce recommends no more than 200 Record Types per object, so most migrations consolidate several older types into fewer, cleaner ones rather than creating a like for like replacement. Planning the migration around this constraint upfront avoids a second cleanup project a year later.

Why Must You Audit Automations Before Changing a Record Type?

Before touching any data, find everything in the org that references the old Record Type. This includes hardcoded IDs in validation rule formulas, entry criteria on approval processes and assignment rules, cross-object formulas and rollups on related objects, and filters on reports and list views. Skipping this step is the single most common cause of a failed Record Type migration, because the data update succeeds while the dependent automation quietly breaks. Document every component you find before moving to the next phase, and treat the audit as complete only when every automation type below has been checked.

Component What to check
Validation Rules Search formulas for hardcoded 15 or 18 character RecordTypeIds and replace them with RecordType.DeveloperName.
Flows Start element filters, Decision and Assignment logic, Data elements (Get, Create, Update), and subflow inputs that reference a specific Record Type.
Apex Triggers, classes, helper frameworks, and test methods with hardcoded RecordTypeIds.
Approval Processes & Assignment Rules Entry criteria that filter on Record Type.
Cross-Object Formulas & Rollups Formula fields on related objects referencing the Record Type.
Reports & List Views Filters that select records by Record Type.

Record-triggered Flows deserve particular attention, since their Start element uses entry conditions to decide whether the Flow runs at all. If a Flow's entry conditions filter on the old RecordTypeId, the Flow will simply stop firing on migrated records without throwing any error, which makes this failure mode easy to miss during testing. Reviewing every record-triggered Flow's Start element against your Record Type inventory is not optional. It is the step most audits skip and most rollbacks trace back to.

How Do You Set Up the New Record Type Before Migrating?

Create the new Record Type before you touch any existing data, and confirm it is assigned to the correct Page Layout and, where relevant, a Sales Process. This sequencing matters because Data Loader rejects an update if the target RecordTypeId is not yet active and properly configured. Implementation guidance from experienced Salesforce practitioners consistently flags backing up your data before any Record Type change as essential practice, regardless of scale. Confirm picklist values are correctly scoped to the new type, since a mismatch here surfaces as a validation error the moment the migrated record is next edited by a user.

How Do You Extract and Map Records to the New Record Type?

Export the records that need migrating using Reports, Data Loader, Workbench, or an ETL tool, and include each record's current RecordTypeId in the extract. In a spreadsheet, add a column for the new 18 character RecordTypeId and map every old value to its replacement. Salesforce requires the 18 character, case-insensitive ID format for API-driven updates rather than the 15 character ID shown in some UI views, so confirm you are copying the correct version before building the mapping file.

Keep this mapping file, since the clean-up work covered in our Salesforce data migration guide depends on knowing exactly which old ID mapped to which new one.

How Do You Load and Verify the Record Type Update?

Run the update in a sandbox first to catch dependencies the audit missed, since a change to RecordTypeId cannot be reversed once committed to production. Salesforce's own support guidance recommends testing with two or three records before running a full batch, precisely because the change cannot be undone through Data Loader itself.

  1. Run the full update process against a sandbox copy of production data before touching live records, and confirm no dependent automation misfires.
  2. Turn off any validation rule, trigger, or Flow that would prevent the RecordTypeId update from committing.
  3. Load your mapping file, select Update on the target object, and map RecordTypeId to your new ID column.
  4. Turn validation rules, triggers, and Flows back on once the update completes successfully.
  5. Spot-check a sample of migrated records directly in Salesforce to confirm the new Record Type, layout, and picklist values all display correctly.

Change management practice recommends documenting every step before it ships and monitoring the Setup Audit Trail after the deployment completes, since a Record Type migration can quietly affect permissions or automation elsewhere in the org. Treat the sandbox run as a rehearsal for the exact production sequence, not a rough approximation, since differences between sandbox and production environments are where migrations most often go wrong.

What Should You Clean Up After the Migration Is Complete?

Update every hardcoded reference flagged during the Phase 1 audit so each one points at the new Record Type instead of the old one. Once no active or historical record depends on the old Record Type, deactivate or delete it, since Salesforce does not allow deletion while records still reference it. Keep the mapping file and a full data export from before the migration. Because the RecordTypeId change is irreversible, this backup is the only recovery path if a mapping error surfaces after the fact. Teams that have already worked through Salesforce license and Queue clean-up will recognize the pattern: treat clean-up as part of the migration itself, not an optional follow-up task.

Frequently Asked Questions

Can you undo a Salesforce Record Type migration once it's run?

No. Updating RecordTypeId through Data Loader is not reversible, and Salesforce's own guidance recommends testing with two or three records before running a full batch. If a mapping error surfaces afterward, the only recovery path is reloading from a pre-migration data export, which is why exporting current RecordTypeId values before you start is a required step, not an optional precaution.

What is RecordType.DeveloperName, and why use it instead of a hardcoded ID?

RecordType.DeveloperName is a stable reference to a Record Type by name rather than by its 15 or 18 character ID, which changes between sandboxes and orgs. Hardcoded IDs break the moment you deploy to a different environment or migrate the Record Type itself. Validation rule formulas and Apex that reference DeveloperName instead of a literal ID survive both scenarios without modification.

How many records should you test with before running a full Data Loader update?

Two or three, according to Salesforce's own support guidance, since the RecordTypeId change cannot be reversed once committed. Confirm the small batch behaves correctly, check that dependent automation still fires as expected, and only then proceed to the full production batch. Skipping this step is the fastest way to turn a migration into a data recovery project.

How many Record Types can a single Salesforce object have?

Salesforce recommends no more than 200 Record Types per object, even though the platform does not enforce a hard technical limit at that number. Most migrations are a good opportunity to consolidate several overlapping older Record Types into a smaller, cleaner set rather than creating a one to one replacement, which keeps the object easier to maintain going forward.

Can you update a record's RecordTypeId to Master or leave it null?

No. Salesforce does not allow a Data Loader update to set RecordTypeId to Master or to a null value. The target must be an active, properly configured Record Type. Confirm the new Record Type is fully set up, including Page Layout and Sales Process assignment, before attempting the bulk update, or the load will fail.

Do you need a sandbox for a small Record Type migration?

Yes, even for a handful of records. Sandbox testing exists specifically to catch dependent automation issues before they reach production. Skipping it for a high impact, irreversible change like a Record Type migration is exactly the scenario sandbox testing guidance most explicitly warns against, regardless of how few records are involved.

Read the full report

Who We Serve

Presenting our distinguished clientele! We collaborate closely with visionary B2B tech and software companies, intricately shaping their comprehensive Revenue Architecture. Take a look at who we have already served.

Have a Question?

You have questions? Our Founder and Managing
Partner Michael is looking forward to hearing from
you.

Michael Jäger
Managing Partner