
Andrew Hanna

Andrew Hanna

La gestion des versions sur les orgs abonnes consiste a savoir, a tout moment, quelle version de votre package gere chaque client execute, et a pouvoir l'en faire sortir. Salesforce fournit aux ISV la matiere premiere: 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 a la main, dans un tableur, et le paient en heures de support.
Ce sont trois taches distinctes repliees dans une seule expression:
La plupart des equipes ont une reponse approximative a la premiere, aucune reponse a la deuxieme, et un processus manuel pour la troisieme.
Parce que chaque ticket s'ouvre sur une question a laquelle le ticket ne repond pas. Avant de reproduire un bug, quelqu'un doit etablir sur quel build se trouve le client, si le correctif est deja livre, et si le comportement constitue un defaut ou un ecart de version. Repetez cela cent fois par mois et ce n'est plus une gene, 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 etre evalue contre les six avant que vous puissiez promettre quoi que ce soit. Reduire cette dispersion est l'action la plus rentable d'une fonction support ISV, et c'est precisement pour cela que les push upgrades existent.
Quatre chemins, chacun avec sa limite:
InstalledSubscriberPackageVersion est
deprecie et voue a etre supprime. N'y adossez pas une couche de reporting.
Aucun de ces chemins n'est un tableau de bord. C'est la le manque, et c'est pour cela que le tableur existe.
Pas par paresse. Les donnees vivent dans trois systemes qui ne se parlent pas: les licences dans le partner business org, les versions de package dans le Dev Hub, et l'historique reel des releases dans Git et votre pipeline. Les joindre est un petit projet d'integration interne qui ne gagne jamais un sprint face au travail client. Cela reste donc un tableur, quelqu'un le met a jour apres chaque release, et au troisieme 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 probleme de reporting interne deguise en probleme de packaging.
Les push upgrades font passer les orgs abonnes a une nouvelle version sans que le client installe quoi que ce soit, et vous choisissez quels orgs, quelle version et quand. Les contraintes a integrer au plan:
PushUpgradeCustomizationRepository dans votre packaging org 1GP ou
votre Dev Hub 2GP definit une fenetre d'expiration, apres laquelle Salesforce cesse
de reessayer.
Un push est un deploiement dans l'org de production de quelqu'un d'autre. Traitez-le comme tel: meme revue, meme plan de retour arriere, meme change record.
La plupart des plateformes de Salesforce DevOps, Copado, Gearset, AutoRABIT, Flosum et les autres, sont construites autour de la livraison org a org adossee a Git, et elles le font bien. La livraison de packages pour ISV est historiquement la moitie la plus mince de la categorie. C'est cette moitie autour de laquelle nous avons construit Serpent: workflows natifs 1GP, 2GP et managed package, resolution des dependances entre packages, gestion des versions sur les orgs abonnes et workflows de release AppExchange, sur tous les plans, y compris le plan gratuit.
Puis-je voir par defaut la version de chaque abonne au meme endroit?
Non. La LMA de votre partner business org contient les enregistrements de licence et de version, mais en faire un inventaire vivant joint a votre historique de releases est un travail qui vous revient.
Les push upgrades sont-ils surs pour les versions majeures?
Ils comportent plus de risque que les patchs, car une version majeure peut modifier un comportement dont depend un abonne. Testez d'abord dans vos orgs et dans les sandbox clients, puis deployez 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 reellement staffer, annoncez-le aux clients, et mesurez la dispersion par rapport a lui.
La LMA couvre-t-elle a la fois le 1GP et le 2GP?
Oui. Ses objets Package et Package Version portent les details de chaque package et version 1GP ou 2GP publie sur l'AppExchange.
Puis-je encore interroger InstalledSubscriberPackageVersion?
Il existe depuis la version 41.0 de l'API, mais Salesforce l'a marque deprecie et prevoit sa suppression. N'en faites pas une dependance.
La gestion des versions sur les orgs abonnes est ingrate, invisible pour les clients, et decide en silence de ce que coute votre support. Elle merite un pipeline, pas un tableur.
Sans engagement.