diff --git a/core/modules/migrate/src/Plugin/Migration.php b/core/modules/migrate/src/Plugin/Migration.php
index abad54f..4c5f782 100644
--- a/core/modules/migrate/src/Plugin/Migration.php
+++ b/core/modules/migrate/src/Plugin/Migration.php
@@ -285,7 +285,7 @@ public function __construct(array $configuration, $plugin_id, $plugin_definition
     $this->destinationPluginManager = $destination_plugin_manager;
     $this->idMapPluginManager = $idmap_plugin_manager;
 
-    foreach ($plugin_definition as $key => $value) {
+    foreach (NestedArray::mergeDeep($plugin_definition, $configuration) as $key => $value) {
       $this->$key = $value;
     }
   }
diff --git a/core/modules/migrate/src/Plugin/MigrationPluginManager.php b/core/modules/migrate/src/Plugin/MigrationPluginManager.php
index d082c11..ac381d2 100644
--- a/core/modules/migrate/src/Plugin/MigrationPluginManager.php
+++ b/core/modules/migrate/src/Plugin/MigrationPluginManager.php
@@ -77,7 +77,7 @@ protected function getDiscovery() {
    * {@inheritdoc}
    */
   public function createInstance($plugin_id, array $configuration = array()) {
-    $instances = $this->createInstances([$plugin_id], $configuration);
+    $instances = $this->createInstances([$plugin_id], [$plugin_id => $configuration]);
     return reset($instances);
   }
 
diff --git a/core/modules/migrate_drupal_ui/src/MigrateUpgradeRunBatch.php b/core/modules/migrate_drupal_ui/src/MigrateUpgradeRunBatch.php
index 2916347..2551e01 100644
--- a/core/modules/migrate_drupal_ui/src/MigrateUpgradeRunBatch.php
+++ b/core/modules/migrate_drupal_ui/src/MigrateUpgradeRunBatch.php
@@ -103,18 +103,18 @@ public static function run($initial_ids, $operation, $config, &$context) {
     static::$numProcessed = 0;
 
     $migration_id = reset($context['sandbox']['migration_ids']);
-    /** @var \Drupal\migrate\Plugin\Migration $migration */
-    $migration = \Drupal::service('plugin.manager.migration')->createInstance($migration_id);
+    $definition = \Drupal::service('plugin.manager.migration')->getDefinition($migration_id);
+    $configuration = [];
 
-    // @TODO, remove this in https://www.drupal.org/node/2681869.
-    $destination = $migration->getDestinationConfiguration();
-    if ($destination['plugin'] === 'entity:file') {
+    debug($definition);
+    if ($definition['destination']['plugin'] === 'entity:file') {
       // Make sure we have a single trailing slash.
-      $source_base_path = rtrim($config['source_base_path'], '/') . '/';
-      $destination['source_base_path'] = $source_base_path;
-      $migration->set('destination', $destination);
+      $configuration['destination']['source_base_path'] = rtrim($config['source_base_path'], '/') . '/';
     }
 
+    /** @var \Drupal\migrate\Plugin\Migration $migration */
+    $migration = \Drupal::service('plugin.manager.migration')->createInstance($migration_id, $configuration);
+
     if ($migration) {
       static::$messages = new MigrateMessageCapture();
       $executable = new MigrateExecutable($migration, static::$messages);
