« DupeCatcher adds Override and Custom Field features | Main | A cash prize? I like it. »

Managed vs Unmanaged

In attempting to explain managed and unmanaged packages to some non-developer types in my office, I found a great definition on in the learning center that puts it in simple enough language for all to grasp.  See what you think.


First-a quick glossary of terms:



A component is one constituent part of a package. It defines an item, such as a custom object or a custom field. You can combine components in a package to produce powerful features or applications. In an unmanaged package, components are not upgradeable. In a managed package, some components can be upgraded while others cannot.



An attribute is a field on a component, such as the name of an email template or the Allow Reports checkbox on a custom object. On a non-upgradeable component in either an unmanaged or managed package, attributes are editable by both the developer (the one who created the package) and the subscriber (the one who installed the package). On an upgradeable component in a managed package, some attributes can be edited by the developer, some can be edited by the subscriber, and some are locked, meaning they cannot be edited by either the developer or subscriber.


Second-Packages come in two forms--managed and unmanaged. 



Unmanaged packages are typically used to distribute open-source projects or application templates to provide developers with the basic building blocks for an application. Once the components are installed from an unmanaged package, the components can be edited in the organization they are installed in. The developer who created and uploaded the unmanaged package has no control over the installed components, and can't change or upgrade them. Unmanaged packages should not be used to migrate components from a sandbox to production organization. Instead, use “Change Sets” in the Salesforce online help.



Managed packages are typically used by partners to distribute and sell applications to customers. These packages must be created from a Developer Edition organization. Using the AppExchange and the License Management Application (LMA), developers can sell and manage user-based licenses to the app. Managed packages are also fully upgradeable.To ensure seamless upgrades, certain destructive changes, like removing objects or fields, can not be performed.

Managed packages also offer the following benefits:

• Intellectual property protection for Apex

• Built-in versioning support for API accessible components

• Remote access support (OAuth)

• The ability to branch and patch a previous version

• The ability to seamlessly push patch updates to subscribers

• Unique naming of all components to ensure conflict-free installs

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (1)

Can you expand a bit on the "Remote access support (OAuth)" of managed packages or provide a link? I'm looking for a way to examine the logs from a deployed managed package.


January 11, 2012 | Unregistered CommenterDaniel Ballinger

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
All HTML will be escaped. Hyperlinks will be created for URLs automatically.