A recent question had basically two different answers regarding the usage of features, which might not be available at the target org:
- Adress the feature in question in a soft way. E.g. use the schema describe to see if a feature or object is available in a particular Org.
- Build a base package, which can be installed everywhere (GE, PE, EE) and move the code, which deals with special features to an extension package.
We have always chosen route 1, which is more suitable for our customers (install only one package, a trial can be started right away after installation), but i'm intrigued by route 2.
I write down some questions, which do come to mind, when you are creating a base package plus numerous extensions:
- Which packages are listed at the App Exchange? Only the Base or also the Extensions?
- Which packages do receive a security review? The base package is an obvious answer, but what do you do with the extensions?
- How do you deal with per-user-licensing? Does a customer need to purchase licenses for the base package and each extension he is using?