diff -u b/core/modules/action/src/Plugin/migrate/source/Action.php b/core/modules/action/src/Plugin/migrate/source/Action.php --- b/core/modules/action/src/Plugin/migrate/source/Action.php +++ b/core/modules/action/src/Plugin/migrate/source/Action.php @@ -10,7 +10,7 @@ * * @MigrateSource( * id = "action", - * source_module = "system" + * source_module = "action" * ) */ class Action extends DrupalSqlBase { diff -u b/core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml b/core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml --- b/core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml +++ b/core/modules/config_translation/migration_templates/d6_i18n_system_maintenance.yml @@ -6,7 +6,7 @@ plugin: i18n_variable variables: - site_offline_message - source_module: system + source_module: i18n process: langcode: language message: site_offline_message diff -u b/core/modules/config_translation/migration_templates/d6_i18n_system_site.yml b/core/modules/config_translation/migration_templates/d6_i18n_system_site.yml --- b/core/modules/config_translation/migration_templates/d6_i18n_system_site.yml +++ b/core/modules/config_translation/migration_templates/d6_i18n_system_site.yml @@ -13,7 +13,7 @@ - site_frontpage - site_403 - site_404 - source_module: system + source_module: i18n process: langcode: language name: site_name diff -u b/core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml b/core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml --- b/core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml +++ b/core/modules/config_translation/migration_templates/d6_i18n_user_mail.yml @@ -19,7 +19,7 @@ - user_mail_register_pending_approval_body - user_mail_status_blocked_subject - user_mail_status_blocked_body - source_module: system + source_module: i18n process: langcode: language 'status_activated/subject': diff -u b/core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml b/core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml --- b/core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml +++ b/core/modules/config_translation/migration_templates/d6_i18n_user_settings.yml @@ -10,7 +10,7 @@ - user_email_verification - user_register - anonymous - source_module: system + source_module: i18n process: langcode: language 'notify/status_blocked': user_mail_status_blocked_notify diff -u b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php --- b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php +++ b/core/modules/config_translation/src/Plugin/migrate/source/d6/I18nProfileField.php @@ -9,7 +9,7 @@ * * @MigrateSource( * id = "d6_i18n_profile_field", - * source_module = "i18n" + * source_module = "i18nprofile" * ) */ class I18nProfileField extends DrupalSqlBase { diff -u b/core/modules/migrate/src/Annotation/MigrateSource.php b/core/modules/migrate/src/Annotation/MigrateSource.php --- b/core/modules/migrate/src/Annotation/MigrateSource.php +++ b/core/modules/migrate/src/Annotation/MigrateSource.php @@ -44,9 +44,9 @@ * Identifies the system providing the data the source plugin will read. * * This can be any type, and the source plugin itself determines how the value - * is used. For example, Migrate Drupal's source plugins expect - * source_module to be the name of a module that must be installed and - * enabled in the source database. + * is used. For example, Migrate Drupal's source plugins expect source_module + * to be the name of a module that must be installed and enabled in the source + * database. * * @see \Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase::checkRequirements * diff -u b/core/modules/migrate/src/Plugin/migrate/destination/Config.php b/core/modules/migrate/src/Plugin/migrate/destination/Config.php --- b/core/modules/migrate/src/Plugin/migrate/destination/Config.php +++ b/core/modules/migrate/src/Plugin/migrate/destination/Config.php @@ -200,10 +200,14 @@ */ public function getMigrationProvider() { - $destination_module = parent::getMigrationProvider(); - // The migrate modules are not valid destination modules. - if (in_array($destination_module, ['migrate', 'migrate_drupal', 'migrate_drupal_ui'], TRUE)) { - $destination_module = !empty($this->configuration['config_name']) ? explode('.', $this->configuration['config_name'], 2)[0] : NULL; + if (!empty($this->configuration['destination_module'])) { + return $this->configuration['destination_module']; } - return $destination_module; + if (!empty($this->pluginDefinition['destination_module'])) { + return $this->pluginDefinition['destination_module']; + } + if (isset($this->configuration['translations'])) { + return 'config_translation'; + } + return !empty($this->configuration['config_name']) ? explode('.', $this->configuration['config_name'], 2)[0] : NULL; } } diff -u b/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php b/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php --- b/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php +++ b/core/modules/migrate/src/Plugin/migrate/destination/DestinationBase.php @@ -115,7 +115,18 @@ * {@inheritdoc} */ public function getMigrationProvider() { - return !empty($this->configuration['destination_module']) ? $this->configuration['destination_module'] : $this->pluginDefinition['provider']; + if (!empty($this->configuration['destination_module'])) { + return $this->configuration['destination_module']; + } + if (!empty($this->pluginDefinition['destination_module'])) { + return $this->pluginDefinition['destination_module']; + } + if (is_string($this->migration->provider)) { + return $this->migration->provider; + } + else { + return reset($this->migration->provider); + } } } reverted: --- b/core/modules/migrate/src/Plugin/migrate/destination/EntityBaseFieldOverride.php +++ a/core/modules/migrate/src/Plugin/migrate/destination/EntityBaseFieldOverride.php @@ -8,8 +8,7 @@ * Provides entity base field override plugin. * * @MigrateDestination( + * id = "entity:base_field_override" - * id = "entity:base_field_override", - * provider = "core" * ) */ class EntityBaseFieldOverride extends EntityConfigBase { reverted: --- b/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php +++ a/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldInstance.php @@ -6,8 +6,7 @@ * Provides entity field instance plugin. * * @MigrateDestination( + * id = "entity:field_config" - * id = "entity:field_config", - * provider = "core" * ) */ class EntityFieldInstance extends EntityConfigBase { reverted: --- b/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldStorageConfig.php +++ a/core/modules/migrate/src/Plugin/migrate/destination/EntityFieldStorageConfig.php @@ -6,8 +6,7 @@ * Provides entity field storage configuration plugin. * * @MigrateDestination( + * id = "entity:field_storage_config" - * id = "entity:field_storage_config", - * provider = "core" * ) */ class EntityFieldStorageConfig extends EntityConfigBase { reverted: --- b/core/modules/migrate/src/Plugin/migrate/destination/EntityViewMode.php +++ a/core/modules/migrate/src/Plugin/migrate/destination/EntityViewMode.php @@ -25,8 +25,7 @@ * "targetEntityType") to an "entity_view_mode" entity. * * @MigrateDestination( + * id = "entity:entity_view_mode" - * id = "entity:entity_view_mode", - * provider = "core" * ) */ class EntityViewMode extends EntityConfigBase { reverted: --- b/core/modules/migrate/src/Plugin/migrate/destination/PerComponentEntityDisplay.php +++ a/core/modules/migrate/src/Plugin/migrate/destination/PerComponentEntityDisplay.php @@ -45,8 +45,7 @@ * "options" constant, for example the label will be hidden. * * @MigrateDestination( + * id = "component_entity_display" - * id = "component_entity_display", - * provider = "core", * ) */ class PerComponentEntityDisplay extends ComponentEntityDisplayBase { reverted: --- b/core/modules/migrate/src/Plugin/migrate/destination/PerComponentEntityFormDisplay.php +++ a/core/modules/migrate/src/Plugin/migrate/destination/PerComponentEntityFormDisplay.php @@ -38,8 +38,7 @@ * entity type with options defined by the "options" constant. * * @MigrateDestination( + * id = "component_entity_form_display" - * id = "component_entity_form_display", - * provider = "core" * ) */ class PerComponentEntityFormDisplay extends ComponentEntityDisplayBase { diff -u b/core/modules/node/migration_templates/d6_node_translation.yml b/core/modules/node/migration_templates/d6_node_translation.yml --- b/core/modules/node/migration_templates/d6_node_translation.yml +++ b/core/modules/node/migration_templates/d6_node_translation.yml @@ -6,6 +6,7 @@ source: plugin: d6_node translations: true + source_module: translation process: # If you are using this file to build a custom migration consider removing # the nid field to allow incremental migrations. @@ -41,6 +42,7 @@ destination: plugin: entity:node translations: true + destination_module: content_translation migration_dependencies: required: - d6_user @@ -55 +56,0 @@ -source_module: migrate_drupal diff -u b/core/modules/node/migration_templates/d7_node_translation.yml b/core/modules/node/migration_templates/d7_node_translation.yml --- b/core/modules/node/migration_templates/d7_node_translation.yml +++ b/core/modules/node/migration_templates/d7_node_translation.yml @@ -7,6 +7,7 @@ source: plugin: d7_node translations: true + source_module: translation process: # If you are using this file to build a custom migration consider removing # the nid field to allow incremental migrations. @@ -32,6 +33,7 @@ translations: true content_translation_update_definitions: - node + destination_module: content_translation migration_dependencies: required: - d7_user @@ -42 +43,0 @@ -source_module: migrate_drupal diff -u b/core/modules/taxonomy/src/Plugin/migrate/source/d6/VocabularyTranslation.php b/core/modules/taxonomy/src/Plugin/migrate/source/d6/VocabularyTranslation.php --- b/core/modules/taxonomy/src/Plugin/migrate/source/d6/VocabularyTranslation.php +++ b/core/modules/taxonomy/src/Plugin/migrate/source/d6/VocabularyTranslation.php @@ -9,7 +9,7 @@ * * @MigrateSource( * id = "d6_taxonomy_vocabulary_translation", - * source_module = "taxonomy" + * source_module = "i18ntaxonomy" * ) */ class VocabularyTranslation extends DrupalSqlBase { reverted: --- b/core/modules/user/migration_templates/user_profile_entity_display.yml +++ a/core/modules/user/migration_templates/user_profile_entity_display.yml @@ -39,7 +39,6 @@ 4: true # PROFILE_HIDDEN destination: plugin: component_entity_display - source_module: user migration_dependencies: required: - user_profile_field_instance only in patch2: unchanged: --- a/core/modules/migrate/src/Annotation/MigrateDestination.php +++ b/core/modules/migrate/src/Annotation/MigrateDestination.php @@ -43,4 +43,15 @@ class MigrateDestination extends Plugin { */ public $requirements_met = TRUE; + /** + * Identifies the system handling the data the destination plugin will write. + * + * This can be any type, and the destination plugin itself determines how the + * value is used. For example, Migrate Drupal's destination plugins expect + * destination_module to be the name of a module that must be installed on the + * destination. + * + * @var mixed + */ + public $destination_module; }