I’m trying to write a custom source plugin for a d7-d8 migration. I want to extend the DrupalnodePluginmigratesourced7 Node.php plugin.
I’m getting the following error when I try to run the migration from the UI:
Migration my_node_page did not meet the requirements. The module my_xtra is not enabled in the source site. source_module: my_xtra.
When I run drush ms I get a different error
No database connection configured for source plugin variable
The database connection key is specified in the group yml and works for other migrations which don’t use the custom source plugin.
Here’s my yml file
id: my_node_page label: Node Basic Page audit: true migration_tags: - Drupal 7 - Content migration_group: my_group source: plugin: my_xtra_node node_type: 'page' process:
Here’s my custom plugin.
<?php namespace Drupalmy_extraPluginmigratesource; use DrupalnodePluginmigratesourced7Node; /** * Drupal 7 node source from database. * * @MigrateSource( * id = "my_xtra_node", * source_provider = "node", * source_module = "my_xtra", * * ) */ class NodeXtra extends Node { /** * {@inheritdoc} */ public function query() { // Select node in its last revision. $query = $this->select('node_revision', 'nr') ->fields('n', [ 'nid', 'type', 'language', 'status', 'created', 'changed', 'comment', 'promote', 'sticky', 'tnid', 'translate', ]) ->fields('nr', [ 'vid', 'title', 'log', 'timestamp', ]); $query->addField('n', 'uid', 'node_uid'); $query->addField('nr', 'uid', 'revision_uid'); $query->innerJoin('node', 'n', static::JOIN); // If the content_translation module is enabled, get the source langcode // to fill the content_translation_source field. if ($this->moduleHandler->moduleExists('content_translation')) { $query->leftJoin('node', 'nt', 'n.tnid = nt.nid'); $query->addField('nt', 'language', 'source_langcode'); } $this->handleTranslations($query); if (isset($this->configuration['node_type'])) { $query->condition('n.type', $this->configuration['node_type']); } return $query; } }
Thanks!