How ISVapp Maps Status and Seat Information From the LMA
Table of contents
There are three critical pieces of information that ISVapp automatically derives from the data in your License Management Application: the License status, contracted/sold (and used) seat count and expiration/renewal date.
For a refresher on the inner workings of the License Management Application, please refer to our LMA guide.
License and Account Status
An Account record in Salesforce can have multiple associated License records (via the Account lookup field on the License object). ISVapp looks at all License records of an Account in order to determine whether the Account should be considered "active". When ISVapp finds at least one of the Account's License records that fulfils all of the following criteria, it will be marked as active:
The License status is Active
The License is not expired, meaning the expiration date is either empty (does not expire) or lies in the future
The associated organization is not a Sandbox
The associated organization is active (i.e. has not been deleted by Salesforce)
The associated package is enabled for AppAnalytics
You can manually override the Account status at any time, directly from ISVapp, by navigating to an Account and using the Edit link right next to the status field. This override is only valid in ISVapp and does not affect the LMA status.
Here is an example of an Account with two License records that ISVapp will mark as Active because L-0001 meets all of the above rules:
License Name | Package | License Status | Expiration | Is Sandbox | Organization Status |
---|---|---|---|---|---|
L-0001 | Package A | Active | Does not expire | No | Active |
L-0002 | Package B | Uninstalled | Does not expire | No | Active |
This second Account is considered inactive because there is no License that meets all of the above rules. Specifically, L-0001 has expired and L-0002 has been suspended.
License Name | Package | License Status | Expiration | Is Sandbox | Organization Status |
---|---|---|---|---|---|
L-0001 | Package A | Active | 2020-05-25 | No | Active |
L-0002 | Package B | Suspended | Does not expire | No | Active |
Seat Count
LMA Refresher: The LMA can be used to specify the maximum number of available seats that your customers can assign to users in their organization. This is done via the Seats field, which can be either a positive number (capped number of assigned seats) or -1 (Site License - anyone can use the package).
Regardless of which option you choose, ISVapp will use the specified value to display the Seat Count information. If there is more than one active License for an Account, ISVapp selects the one with the highest Seat Count.
Some partners, for example, use Site Licenses but enforce the seat count contractually. If this applies to you or if you don't want to maintain seat counts on your license record, you can use ISVapp seat count overrides to pull in seat counts from a custom field on the account record.
External Seat Count
External users access your application from a Community / Experience Cloud application. They are a different user type and their ability to access your product cannot be controlled by the LMA. To make it easy to understand the level of external seats, ISVapp estimates this user category by determining the unique external access requests within the last three months. Similar to the above internal users, you can choose to override this value within ISVapp.
Expiration / Renewal Date
The Expiration Date field on the License Object defines "the last day that the customer can access your package" (see the official Salesforce guide). If left blank, the License will not expire. Similar to the Seat Counts, you can set up an override in ISVapp to provide an expiration date different from the one on the License record.
Further resources
Salesforce Documentation - Modifying a License Record: https://developer.salesforce.com/docs/atlas.en-us.workbook_lma.meta/workbook_lma/lma_edit_license.htm