La direction de Cloud Kicks est très contente du développement des abonnements.
Cependant, l'équipe est très occupée avec la gestion manuelle des abonnements.
José demande à Linda s'il n'y a pas un moyen d'automatiser la gestion du cycle de vie des abonnements.
Linda, qui a déjà automatisé pas mal de processus, vérifie tout de suite s'il n'y a pas d'automatisations prévues à ce sujet.
Elle trouve rapidement ces informations dans la base de connaissances de Frisbii :
Automatisation - Articles | Class Apex planifiée | Méthode invocable |
SubscriptionAutoRenewal | Renew_Subscriptions | |
Activer des abonnements | SubscriptionAutoActivate | n/a |
Interrompre des abonnements | SubscriptionAutoTermination | n/a |
Terminer des abonnements | SubscriptionAutoEnd | n/a |
Génération des échéanciers de facture pour des abonnements | n/a | InvoicePlan_Subscriptions |
Elle commence par la configuration du renouvellement automatique des abonnements et elle choisit entre les deux possibilités de configuration.
Planification d'une tâche Apex
Soit Linda planifie la tâche Apex en utilisant la classe SubscriptionAutoRenewal.
Passant par cette configuration, la tâche va renouveler les abonnements qui rentrent dans les conditions à une heure et un jour précis régulièrement.
Les conditions de déclenchement sur l'abonnement
Afin de créer un avenant de renouvellement sur un abonnement, il faut vérifier d'abord si :
L'abonnement est activé.
L'abonnement devrait être renouvelé (conditions contractualisées avec le client, par exemple : date du jour = 1 mois avant la fin de l'abonnement).
Le client a autorisé le renouvellement.
Attention : Ajustez ces conditions à votre besoin ou au besoin spécifique de votre client.
Configurer le champ nécessaire pour la tâche planifiée
Si vous voulez planifier une tâche Apex par la suite, il faut créer un champ formule prenant en compte ces conditions.
Procédure
1. Allez dans Configuration > Gestionnaire d'objet > Abonnement.
2. Cliquez sur Champs et relations.
3. Cliquez sur le bouton Nouveau.
4. Dans l'Étape 1, choisissez le type de données Formule.
5. Dans l'Étape 2, choisissez le type de sortie Case à cocher et renseignez Auto renouvellement condition.
6. Dans l'Étape 3, basculez sur Formule avancée et composez une formule adaptée à votre besoin. Exemple :
AND (ADDMONTHS(sofactoapp__Fin_periode_facturation__c,-1)<=TODAY(),
sofactoapp__Ne_pas_renouveler__c = FALSE,
sofactoapp__Tacite_reconduction__c = true,
ISPICKVAL(sofactoapp__Statut__c, "Activé"))
Attention : Si vous copiez la formule précisée dans cet article, copiez-la d'abord dans un éditeur de texte qui enlève toute la mise en forme. L'éditeur de formule ne va probablement pas accepter un copier-coller directement à partir de cet article.
7. Vérifiez la syntaxe.
8. Donnez une description et un texte d'aide significatifs.
9. Dans l'Étape 4, gérez la sécurité de ce champ en cochant les cases correspondantes aux profils, selon les règles de votre entreprise. Vous pouvez sinon porter ces droits sur des ensembles d'autorisations.
10. Décochez la case pour ajouter le champ automatiquement sur la présentation de page, afin de mieux placer manuellement le champ créé par la suite.
11. N'oubliez pas de traduire ce champ ainsi que son texte d'aide si plusieurs langues sont utilisées dans cet environnement Salesforce.
Voici le résultat de Linda :
Champ de contrôle dans le panneau d’Administration
Afin de planifier la tâche Apex par la suite, nous allons sélectionner la condition qui doit être prise en compte par la classe Apex dans le panneau d'Administration.
Procédure
1. Allez dans le lanceur d'application.
2. Tapez Administration dans la recherche.
3. Ouvrez le panneau d'Administration Frisbii.
4. Choisissez Auto renouvellement condition comme Champ de contrôle pour renouvellement auto des abonnements.
5. Enregistrez en cliquant sur le bouton Valider.
Planifier la classe Apex
Si vous voulez que le processus de génération des factures soit lancé à une certaine heure, il faut passer par une Classe Apex planifiée.
Voici la procédure de Salesforce pour la Planification de tâches Apex.
Procédure
1. Allez dans Configuration > Code personnalisé > Classes Apex.
2. Cliquez sur le bouton Planifier Apex.
3. Renseignez un Nom de tâche.
4. Renseignez la Classe Apex SubscriptionAutoRenewal.
5. Configurez la Fréquence et le Début ainsi que l'Heure de début souhaitée.
6. Pour la date de Fin, saisissez une date lointaine dans le futur afin d'éviter que le processus ne s'arrête trop tôt.
7. Cliquez ensuite sur le bouton Enregistrer.
Remarque : La tâche planifiée est ensuite visible dans Configuration > Environnements > Tâches > Tâches prévues.
Pour la modifier, il faut la supprimer et la planifier à nouveau.
Test de l'automatisation
Suite à la configuration, n'oublions pas de tester notre processus dans une sandbox.
Préparation
D'abord, assurez-vous que vous avez un abonnement à votre disposition qui remplit les critères.
Par exemple, dans le cas de Cloud Kicks :
L'abonnement est activé > Statut = Activé.
L'abonnement devrait être renouvelé > Ne pas renouveler n'est pas coché.
La date de fin est dans un mois ou moins > Date de fin - 1 mois ≤ aujourd'hui.
Le client est d'accord avec le renouvellement automatique > Tacite reconduction est coché.
... et que vous avez bien ajouté le champ Auto renouvellement condition dans votre présentation de page.
Procédure
1. Allez dans la Developer Console.
2. Dans le menu Debug > Open Execute Anonymous Window.
3. Dans la fenêtre Enter Apex Code, collez cette expression :
// String CRON_EXP = ‘ss mm hh dd MM ? AAAA’;
String CRON_EXP = '00 18 10 14 07 ? 2020';
String lv_jobId = System.schedule(
'SubscriptionAutoRenewal'+Datetime.now(),
CRON_EXP,
new sofactoapp.SubscriptionAutoRenewal()
);
4. Mettez la date et l'heure dans une minute (le format est expliqué sur la première ligne, il commence par les secondes, puis les minutes, les heures, le jour, le mois et l'année).
Exemple : s'il est 10h17 chez vous, mettez 00 18 10. Cela vous laisse 1minute pour le déclenchement de l'automatisation. Attention au format qui est inversé (minutes et heures).
5. Cliquez sur le bouton Execute pour lancer le script.
Le test est-il réussi ?
Le test est réussi si :
Un avenant de type renouvellement est créé et est lié à votre abonnement.
La date "fin période de facturation" a été repoussée dans le futur (par défaut d'un mois).
Ceci n'est pas le cas ?
Vérifiez :
Les conditions de votre champ :
Auto renouvellement condition
Sur votre abonnement de test, est ce que :
La case Auto renouvellement condition est bien cochée ?
Non ? > Comparez l'abonnement avec les conditions définies auparavant.
Dans le panneau d'Administration, vous avez bien mis la condition ?
Revérifiez la procédure.
Le test de l'automatisation en passant par la classe Apex a bien fonctionné.