I have a mangaged package that has seen a lot of updates over time. Some parts have become redundant and aren't used at all anymore. However, with SFDC's rules about managed packages, many of these can't be removed. So, they end up sitting there, doing nothing, release after release.

At one point, before security review, I painstakingly manually moved all the code over to a new org just to be able to get rid of some of these. However, now that my package is through review I can't really do that.

Are there any options for removing parts of a package that are no longer being used but cannot normally be removed - or at least some sort of best practice around this unfortunate occurrence?

  • 1
    Even if you could move it to a new org after a security review, doing so would break the ability for users to upgrade from your old package to the new package you create in the new org. Aug 12 '12 at 1:29
  • Up until it was bought by salesforce and became Data.com jigsaw contained two tabs that did absolutely nothing and were named something like (deprecated). If they couldn't get them removed I suspect there's not much the rest of us can do. Sep 1 '12 at 20:22

I've gone through this as well with my managed packages, DupeBlocker primarily. Unfortunately until we're able to remove custom tabs, objects, fields, etc... from a managed package the only thing we can really do is relabel them to make it obvious they're no longer in use. For example, when I replaced some custom Web Tabs with VisualForce tabs I relabeled the old tabs "Deprecated ". You can also remove any permissions from any profiles distributed with your managed package so that upon installation only people with the Administrator profile will be able to see them.

Custom objects that are no longer used can also be undeployed and custom tabs can be removed from any application they're a part of.

I also make it clear in my upgrade documentation any changes that need to be performed manually when upgrading that aren't handled automatically by the upgrade process. For instance, removing deprecated tabs from custom apps and replacing them with the new tabs, then over-writing personalization when saving the custom app.

Beyond that we basically need to wait for Salesforce to add that functionality.


We don't have many managed packages installed, but I just checked using an Informatica integration app and successfully removed a tab. I went to My Name -> Setup -> App Setup -> Create -> Apps and clicked the edit link for the app. From there I was able to remove their Integration tab. Perhaps other apps disable this, so YMMV.

Option 2: Remove permissions for the app or tabs. If you don't have permissions to the object it will not show in your UI. It won't really remove, but it could help declutter.

  • 1
    As a managed package author: there's no way for us (developers) to block removal of tabs from the apps that ship with packages. There's also no way to block setting tabs to hidden or creating new apps out of packaged tabs. Aug 12 '12 at 1:28

This is a common pain point for AppExchange app development/management. Although the following would hardly be considered a best practice, there is an option available to you but it requires getting salesforce support and your existing clients involved.

If you are able to get your existing clients to uninstall the current package, salesforce support can permit you to temporarily downgrade your package to beta in order to remove unwanted components. Then you can re-release it and your clients can re-install it.

Not very comforting I realize, but if you happened to have a small user base and could ask them to do this, then this is an option. Otherwise, an entirely new org with another namespace prefix is required.

  • We've done this before when we were temporarily testing (and had a return type in a web-service) that locked us into a feature set we weren't planning on supporting universally) gag. Aug 13 '12 at 18:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.