• Accueil / Salesforce / Remplir automatiquement les…
, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Remplir automatiquement les bacs à sable Salesforce avec des exemples d’enregistrements3 minutes de lecture


Les bacs à sable sont fréquemment utilisés par toute personne utilisant la plate-forme Salesforce pour valider les modifications, garantissant qu’aucune interruption de la configuration existante ne se produira. Tout le monde veut éviter les mauvaises surprises à tout prix, c’est pourquoi vous devez simuler les données qui existent dans votre organisation (appelées amorçage sandbox).

Il existe différents types de sandbox Salesforce, certains qui imitent l’ensemble de votre organisation, jusqu’à des organisations sans aucune ressemblance. Les bacs à sable pour développeurs ne sont pas fournis avec des exemples d’enregistrements ; Cependant, lorsque vous créez ou actualisez un bac à sable, il existe une option pour exécuter une classe Apex qui ajoute des exemples de données.

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Souhaitez-vous que vos nouveaux bacs à sable pour développeurs émergent, entièrement prêts, configurés et regorgent d’exemples de données comme ceci :

Dans ce guide, je vais vous montrer comment.

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

L’interface SandboxPostCopy

Ne cherchez pas plus loin… Les bacs à sable pour développeurs ne sont pas fournis avec des exemples d’enregistrements ; cependant, lorsque vous créez ou actualisez un bac à sable, il existe une option pour exécuter une classe Apex implémentant l’interface SandboxPostCopy.

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Utilisons cette fonctionnalité pour remplir automatiquement de nouveaux bacs à sable avec des exemples d’enregistrements.

Exemple pratique 🙌

Sans plus tarder, passons directement au présent. Notre exemple simple créera 50 comptes et 300 contacts associés lors de l’actualisation du bac à sable.

1. Créez un bac à sable :

La condition préalable est que vous devez avoir une organisation Enterprise Edition. Selon les bonnes habitudes, ne bricolez pas dans la production. Au lieu de cela, créez rapidement un bac à sable, dites « Dev1 » et connectez-vous à Dev1.

2. Téléchargez des fichiers CSV :

Téléchargez ces deux CSV de exemples de comptes et exemple de contacts

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

… et téléchargez-les dans les ressources statiques en tant que Compte_csv et Contact_csv

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

J’ai utilisé Mockaroo pour créer les fichiers ci-dessus. [Read about it here].

3. Écrivez une classe Apex :

global class PrepareMySandbox implements SandboxPostCopy {
global void runApexClass(SandboxContext context) {
/*
* Insert sample Accounts
*/
StaticResource accountStaticResource = [select Body from StaticResource
where Name = 'Account_csv'];
String accountCsv = accountStaticResource.Body.toString();
Account[] accountList = new Account[] {};
for(String row : accountCsv.split('n')) {
String[] column = row.split(',');
accountList.add(new Account(
Name = column[0],
BillingState = column[1],
Phone = column[2],
Type = column[3]
));
}
insert accountList;
/*
* Use a Map to avoid creating an unnecessary External ID field on Account
*/
Map accountMap = new Map();
for (Account acc : accountList) {
accountMap.put(acc.Name, acc.Id);
}
/*
* Insert related Contacts
*/
StaticResource contactStaticResource = [select Body from StaticResource
where Name = 'Contact_csv'];
String contactCsv = contactStaticResource.Body.toString();
Contact[] contactList = new Contact[] {};
for(String row : contactCsv.split('n')) {
String[] column = row.split(',');
contactList.add(new Contact(
FirstName = column[0],
LastName = column[1],
AccountId = accountMap.get(column[2]),
Title = column[3],
Phone = column[4],
Email = column[5]
));
}
insert contactList;
}
}

4. Écrivez une classe de test :

@isTest class PrepareMySandboxTest {
@isTest static void testMySandboxPrep() {
Test.startTest();
Test.testSandboxPostCopyScript(
new PrepareMySandbox(),
UserInfo.getOrganizationId(),
UserInfo.getOrganizationId(),
UserInfo.getOrganizationName()
);
Test.stopTest();
System.assertEquals(50, [select count() from Account]);
System.assertEquals(300, [select count() from Contact
where AccountId  null]);
}
}
, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

5. Déployer en production :

Ensemble de modifications sortantes dans Dev1 Sandbox :

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Ensemble de modifications entrantes en production :

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

6. Enfin, testez-le en créant ou en actualisant un bac à sable ♻️

Maintenant que tout est en production, nous pouvons enfin le tester en créant simplement un bac à sable, disons Dev2.

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

N’oubliez pas la classe Apex :

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Et voilà ! Exemples de comptes et de contacts associés dans Dev2 : les choses peuvent-elles être plus simples ?

, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>
, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>

Sommaire

C’est un excellent moyen de remplir vos sandbox avec des données. Cependant, il y a quelques considérations à garder à l’esprit :

  • Attention aux limites de temps d’exécution. Conserver dans un nombre raisonnable d’enregistrements.
  • Méfiez-vous des données sales. Vous avez un contrôle total sur les CSV ; il ne s’agit pas d’une entrée utilisateur. Désinfectez les CSV et évitez la gestion des exceptions Apex inutiles et redondantes.
  • Attention au décalage des données. Dispersez les enregistrements enfants de manière égale parmi les enregistrements parents.
  • Faites attention au caractère de fin de ligne dans Mockaroo. J’ai utilisé Unix (LF), qui est la valeur par défaut de Mockaroo, j’ai donc divisé mes lignes en utilisant split(‘n’). L’autre option est Windows (CRLF), donc split(‘rn’).
, Remplir automatiquement les bacs à sable Salesforce avec des exemples d&rsquo;enregistrements<span class="wtr-time-wrap after-title"><span class="wtr-time-number">3</span> minutes de lecture</span>
  • Faites attention à la case à cocher de la ligne d’en-tête lors du téléchargement depuis Mockaroo. Je le décoche.

Le chargement de données est un exemple de ce que nous pouvons réaliser en utilisant SandboxPostCopy. Avec un peu de créativité, d’autres peuvent être automatisés lors d’une actualisation, comme :

  • Obfuscation ou suppression de champs sensibles dans des bacs à sable complets (bien que, si cela est nécessaire pour un grand nombre de champs, vous souhaiterez peut-être acheter les Masque de données module complémentaire ou une solution AppExchange).
  • Mise à jour des enregistrements spécifiques à l’organisation dans les types de métadonnées personnalisés ou dans les paramètres personnalisés.

Références

  1. Référence SandboxPostCopy
  2. Création de données factices dans Salesforce
  3. Inclinaison des données dans Salesforce – Pourquoi c’est important



Source de l’article traduit automatiquement en Français

Besoin d'aide ?
Vous utilisez Pardot depuis un certain temps mais vous n'êtes pas sûr d'en
exploiter tout le potentiel

Notre analyse de votre Pardot offerte dès aujourd'hui
Merci, vous pouvez compléter notre questionnaire
Nous allons revenir vers vous rapidement !

Fermer