Error overview
You may run into this validation error when deploying changes to Profile
metadata type. However, the error isn't necessarily specific to this metadata type.
For example, on below screenshot we're seeing:
You cannot deploy to a required field: <xxx>
In this context <xxx>
refers to the <ObjectName.FieldName>
, as the error message references a field name on an object that cannot be modified as part of your deployment.
Explanation of the error
This validation error is likely to happen during a validation when you attempt to modify a field that is part of a master-detail relationship.
In Salesforce, the lookup field on the detail (or child) object is always a required fields to maintain data integrity. This deployment fails because the metadata in the package either incorrectly defines the field (e.g. field Region__c
Business_Line_Region__c
object is defined as a lookup instead of a master-detail) or attempts to make it optional, which Salesforce prohibits.
Resolution
The solution to this error may vary depending on the purpose of the deployment, and what is intended to be achieved.
If you want to keep the master-detail relationship
This is the most common cause of the error. The metadata in your deployment package (e.g. in your Git branch) is likely incorrect.
Solution is to correct the field definition in the XML:
Make sure the field is correctly defined as a master-detail relationship in your source control. In the
.object-meta.xml
file for the detail object, the field's definition should include<type>MasterDetail</type>
.In the XML of the field do not include
<required>false</required>
tag.It's because a master-detail field is required by default (based on Salesforce logic), and stating it within the XML of the field may cause the validation/deployment to fail.
After correcting the XML of your deployment package, re-try the validation in Gearset.
If you want to change the relationship from master-detail to lookup
It isn't possible to directly convert the master-detail relationship to a lookup relationship if there are roll-up summary fields on the master object that reference the detail object.
The fix requires manual steps done in a specific order.
Warning: Below instruction involves making a destructive change that requires careful planning. Deleting fields can disrupt reports, business processes, and cause temporary data loss if not managed correctly.
Step 1: Manually delete roll-up summary fields in the target org
Before the deployment, log in to your target Salesforce org and:
Navigate to the master object.
Back up the logic of any roll-up summary fields that calculate data (like
COUNT
,SUM
, MIN,MAX
) from the detail objectDelete those roll-up summary fields. The deployment will fail until these dependencies are removed.
This step means that you are deleting fields on the parent that are depend on the child (e.g. Business_Line_Region__c
) before you can change the relationship between them.
2. Update the metadata in the deployment package
Now that you have gone through step 1, you can:
Edit the XML file of the object (e.g.
Business_Line_Region__c
) to change the field definition fromMasterDetail
toLookup
.If deploying via Gearset Pipelines, you'd need to amend the XML directly in the feature branch from which your original PR got opened.
You can also specify whether the field is required or not.
Sample XML of the object should look as below:
<fields>
<fullName>Region__c</fullName>
...
<type>Lookup</type> <required>false</required> ...
</fields>
3. Deploy the package
Once you've gone through steps 1 and 2, you are good to proceed with the deployment.
4. Post deployment steps
If you needed the functionality of the roll-up summaries that got deleted earlier in the process, you must recreate them in the target org.
You may want to use an alternative like Apex Triggers, Flows, or free Declarative Lookup Rollup Summaries (DLRS) tool from AppExchange store (by SalesforceLabs).
Useful resources
For more information and guidance on how to deal with this error, check below resources:
- Salesforce Known Issues (last updated 2 Feb 2024)
- Trailblazer Community forum
- StackExchange forum
- LevelUp Software Services page
Disclaimer: This error is returned by Salesforce directly, rather than Gearset. Even so, we offer guidance based on our combined experience with the Metadata API. Where possible, we try to help guide you to fix or avoid this error. In the case that this isn't possible, we may need to direct you to Salesforce support for further clarification.