
Andrew Hanna

Andrew Hanna

Version management across subscriber orgs means knowing, at any moment, which version of your managed package each customer is running, and being able to move them off it. Salesforce hands ISVs the raw materials for that job: the License Management App, the Subscriber Support Console, push upgrades. What it does not hand you is a running inventory. So most ISVs keep one by hand, in a spreadsheet, and pay for it in support hours.
It is three separate jobs collapsed into one phrase:
Most teams have a rough answer to the first, no answer to the second, and a manual process for the third.
Because every ticket opens with a question the ticket cannot answer. Before anyone reproduces a bug, someone has to establish which build the customer is on, whether the fix already shipped, and whether the behaviour is a defect or a version gap. Do that a hundred times a month and it stops being a nuisance and starts being headcount.
The spread is what compounds. Two live versions is a branch. Six is a support matrix, and every incoming fix has to be assessed against all six before you can promise anything. Collapsing that spread is the highest-leverage move an ISV support function can make, and it is why push upgrades exist in the first place.
Four routes, each with a catch:
InstalledSubscriberPackageVersion is
deprecated and slated for removal, so do not build a reporting layer on it.
None of these is a dashboard. That is the gap, and why the spreadsheet exists.
Not laziness. The data sits in three systems that do not talk to each other: licences in the partner business org, package versions in the Dev Hub, and the actual release history in Git and your pipeline. Joining them is a small internal integration project that never wins a sprint against customer-facing work. So it stays a spreadsheet, someone updates it after each release, and by the third quarter nobody quite trusts it.
Note what is not on that list: anything your customers have to learn. This is an internal reporting problem wearing a packaging problem as a disguise.
Push upgrades move subscriber orgs to a new version without the customer installing anything, and you choose which orgs, which version and when. The constraints worth planning around:
PushUpgradeCustomizationRepository record in your 1GP packaging org or
2GP Dev Hub sets an expiration window, after which Salesforce stops retrying.
A push is a deployment into somebody else's production org. Treat it like one: same review, same rollback plan, same change record.
Most Salesforce DevOps platforms, Copado, Gearset, AutoRABIT, Flosum and the rest, are built around org-to-org and Git-backed delivery, and they do that well. Package delivery for ISVs has historically been the thinner half of the category. That is the half we built Serpent around: native 1GP, 2GP and managed-package workflows, cross-package dependency resolution, version management across subscriber orgs and AppExchange release workflows, on every plan including the free one.
Can I see every subscriber's package version in one place by default?
No. The LMA in your partner business org holds licence and package version records, but turning that into a live inventory joined to your release history is work you have to do.
Are push upgrades safe for major versions?
They carry more risk than patches, because a major version can change behaviour a subscriber depends on. Test in your own orgs and in customer sandboxes first, then roll out in small batches.
How many live versions should an ISV support?
Salesforce sets no number. Pick a support floor you can actually staff, publish it to customers, and measure the spread against it.
Does the LMA cover both 1GP and 2GP?
Yes. Its Package and Package Version objects carry details for each 1GP or 2GP package and version you have listed on AppExchange.
Can I still query InstalledSubscriberPackageVersion?
It exists from API version 41.0, but Salesforce has marked it deprecated and slated for removal. Do not make it a dependency.
Version management across subscriber orgs is unglamorous, invisible to customers, and quietly decides what your support function costs. It deserves a pipeline, not a spreadsheet.
Commitment free!