Skip to main content

Profile and permission set errors on a Salesforce deploy

Updated · By the Clientell AI team · How we write

A profile or permission set fails to deploy when it grants access to something the target org does not have yet, usually a field, class, object or tab. Deploy those components first, or remove the grant from the file. Required fields and permission dependencies have their own messages, shown below.

Error text

In field: apexClass - no ApexClass named InvoiceSyncHelper found

Message reproduced with a check-only deploy to a Salesforce developer org on Nov 4, 2026.

A check-only deploy lists each missing grant, one at a time.

Why does a profile or permission set deploy fail?

These files are long lists of grants: this field, that class, this tab. Salesforce checks each one against the target. If the target has no such field, class, tab or object, the whole file is rejected, and the message names the first grant that failed.

The wording is the same for every grant type. Only the type and the name change:

  • A custom field: In field: field - no CustomField named Account.Partner_Level__c found
  • An Apex class: In field: apexClass - no ApexClass named InvoiceSyncHelper found
  • A custom object: In field: object - no CustomObject named Site_Visit__c found
  • A custom tab: In field: tab - no CustomTab named Site_Visit_Tab found
  • A custom permission: In field: customPermission - no CustomPermission named Export_Reports found
  • A record type: In field: recordType - no RecordType named Account.Region_Manager_RT found
  • An app (profile): In field: application - no CustomApplication named Field_Service_App found

Salesforce reports one at a time, so fixing the first can reveal the next. When you have a big profile, expect several rounds.

What are the other permission errors?

Two more have their own wording.

You cannot deploy to a required field: Account.Name. Required fields are always accessible, so a field permission for them is not allowed in the file. Delete that line. Master-detail fields behave the same way.

Permission ViewAllData depends on permission(s): ViewAllForecasts, ViewDataLeakageEvents, ViewEventLogFiles, ViewPlatformEvents, ViewPublicDashboards, ViewPublicReports, ViewRoles, ViewSetup. A user permission cannot be on unless the ones it relies on are on too. Add the listed permissions to the same file.

How do I fix it in Setup?

  1. Open Setup > Deployment Status > View Details, and copy the first message.
  2. Decide whether the missing item should exist in the target. If yes, add it to the deploy: the field, class, tab or object. If it was a leftover, open the permission set in the source org and remove the grant.
  3. In a change set, add the profile or permission set last. Click View/Add Dependencies and add the field and class entries.
  4. Check the layout side. A profile deployed together with a record type but without that record type's page layout loses its layout assignment (Salesforce Help). Add every layout you use.
  5. Validate again.

How do I fix it with the CLI?

Retrieve the permission set from the target to see what it already holds, and deploy the items it needs in the same call:

sf project deploy start --metadata PermissionSet:Sales_Ops --metadata CustomField:Account.Region__c --dry-run --test-level NoTestRun -o target-org

If the file lists dozens of fields that do not matter, strip them out. A permission set with only the grants you intend deploys faster and fails less.

How do I prevent it?

We would move field access out of profiles and into permission sets, and deploy permission sets with the fields they cover, never ahead of them. The profiles vs permission sets guide walks through the move. Read the entries on permission sets and field-level security if the model is new to you.

Two admins editing the same permission set in two sandboxes is the other classic cause. The later deploy wins and silently drops the earlier edit. AI Salesforce deployments flags that drift and asks which version should win.

Similar "no X named Y found" errors: missing field on a layout, missing quick action on a layout, missing picklist value on a record type, missing LWC module.

Questions about permission deploy errors

Why does the error say In field when I did not change a field?

In field names the XML element inside the file that holds the bad value. On this page it is field, apexClass, object, tab, layout or recordType, not necessarily a custom field.

Can I deploy a permission set before the field exists?

No. The field has to exist in the target first, or travel in the same package.

Do I need to deploy profiles at all?

Often not. If the access is in permission sets, deploy those and leave profiles alone.

Why did my deployed profile remove a layout assignment?

Profile and record type deploys replace layout assignments in the destination. Include every page layout you want to keep.

Catch this before the deploy window

Clientell AI runs these checks on the bundle before the deploy, and asks before it changes anything in production. Platform deployments include a snapshot and rollback.

Sources: Salesforce Help, special behavior in deployments.

All Salesforce deployment errors or paste your own error into the explainer