Friday, May 22, 2015

SalesForce Packaging for AppExchange

SalesForce support different package type so you can distribute your app to your customers. Here is summary of what we found:

Scenario Packaging
Unamanged
with/without namespace
Managed Beta Managed Released
Description
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.
More Information
Use to test and validate this package internally and with selected customers before release.
  • Note: this type of package can only be installed in Developer Edition, sandbox organizations, or testing organizations for registered partners
  • For a given managed package, for each version we can decide it to have it beta or released. Typically there would be multiple beta versions in between each release.
Use when you are ready to publish to Force.com AppExchange

More Information
Can Customer See your Source Code?
Yes
No
Namespace
Not required.
  • Even if namespace is added to Org which is publishing the App, it doesn't add it to customer.
  • From Scenario which were tested, it doesn't make any difference with namespace.
Required
Version Upgrade
Not supported.
  • Customer will need to uninstall and install the package
  • Customer will not be able to just reinstall (overlay) on top of old version
  • If customer code has reference to App code, then they will need to remove them before uninstall
Not supported.
  • Customer will need to uninstall and install the package
  • Customer will not be able to just reinstall (overlay) on top of old version
  • If customer code has reference to App code, then they will need to remove them before uninstall
Supported.
  • Customer will be able to just reinstall (overlay) on top of old version
  • If customer code has reference to App code, then they will not be required to change that.
  • "Push Upgrade Feature" feature is available to push the upgrade to customers More Information
Changes to the Code From App Publisher Org (APO)
Allowed.
  • Publisher Org (APO) have no limitation. APO can make any code change.
Restricted.
  • Publisher Org (APO) would have limitation on code changes
  • No signature changes on global methods allowed
  • Can not delete global classes
Customer Name Conflict
Fails.
  • If customer has same artifact name as the artifact name used in App, installation of package would fail.
Works.
  • Namespace are unique across SFDC, and App artifacts are in different namespace so no conflict occurs.
Customer Reference to App Code
No restriction.
  • Customer will be able to use, modify or delete the artifacts.
  • Reference to packaged code would be similar to any other code. e.g. ClassName.methodName
Restricted.
  • Customer will be only be able to use Class and Method which are declared "global" in Package.
  • Package publisher will need to define class and all the methods, and WS api to global if customer needs to consume them
  • Reference to packaged code would need to include namespace. e.g. Namespace.ClassName.methodName
Uninstall
Supported
  • Package can be uninstalled from Setup Console
  • If Customer has reference to Package artifacts, those must to be removed/de-referenced before uninstall
Supported
  • Package can be uninstalled from Setup Console
  • If Customer has reference to Package artifacts, those must to be removed/de-referenced before uninstall
Intra Upgrade
  • Unmanaged to Managed
  • Managed Beta to Managed Released
Not Applicable Not Supported
  • Unmanaged to Managed Beta
  • Customer will need to uninstall Unmanaged Package and install Managed Beta Package manually
Not Supported
  • Managed Beta to Managed Released
  • Customer will need to uninstall Managed Beta and install Managed Released Package manually(*)
* : Need to test further if there is any setting which might allow this.

No comments: