📄️ FAQs
📄️ Common Deployment Errors and How to Fix Them
Salesforce deploy errors are terse and rarely say why they happened. This is an index of the common ones — what each means and how to fix it — from field-level-security rejections on required fields to cryptic uniqueness clashes. mtdt.io decodes these in Deploy History with a hint that explains the cause and the fix.
📄️ "You cannot deploy to a required field" — What It Means and How to Fix It
"You cannot deploy to a required field: Object__c.Field__c" means a profile or permission set you're deploying carries field-level security for a field that is universally required. Since API v30, a required field is automatically Visible and Editable for every profile, so Salesforce rejects setting its FLS. The fix is to drop that field's field-permissions entry from the profile/permission set — here's why, and how mtdt.io decodes and points you at it.
📄️ "Duplicate value found" on Deploy — Causes and Fixes
The cryptic "duplicate value found" deploy error is a uniqueness clash, and it has several causes. On modern orgs it usually shows as "The label:X on record type:Obj.RT is not unique" (a record-type label clash) or "duplicate value found when building unique index" (a field made unique while the target already holds duplicate data). Here's how to tell the causes apart, how to fix each, and how mtdt.io decodes the error and surfaces the clash in Table View.
📄️ "No such column" After Deploying a Field — What It Means and How to Fix It
You deployed a field with a change set, it shows in Object Manager with the right API name — but a SOQL query fails with "No such column 'New_Field__c' on entity 'Custom_Object__c'." The cause is almost always field-level security: a change set carries the field but not its FLS, so the field is invisible to SOQL and the API for any user (even an admin) whose profile doesn't grant Read. Here's why, how to fix it, and how mtdt.io surfaces the FLS a change set drops.
📄️ Deploying a Master-Detail ↔ Lookup Conversion (and Why Validate Fails)
Changing a relationship field between Master-Detail and Lookup IS deployable through the Metadata API — a real deployment works in both directions. What you can't do is Validate it: Salesforce rejects the change in a test-only (checkOnly) deploy with "Test only deployment cannot update a field from a Master-Detail to Lookup" to avoid data loss. Here's why, the data preconditions each direction needs, the OWD side effects, and how mtdt.io warns you before you waste a Validate run.