-
Migrating Specific Fields in a D8 Migration
I recently needed a way to update the value of a single field of a D7 to D8 node migration.
The client was already updating the migrated content so I had to be careful with what I migrated.
The entity destination plugin has a wonderful configuration option that allows you to specify which fields you want to migrate. Search the code here for overwrite_properties.
Here’s how I used this to ignore every field except two:
12345destination:plugin: entity:nodeoverwrite_properties:- field_tax_groups- field_tagsI tested this by editing a node’s title, subtitle, field_tax_groups, and field_tags values. I ran the migration and the edits were preserved on the title and subtitle fields as expected.
-
Migrating a Drupal 7 User Profile2 Image Field to a Drupal 8 User Image Field
Consider this scenario:
- Drupal 7 site contains Profile2 profile called person with image field called field_oldsite_person_image.
- Users each have a profile2 profile associated with their account.
- Drupal 8 site has an image field called field_newsite_user_photo on the user entity itself.
If you need to migrate the image field from the Drupal 7 profile to the Drupal 8 user entity you can extend the d7_user plugin and query for the additional field data. I’m executing an extra query for each user (because the code is in the prepareRow() method), rather than attempting to pull all of the profile data as part of the query in the query() method of the class.
First, create a file in your module like /modules/custom/mysite_migrate/src/Plugin/migrate/source/MysiteUser.php that extends the d7_user plugin:
- Drupal 7 site contains Profile2 profile called person with image field called field_oldsite_person_image.
-
Quick Tips for a Drupal 7 to Drupal 8 Migration
Here are a few quick tips for a Drupal 7 to Drupal 8 migration. I will add more over time; admittedly it’s pretty lame right now!
For general Drupal 8 Migrate API tips, you may also want to check out my other post: Drupal 8 Migrate – Tips and Tricks
Source Plugins
If you’re using a source plugin like d7_user or d7_node it will help you understand what’s happening if you view the source code for the plugin. Pay close attention to the query(), prepareRow(), and fields() methods.
-
Only Migrating Published Nodes in a D7 to D8 Migration
I’m not going into much detail here but hopefully this helps someone.
If you need to migrate only published nodes you can extend the d7_node plugin and add a condition to the query.
First, create a file in your module like /modules/custom/mysite_migrate/src/Plugin/migrate/source/MysiteNewsNode.php that extends the d7_node plugin: