[SalesForce] Apex permission error while installing managed package in professional edition

I have built managed package using developer’s edition.
I am using APEX code, classes and triggers in the package to handle certain things.

I have uploaded package as managed-released. The upload was successful.
I then tried installing the package in my Salesforce Professional edition.
I did get below error while installing:

Your request to install package “Package name” was unsuccessful. None
of the data or setup information in your salesforce.com organization
was affected. If your install continues to fail, contact Salesforce
CRM Support through your normal channels and provide the following
information. Problem:

  1. Apex Classes(classes/PhoneNumberFormatTestClass.cls-meta.xml) Missing feature Installing this package requires the following feature
    and its associated permissions: Apex Classes
  2. Apex Triggers(triggers/FormatPhoneNumberForLead.trigger-meta.xml) Missing feature Installing this package requires the following feature
    and its associated permissions: Apex Triggers

When I contacted Salesforce they said:

There are no limitations around apex and professional edition. There
is no restriction on using apex if you start out with an unmanaged
package, however the issue is with distribution. You cannot
distribute an unmanaged package through the appexchange. There is no
rev share implications.

From what I see in their answer the package should work in my Professional edition.

Does anyone know or suspect why I cannot install the package?

Best Answer

As per the Salesforce documentation,

You must be an eligible partner with salesforce.com and your app has to pass the security review. The appropriate permissions will automatically be enabled after you pass the security review.

Also, here are some important considerations for using Apex in GE/PE.

  • GE/PE customers can’t create or modify Apex in your app; they can only run the existing Apex.
  • Your Apex code should not depend on features and functionality that exist only in DE, EE, UE, or PXE, or your app will fail to install.
  • Make sure to use REST if you plan to expose an Apex method as a Web service. Apex classes that have been exposed as a SOAP Web service can’t be invoked from an external web app in GE/PE.
  • Using Apex to make Web service callouts is allowed in GE/PE. For instance, if you’re planning to make a Web service callout to an external Web service, as long as the managed package is authorized, these classes will function in GE/PE.
Related Topic