Is there any trick to retrieving action overrides via the metadata api?


The docs seem to indicate this is straightforward, just use object dot notation and a type of ActionOverride. But when I use the package.xml below I'm getting an Entity type: 'ActionOverride' is unknown error. Any idea what I'm doing wrong? It seems people are equally stumped on the salesforce dev boards. I've also tried Actionoverride and actionoverride since in the past the docs have misspelled the retrieve targets, but no luck.

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">

2 Answers 2


Metadata API states: "You can only access ActionOverride by accessing its encompassing CustomObject."

This is in the docs for the API.

Check out the code example there and you'll see it looks a lot like yours, only wrapped in CustomObject, not Package.

  • 1
    You can only deal directly with Metadata component types that extend the Metadata schema base type. You can use the describeMetadata operatoin to get a full list programatically (this is what Eclipse uses I imagine) in its Project wizard. Commented Aug 20, 2013 at 12:46
  • 1
    Thanks for the clarification. I had interpreted that statement as implying I needed to access it via dot notation, i.e. CustomObject__c.Edit, but it's clear now :) Commented Aug 21, 2013 at 0:47
  • So to download just the action overrides of the Case object, I need to download the entire Case object?
    – tggagne
    Commented Feb 25, 2016 at 16:49
  • 1
    new to using metadata API here. The API docs seem to describe how the retrieve XML looks but not how the manifest needs to contain for the retrieve. Tried a few things, but no luck. Can you add some detail to your answer?
    – LVS
    Commented Jun 7, 2017 at 21:32

I maintain two repositories; one for the specific things we need from standard objects (like listviews, recordtypes, customfields) and another repo where we grab the entire object but remove the tags we don't want with the script below (I run it on OSX but it works just as well on git-bash).


for file in src/objects/*.object; do
    echo fixing "$file"
    ex -s \
        +'g/<businessProcesses>/,/<\/businessProcesses>/d' \
        +'g/<compactLayouts>/,/<\/compactLayouts>/d' \
        +'g/<fieldSets>/,/<\/fieldSets>/d' \
        +'g/<listViews>/,/<\/listViews>/d' \
        +'g/<recordTypes>/,/<\/recordTypes>/d' \
        +'g/<validationRules>/,/<\/validationRules>/d' \
        +'g/<webLinks>/,/<\/webLinks>/d' \
        +'g/<fields>/,/<\/fields>/d' \
        +'wq' \

We push the first one (specific) with our deploys, then deploy the second because it doesn't require running unit tests.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .