{"id":3966,"date":"2019-08-02T09:00:47","date_gmt":"2019-08-02T09:00:47","guid":{"rendered":"https:\/\/understanddrupal.com\/?p=3966"},"modified":"2022-01-26T20:19:25","modified_gmt":"2022-01-26T20:19:25","slug":"ecrire-votre-premiere-migration-drupal","status":"publish","type":"post","link":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/","title":{"rendered":"Ecrire votre premi\u00e8re migration Drupal"},"content":{"rendered":"\n<p>Dans\u00a0<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/ecrire-votre-premiere-migration-drupal\">le post pr\u00e9c\u00e9dent<\/a>, nous avons appris que l&#8217;API Migrate est une impl\u00e9mentation d&#8217;un framework ETL. Nous avons \u00e9galement parl\u00e9 des \u00e9tapes de l&#8217;\u00e9criture et de la gestion des migrations. Maintenant, \u00e9crivons notre premi\u00e8re migration Drupal. Nous allons commencer par un exemple tr\u00e8s simple : cr\u00e9er des n\u0153uds \u00e0 partir de donn\u00e9es cod\u00e9es en dur. Pour cela, nous supposons une installation Drupal utilisant le profil d&#8217;installation `standard&#8217;; qui est fourni avec le type de contenu `Basic Page&#8217;. Au fur et \u00e0 mesure que nous progresserons dans la s\u00e9rie, les migrations deviendront plus compl\u00e8tes et plus complexes. Id\u00e9alement, un seul concept sera introduit \u00e0 la fois. Lorsque cela n&#8217;est pas possible, nous vous expliquerons comment les diff\u00e9rentes parties fonctionnent ensemble. L&#8217;objectif de la le\u00e7on d&#8217;aujourd&#8217;hui est d&#8217;apprendre la structure d&#8217;un fichier de d\u00e9finition de migration et comment l&#8217;ex\u00e9cuter.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"360\" data-src=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\" alt=\"\" class=\"wp-image-3967 lazyload\" data-srcset=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg 640w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-300x169.jpeg 300w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-768x432.jpeg 768w\" data-sizes=\"(max-width: 640px) 100vw, 640px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 640px; --smush-placeholder-aspect-ratio: 640\/360;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"360\" src=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\" alt=\"\" class=\"wp-image-3967\" srcset=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg 640w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-300x169.jpeg 300w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-768x432.jpeg 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-rediger-le-fichier-de-definition-de-la-migration\">R\u00e9diger le fichier de d\u00e9finition de la migration<\/h2>\n\n\n\n<p>Le fichier de d\u00e9finition de migration doit vivre dans un module. Donc, cr\u00e9ons un module personnalis\u00e9 nomm\u00e9 `ud_migrations_first&#8217;; et d\u00e9finissons le module `migrate&#8217;; du noyau Drupal comme d\u00e9pendances dans le fichier&nbsp;<a href=\"https:\/\/www.drupal.org\/docs\/8\/creating-custom-modules\/let-drupal-8-know-about-your-module-with-an-infoyml-file\">*. info.yml<\/a>.<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/1b64ad61969848b92a3c7ce305dcd7ea<\/code><\/p>\n\n\n\n<p>Maintenant, cr\u00e9ons un dossier appel\u00e9 `migrations&#8217;; et \u00e0 l&#8217;int\u00e9rieur un fichier appel\u00e9 `udm_first.yml`. Notez que l&#8217;extension est `yml`, pas `yaml`. Le contenu du fichier sera :<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/1b64ad61969848b92a3c7ce305dcd7ea<\/code><\/p>\n\n\n\n<p>La structure finale du dossier ressemblera \u00e0:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">.\n|-- core\n|-- index.php\n|-- modules\n|   `-- custom\n|       `-- ud_migrations_first\n|           |-- migrations\n|           |   `-- udm_first.yml\n|           `-- ud_migrations_first.info.yml\n<\/pre>\n\n\n\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/YAML\">YAML<\/a>&nbsp;est un format de valeur cl\u00e9 avec imbrication optionnelle d&#8217;\u00e9l\u00e9ments. Ils sont&nbsp;<strong>tr\u00e8s sensibles aux espaces blancs et aux indentations<\/strong>. Par exemple, ils ont besoin d&#8217;au moins un espace apr\u00e8s le symbole deux-points (:) qui s\u00e9pare la cl\u00e9 de la valeur. Notez \u00e9galement que chaque niveau de la hi\u00e9rarchie est indent\u00e9 par deux espaces exactement. Une source commune d&#8217;erreurs lors de l&#8217;\u00e9criture de migrations est un espacement ou une indentation incorrecte des fichiers YAML.<\/p>\n\n\n\n<p>Un rapide coup d&#8217;\u0153il au fichier r\u00e9v\u00e8le les trois parties principales : source, processus et destination. D&#8217;autres cl\u00e9s fournissent des informations suppl\u00e9mentaires sur la migration. Il y a d&#8217;autres cl\u00e9s que celles montr\u00e9es ci-dessus. Par exemple, il est possible de d\u00e9finir des d\u00e9pendances entre les migrations. Une autre option est de baliser les migrations pour qu&#8217;elles puissent \u00eatre ex\u00e9cut\u00e9es ensemble. Nous en apprendrons plus sur ces options dans les prochains articles.<\/p>\n\n\n\n<p>Examinons chaque paire cl\u00e9-valeur du fichier. Pour `id`, il est d&#8217;usage de d\u00e9finir sa valeur pour correspondre au nom du fichier contenant la d\u00e9finition de migration, mais sans l&#8217;extension `. yml`. Cette cl\u00e9 sert d&#8217;identifiant interne que Drupal et l&#8217;API Migrate utilisent pour ex\u00e9cuter et suivre la migration. La valeur `id` doit \u00eatre compos\u00e9e de caract\u00e8res alphanum\u00e9riques, en utilisant \u00e9ventuellement des traits de soulignement pour s\u00e9parer les mots. Quant \u00e0 la cl\u00e9 `label`, c&#8217;est une cha\u00eene lisible par l&#8217;homme utilis\u00e9e pour nommer la migration dans diff\u00e9rentes interfaces.<\/p>\n\n\n\n<p>Dans cet exemple, nous utilisons le plugin source `<a href=\"https:\/\/api.drupal.org\/api\/drupal\/core!modules!migrate!src!Plugin!migrate!source!EmbeddedDataSource.php\/class\/EmbeddedDataSource\">embedded_data<\/a>`. Il permet de d\u00e9finir les donn\u00e9es \u00e0 migrer directement dans le fichier de d\u00e9finition. Pour le configurer, vous d\u00e9finissez une cl\u00e9 `data_rows` dont la valeur est un tableau de tous les \u00e9l\u00e9ments que vous voulez migrer. Chaque \u00e9l\u00e9ment peut contenir un nombre arbitraire de paires cl\u00e9-valeur repr\u00e9sentant des `colonnes` de donn\u00e9es \u00e0 importer.<\/p>\n\n\n\n<p>Un cas d&#8217;utilisation courant pour le plugin `embedded_data` est de tester l&#8217;API Migrate elle-m\u00eame. Une autre m\u00e9thode valable consiste \u00e0 cr\u00e9er un contenu par d\u00e9faut lorsque les donn\u00e9es sont connues \u00e0 l&#8217;avance. Je pr\u00e9sente souvent des ateliers d&#8217;introduction \u00e0 Drupal. Pour gagner du temps, j&#8217;utilise ce plugin pour cr\u00e9er des n\u0153uds qui seront utilis\u00e9s plus tard dans l&#8217;explication de cr\u00e9ation de vues. Consultez ce&nbsp;<a href=\"https:\/\/github.com\/dinarcon\/wdc_emprendimiento_parcial\">r\u00e9f\u00e9rentiel<\/a>&nbsp;pour un exemple de cela. Notez qu&#8217;il utilise une structure de r\u00e9pertoires diff\u00e9rente pour d\u00e9finir les migrations. Cela sera expliqu\u00e9 dans les prochains billets de blog.<\/p>\n\n\n\n<p>Pour la destination nous utilisons le plugin `entity:node` qui vous permet de cr\u00e9er des noeuds de tout type de contenu. La cl\u00e9 `default_bundle` indique que tous les n\u0153uds \u00e0 cr\u00e9er seront de type `Basic page`, par d\u00e9faut. Il est important de noter que la valeur de la cl\u00e9 `default_bundle` est le nom de machine du type de contenu. Vous pouvez le trouver dans `\/admin\/structure\/types\/manage\/page`. En g\u00e9n\u00e9ral, l&#8217;API Migrate utilise les noms de machine pour les valeurs. Au fur et \u00e0 mesure que nous explorerons le syst\u00e8me, nous indiquerons quand ils seront utilis\u00e9s et o\u00f9 trouver les bons.<\/p>\n\n\n\n<p>Dans la section processus, vous mappez les colonnes de la source aux propri\u00e9t\u00e9s et aux champs des n\u0153uds. Les cl\u00e9s sont des noms de propri\u00e9t\u00e9s d&#8217;entit\u00e9s ou des noms de machines de champs. Dans ce cas, nous d\u00e9finissons des valeurs pour le `titre` du noeud et son champ `body`. Vous pouvez trouver les noms des machines de champ dans la page de configuration du type de contenu : `\/admin\/structure\/structure\/types\/manage\/page\/page\/champs`. Les valeurs peuvent \u00eatre copi\u00e9es directement de la source ou transform\u00e9es via des plugins de processus. Cet exemple fait une copie mot \u00e0 mot des valeurs de la source \u00e0 la destination. Les noms de colonnes dans la source ne doivent pas n\u00e9cessairement correspondre \u00e0 la propri\u00e9t\u00e9 de destination ou au nom de champ. Dans cet exemple, ils sont diff\u00e9rents pour faciliter leur identification.<\/p>\n\n\n\n<p>Vous pouvez t\u00e9l\u00e9charger le code de l&#8217;exemple \u00e0 partir de&nbsp;<a href=\"https:\/\/github.com\/dinarcon\/ud_migrations\">https:\/\/github.com\/dinarcon\/ud_migrations<\/a>. L&#8217;exemple ci-dessus se trouve en fait dans un sous-module de ce r\u00e9f\u00e9rentiel. Le m\u00eame r\u00e9f\u00e9rentiel sera utilis\u00e9 pour de nombreux exemples tout au long de la s\u00e9rie. T\u00e9l\u00e9chargez tout le r\u00e9f\u00e9rentiel dans le r\u00e9pertoire `.modules\/custom` de l&#8217;installation de Drupal et activez le module `UD First Migration`.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-execution-de-la-migration\">Ex\u00e9cution de la migration<\/h2>\n\n\n\n<p>Utilisons Drush pour ex\u00e9cuter les migrations avec les commandes fournies par&nbsp;<a href=\"https:\/\/www.drupal.org\/project\/migrate_run\">Migrate Run<\/a>. Ouvrez un terminal, basculez les r\u00e9pertoires sur la racine Web de Drupal, et ex\u00e9cutez les commandes suivantes.<\/p>\n\n\n\n<ul><li>$ drush pm:enable -y migrate migrate_run ud_migrations_first<\/li><li>$ drush migrate:status<\/li><li>$ drush migrate:import udm_first<\/li><\/ul>\n\n\n\n<p>La premi\u00e8re commande active le module de migration du noyau, le runner et le module personnalis\u00e9 contenant le fichier de d\u00e9finition de migration. La deuxi\u00e8me commande affiche une liste de toutes les migrations disponibles dans le syst\u00e8me. Un seul devrait \u00eatre list\u00e9 avec l&#8217;ID de migration `udm_first`. La troisi\u00e8me commande ex\u00e9cute la migration. Si tout se passe bien, vous pouvez visiter la page d&#8217;aper\u00e7u du contenu dans \/admin\/content et voir les deux pages de base cr\u00e9\u00e9es.&nbsp;<strong>F\u00e9licitations, vous avez r\u00e9ussi votre premi\u00e8re migration Drupal!!!<\/strong><\/p>\n\n\n\n<p>Ou peut-\u00eatre pas ? Les migrations Drupal peuvent \u00e9chouer de plusieurs fa\u00e7ons et parfois les messages d&#8217;erreur ne sont pas tr\u00e8s descriptifs. Dans les prochains billets de blog, nous parlerons des flux de travail recommand\u00e9s et des strat\u00e9gies pour d\u00e9boguer les migrations. Pour l&#8217;instant, mentionnons quelques-unes des choses qui pourraient mal tourner dans cet exemple. Si apr\u00e8s avoir lanc\u00e9 la commande `drush migrate:status&#8217;; vous ne voyez pas la migration `udm_first`, assurez-vous que le module `ud_migrations_first` est activ\u00e9. Si elle est activ\u00e9e, et que vous ne la voyez pas, reconstruisez le cache en ex\u00e9cutant `drush cache:rebuild`.<\/p>\n\n\n\n<p>Si vous voyez la migration, mais vous obtenez une erreur d&#8217;analyse yaml lors de l&#8217;ex\u00e9cution de la commande `migrate:import`, v\u00e9rifiez votre indentation. Copier et coller de GitHub vers votre IDE\/\u00e9diteur peut changer l&#8217;espacement. Un espace \u00e9tranger peut briser toute la migration, alors soyez tr\u00e8s attentif. Si la commande signale qu&#8217;elle a cr\u00e9\u00e9 les n\u0153uds, mais que vous obtenez une erreur fatale en essayant d&#8217;en visualiser un, c&#8217;est que le type de contenu n&#8217;a pas \u00e9t\u00e9 correctement d\u00e9fini. Rappelez-vous que le nom de machine du type de contenu `Basic page` est `page` et non `basic_page`. Cette erreur ne peut pas \u00eatre corrig\u00e9e \u00e0 partir de l&#8217;interface d&#8217;administration. Ce que vous devez faire, c&#8217;est annuler la migration en \u00e9mettant la commande suivante : Drush migrate:rollback udm_first`, puis fixez la valeur `default_bundle`, reconstruisez le cache, et importez \u00e0 nouveau.<\/p>\n\n\n\n<p><em>Remarque<\/em>:&nbsp;<a href=\"https:\/\/www.drupal.org\/project\/migrate_tools\">Migrate Tools<\/a>&nbsp;peut \u00eatre utilis\u00e9 pour ex\u00e9cuter la migration. Ce module d\u00e9pend de&nbsp;<a href=\"https:\/\/www.drupal.org\/project\/migrate_plus\">Migrate Plus<\/a>. Pour l&#8217;instant, limitons au minimum les d\u00e9pendances des modules pour se concentrer sur les fonctionnalit\u00e9s de base de Migrate. De plus, le fait de les ignorer d\u00e9montre que ces modules, bien qu&#8217;ils soient tr\u00e8s utiles, ne sont pas des exigences strictes pour la gestion de projets de migration. Si vous d\u00e9cidez d&#8217;utiliser Migrate Tools, assurez-vous de d\u00e9sinstaller Migrate Run. Les deux fournissent les m\u00eames commandes de Drush et sont en conflit l&#8217;une avec l&#8217;autre si les deux sont activ\u00e9es.<\/p>\n\n\n\n<p>Qu&#8217;avez-vous appris dans le billet d&#8217;aujourd&#8217;hui ? Saviez-vous que Migrate Plus et Migrate Tools ne sont pas des exigences strictes pour les projets de migration Drupal ? Saviez-vous que vous pouvez placer vos fichiers YAML dans un r\u00e9pertoire `migrations&#8217;; ? Quel conseil donneriez-vous \u00e0 quelqu&#8217;un qui \u00e9crit sa premi\u00e8re migration ? Veuillez partager vos r\u00e9ponses dans les commentaires. Aussi, je vous serais reconnaissant de bien vouloir partager ce billet de blog avec vos amis et coll\u00e8gues.<\/p>\n\n\n\n<p><em>Cette s\u00e9rie de billets est rendue possible gr\u00e2ce \u00e0 ces&nbsp;<a href=\"https:\/\/understanddrupal.com\/migrations\">g\u00e9n\u00e9reux commanditaires<\/a>.&nbsp;<a href=\"https:\/\/understanddrupal.com\/contact\/feedback\">Contactez-nous<\/a>&nbsp;si votre organisation souhaite soutenir ce projet de documentation, qu&#8217;il s&#8217;agisse de la s\u00e9rie sur la migration ou d&#8217;autres sujets.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans le post pr\u00e9c\u00e9dent, nous avons appris que l&#8217;API Migrate est une impl\u00e9mentation d&#8217;un framework ETL. Nous avons \u00e9galement parl\u00e9 des \u00e9tapes de l&#8217;\u00e9criture et de la gestion des migrations. Maintenant, \u00e9crivons notre premi\u00e8re migration Drupal. Nous allons commencer par un exemple tr\u00e8s simple : cr\u00e9er des n\u0153uds \u00e0 partir de donn\u00e9es cod\u00e9es en dur. Pour cela, nous supposons une installation Drupal utilisant le profil d&#8217;installation `standard&#8217;; qui est fourni avec le type de contenu `Basic Page&#8217;. Au fur et \u00e0 mesure que nous progresserons dans la s\u00e9rie, les migrations deviendront plus compl\u00e8tes et plus complexes. Id\u00e9alement, un seul concept sera introduit \u00e0 la fois. Lorsque cela n&#8217;est pas possible, nous vous expliquerons comment les diff\u00e9rentes parties fonctionnent ensemble. L&#8217;objectif de la le\u00e7on d&#8217;aujourd&#8217;hui est d&#8217;apprendre la structure d&#8217;un fichier de d\u00e9finition de migration et comment l&#8217;ex\u00e9cuter.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[23],"tags":[72],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ecrire votre premi\u00e8re migration Drupal - Understand Drupal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ecrire votre premi\u00e8re migration Drupal - Understand Drupal\" \/>\n<meta property=\"og:description\" content=\"Dans le post pr\u00e9c\u00e9dent, nous avons appris que l&#039;API Migrate est une impl\u00e9mentation d&#039;un framework ETL. Nous avons \u00e9galement parl\u00e9 des \u00e9tapes de l&#039;\u00e9criture et de la gestion des migrations. Maintenant, \u00e9crivons notre premi\u00e8re migration Drupal. Nous allons commencer par un exemple tr\u00e8s simple : cr\u00e9er des n\u0153uds \u00e0 partir de donn\u00e9es cod\u00e9es en dur. Pour cela, nous supposons une installation Drupal utilisant le profil d&#039;installation `standard&#039;; qui est fourni avec le type de contenu `Basic Page&#039;. Au fur et \u00e0 mesure que nous progresserons dans la s\u00e9rie, les migrations deviendront plus compl\u00e8tes et plus complexes. Id\u00e9alement, un seul concept sera introduit \u00e0 la fois. Lorsque cela n&#039;est pas possible, nous vous expliquerons comment les diff\u00e9rentes parties fonctionnent ensemble. L&#039;objectif de la le\u00e7on d&#039;aujourd&#039;hui est d&#039;apprendre la structure d&#039;un fichier de d\u00e9finition de migration et comment l&#039;ex\u00e9cuter.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\" \/>\n<meta property=\"og:site_name\" content=\"Understand Drupal\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-02T09:00:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-26T20:19:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\" \/>\n<meta name=\"author\" content=\"Mauricio Dinarte\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauricio Dinarte\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\"},\"author\":{\"name\":\"Mauricio Dinarte\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3\"},\"headline\":\"Ecrire votre premi\u00e8re migration Drupal\",\"datePublished\":\"2019-08-02T09:00:47+00:00\",\"dateModified\":\"2022-01-26T20:19:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\"},\"wordCount\":1643,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/understanddrupal.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\",\"keywords\":[\"migrations\"],\"articleSection\":[\"Non classifi\u00e9(e)\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\",\"url\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\",\"name\":\"Ecrire votre premi\u00e8re migration Drupal - Understand Drupal\",\"isPartOf\":{\"@id\":\"https:\/\/understanddrupal.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\",\"datePublished\":\"2019-08-02T09:00:47+00:00\",\"dateModified\":\"2022-01-26T20:19:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage\",\"url\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\",\"contentUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/understanddrupal.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ecrire votre premi\u00e8re migration Drupal\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/understanddrupal.com\/#website\",\"url\":\"https:\/\/understanddrupal.com\/\",\"name\":\"Understand Drupal\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/understanddrupal.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/understanddrupal.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/understanddrupal.com\/#organization\",\"name\":\"Understand Drupal\",\"url\":\"https:\/\/understanddrupal.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png\",\"contentUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png\",\"width\":100,\"height\":73,\"caption\":\"Understand Drupal\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3\",\"name\":\"Mauricio Dinarte\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g\",\"caption\":\"Mauricio Dinarte\"},\"url\":\"https:\/\/understanddrupal.com\/fr\/blog\/author\/dinarcon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ecrire votre premi\u00e8re migration Drupal - Understand Drupal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/","og_locale":"fr_FR","og_type":"article","og_title":"Ecrire votre premi\u00e8re migration Drupal - Understand Drupal","og_description":"Dans le post pr\u00e9c\u00e9dent, nous avons appris que l'API Migrate est une impl\u00e9mentation d'un framework ETL. Nous avons \u00e9galement parl\u00e9 des \u00e9tapes de l'\u00e9criture et de la gestion des migrations. Maintenant, \u00e9crivons notre premi\u00e8re migration Drupal. Nous allons commencer par un exemple tr\u00e8s simple : cr\u00e9er des n\u0153uds \u00e0 partir de donn\u00e9es cod\u00e9es en dur. Pour cela, nous supposons une installation Drupal utilisant le profil d'installation `standard'; qui est fourni avec le type de contenu `Basic Page'. Au fur et \u00e0 mesure que nous progresserons dans la s\u00e9rie, les migrations deviendront plus compl\u00e8tes et plus complexes. Id\u00e9alement, un seul concept sera introduit \u00e0 la fois. Lorsque cela n'est pas possible, nous vous expliquerons comment les diff\u00e9rentes parties fonctionnent ensemble. L'objectif de la le\u00e7on d'aujourd'hui est d'apprendre la structure d'un fichier de d\u00e9finition de migration et comment l'ex\u00e9cuter.","og_url":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/","og_site_name":"Understand Drupal","article_published_time":"2019-08-02T09:00:47+00:00","article_modified_time":"2022-01-26T20:19:25+00:00","og_image":[{"url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg"}],"author":"Mauricio Dinarte","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mauricio Dinarte","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#article","isPartOf":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/"},"author":{"name":"Mauricio Dinarte","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3"},"headline":"Ecrire votre premi\u00e8re migration Drupal","datePublished":"2019-08-02T09:00:47+00:00","dateModified":"2022-01-26T20:19:25+00:00","mainEntityOfPage":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/"},"wordCount":1643,"commentCount":0,"publisher":{"@id":"https:\/\/understanddrupal.com\/#organization"},"image":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage"},"thumbnailUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg","keywords":["migrations"],"articleSection":["Non classifi\u00e9(e)"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/","url":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/","name":"Ecrire votre premi\u00e8re migration Drupal - Understand Drupal","isPartOf":{"@id":"https:\/\/understanddrupal.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage"},"image":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage"},"thumbnailUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg","datePublished":"2019-08-02T09:00:47+00:00","dateModified":"2022-01-26T20:19:25+00:00","breadcrumb":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#primaryimage","url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg","contentUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/31Migrations_0-scaled.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/understanddrupal.com\/fr\/blog\/ecrire-votre-premiere-migration-drupal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/understanddrupal.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Ecrire votre premi\u00e8re migration Drupal"}]},{"@type":"WebSite","@id":"https:\/\/understanddrupal.com\/#website","url":"https:\/\/understanddrupal.com\/","name":"Understand Drupal","description":"","publisher":{"@id":"https:\/\/understanddrupal.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/understanddrupal.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/understanddrupal.com\/#organization","name":"Understand Drupal","url":"https:\/\/understanddrupal.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/","url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png","contentUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png","width":100,"height":73,"caption":"Understand Drupal"},"image":{"@id":"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3","name":"Mauricio Dinarte","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g","caption":"Mauricio Dinarte"},"url":"https:\/\/understanddrupal.com\/fr\/blog\/author\/dinarcon\/"}]}},"_links":{"self":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3966"}],"collection":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/comments?post=3966"}],"version-history":[{"count":0,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3966\/revisions"}],"wp:attachment":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/media?parent=3966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/categories?post=3966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/tags?post=3966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}