diff --git a/admin/coursereportplugins.php b/admin/coursereportplugins.php
new file mode 100644
index 0000000..7d4feb2
--- /dev/null
+++ b/admin/coursereportplugins.php
@@ -0,0 +1,110 @@
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Provides an overview of installed course report plugins
+ *
+ * Displays the list of found course report plugins, their version (if found) and
+ * a link to delete the course report plugin.
+ *
+ * @see       http://docs.moodle.org/en/Development:Local_customisation
+ * @package   admin
+ * @copyright 2010 David Mudrak <david.mudrak@gmail.com>
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+require_once(dirname(dirname(__FILE__)) . '/config.php');
+require_once($CFG->libdir.'/adminlib.php');
+require_once($CFG->libdir.'/tablelib.php');
+
+admin_externalpage_setup('managecoursereportplugins');
+
+$delete  = optional_param('delete', '', PARAM_SAFEDIR);
+$confirm = optional_param('confirm', '', PARAM_BOOL);
+
+/// If data submitted, then process and store.
+
+if (!empty($delete) and confirm_sesskey()) {
+    echo $OUTPUT->header();
+    echo $OUTPUT->heading(get_string('coursereportplugins'));
+
+    if (!$confirm) {
+        if (get_string_manager()->string_exists('pluginname', 'coursereport_' . $delete)) {
+            $strpluginname = get_string('pluginname', 'coursereport_' . $delete);
+        } else {
+            $strpluginname = $delete;
+        }
+        echo $OUTPUT->confirm(get_string('coursereportplugindeleteconfirm', '', $strpluginname),
+                                new moodle_url($PAGE->url, array('delete' => $delete, 'confirm' => 1)),
+                                $PAGE->url);
+        echo $OUTPUT->footer();
+        die();
+
+    } else {
+        uninstall_plugin('coursereport', $delete);
+        $a = new stdclass();
+        $a->name = $delete;
+        $pluginlocation = get_plugin_types();
+        $a->directory = $pluginlocation['coursereport'] . '/' . $delete;
+        echo $OUTPUT->notification(get_string('plugindeletefiles', '', $a), 'notifysuccess');
+        echo $OUTPUT->continue_button($PAGE->url);
+        echo $OUTPUT->footer();
+        die();
+    }
+}
+
+echo $OUTPUT->header();
+echo $OUTPUT->heading(get_string('coursereportplugins'));
+
+/// Print the table of all installed course report plugins
+
+$table = new flexible_table('coursereportplugins_administration_table');
+$table->define_columns(array('name', 'version', 'delete'));
+$table->define_headers(array(get_string('plugin'), get_string('version'), get_string('delete')));
+$table->define_baseurl($PAGE->url);
+$table->set_attribute('id', 'coursereportplugins');
+$table->set_attribute('class', 'generaltable generalbox boxaligncenter boxwidthwide');
+$table->setup();
+
+$plugins = array();
+foreach (get_plugin_list('coursereport') as $plugin => $plugindir) {
+    if (get_string_manager()->string_exists('pluginname', 'coursereport_' . $plugin)) {
+        $strpluginname = get_string('pluginname', 'coursereport_' . $plugin);
+    } else {
+        $strpluginname = $plugin;
+    }
+    $plugins[$plugin] = $strpluginname;
+}
+textlib_get_instance()->asort($plugins);
+
+foreach ($plugins as $plugin => $name) {
+    $delete = new moodle_url($PAGE->url, array('delete' => $plugin, 'sesskey' => sesskey()));
+    $delete = html_writer::link($delete, get_string('delete'));
+
+    $version = get_config('coursereport_' . $plugin);
+    if (!empty($version->version)) {
+        $version = $version->version;
+    } else {
+        $version = '?';
+    }
+
+    $table->add_data(array($name, $version, $delete));
+}
+
+$table->print_html();
+
+echo $OUTPUT->footer();
diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php
index d107eca..3418027 100644
--- a/admin/settings/plugins.php
+++ b/admin/settings/plugins.php
@@ -418,6 +418,21 @@ foreach (get_plugin_list('report') as $plugin => $plugindir) {
 }
 
 
+/// Add all coursereport plugins
+if ($hassiteconfig) {
+    $ADMIN->add('modules', new admin_category('coursereportplugins', get_string('coursereportplugins')));
+    $ADMIN->add('coursereportplugins', new admin_externalpage('managecoursereportplugins', get_string('coursereportpluginsmanage'),
+                                                        $CFG->wwwroot . '/' . $CFG->admin . '/coursereportplugins.php'));
+}
+
+foreach (get_plugin_list('coursereport') as $plugin => $plugindir) {
+    $settings_path = "$plugindir/settings.php";
+    if (file_exists($settings_path)) {
+        include($settings_path);
+        continue;
+    }
+}
+
 /// Add all local plugins - must be always last!
 if ($hassiteconfig) {
     $ADMIN->add('modules', new admin_category('localplugins', get_string('localplugins')));
@@ -432,3 +447,4 @@ foreach (get_plugin_list('local') as $plugin => $plugindir) {
         continue;
     }
 }
+
diff --git a/lang/en/moodle.php b/lang/en/moodle.php
index af6261b..4ef5aa4 100644
--- a/lang/en/moodle.php
+++ b/lang/en/moodle.php
@@ -330,6 +330,9 @@ $string['courserejectemail'] = 'Sorry, but the course you requested has been rej
 $string['courserejectreason'] = 'Outline your reasons for rejecting this course<br />(this will be emailed to the requester)';
 $string['courserejectsubject'] = 'Your course has been rejected';
 $string['coursereport'] = 'Course report';
+$string['coursereportplugins'] = 'Course report plugins';
+$string['coursereportplugindeleteconfirm'] = 'You are about to completely delete the course report plugin \'{$a}\'. This will completely delete everything in the database associated with this plugin. Are you SURE you want to continue?';
+$string['coursereportpluginsmanage'] = 'Manage course report plugins';
 $string['coursereports'] = 'Course reports';
 $string['courserequest'] = 'Course request';
 $string['courserequestdetails'] = 'Details of the course you are requesting';
