Installed package

How to interact with Salesforce Marketing Cloud API by creating an Installed package. Let’s get started

1.First log in to Marketing Cloud and go to Setup (to be found under your username, as per the image below)

2. Under Platform tools, expand the Apps section and click on Installed Packages, then click on New.

3. Name the package, enter the Description and Save

4.  You will see the Package Details below after the package is saved. Then click on Add Component.

5. Select a Component Type. For our interacting purposes, select API Integration.

6.Select Server to Server and click on Next

7. Click on Add component and set up the package permissions

8. Select just the permissions you need according to your use case to perform the REST API call.

For more details about permissions check out this

In your case you will use this permission:

For interacting purposes, we choose Read access for “Documents and Images, Audiences, List and Subscriber, Email and Data Extension” then click on “save”.

After saving, you will see the page below

Note: Client Id and Client Secret are the keys to access your Marketing Cloud, you should store them securely. Never put them public on the client-side.

Once this is done, you have all information your need to get the token which enables to interact with Marketing Cloud and other systems using RESP API. You can do a test call by using your preferred developer tool such as Postman tool.

I wish you a better year!

Live with pleasure 😊


How to create a PDF page

Hello everyone!

Today we will learn how to create a PDF page in Salesforce!
Imagine for a minute that, after choosing Salesforce to better manage your business, your HR  Dpt needs to extract a candidate’s information as a PDF. Knowing it is not part of the standard functionality of Salesforce, how will you do?
We will proceed in two steps
1) Creation of a Visualforce page
2) Creation of static resource page

This is your Applicant detail page


Here your PDF page you wish to have!

1) Creation of a Visualforce page

<apex:page standardController = ″Applicant__c″ RENDerAs = ″PDF″ >

<apex:image id=″popo″ value = ″{!$Resource.toto}″ width = ″100″ /><br/><br/>

<apex:stylesheet value = ″{!$Resource.logo}″/>

<apex:form >

<apex:pageBlock >

<!– Fields –>
<h2> Détails Applicant</h2>


<apex:pageBlockSection columns =″1″ >
{!Applicant__c.Profile__c} &nbsp;&nbsp; <br/><br/>
<b>Address:</b> {!Applicant__c.Address__c} &nbsp;&nbsp; <br/><br/>
<b>Phone:</b> {!Applicant__c.Phone__c} &nbsp;&nbsp;<br/><br/>

<b>Nom:</b> {!Applicant__c.Name} &nbsp;&nbsp; <br/><br/>

<b>Salary Requirements:</b> {!Applicant__c.Salary_Requirements__c} &nbsp;&nbsp; <br/>

<th>Product Manager </th>
<th> Consultant </th>
<td>{!Applicant__c.second_experience__c }</td>

<td> {!Applicant__c.First_Experience__c }</td>



<apex:pageBlockSection columns = ″1″ showHeader = ″true″ >

<b> Previous Experience: </b> {!Applicant__c.Previous_Experience__c }<br/>
<b> Education: </b> {!Applicant__c.Education__c}&nbsp;&nbsp;<br/>
<apex:pageBlockSection columns = ″4″ showHeader = ″true″ >
<b>Languages:</b> {!Applicant__c.Languages__c} <br/>
<b>Interests:</b> {!Applicant__c.Interests__c}


2) Creation of static resource page

For the beautiful look at your page PDF, create resource static!

body { font-family: Arial Unicode MS;background-color:Aqua;}

h1 { color:Maroon;}
h2 {text-align: center; margin: 0; font-size: 1.5em; font-weight: normal;background-color:Maroon; color:white;}

After do the two steps, you will obtain your PDF page and add your visualforce page in bouton impression.

Automate Audience Segmentation /Automatiser la segmentation d’audience

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Describe two ways you can automate segmentation. /Décrire deux manières d’automatiser la segmentation
  • Automate segmentation with a filter activity. /Automatiser la segmentation à l’aide d’une activité de filtrage

The Main Event /Le nerf de la guerre

Automation is what it’s all about. As your marketing efforts grow, you have to scale up in a way that saves time, money, staff time, and resources. Automation does just that. It’s likely why you’d acquire a product like Marketing Cloud to begin with. /De nos jours, tout repose sur l’automatisation. Plus vos initiatives marketing se développent, plus vous devez évoluer de manière à économiser du temps, de l’argent, du temps, du personnel et des ressources. C’est justement ce que permet l’automatisation. Il est probable que vous commenciez par acquérir un produit tel que Marketing Cloud.

There are several ways you can automate segmentation in Marketing Cloud: filter activities, query activities, and Audience Builder. We focus on filter activities, since they are the most common way to segment an audience. /Marketing Cloud vous permet d’automatiser la segmentation de plusieurs manières, par le biais d’activités de filtrage, d’activités de requête et d’Audience Builder. Nous nous concentrerons ici sur les activités de filtrage, car elles constituent le moyen le plus courant de segmenter une audience.

Creating a Filter Activity /Création d’une activité de filtrage

Automating segmentation with a filter activity is a two-step process: First you define which filter is used—the filter activity. Then you schedule the filter activity to run—the automation. That comes in handy when you have a large number of customer transactions or interactions each day. /L’automatisation de la segmentation à l’aide d’une activité de filtrage est un processus en deux étapes : vous devez tout d’abord définir le filtre utilisé, c’est-à-dire paramétrer l’activité de filtrage. Ensuite, vous programmez cette activité pour qu’elle s’exécute automatiquement : c’est l’automatisation. Il s’agit d’un outil très utile lorsque vous effectuez chaque jour un grand nombre de transactions ou d’interactions avec vos clients.

Paulo created a data filter for his new Northern Trail Outfitters birthday campaign. Here’s how he creates a filter activity that applies the data filter. /Paulo a créé un filtre de données pour sa nouvelle campagne d’anniversaire Northern Trail Outfitters. Voici comment il crée une activité de filtrage qui applique le filtre de données.

  1. Hover over the Salesforce blue cloud to display the main Marketing Cloud navigation bar. /Passez votre souris sur le nuage bleu Salesforce pour afficher la barre de navigation principale de Marketing Cloud.
  2. Hover over Journey Builder. /Passez votre souris sur Journey Builder.
  3. Select Automation Studio. /Sélectionnez Automation Studio.
  4. Click Activities. /Cliquez sur Activités.
  5. Click Create Activity. /Cliquez sur Créer une activité.
  6. Select Filter. /Sélectionnez Filtre.
  7. Click Next. /Cliquez sur Suivant.
  8. Configure the filter activity properties. /Configurez les propriétés de l’activité de filtrage.
    • Name: Birthday of Today Filter Activity. /Nom : Activité de filtrage Anniversaire du jour.
    • External Key: Enter a key or leave this blank. /Clé externe : saisissez une clé ou laissez ce champ vide.
    • Description: Enter a description. /Description : Saisissez une description.
    • In the Filter Definition section, click the Data Filters folder and select the Birthday of Today data filter. /Dans la section Définition de filtre, cliquez sur le dossier Filtres de données et sélectionnez le filtre de données Anniversaire du jour.
  9. Click Next. /Cliquez sur Suivant.
  10. Configure the resulting data extension. /Configurez l’extension de données résultante.
    • Name: Weekly Promotion Birthday of Today. /Nom : Promotion hebdomadaire Anniversaire du jour.
    • External Key: Enter a key or leave this blank. /Clé externe : saisissez une clé ou laissez ce champ vide.
    • Description: Enter a description. /Description : Saisissez une description.
      • Note: This step creates the data extension that contains your filtered data. Each time the filter activity runs, the data refreshes to here. /Remarque : cette étape crée l’extension de données contenant vos données filtrées. À chaque fois que l’activité de filtrage est exécutée, les données dans l’extension sont actualisées.
  11. Click Next. /Cliquez sur Suivant.
  12. Click Finish. /Cliquez sur Terminer.

Check out this video to see creating the filter activity in action. /Regardez cette vidéo qui vous montre comment créer l’activité de filtrage.

Creating the Automation /
Création de l’automatisation

Paulo has created his import and filter activities. Now he’s ready to schedule them for use with an automation. /Paulo a créé ses activités d’importation et de filtrage. Il est maintenant prêt à les programmer pour les utiliser avec une automatisation.

In Automation Studio: /Dans Automation Studio :

  1. Select Overview. /Sélectionnez Vue d’ensemble.
  2. Click New Automation. / Cliquez sur Nouvelle automatisation.
  3. In the Untitled Automation field, enter Birthday Campaign Automation. /Dans le champ Automatisation sans titre, saisissez Automatisation de campagne d’anniversaire.
  4. Drag and drop Schedule to Start with a Starting Source. Or, you can choose File Drop if you want the automation to run based on a file drop. /Faites glisser et déposez Planification sur Commencer avec une source de départ. Vous pouvez également choisir Dépôt de fichier si vous souhaitez que l’automatisation s’exécute en fonction d’un dépôt de fichier.
    • Click Configure. /Cliquez sur Configurer.
    • Choose a start date and time. /Choisissez une date et une heure de début.
      • Note that the start date must be after current date and time. /Attention : la date de début doit être postérieure à la date et à l’heure actuelle.
    • Set the time zone. /Définir le fuseau horaire.
    • Choose Daily from the repeat picklist. /Choisissez Quotidien dans la liste de sélection de répétition.
    • Choose Never from the end picklist. /Choisissez Jamais dans la liste de sélection de fin.
    • Click Done. /Cliquez sur Terminé.
  5. Drag Import File from the Activities section onto the canvas under Workflow. /Faites glisser l’élément Importation d’un fichier de la section Activités vers la zone de dessin figurant sous Workflow.
  6. Click Choose. /Cliquez sur Choose.
  7. Select the import activity you created in unit 2. /Sélectionnez l’activité d’importation que vous avez créée dans l’unité 2.
  8. Click Done. /Cliquez sur Terminé.
  9. Drag Filter from the Activities section onto the canvas under Workflow after the import activity. /Faites glisser l’élément Filtre de la section Activités vers la zone de dessin figurant sous Workflow, en le plaçant après l’activité Importation d’un fichier.
  10. Click Choose. /Cliquez sur Choose.
  11. Select the filter activity you just created: Birthday of Today Filter Activity. /Sélectionnez l’activité de filtrage que vous venez de créer : Activité de filtrage Anniversaire du jour.
  12. Click Done. /Cliquez sur Terminé.
  13. Click Save. /Cliquez sur Enregistrer.

Check out this video to see automating the import and filter activities in action. /Regardez cette vidéo qui vous montre comment automatiser les activités d’importation et de filtrage.

That’s it. Now Paulo has an import and data filter that refreshes daily for his new birthday campaign. Easy peasy. /Voilà ! Paulo dispose maintenant pour sa nouvelle campagne d’anniversaire d’un filtre d’importation et de données qui s’actualise quotidiennement. Rien de sorcier !

Activation is the final step. /Il ne reste plus qu’à procéder à son activation.

  1. Under Schedule, select Active. /Sous Planification, sélectionnez Actif.
  2. Click Activate. /Cliquez sur Activer.
    • Note: Once activated, this automation will run indefinitely until you pause it. If you prefer to test it first, select None (run once) in the Schedule step, and then click Run Once after the final Save step. /Remarque : une fois activée, cette automatisation fonctionnera indéfiniment jusqu’à ce que vous l’interrompiez. Si vous préférez d’abord la tester, sélectionnez Aucune (exécuter une fois) à l’étape Planification, puis cliquez sur Exécuter une fois après la dernière étape d’enregistrement.
This screen is showing the schedule confirmation and automation activation button.

Query Activities and Audience Builder /Activités de requête et Audience Builder

Automating segmentation with a query activity is slightly more involved, since it requires experience with SQL. However, it has a number of benefits. For example—more complex segmentation—because with queries, you can evaluate more than one data extension at a time. You can learn more about using query activities for segmentation in the Trailblazer Community. /L’automatisation de la segmentation à l’aide une activité de requête est un processus légèrement plus complexe, car il nécessite d’avoir de l’expérience avec SQL. Cependant, cela présente de nombreux avantages. Vous pouvez ainsi obtenir une segmentation plus poussée, car les requêtes permettent d’évaluer plusieurs extensions de données à la fois. Vous pouvez en apprendre plus sur l’utilisation des activités de requête aux fins de segmentation dans la communauté Trailblazer.

What if you want the complexity in segmentation but don’t have anyone who can write SQL? We have you covered there too, with Audience Builder. The Audience Builder app has an intuitive, easy-to-use interface that lets you automate segmentation of your subscribers in more sophisticated ways, giving you a deep understanding of your customers’ attributes and behavior. That, in turn, helps you better target your email sends. You can learn more about using Audience Builder for segmentation in the Trailblazer Community. /Que faire si vous voulez obtenir une segmentation élaborée, mais que personne dans votre équipe ne maîtrise le langage SQL ? Pas de panique, Audience Builder est là pour vous aider. L’application Audience Builder, avec son interface intuitive et conviviale, vous permet d’automatiser la segmentation de vos abonnés de manière sophistiquée, vous permettant ainsi de comprendre en profondeur les attributs et le comportement de vos clients. Vous pouvez ainsi mieux cibler vos envois d’e-mails. La communauté Trailblazer est une véritable mine d’informations sur l’utilisation d’Audience Builder pour la segmentation, aussi n’hésitez pas à la visiter.

Throughout this module, you’ve learned the importance of audience segmentation, how to organize your data, and how to create a simple import activity. You’ve also learned about various segmentation tools, in particular data filters, and how to automate segmentation with filter activities and automations. /Tout au long de ce module, vous avez certes appris l’importance de la segmentation de l’audience, mais vous avez également découvert comment organiser vos données et créer une activité d’importation simple. Vous connaissez maintenant plusieurs outils de segmentation, notamment les filtres de données, et avez appris à automatiser la segmentation à l’aide d’activités de filtrage et d’automatisations.

Now you’re ready to start successfully segmenting your subscribers, ensuring the right message to the right person at the right time! /Vous êtes maintenant prêt à segmenter vos abonnés et à transmettre le bon message, à la bonne personne, au bon moment !

Resources /Ressources

Learn About Segmentation Tools /En savoir plus sur les outils de segmentation

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Explain the two ways you can segment lists. /Présenter les deux manières de segmenter des listes
  • Explain the two ways you can segment data extensions. /Présenter les deux manières de segmenter des extensions de données
  • Segment a data extension using a data filter. /Segmentation d’une extension de données à l’aide d’un filtre de données.

Marketing Cloud has a number of segmentation tools designed and optimized to help you send the right message to the right person and the right time. Let’s take a quick look at each of them. /Marketing Cloud dispose d’un certain nombre d’outils de segmentation conçus et optimisés pour vous aider à envoyer le bon message, à la bonne personne, au bon moment. Examinons de plus près chacun d’eux.

Segmenting Lists /Segmentation de listes.

If your data model is lists, you can segment with groups and data filters. /Si votre modèle de données est constitué de listes, vous pouvez les segmenter à l’aide de groupes et de filtres de données.

group is a subset of subscribers you’ve taken from a list. There are two types of groups: filtered and random. /Un groupe est un sous-ensemble d’abonnés que vous avez choisis dans une liste. Il existe deux types de groupes : les groupes filtrés et les groupes aléatoires.

You can filter groups by profile and preference attributes using a simple drag-and-drop interface. /Vous pouvez filtrer les groupes par attributs de profil et de préférence à l’aide d’une interface simple, fonctionnant par glisser-déposer.

  • Profile attributes contain information about your subscribers. For example, name, location, gender, age, opt-in date. /Les attributs de profil contiennent des informations sur vos abonnés, comme leur nom, leur emplacement géographique, leur genre, leur âge et leur date d’abonnement.
  • Preference attributes contain your subscribers’ preferences. A common preference is communication—that is, what type of information each subscriber prefers to get from you. For example, special promotions, new products, and coupons. /Les attributs de préférence contiennent les préférences de vos abonnés. Parmi les préférences courantes, on retrouve celles relatives à la communication, c’est-à-dire le type d’informations que chaque abonné préfère recevoir de votre part, comme des promotions spéciales, des bons de réduction ou la présentation de nouveaux produits.

You can also use a group to create a random sample of subscribers. For example, if you want to see how subscribers react to a new email template, you can generate a random sample of subscribers to send to, then track the results. /Vous pouvez également utiliser un groupe pour créer un échantillon aléatoire d’abonnés. Par exemple, si vous souhaitez voir comment les abonnés réagissent à un nouveau modèle d’e-mail, vous pouvez générer un échantillon aléatoire d’abonnés à qui envoyer des messages, puis suivre les résultats.

data filter is a group of criteria that segments a list or data extension. For example, you can use a data filter to find all the subscribers on a list who have interests in boots or sneakers and live in the state of Indiana or Ohio. /Un filtre de données est un groupe de critères qui segmente une liste ou une extension de données. Par exemple, vous pouvez utiliser un filtre de données pour rechercher tous les abonnés d’une liste s’intéressant aux chaussures ou aux baskets et vivant dans l’État de l’Indiana ou de l’Ohio.

Data filters, like groups, have an easy-to-use drag-and-drop interface. The benefit of using a data filter is that when you create a stand-alone filter definition and choose not to associate it with a subscriber list or data extension, you can reuse the same filter definition with many lists or data extensions. For example, if targeting women over the age of 50 is important to your business, you can create one data filter that segments out women over the age of 50 and use it to filter any of your subscriber data extensions or lists. /Les filtres de données, comme les groupes, ont une interface facile à utiliser, fonctionnant par glisser-déposer. L’utilisation d’un filtre de données présente un avantage certain : lorsque vous créez une définition de filtre autonome et choisissez de ne pas l’associer à une liste d’abonnés ou à une extension de données, vous pouvez réutiliser cette même définition de filtre avec plusieurs listes ou extensions de données. Par exemple, si le ciblage des femmes de plus de 50 ans est important pour votre entreprise, vous pouvez créer un filtre de données créant un segment composé des femmes de plus de 50 ans et l’appliquer à toutes les extensions ou listes de données de vos abonnés.

Segmenting Data Extensions /Segmentation d’extensions de données

If your data model is data extensions, you can segment with queries and data filters. /Si votre modèle de données est constitué d’extensions de données, vous pouvez les segmenter avec des requêtes et des filtres de données.

As with lists, a data filter is simply a group of criteria that segments your data extension. Ready for less talk and more action? Let’s take a detailed look at segmentation using a data filter. /Un filtre de données est simplement un groupe de critères qui segmente votre extension de données, comme il est possible de le faire avec les listes. Prêt à discuter moins et à agir plus ? Alors découvrons de manière détaillée comment réaliser une segmentation à l’aide d’un filtre de données.

Segmenting a Data Extension Using a Data Filter /Segmentation d’une extension de données à l’aide d’un filtre de données

At Northern Trail Outfitters, marketing specialist Paulo is ready to begin thinking more strategically about his marketing efforts. He’s decided he wants to set up a campaign to send a special promotion to subscribers on their birthday. To get started, he needs to set up a data filter to segment out those subscribers whose birthday it is on any given day. Here’s how he does that in the Email Studio app. /Chez Northern Trail Outfitters, Paulo, l’expert marketing, est prêt à entamer une réflexion plus stratégique sur ses activités marketing. Il a décidé de lancer une campagne envoyant une promotion spéciale aux abonnés le jour de leur anniversaire. Pour commencer, il doit configurer un filtre de données afin de segmenter les abonnés dont l’anniversaire a lieu un jour donné. Voici comment procéder dans l’application Email Studio.

  1. Hover over the Salesforce blue cloud to display the main Marketing Cloud navigation bar. /Passez la souris sur le nuage bleu Salesforce pour afficher la barre de navigation principale de Marketing Cloud.
  2. Hover over Email Studio. /Passez votre curseur sur Email Studio.
  3. Click Email. /Cliquez sur E-mail.
  4. Hover over Subscribers. /Passez la souris sur Abonnés.
  5. Select Data Filters. /Sélectionnez Filtres de données.
  6. Click Create. /Cliquez sur Créer.
  7. Select Data Extension. /Sélectionnez Extension de données.
  8. Select the source data extension: MasterSubscriber. /Sélectionnez l’extension de données source : AbonnéPrincipal.
  9. Click Ok. /Cliquez sur OK.
  10. Drag and drop Birthday to the filter workspace. /Faites glisser et déposez Anniversaire dans l’espace de travail du filtre.
    • Select is anniversary of from the picklist. /Sélectionnez est l’anniversaire de dans la liste de sélection.
      • Selecting “is anniversary of” ensures that Marketing Cloud ignores the year associated with the date. /La sélection de « est l’anniversaire de » permet à Marketing Cloud d’ignorer l’année associée à la date.
    • Select Today from the picklist. /Sélectionnez Aujourd’hui dans la liste de sélection.
    • Check Account Time Zone. /Vérifiez le champ Fuseau horaire du compte.
      • This evaluates “today” based on the time zone of the account rather than the time zone of the Marketing Cloud servers. /Il évalue la valeur de « aujourd’hui » en fonction du fuseau horaire du compte plutôt que du fuseau horaire des serveurs Marketing Cloud.
  11. Click Save. /Cliquez sur Enregistrer.
  12. Name the filter Birthday of Today. /Nommez le filtre Anniversaire du jour.
  13. Click Save. /Cliquez sur Enregistrer.

Check out this video to see creating the data filter in action. /Regardez cette vidéo qui vous montre comment créer le filtre de données.

Segmenting a Data Extension with Queries /Segmentation d’une extension de données à l’aide de requêtes

Queries let you request and retrieve data and place it in a single or in multiple data extensions. Some considerations for using queries include the following. /Les requêtes vous permettent de rechercher et de récupérer des données, puis de les placer dans une ou plusieurs extensions de données. Voici quelques éléments à prendre en compte lors de l’utilisation de requêtes.

  • You must know SQL (Structured Query Language), since it’s the language that defines the criteria. /Vous devez connaître le langage SQL (Structured Query Language), car c’est celui employé pour définir les critères.
  • Marketing Cloud places the results in a data extension (or extensions). /Marketing Cloud place les résultats des requêtes dans une extension de données (ou plusieurs).
  • You must create the data extension (or extensions) where Marketing Cloud places the results before defining and executing the query activity. /Avant de définir et d’exécuter l’activité de requête, vous devez créer l’extension (ou les extensions) de données où Marketing Cloud placera les résultats.
  • The SQL query activity in Automation Studio initiates queries. /Dans Automation Studio, les requêtes sont lancées à l’aide de l’activité de requête SQL.

You’ve learned about various segmentation tools and their setup, in particular data filters. Let’s move on to automating segmentation. Automation is what really lets you sit back and relax while Marketing Cloud does the heavy lifting. /Vous avez découvert divers outils de segmentation, dont les filtres de données, ainsi que la manière de les configurer. Nous allons maintenant nous intéresser à l’automatisation de la segmentation, qui vous permettra de prendre une pause bien méritée pendant que Marketing Cloud fait le gros du travail pour vous.

Resources /Ressources

Organize Your Data /Organiser vos données

Learning Objectives/Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Describe the difference between a list and a data extension. /Expliquer la différence entre une liste et une extension de données
  • Describe the use cases for lists and data extensions. /Décrire les cas d’utilisation des listes et des extensions de données
  • Explain how Marketing Cloud manages external data and data relationships./Expliquer comment Marketing Cloud gère les données externes et les relations de données

Let’s Get Organized /Tout repose sur l’organisation

Organizing and managing your data is key to segmenting effectively. Marketing Cloud organizes data in two ways: lists and data extensions. /Une organisation et une gestion adéquate de vos données est la clé d’une segmentation efficace. Marketing Cloud peut organiser les données de deux manières, à l’aide de listes et d’extensions de données.

  • list is a collection of subscribers who receive your communications. Lists have attributes, such as name, address, interest and birthday, that contain information about subscribers. One thing to note about lists is that attribute-related information cannot exist alone without a subscriber. You can create as many lists as you need to segment your subscribers and target your email communications. /Une liste représente un ensemble d’abonnés qui reçoivent vos communications. Les listes ont des attributs contenant des informations sur les abonnés, tels que leur nom, leur adresse, leurs centres d’intérêt et leur date de naissance. Un élément important à noter concernant les listes est que les informations relatives aux attributs ne peuvent exister sans être rattachées à un abonné. Vous pouvez créer autant de listes que nécessaire pour segmenter vos abonnés et cibler vos communications par e-mail.
  • data extension is a table within the application database that contains your data. You can use a data extension to store not only sendable subscriber data—just like with a list—but also relational data, such as purchases, inventory, and rewards program data. /Une extension de données est un tableau dans la base de données de l’application dans lequel figurent vos données. Vous pouvez utiliser une extension de données pour stocker non seulement les données des abonnés pouvant être envoyées (comme dans une liste), mais également des données relationnelles, telles que l’historique des achats, l’état des stocks et les informations relatives au programme de fidélité.

How you organize your data influences the tools you use to segment it. When it comes to choosing a data model, in general, we recommend the following. /La façon dont vous organisez vos données a des répercussions sur la manière dont fonctionnent les outils que vous utilisez pour les segmenter. Pour choisir le modèle de données correspondant à vos besoins, suivez ces recommandations :

Use lists when: /Utilisez des listes lorsque :

  • Your lists contain 500,000 subscribers or fewer—even over the long term /Il est prévu que vos listes contiennent moins de 500 000 abonnés, même à long terme
  • You prefer simplicity over performance /Vous préférez la simplicité à la performance
  • You do not require fast import speed /Vous n’avez pas besoin de pouvoir importer des données rapidement
  • You plan to use a limited number of subscriber attributes /Vous prévoyez d’utiliser un nombre limité d’attributs d’abonné

Use data extensions when: /Utilisez des extensions de données lorsque :

  • Your lists contain more than 500,000 subscribers /Vos listes contiennent plus de 500 000 abonnés
  • You support multiple subscriber data sets, with separate values /Vous utilisez plusieurs ensembles de données d’abonné présentant des valeurs distinctes
  • You send global messages /Vous envoyez des messages globaux
  • You require fast import speeds /Vous avez besoin de pouvoir importer des données rapidement
  • You implement triggered sends /Vous mettez en place des envois déclenchés
  • You use the SOAP or REST APIs /Vous utilisez les API SOAP ou REST
  • You prefer a flexible subscription model /Vous préférez que votre modèle d’abonnement soit flexible
  • You want to leverage relational data, such as purchase history or location references /Vous souhaitez exploiter des données relationnelles telles des historiques d’achats ou des références de localisation

Creating an Import Activity /Création d’une activité d’importation

What if you have data flowing in from elsewhere? No problem! You can set up a simple import activity in Automation Studio to bring data from outside of Marketing Cloud—for example, CRM or point-of-sale data—into your lists or data extensions. /Comment procéder si certaines de vos données proviennent d’une source externe ? Ce n’est pas un problème ! Automation Studio vous permet de configurer une activité d’importation simple afin que vous puissiez importer des données ne provenant pas de Marketing Cloud (telles que celles issues des systèmes CRM ou des points de vente) dans vos listes ou extensions de données.

Paulo is the marketing specialist at Northern Trail Outfitters. He’s been sending his weekly promotional email for several weeks, and he’s seen great success—a lot of opens, a lot of clicks, and a lot of purchases. The only problem is that he has to manually update his MasterSubscriber data extension with data from other systems./Paulo est expert marketing chez Northern Trail Outfitters. Cela fait plusieurs semaines qu’il envoie des e-mails promotionnels hebdomadaires, et le succès est au rendez-vous : il a constaté un nombre important d’ouvertures, de clics et d’achats. Son seul problème est qu’il est obligé de mettre à jour manuellement son extension de données AbonnéPrincipal lorsque ses données proviennent d’autres systèmes.

Paulo is the marketing specialist for Northern Trail Outfitters

Manual work for something that can easily be automated is a bad use of his limited time, he decides. He plans to set up an import activity and automation to update his MasterSubscriber data extension daily. Let’s first take a look at how to set up an import activity. /Il estime que faire manuellement quelque chose qui peut facilement être automatisé, c’est employer à mauvais escient le peu de temps dont il dispose déjà. Il décide donc de mettre en place une activité d’importation et une automatisation qui mettra à jour quotidiennement son extension de données AbonnéPrincipal. Pour ce faire, voyons d’abord comment configurer une activité d’importation.

Note /Remarque

If you’re following along in your own instance of Marketing Cloud, you see your assets and data. In this module, we’re illustrating what you can do with Marketing Cloud by showing you the steps that Brandon takes and the data he sees. The data in your own org is different, of course. /Si vous suivez ces instructions dans votre propre instance Marketing Cloud, vous verrez s’afficher les ressources et les données de votre organisation. Dans ce module, nous illustrons ce que vous pouvez faire avec Marketing Cloud en vous montrant les étapes suivies et les données vues par Paulo. Les données de votre propre organisation sont, bien entendu, différentes.

  1. Hover over the Salesforce blue cloud to display the main Marketing Cloud navigation bar. /Passez la souris sur le nuage bleu Salesforce pour afficher la barre de navigation principale de Marketing Cloud.
  2. Hover over Journey Builder. /Passez votre souris sur Journey Builder.
  3. Select Automation Studio. /Sélectionnez Automation Studio.
  4. Click Activities. /Cliquez sur Activités.
  5. Click Create Activity. /Cliquez sur Créer une activité.
  6. Select Import File. /Sélectionnez Importation d’un fichier.
  7. Click Next. /Cliquez sur Suivant.The import file activity type selected in Automation Studio activities.
  8. Configure the import activity properties. /Configurez les propriétés de l’activité d’importation
    • Name: Enter a name. /Nom : Saisissez un nom.
    • Description: Enter a description. /Description : Saisissez une description.
    • External Key: Enter a key or leave this blank. /Clé externe : saisissez une clé ou laissez ce champ vide.
    • Check Send notification email to checkbox. /Cochez la case Envoyer un e-mail de notification à.
    • Email: Enter the email address where you would like the notification to be sent. /E-mail : saisissez l’adresse e-mail à laquelle vous souhaitez que la notification soit envoyée.
    • Click Next. /Cliquez sur Suivant.The "send notification email" property added to the import file activity in Automation Studio activities.
  9. Configure the file import. /Configurez l’importation de fichier.
    • Select the file location. /Sélectionnez l’emplacement du fichier.
      • Set up FTPs in Admin under Data Management. /Configurez les différents FTP dans Administration, sous Gestion des données.
    • Enter the file naming pattern. /Définissez un modèle de dénomination de fichier
      • This allows any associated automation to run when a file whose name matches the pattern is dropped into an Enhanced FTP folder. /Cela permet à toute automatisation associée de s’exécuter lorsqu’un fichier dont le nom correspond au modèle est déposé dans un dossier FTP optimisé
    • Click Next. /Cliquez sur SuivantThe file naming pattern added to the import file activity in Automation Studio Activities.
  10. Configure the destination. /Configurez la destination.
    • Select MasterSubscriber. /Sélectionnez AbonnéPrincipal.
    • Click Next. /Cliquez sur Suivant.The selected file destination for the import activity in Automation Studio Activities.
  11. Configure the mapping. /Configurez les mises en correspondance
    • Select the appropriate data action: Add OnlyUpdate OnlyAdd and Update, or Overwrite. /Sélectionnez l’action de données appropriée : Ajouter seulementMettre à jour seulementAjouter et mettre à jour ou Remplacer.
    • Select how you want to map columns between the source and the destination: HeaderOrdinally, or Manually. /Sélectionnez le mode de mise en correspondance des colonnes entre la source et la destination : En-têteOrdinale ou Manuelle.
    • Click Next. /Cliquez sur SuivantMapping of the imported file to a specific destination in Automation Studio Activities.
  12. Review the import activity details. /Vérifiez les détails de l’activité d’importation.
  13. Click Finish. /Cliquez sur Terminer.

Now that Brandon has his import activity, he can automate it to run daily. He decides to hold off on this for now, since he can actually include the import activity in with the automation that segments his subscribers. /Maintenant que Paulo dispose de son activité d’importation, il peut l’automatiser pour qu’elle s’exécute de manière quotidienne. Toutefois, il décide pour le moment de s’en abstenir, car il peut l’intégrer dans l’automatisation qui segmente ses abonnés.

Scrub Your Data /Nettoyage de vos données

A final note on organization. Make sure your data is clean, clear, and easy to find. To do this, frequently remove data that is incorrect, incomplete, improperly formatted, or duplicated. Implement naming conventions for lists, data extensions, folders, and content to provide structure and consistency across your account or business unit. For example, your naming conventions can reflect how you organize your data—either by campaign, publication type, frequency, or some combination thereof. /Une dernière remarque sur l’organisation : assurez-vous que vos données sont propres, claires et facilement accessibles. Pour ce faire, supprimez fréquemment les données incorrectes, incomplètes, mal formatées ou dupliquées. Mettez en place des conventions de nommage relatives aux listes, aux extensions de données, aux dossiers et au contenu afin que votre unité commerciale ou votre compte soit structuré et cohérent. Vos conventions de nommage peuvent, par exemple, refléter la manière dont vous organisez vos données : vous pouvez ainsi définir un nommage par campagne, par type de publication, par fréquence ou encore en combinant plusieurs de ces aspects.

Now you know what segmentation is, why it’s important to your business, how to get your data organized, and how to set up a data import activity. Let’s move on to segmentation tools. /Vous savez maintenant ce qu’est la segmentation et pourquoi elle est importante pour votre entreprise. Vous avez également appris à organiser vos données et à configurer une activité d’importation de données. Intéressons-nous maintenant aux pages d’application.

Resources /Ressources

Heroku Flow

Learn About Continuous Integration, Deployment, and Delivery /Découvrez l’intégration continue, le déploiement et la livraison

Learn About Heroku Flow and Its Features /Découvrez Heroku Flow et ses fonctionnalités

Create a Heroku Pipeline and Run Review Apps /Créez un Pipeline Heroku et exécutez des Review Apps

Run Tasks with Release Phase /Exécutez des tâches avec Release Phase

Run Tasks with Release Phase /Exécutez des tâches avec Release Phase

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Set up and use Release Phase. /Configurer et utiliser Release Phase.
  • Check activity and release logs. /Vérifier l’activité et les journaux de version.

Let’s see how Release Phase works. The most common use case for release phase is database migration, or to upload assets remotely if you’re using a content delivery network (CDN). To keep things simple and show you how the feature works, we’re just going to add an echo command. /Voyons un peu comment fonctionne Release Phase. Release Phase est principalement utilisé en cas de migration de base de données, pour télécharger des ressources à distance si vous utilisez un CDN (réseau de livraison de contenu). Pour ne pas compliquer notre explication du fonctionnement de cette fonctionnalité, nous allons nous contenter d’ajouter une commande echo.

  1. In GitHub, go to the flow-demo repo and click Procfile. A Procfile is a mechanism for declaring what commands are run by your application on the Heroku platform. It should be named Procfile exactly (for example, Procfile.txt is not valid) and placed in the root directory of your repository. It won’t function if placed in a subdirectory. /Dans GitHub, accédez au dépôt flow-demo et cliquez sur Procfile. Un Procfile est un mécanisme pour déclarer les commandes exécutées par votre application sur la plateforme Heroku. Il doit être nommé exactement Procfile (et non Procfile.txt, par exemple) et placé à la racine de votre référentiel. Il ne fonctionnera pas s’il se trouve dans un sous-dossier.
  2. Click the small pencil in the top right corner to edit the Procfile. /Cliquez sur l’icône en forme de petit crayon en haut à droite pour modifier le Procfile.
  3. Now define a release process type in the proc file, as well as a command to run. The release command is run when a new release is created. Add the following line at the end of the file: release: echo “You created a new release on Heroku. Here’s a cookie! 🍪” /Définissez un type de processus de publication dans le Procfile, ainsi qu’une commande à exécuter. La commande de publication est exécutée lorsqu’une nouvelle version est créée. Ajoutez la ligne suivante à la fin du fichier : release: echo “Vous avez créé une nouvelle version sur Heroku. Prenez donc un gâteau ! Add release phase
  4. Scroll down and enter commit title and description. Select Create a new branch for this commit and start a pull request, and leave the name as the default. Click Propose file change. /Faites défiler vers le bas et entrez un titre et une description au commit. Sélectionnez Create a new branch for this commit and start a pull request (Créer une nouvelle branche pour ce commit et ouvrir un pull request), et conservez le nom par défaut. Cliquez sur Propose file change (Proposer une modification du fichier).
  5. Click Create pull request on the next screen. Since a review app is created for any pull request, you’ll notice a new review app created from your changes to the proc file if you go back to your Heroku dashboard. /Cliquez sur Create pull request (Créer un pull request) à l’écran suivant. Comme une application de contrôle est créée pour tout pull request, vous pourrez constater si vous revenez sur votre tableau de bord Heroku qu’une nouvelle application de contrôle a été créée en fonction des changements que vous avez apporté au proc file.New review app is created
  6. If there are no issues with the review app, we can merge code changes back to master. Opening the app in the browser won’t show any changes since we didn’t make any visual changes to the code, but helps make sure the app is still running and has the final changes we made in the previous unit. /S’il n’y a pas de problème avec l’application de contrôle, nous pouvons fusionner le nouveau code dans la branche master. Ouvrir l’application dans le navigateur ne montrera aucun changement puisque nos modifications n’affectent pas son aspect visuel, mais cela vous permettra de vous assurer qu’elle fonctionne toujours et intègre les dernières modifications de l’unité précédente.
  7. Go back to GitHub, click Merge Pull Request. Leave the text as the default, and click Confirm Merge. /Retournez sur GitHub, cliquez sur Merge Pull Request (Fusionner le pull request). Conservez le texte par défaut, et cliquez sur Confirm Merge (Confirmer la fusion).
  8. If you go to your Heroku dashboard, you can see that the review app has moved to the Staging column. Since we enabled automatic deploys, every push to master deploys a new version of this app. /Si vous retournez sur votre tableau de bord Heroku, vous pourrez voir que l’application de contrôle est passée directement dans la colonne Staging. Comme nous avons activé les déploiements automatiques, chaque push vers la branche master déploie une nouvelle version de cette application.
  9. To finish setting up Release Phase, select Promote to production from under the flow-staging-demoapp staging app, double check the name of the production app, and select Promote. /Pour finir la configuration de Release Phase, sélectionnez Promote to production (Promouvoir en production) dans l’application de staging flow-staging-demoapp, vérifiez le nom de l’application en production, et sélectionnez Promote (Promouvoir).
  10. Now you can see all the build and release details. Click the flow-production-demoapp app, then the latest view release log link and you can see the comment we added to the proc file echoed here: You created a new release on Heroku! Here’s a cookie! 🍪”. /Vous pouvez maintenant voir tous les détails de compilation et de publication. Cliquez sur l’application flow-production-demoapp, puis sur le dernier lien View release log (Voir le journal de publication), et vous pourrez y voir le commentaire que nous avons ajouté dans le Procfile : Vous avez créé une nouvelle version sur Heroku. Prenez donc un gâteau ! ”Build and release detailsIf our Release Phase task was for a database migration instead, for example, you would see all the logs related to that process and whether there’s been any problems or not. If you go back to the activity feed now by selecting Activity from under the top menu, you will notice a Roll back to here option, which is a key feature of the Heroku platform. With Heroku rollback, you can roll back to a previous, known good release with one click, providing a fast way to revert in case of bad deploys or config changes. We don’t need to use this feature now, but keep it in mind if you ever need to go back to a healthy deploy and make the changes all over again. /Si notre tâche Release Phase avait été par exemple une migration de base de données, c’est là que vous trouveriez tous les messages liés à ce processus et à d’éventuels problèmes. Si vous revenez au fil d’activité en cliquant sur Activity dans le menu en haut de page, vous remarquerez une option Roll back to here (Revenir à cette version), qui est l’une des fonctionnalités clés de la plateforme Heroku. Avec Heroku Rollback, vous pouvez revenir d’un seul clic à une version précédente dont vous savez qu’elle fonctionne, afin de pouvoir rétablir rapidement en cas d’erreur de déploiement ou de modification de la configuration. Nous n’avons pas besoin de cette fonctionnalité pour l’instant, mais pensez-y si jamais vous aviez besoin de revenir à une version saine pour recommencer vos changements.Activity feedNote: Heroku CI is not enabled yet, and your Pipeline isn’t connected to an external CI system. If CI were configured, there would be tests running when changes were merged to master, ensuring changes to the code are error-free and aligned with the code base. You’ve learned about many of the features of Heroku Flow. Although Heroku CI is one of the main features of Heroku Flow, we didn’t work with it in this module. Why? Because free CI test runs are susceptible to abuse, we need to make sure that each Heroku CI user is backed by a valid payment identity. If you want to complete your Heroku Flow education by learning about Heroku CI, add a valid credit card and read our developer documentation. /Remarque : Heroku CI n’est pas encore activé, et votre Pipeline n’est pas connecté à un système CI externe. Si CI était configuré, des tests seraient exécutés lorsque des changements sont fusionnés avec la branche master, afin de s’assurer que les modifications du code ne contiennent pas d’erreur et correspondent au code existant. Vous avez découvert beaucoup des fonctionnalités d’Heroku Flow. Bien qu’Heroku CI soit une des principales fonctionnalités d’Heroku Flow, nous ne l’avons pas utilisée dans ce module. Pourquoi ? L’exécution gratuite de tests CI peut être utilisée à des fins malveillantes, et nous devons vérifier que chaque utilisateur d’Heroku CI dispose d’une identité de paiement valide. Si vous voulez terminer votre apprentissage d’Heroku Flow en découvrant Heroku CI, ajoutez une carte de crédit valide et lisez notre documentation pour développeur.

Welcome to the Heroku CI family! /Bienvenue dans la famille Heroku CL !

Create a Heroku Pipeline and Run Review Apps /Créez un Pipeline Heroku et exécutez des Review Apps

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Create a Heroku Pipeline and add your apps. /Créez un Pipeline Heroku et ajoutez vos applications
  • Run review apps. /Exécutez des applications de contrôle

Now that you’re familiar with the features of Heroku Flow and the concepts behind them, let’s use that knowledge and create an instance of Heroku pipelines, run review apps, and check out how things actually work. /Maintenant que vous avez découvert les fonctionnalités d’Heroku Flow et les concepts sur lesquels elles sont basées, utilisons ces connaissances pour créer une instance de pipelines Heroku, exécuter des applications de contrôle et voir comment ça marche concrètement.

To create a Heroku pipeline, you need a Heroku account. Sign up for a free account if you don’t have one already at You also need a GitHub account for this module. Create one for free at  /Pour créer un pipeline Heroku, vous aurez besoin d’un compte Heroku. Si ce n’est pas déjà fait, créez un compte gratuit sur Vous aurez également besoin d’un compte GitHub pour ce module. Créez-le gratuitement sur

Create a Pipeline: /Créer un pipeline :

Now you’re ready to create your first pipeline. /Vous êtes maintenant prêt à créer votre premier pipeline.

  1. Log in to your GitHub account and make your own copy of this repository by clicking Fork in the top right corner. /Connectez-vous à votre compte GitHub et faites une copie de ce dépôt en cliquant sur Fork (Copier) en haut, à droite.Fork flow-demo Repo
  2. Go back to Heroku, and click Login. Once you’re logged in, click New, then Create new pipeline. /Revenez à Heroku, et cliquez sur Login (Connexion). Une fois connecté, cliquez sur New (Nouveau), puis sur Create new pipeline (Créer un nouveau pipeline).New Pipeline Create
  3. Give your new pipeline a name (such as flow-demo-pipeline), leave your name under the Pipeline owner field, connect it to the repository you forked in step 1, and click Create Pipeline. /Choisissez un nom pour votre pipeline (par exemple flow-demo-pipeline), laissez votre nom dans le champ Pipeline owner (Propriétaire du pipeline), connectez-le au dépôt que vous avez copié à l’étape 1, et cliquez sur Create Pipeline (Créer le pipeline).Name your pipeline

Run review apps: /Exécutez des applications de contrôle :

Now that you have a pipeline, let’s create apps so you can spin up a review app (Review apps work only when there is at least one app in the pipeline): /Maintenant que vous avez un pipeline, nous allons créer des applications pour que vous puissiez tester les applications de contrôle (les applications de contrôle ne fonctionnent que s’il y a au moins une application dans le pipeline) :

  1. To create a new app, under Staging click Add app… then Create new app. Give your app a name (such as flow-staging-demoapp) and select Create app. /Pour créer une nouvelle application, dans Staging, cliquez sur Add app… (Ajouter une application…) puis sur Create new app (Créer une nouvelle application). Donnez un nom à votre application (par exemple flow-staging-demoapp) et choisissez Create app (Créer une application).Create new app
  2. Next, create a production app following the same steps. Under Production, click Create new app and give it a name (such as flow-production-demoapp). /Ensuite, suivez les mêmes étapes pour créer une application en production. Dans Production, cliquez sur Create new app (Créer une nouvelle application) et choisissez son nom (par exemple flow-production-demoapp).
  3. Once you create a staging app, the Enable Review Apps option becomes available. In the Review Apps column, click Enable Review Apps, and select Create new review apps for new pull requests automatically. This creates a review app for each pull request you make in the connected GitHub repository. If you’re planning to use this pipeline for this module and testing purposes only, select Destroy stale review apps automatically then click Enable. /Une fois que vous aurez créé une application de staging, l’option Enable Review Apps (Activer Review Apps) sera disponible. Dans la colonne Review Apps, cliquez sur Enable Review Apps (Activer Review Apps), et sélectionnez Create new review apps for new pull requests automatically (Créer automatiquement de nouvelles applications de contrôle pour les nouveaux pull requests). Cela créera une nouvelle application de contrôle pour chaque pull request que vous effectuerez dans le dépôt GitHub connecté. Si vous comptez utiliser ce pipeline uniquement pour ce module et à des fins de test, sélectionnez Détruire automatiquement les applications de contrôle obsolètes, puis cliquez sur Activer.
    Enable review apps
  4. Click the small arrows next to your staging app and click Configure automatic deploys. Keep the branch on master and click Enable Automatic Deploys. /Cliquez sur les petites flèches situées à côté de votre application de staging, puis cliquez sur Configure automatic deploys (Configurer les déploiements automatiques). Gardez la branche master et cliquez sur Enable Automatic Deploys (Activer les déploiements automatiques).
    Configuring automatic deploys
  5. Now we’re going to make some changes to your GitHub repository, and see how it’s reflected in your Heroku pipeline. /Nous allons maintenant effectuer quelques changements à votre dépôt GitHub, et voir comment ils seront reflétés dans votre pipeline Heroku.
  6. In GitHub, go to the flow-demo repository you forked earlier. Click the Public folder to open it, then click the index.html file. /Dans GitHub, allez au dépôt flow-demo que vous avez copié plus tôt. Cliquez sur le dossier Public pour l’ouvrir, puis sur le fichier index.html.
  7. Click the small pencil icon in the top-right corner to edit index.html. /Cliquez sur l’icône en forme de petit crayon en haut à droite pour modifier index.html.
  8. Now let’s make some small changes to the text and font color. We’ll keep it simple since you’re still learning about Heroku Flow: Change the h2 color from blue to green and the p class text from Running with Heroku Flow to Built with Heroku. /Nous allons maintenant modifier légèrement le texte et la couleur de la police. Nous nous contenterons de petits changements, puisque vous êtes encore en train de découvrir Heroku Flow : Changez la couleur de h2 de blue à green, puis modifiez le texte de l’élément p class pour remplacer Running with Heroku Flow par Built with Heroku.
    Change the code in GitHub
  9. Scroll down now and enter a short commit title and description. Then select Create a new branch for this commit and start a pull request, leave the branch name as default, and click Propose file change. /Faites défiler vers le bas et entrez un titre et une description au commit. Puis choisissez Create a new branch (Créer une nouvelle branche) pour ce commit et lancez un pull request, gardez le nom de branche par défaut, puis cliquez sur Propose file change (Proposer une modification du fichier).Create a branch and commit
  10. On the next page, you can review the changes you’ve made. Click Create Pull Request. /À la page suivante, vous pourrez vérifier les changements que vous avez effectués. Cliquez sur Create Pull Request (Créer un pull request).
  11. Go back to your Heroku Dashboard, and notice a new review app in the review apps column. To see how the changes you made look in a browser window, click the small arrows next to the review app, then Open app in browser. /Retournez sur le tableau de bord Heroku, où vous pourrez remarquer une nouvelle application dans la colonne Review Apps. Pour voir les changements que vous avez effectués dans une fenêtre de navigateur, cliquez sur les petites flèches à côté de l’application de contrôle, puis sur Open app in browser (Ouvrir l’application dans un navigateur).Open review app in browser

Deploy to production: /Déployer en production :

You can see that the review app reflects the changes you just made to the code in GitHub. Congratulations on making your first Heroku Pipeline and review app. We can now move forward with merging changes back to the master branch. /Vous pouvez voir que l’application de contrôle reflète les changements que vous venez d’apporter au code sur GitHub. Bravo pour votre premier Pipeline Heroku et votre première application de contrôle. Nous allons pouvoir passer à la fusion des changements vers la branche master.

  1. Go to GitHub and select the Pull Requests tab. Your Update index.html pull request should show up as an open Pull Request. /Retournez sur GitHub et sélectionnez l’onglet Pull Requests. Votre pull request Update index.html doit être signalé en tant que Pull Request ouvert.Check PR in GitHub
  2. Click it to see the PR (pull request) details, select Merge pull request, then Confirm merge. /Pour voir les détails du PR (pull request), choisissez Merge pull request (Fusionner le pull request), puis Confirm merge (Confirmer la fusion).
  3. Go back to your Heroku Dashboard and you notice that your app is being built under staging. This deployment happens automatically when merging changes back to master since you have previously enabled automatic deploys. /Retournez à votre tableau de bord Heroku, et vous remarquerez que votre application est en cours de compilation dans staging. Ce déploiement se produit automatiquement lorsque vous fusionnez des changements vers la branche master, puisque vous avez activé les déploiements automatiques.Staging app is built
  4. If you select Open app in browser next to your flow-staging-demoapp, you see the color green and text changes to Built with Heroku showing up. Staging environments are clones of production environments to test all code changes before pushing them to production and making them as part of the final product. Since the staging app looks the same as the review app and there are no issues. We can push it to the final production phase. /Si vous sélectionnez Open app in browser (Ouvrir l’application dans un navigateur) à côté de flow-staging-demoapp, vous verrez la couleur verte et le nouveau texte Built with Heroku. Les environnements de staging sont des clones des environnements de production destinés à tester les modifications du code avant de les envoyer en production pour les intégrer au produit final. Puisque l’application de staging est identique à l’application de contrôle et qu’il n’y a aucun problème, nous pouvons pousser les modifications vers la phase de production finale.
  5. Select Promote to production to push code changes to production now. Double check the production app name and select Promote. /Sélectionnez Promote to production (Promouvoir en production) pour pousser immédiatement les modifications du code vers l’environnement de production. Revérifiez le nom de l’application de production et choisissez Promote (Promouvoir).Promote to production
  6. Notice that the app starts deploying to production. /Vous constaterez que l’application commence à être déployée en productionProduction app is built
  7. Select Open app in browser next to your flow-production-demoapp, and you can see that changes you made to the code have made their way to your final app in production. /Choisissez Open app in browser (Ouvrir l’application dans le navigateur) à côté de flow-production-demoapp, et vous pourrez voir que les changements que vous avez apportés au code ont été transmis à l’application finale en production.

Learn About Heroku Flow and Its Features /Découvrez Heroku Flow et ses fonctionnalités

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Describe a common continuous delivery workflow with Heroku Flow. /Décrire un workflow livraison continue avec Heroku Flow.
  • Name the features of Heroku Flow and describe the purpose of each. /Citer les fonctionnalités d’Heroku Flow et expliquer à quoi sert chacune.

Heroku Flow is an easy-to-use structured workflow for continuous delivery on the Heroku platform. It brings together Heroku Pipelines, Review Apps, Release Phase, Heroku CI, and GitHub and Slack integration for a simple visual code-to-production workflow. /Heroku Flow est un workflow structuré facile d’utilisation pour livraison continue sur la plateforme Heroku. Il se compose d’Heroku Pipelines, Review Apps, Release Phase, Heroku CI, et d’une intégration avec GitHub et Slack pour fournir un workflow permettant de passer simplement du code à la production.

A common Heroku continuous delivery workflow looks something like this: /Voici à quoi ressemble un workflow de livraison continue typique sur Heroku :

  1. A developer or team member creates a Heroku Pipeline and starts adding apps. /Un développeur ou un membre de l’équipe crée un Pipeline Heroku et commence à y ajouter des applications.
  2. A developer creates a pull request to make a change to the codebase of an app. /Un développeur crée un pull request pour apporter un changement au code d’une application.
  3. Heroku automatically creates a review app for the pull request, allowing developers to test the change. /Heroku crée automatiquement une application de contrôle pour le pull request, afin que les développeurs puissent tester le changement.
  4. When the change is ready, it’s merged into the code’s master branch. /Lorsque le changement est prêt, il est fusionné vers la branche master du code.
  5. The master branch is automatically deployed to a staging app for further testing. /La branche master est déployée automatiquement vers une application de staging pour y subir d’autres tests.
  6. If Heroku CI or Release Phase is configured, tests and tasks run to check if there are any problems with changes to the code or with the tasks that Release Phase is set up to handle (such as database migration). /Si Heroku CI ou Release Phase sont configurés, des tests et des tâches sont exécutés pour vérifier la présence de problèmes associés aux modifications du code ou aux tâches que Release Phase doit prendre en charge (telles qu’une migration de base de données).
  7. When all is ready, the staging app is promoted to production, where the change is available to end users. /Quand tout est prêt, l’application de staging est promue en production, où les changements sont accessibles aux utilisateurs finaux.
  8. If the pipeline is integrated with Slack, a notification is posted in the room when a pull request is created and the code is merged back to master, updating the team with the status and results of CI tests and Release Phase tasks. Team members with the right permissions are also able to deploy apps to staging or promote them to production from within the Slack room. /Si le pipeline est intégré à Slack, une notification est publiée lors de la création d’un pull request et de la fusion du code vers la branche master, pour prévenir l’équipe du statut et des résultats des tests de CI et des tâches Release Phase. Les membres de l’équipe disposant des bonnes permissions peuvent également déployer des applications pour le staging ou de les promouvoir vers l’environnement de production depuis la room Slack.

Note: We do not cover how to set up Heroku ChatOps (Slack Integration) in this module, but you can learn more in our documentation. /Remarque : Nous n’aborderons pas la configuration d’Heroku ChatOps (intégration avec Slack) dans ce module, mais vous pouvez en savoir plus dans notre documentation.

It’s time to get to know Heroku Flow’s features and understand the purpose of each. /Il est temps de découvrir les fonctionnalités d’Heroku Flow et de comprendre à quoi sert chacune d’elles.

Heroku Pipelines /Pipelines Heroku

A pipeline is a group of Heroku apps that share the same codebase. Each app in a pipeline represents one of these steps in a continuous delivery workflow: Review, development, staging, and production. The pipelines overview page helps you visualize your apps progress, as well as meta-information about the status of each stage. For example, you can see whether your production app is running different code than staging. /Un pipeline est un groupe d’applications Heroku qui partagent la même base de code. Chaque application d’un pipeline représente une des étapes du workflow de livraison continue : contrôle, développement, staging et production. La page d’aperçu des pipelines vous aide à visualiser la progression de vos applications, et fournit des informations sur le statut de chaque étape. Par exemple, vous pourrez voir si votre application de production exécute un code différent de votre application de staging.

GitHub Integration /Intégration avec GitHub

Connecting a Heroku Pipeline to a GitHub repository makes it possible to manually or automatically deploy a branch on every GitHub push. For every deploy you can see the diff between the current release and the previous commit in the app’s Activity tab in the Heroku Dashboard, so you’re never guessing what code is on the app. If you’ve configured your GitHub repository to use Heroku CI or an external continuous integration (CI) server, you can configure Heroku to only auto-deploy a branch after CI passes for a particular commit. /Connecter un pipeline Heroku à un dépôt GitHub permet de déployer manuellement ou automatiquement une branche à chaque modification poussée vers GitHub. Pour chaque déploiement, vous pouvez voir le diff entre la version actuelle et le commit précédent dans l’onglet Activity de l’application sur le tableau de bord Heroku, donc vous n’aurez jamais à jouer aux devinettes pour savoir quel code se trouve dans l’application. Si vous avez configurez votre dépôt GitHub de manière à ce qu’il utilise Heroku CI ou un serveur externe d’intégration continue (CI), vous pouvez configurer Heroku pour qu’il ne déploie automatiquement une branche que lorsque la CI réussit pour un commit précis.

Review Apps /Review Apps (applications de contrôle)

Review apps are a new way to propose, discuss, and decide whether to merge changes to your code base. For Heroku apps connected to GitHub, Heroku can manually or automatically spin up a temporary test app on a unique URL for every opened pull request (PR). The temporary app is auto-updated on every commit, so instead of guessing about what the code does, reviewers can actually try the changes in a browser. /Les applications de contrôle constituent une nouvelle manière de proposer, discuter et choisir les changements à intégrer à votre base de code. Pour les applications Heroku connectées à GitHub, Heroku peut créer manuellement ou automatiquement une application de test temporaire disposant d’une URL unique pour chaque pull request (PR) ouvert. L’application temporaire est mise à jour automatiquement à chaque commit, donc plus besoin de jouer aux devinettes pour savoir ce que fait le code : les contrôleurs peuvent vraiment essayer les modifications dans un navigateur.

Release Phase /Release Phase

Release Phase makes it possible to run tasks before a release is deployed to production, eliminating maintenance windows and reducing deployment risk. Use Release Phase to migrate a database, upload assets to a content delivery network (CDN), invalidate a cache, or run any other task your app needs to be ready for production. If a Release Phase task fails, the new release is not deployed, leaving the current production release unaffected. /Release Phase permet d’exécuter des tâches avant qu’une version ne soit déployée en production, ce qui élimine les fenêtres de maintenance et réduit les risques liés au déploiement. Utilisez Release Phase pour migrer une base de données, télécharger des ressources vers un réseau de livraison de contenu (CDN), invalider un cache, ou exécuter toute autre tâche dont votre application a besoin pour être prête pour la production. Si une tâche Release Phase échoue, la nouvelle version n’est pas déployée, et l’environnement de production actuel n’est donc pas affecté.

Heroku CI

Heroku CI is a low-configuration test runner that integrates with Heroku Pipelines. Heroku CI runs your test scripts with zero queue time for faster results, using disposable apps that have parity with your staging and production environments. Access test results from Heroku or GitHub, automate deployments conditionally on CI results, and take advantage of a fully visual interface built to support CI’s role in team-based continuous delivery. /Heroku CI est un système d’exécution des tests nécessitant peu de configuration, et intégrable aux pipelines Heroku. Heroku CI exécute vos tests sans temps d’attente pour accélérer les résultats, en utilisant des applications jetables identiques à vos environnements de staging et de production. Accédez aux résultats des tests depuis Heroku ou GitHub, automatisez les déploiements en fonction des résultats de CI, et tirez profit de l’interface entièrement visuelle conçue pour que la CI puisse tenir son rôle dans la livraison continue en équipe.

Heroku ChatOps

Heroku ChatOps uses the power of Heroku Pipelines to bring a collaborative deployment workflow to Slack. It enables developers to deploy to staging or promote to production from Slack. With Heroku ChatOps, teams can keep track of all code changes within their Slack channel. Pull request notifications, merges, and CI build results all show up in Slack, so no context switching is needed to see build results or check if promoting to production was successful./Heroku ChatOps utilise la puissance d’Heroku Pipelines pour apporter un workflow de déploiement collaboratif vers Slack. Il permet aux développeurs de déployer vers l’environnement de staging ou de promouvoir vers la production depuis Slack. Avec Heroku ChatOps, les équipes peuvent suivre toutes les modifications du code depuis leur chaîne Slack. Les notifications de pull request, de fusion, et de résultats de compilation CI apparaissent tous dans Slack, donc il n’est pas nécessaire de changer de contexte pour voir ces résultats ou vérifier si la promotion vers la production a fonctionné.

Learn About Continuous Integration, Deployment, and Delivery /Découvrez l’intégration continue, le déploiement et la livraison

Learning Objectives /Objectifs de formation

After completing this unit, you’ll be able to: /Une fois cette unité terminée, vous pourrez :

  • Explain and compare continuous integration, deployment, and delivery. /Expliquer ce que sont l’intégration, de déploiement et la livraison continue, et ce qui les distingue.
  • Name some of the benefits of continuous delivery. /Citer les avantages de l’utilisation de la livraison continue.

Prerequisites /Prérequis

To complete this module you need: /Pour terminer ce module, il vous faudra :

  • A free Heroku account /Un compte Heroku gratuit
  • A free GitHub account /Un compte GitHub gratuit

If you haven’t taken the Heroku Enterprise Basics module, we highly recommend completing it before you start this module. /Si vous n’avez pas encore suivi le module Concepts de base d’Heroku Enterprise, nous vous recommandons vivement de commencer par là.

Modern development practices enable teams to build and deploy the most sophisticated, engaging apps on the market. These practices include continuous integration, deployment, and delivery, which allow for short release cycles, automation, and a direct connection to the source code repository. These practices are designed to enable teams to push incremental code updates to production quickly and safely. If these methods are used correctly, bugs and issues show up earlier in the app lifecycle, which results in faster, higher-quality product releases. /Les pratiques de déploiement modernes permettent à des équipes de construire et de déployer les applications les plus sophistiquées et intéressantes du marché. Ces pratiques incluent notamment l’intégration, le déploiement et la livraison continue, et permettent d’avoir des cycles de publication courts, d’automatiser des tâches, et une connexion directe au dépôt du code source. Ces pratiques sont conçues pour permettre aux équipes de pousser des mises à jour progressives du code vers l’environnement de production, de manière rapide et en toute sécurité. Si ces méthodes sont employées correctement, les bogues et les problèmes sont identifiés plus tôt dans le cycle de vie de l’application, ce qui permet des releases plus rapides et de meilleure qualité.

Let’s talk more about continuous integration, continuous delivery, and continuous deployment. Although they sound similar, pay close attention to the differences between each process. /Parlons un peu plus d’intégration continue, de livraison continue, et de déploiement continu. Les termes sont similaires, mais chaque processus est différent.

Continuous Integration /Intégration continue

Using continuous integration, a product is built to include and integrate every code change on every commit (continuously), by any and all developers. An automated build then verifies each check-in, letting teams detect problems early. /Avec l’intégration continue, un produit inclut et intègre toutes les modifications du code à chaque commit de tous les développeurs. Une compilation automatique vérifie ensuite chaque ajout, afin que les équipes détectent les problèmes au plus tôt.

In complex products, changes that seem simple and self-contained can produce unintended consequences. If multiple developers are working in parallel on multiple, isolated code branches, merging changes to a common master branch can have unpredictable results. Unpredictable results often lead to multiple rounds of regression testing and bug fixes. Continuous integration (CI) is a component of the continuous delivery process that enables developers to integrate their updates into the master branch on a regular basis. With CI, automated tests run before and after each change is merged, validating that no bugs have been introduced. /Dans les produits complexes, un changement qui paraît simple et sans influence sur le reste du code peut avoir des conséquences inattendues. Si plusieurs développeurs travaillent en parallèle sur plusieurs branches isolées, fusionner ces changements vers une branche master commune peut avoir des résultats imprévisibles. Ces résultats imprévisibles exigent souvent plusieurs cycles de tests de régression et de correction de bogues. L’intégration continue (CI) est une composante du processus de livraison continue qui permet aux développeurs d’intégrer régulièrement leurs avancées à la branche master. Avec la CI, des tests automatisés sont exécutés avant et après la fusion de chaque changement afin de vérifier que de nouveaux bogues n’ont pas été introduits.

Continuous Delivery /Livraison continue

Continuous delivery ensures that code can be rapidly and safely deployed to production by manually pushing every change to a production-like environment. Since every change is automatically delivered to a staging environment, you can deploy the application to production with a push of a button when the time is right. /La livraison continue permet de déployer le code en production à la fois rapidement et en toute sécurité, en poussant manuellement chaque changement vers un environnement semblable à l’environnement de production. Comme chaque changement est transmis automatiquement vers un environnement de staging, vous pouvez déployer l’application en production d’un simple clic une fois le moment venu.

The additional step of pushing the code to a staging environment is what makes continuous integration different than continuous delivery. Having a green (successful) build with CI doesn’t mean your code is production ready until you push it to a staging environment that matches the final production environment. /L’étape supplémentaire de passage par l’environnement de staging est ce qui distingue l’intégration continue de la livraison continue. Même si votre compilation est réussie (verte) avec la CI, vous ne pouvez pas savoir si votre code est prêt à être déployé en production tant qu’il n’a pas été envoyé vers un environnement de staging semblable à l’environnement de production final.

Continuous Deployment /Déploiement continu

Continuous deployment is the next step of continuous delivery. Using Continuous Deployment, every change that passes the automated tests is deployed to production automatically. Most companies that aren’t bound by regulatory or other constraints should have a goal of continuous deployment. /Le déploiement continu représente le niveau supérieur de la livraison continue. Avec le déploiement continu, chaque changement qui réussit les tests automatisés est automatiquement déployé en production. La plupart des entreprises qui ne sont pas soumises à des contraintes légales ou autres devraient chercher à parvenir au déploiement continu.

While not every company can implement continuous deployment, most companies can implement continuous delivery. Continuous delivery gives you the confidence that your changes are serving value to your customers when you release your product, and that you can actually push that button anytime the business is ready for it. /Si toutes les entreprises ne peuvent pas mettre en place le déploiement continu, la plupart peuvent implémenter la livraison continue. La livraison continue vous donne l’assurance que vos modifications apportent de la valeur à vos clients lorsque vous publiez votre produit, et que vous pouvez le faire chaque fois que votre entreprise est prête.