Picklist value not found: When a record type references a value the field doesn't have
The error
You'll see something like this during validation or deployment:
Picklist value: XXXX in picklist: YYYY not found (line: NNN)
This happens when a record type points to a picklist value that doesn't actually exist in the field's own value set. Salesforce won't deploy or validate a record type if it references a value that isn't declared on the field, so the deployment fails.
Why it happens
A picklist field's values live in two places:
The field's value set, the master list of every possible value for that picklist.
The record type's picklist values, which say which of those values are available on a specific record type.
These two lists should always match up. But it's easy for them to drift apart:
Someone edits or renames a value directly on the record type, without updating the field.
A value gets removed from the field's value set, but record types that reference it aren't cleaned up.
Metadata gets hand-edited or merged from a branch, and a typo or subtle difference (different capitalization, extra spaces, reworded label) sneaks in.
Even a tiny difference matters here. Pending Review and Pending review are two different values as far as Salesforce is concerned. If the record type has one and the field has the other, you'll get this error.
How to check what's actually happening
Compare the two pieces of metadata side by side:
Find the record type's picklist <values> entry for the Field in question (it will show as <picklist> in the XML view of the Record type), and note the exact value in fullName.
Find the field's valueSetDefinition, and check whether that same value exists there, character for character. You can easily access this via the `Depends on` for the Record type. You’ll either see the Custom Field or the Standard/Global Value Set
Look closely for mismatches in capitalization, punctuation, wording, or trailing characters like asterisks.
If the value isn't in the field's value set on either org, that confirms the mismatch.
How to fix it
You've got two options, depending on what the value should actually be.
If the value should exist: Add it to the field's value set (either the Custom Field or Standard/Global Value Set) so the record type's reference resolves correctly.
If the value is outdated or wrong: Update the record type to reference the correct, existing value instead, and remove the stale one.
Gearset's problem analyzer will offer to remove the unreferenced value from the deployment automatically, so validation or deployment can go ahead. That's a quick way to unblock a deployment, but it only removes the reference. It doesn't add a missing value or fix a rename, so check whether that's really the outcome you want before deploying.
Avoiding this in the future
Before renaming or removing a picklist value, search for every record type that references it. A quick way to do this in Gearset: run a comparison with custom object metadata included, then check the record type's dependencies for any picklist fields it touches.
