I have an 'Edit' action override on the OpportunityLineItem to a Visualforce page. This was configured via the UI rather than via the metadata API.
Performing a call to retrieve with a RetrieveRequest
containing a PackageTypeMembers
with:
name
= "CustomObject"
members
= ["OpportunityLineItem"]
Gives a package containing:
package.xml
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>OpportunityLineItem</members>
<name>CustomObject</name>
</types>
<version>34.0</version>
</Package>
objects/OpportunityLineItem.object
<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
<!-- ... -->
<actionOverrides>
<actionName>Delete</actionName>
<type>Default</type>
</actionOverrides>
<actionOverrides>
<actionName>Edit</actionName>
<comment>Redirect the editing of XYZ to the ABC page.</comment>
<content>XyzOliEditPageRedirect</content>
<skipRecordTypeSelect>false</skipRecordTypeSelect>
<type>Visualforce</type>
</actionOverrides>
<!-- ... -->
</CustomObject>
So, in this case it does return the expected ActionOveride via the CustomObject.
Note that the docs for ActionOverrideType states:
default—The override uses a custom override provided by an installed
package. If there isn’t one available, the standard Salesforce
behavior is used.
So, either:
or, Salesforce is only partially lying to you about the nature of reality and will still find the Visualforce page even if the value is default.
See also: