Using the Salesforce Feature Management Application (FMA)
Table of contents
The Salesforce Feature Management Application (FMA) is a standard Salesforce functionality that allows you to send simple data points from your managed package to your License Management Organization (LMO) and vice versa. The LMO is the organization where the License Manage App (LMA) is installed and is most likely the same organization as you Parter Business Organisation (PBO).
ISVapp integrates with your LMO's Feature Management Application (FMA) and allows you to use any custom metrics that you maintain in ISVapp.
The necessary functionality can be implemented with standard Salesforce Apex code and without the need for a Remote Site Setting or an external API.
When implementing Feature Management, please ensure that you follow the official Salesforce guides and best practices. Detailed documentation regarding Feature Management can be found here.
Getting started with the FMA
Please log a case in the Partner Community and request access to the FMA. You will recieve an install link via email to install the FMA package in your LMO. See here.
To get started with Feature Management you will need to configure the type of data that you want to share between your managed package and your LMO.
You can achieve this by creating "Feature Parameters". A Feature Parameter is specified in your managed package and will later be reflected as a custom object record in your LMO. Each record represents a data point that you sync between your LMO and your subscribers.
Feature Parameter Limitations
The FMA comes with a set of limitations regarding the amount and type of data that you can share:
Only Boolean, Integer or Date types
Each package is limited to a maximum of 25 Feature Parameters
Feature Parameters are one way only: either LMO-to-subscribers or subscribers-to-LMO
Apex-triggered changes of Feature Parameters in subscriber organizations may take up to 24 hours to reach your LMO
How-To: Report on File Storage
In this tutorial, we will cover the use case of monitoring the usage of file storage of your subscribers:
Add a Feature Parameter to your managed package
For 1st generation packages, follow the official documentation here and create an Integer Feature Parameter with the data flow direction SubscriberToLmo.
For 2nd generation packaging, create the metadata file UsedFileStorage.featureParameterInteger-meta.xml in your package directory at main/default/featureParameters and add the following content:
You can find more Feature Parameter examples here.
Update Feature Parameters in your managed package
Include the following code in your package to update file storage usage of your subscribers:
For example, if you add this as part of a daily scheduled job, this will result in daily updates on file storage usage for each of your subscribers.
More useful KPIs
Repeat above steps to create multiple Feature Parameters for other useful KPIs:
File Storage Limit
Integer limitFileStorage = OrgLimits.getMap().get('FileStorageMB').getLimit();
Date Storage Usage
Integer usedDataStorage = OrgLimits.getMap().get('DataStorageMB').getValue();
Data Storage Limit
Integer limitDataStorage = OrgLimits.getMap().get('DataStorageMB').getLimit();
View Feature Parameter Results
Once you have released and installed a new package version in a subscriber org, Feature Parameter values will be automatically updated in your LMO. You can view the values of Integer Feature Parameters for each of your subscribers in another custom object table called sfFma__FeatureParameterInteger__c.
ISVapp will automatically sync any Feature Parameter Values tracked in your LMO.