
Andrew Hanna

Andrew Hanna

La gestion des versions sur les orgs abonnés consiste à savoir, à tout moment, quelle version de votre package géré chaque client exécute, et à pouvoir l'en faire sortir. Salesforce fournit aux ISV la matière première: la License Management App, la Subscriber Support Console, les push upgrades. Ce qu'il ne fournit pas, c'est un inventaire vivant. La plupart des ISV le tiennent donc à la main, dans un tableur, et le paient en heures de support.
Ce sont trois tâches distinctes repliées dans une seule expression:
La plupart des équipes ont une réponse approximative à la première, aucune réponse à la deuxième, et un processus manuel pour la troisième.
Parce que chaque ticket s'ouvre sur une question à laquelle le ticket ne répond pas. Avant de reproduire un bug, quelqu'un doit établir sur quel build se trouve le client, si le correctif est déjà livré, et si le comportement constitue un défaut ou un écart de version. Répétez cela cent fois par mois et ce n'est plus une gêne, c'est un poste.
C'est la dispersion qui s'accumule. Deux versions en production, c'est une branche. Six, c'est une matrice de support, et chaque correctif entrant doit être évalué contre les six avant que vous puissiez promettre quoi que ce soit. Réduire cette dispersion est l'action la plus rentable d'une fonction support ISV, et c'est précisément pour cela que les push upgrades existent.
Quatre chemins, chacun avec sa limite:
InstalledSubscriberPackageVersion est
déprécié et voué à être supprimé. N'y adossez pas une couche de reporting.
Aucun de ces chemins n'est un tableau de bord. C'est là le manque, et c'est pour cela que le tableur existe.
Pas par paresse. Les données vivent dans trois systèmes qui ne se parlent pas: les licences dans le partner business org, les versions de package dans le Dev Hub, et l'historique réel des releases dans Git et votre pipeline. Les joindre est un petit projet d'intégration interne qui ne gagne jamais un sprint face au travail client. Cela reste donc un tableur, quelqu'un le met à jour après chaque release, et au troisième trimestre plus personne ne s'y fie vraiment.
Notez ce qui n'y figure pas: quoi que ce soit que vos clients doivent apprendre. C'est un problème de reporting interne déguisé en problème de packaging.
Les push upgrades font passer les orgs abonnés à une nouvelle version sans que le client installe quoi que ce soit, et vous choisissez quels orgs, quelle version et quand. Les contraintes à intégrer au plan:
PushUpgradeCustomizationRepository dans votre packaging org 1GP ou
votre Dev Hub 2GP définit une fenêtre d'expiration, après laquelle Salesforce cesse
de réessayer.
Un push est un déploiement dans l'org de production de quelqu'un d'autre. Traitez-le comme tel: même revue, même plan de retour arrière, même change record.
La plupart des plateformes de Salesforce DevOps, Copado, Gearset, AutoRABIT, Flosum et les autres, sont construites autour de la livraison org à org adossée à Git, et elles le font bien. La livraison de packages pour ISV est historiquement la moitié la plus mince de la catégorie. C'est cette moitié autour de laquelle nous avons construit Serpent: workflows natifs 1GP, 2GP et managed package, résolution des dépendances entre packages, gestion des versions sur les orgs abonnés et workflows de release AppExchange, sur tous les plans, y compris le plan gratuit.
Puis-je voir par défaut la version de chaque abonné au même endroit?
Non. La LMA de votre partner business org contient les enregistrements de licence et de version, mais en faire un inventaire vivant joint à votre historique de releases est un travail qui vous revient.
Les push upgrades sont-ils sûrs pour les versions majeures?
Ils comportent plus de risque que les patchs, car une version majeure peut modifier un comportement dont dépend un abonné. Testez d'abord dans vos orgs et dans les sandbox clients, puis déployez par petits lots.
Combien de versions en production un ISV doit-il supporter?
Salesforce ne fixe aucun nombre. Choisissez un plancher de support que vous pouvez réellement staffer, annoncez-le aux clients, et mesurez la dispersion par rapport à lui.
La LMA couvre-t-elle à la fois le 1GP et le 2GP?
Oui. Ses objets Package et Package Version portent les détails de chaque package et version 1GP ou 2GP publié sur l'AppExchange.
Puis-je encore interroger InstalledSubscriberPackageVersion?
Il existe depuis la version 41.0 de l'API, mais Salesforce l'a marqué déprécié et prévoit sa suppression. N'en faites pas une dépendance.
La gestion des versions sur les orgs abonnés est ingrate, invisible pour les clients, et décide en silence de ce que coûte votre support. Elle mérite un pipeline, pas un tableur.
Sans engagement.