diff --git a/feeds.plugins.inc b/feeds.plugins.inc
index cbba3f5cfcbc2b4104718c9db2cee504902079e9..08b9b98ae2a09521a56c2c07227e4ca575014987 100644
--- a/feeds.plugins.inc
+++ b/feeds.plugins.inc
@@ -21,7 +21,8 @@ function _feeds_feeds_plugins() {
     ),
   );
   $info['FeedsMissingPlugin'] = array(
-    'hidden' => TRUE,
+    'name' => 'Missing plugin',
+    'description' => 'There is a problem with your configuration.',
     'handler' => array(
       'class' => 'FeedsMissingPlugin',
       'file' => 'FeedsPlugin.inc',
diff --git a/feeds_ui/feeds_ui.admin.inc b/feeds_ui/feeds_ui.admin.inc
index b8ebfc69a27817a2bf4a18799976e0908d2f1603..b174d75d81aee62cbf34690672d7b90b4991f582 100644
--- a/feeds_ui/feeds_ui.admin.inc
+++ b/feeds_ui/feeds_ui.admin.inc
@@ -315,7 +315,8 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k
       break;
 
     case 'mapping':
-      $active_container['title'] = t('Mapping for !processor', array('!processor' => $plugins[$config['processor']['plugin_key']]['name']));
+      $processor_name = isset($plugins[$config['processor']['plugin_key']]['name']) ? $plugins[$config['processor']['plugin_key']]['name'] : $plugins['FeedsMissingPlugin']['name'];
+      $active_container['title'] = t('Mapping for @processor', array('@processor' => $processor_name));
       $active_container['body'] = drupal_get_form('feeds_ui_mapping_form', $importer);
       break;
   }
@@ -349,7 +350,7 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k
   $config_info[] = $info;
 
   // Fetcher.
-  $fetcher = $plugins[$config['fetcher']['plugin_key']];
+  $fetcher = isset($plugins[$config['fetcher']['plugin_key']]) ? $plugins[$config['fetcher']['plugin_key']] : $plugins['FeedsMissingPlugin'];
   $actions = array();
   if ($importer->fetcher->hasConfigForm()) {
     $actions = array(l(t('Settings'), $path . '/settings/' . $config['fetcher']['plugin_key']));
@@ -366,7 +367,7 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k
   $config_info[] = $info;
 
   // Parser.
-  $parser = $plugins[$config['parser']['plugin_key']];
+  $parser = isset($plugins[$config['parser']['plugin_key']]) ? $plugins[$config['parser']['plugin_key']] : $plugins['FeedsMissingPlugin'];
   $actions = array();
   if ($importer->parser->hasConfigForm()) {
     $actions = array(l(t('Settings'), $path . '/settings/' . $config['parser']['plugin_key']));
@@ -383,7 +384,7 @@ function feeds_ui_edit_page(FeedsImporter $importer, $active = 'help', $plugin_k
   $config_info[] = $info;
 
   // Processor.
-  $processor = $plugins[$config['processor']['plugin_key']];
+  $processor = isset($plugins[$config['processor']['plugin_key']]) ? $plugins[$config['processor']['plugin_key']] : $plugins['FeedsMissingPlugin'];
   $actions = array();
   if ($importer->processor->hasConfigForm()) {
     $actions[] = l(t('Settings'), $path . '/settings/' . $config['processor']['plugin_key']);
diff --git a/plugins/FeedsPlugin.inc b/plugins/FeedsPlugin.inc
index ec489a89d8e50fba7f14870d067e607a52e00389..4bad07e1106c9e7c8baed94f3a99a604b0871696 100644
--- a/plugins/FeedsPlugin.inc
+++ b/plugins/FeedsPlugin.inc
@@ -272,9 +272,78 @@ class FeedsMissingPlugin extends FeedsPlugin {
   public function pluginType() {
     return 'missing';
   }
+
+  public function save() {}
+
+  /**
+   * Fetcher methods.
+   */
+  public function fetch(FeedsSource $source) {
+    return new FeedsFetcherResult('');
+  }
+
+  public function clear(FeedsSource $source) {}
+
+  public function request($feed_nid = 0) {
+    drupal_access_denied();
+  }
+
   public function menuItem() {
     return array();
   }
+
+  public function subscribe(FeedsSource $source) {}
+
+  public function unsubscribe(FeedsSource $source) {}
+
+  public function importPeriod(FeedsSource $source) {}
+
+  /**
+   * Parser methods.
+   */
+  public function parse(FeedsSource $source, FeedsFetcherResult $fetcher_result) {
+    return new FeedsParserResult();
+  }
+
+  public function getMappingSources() {
+    return array();
+  }
+
+  /**
+   * Processor methods.
+   */
+  public function process(FeedsSource $source, FeedsParserResult $parser_result) {}
+
+  public function entityType() {}
+
+  public function bundle() {}
+
+  public function bundleOptions() {
+    return array();
+  }
+
+  public function getLimit() {
+    return 0;
+  }
+
+  public function getMappings() {
+    return array();
+  }
+
+  public function getMappingTargets() {
+    return array();
+  }
+
+  public function expire(FeedsSource $source, $time = NULL) {}
+
+  public function itemCount(FeedsSource $source) {
+    return 0;
+  }
+
+  public function expiryTime() {
+    return FEEDS_EXPIRE_NEVER;
+  }
+
 }
 
 /**