diff --git a/backup/import.php b/backup/import.php
index 4cc57345f1e..e3926e38f5d 100644
--- a/backup/import.php
+++ b/backup/import.php
@@ -69,7 +69,10 @@ if ($importcourseid === false || $searchcourses) {
 
     // show the course selector
     echo $OUTPUT->header();
-    echo $renderer->import_course_selector($url, $search);
+    $backup = new import_ui(false, array());
+    echo $renderer->progress_bar($backup->get_progress_bar());
+    $html = $renderer->import_course_selector($url, $search);
+    echo $html;
     echo $OUTPUT->footer();
     die();
 }
diff --git a/backup/util/ui/backup_ui.class.php b/backup/util/ui/backup_ui.class.php
index 02b71dbd25f..0c97587c613 100644
--- a/backup/util/ui/backup_ui.class.php
+++ b/backup/util/ui/backup_ui.class.php
@@ -32,6 +32,12 @@
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class backup_ui extends base_ui {
+    /**
+     * The stages of the backup user interface
+     * The precheck/selection stage of the backup - here you choose the initial settings.
+     */
+    const STAGE_PRECHECK = 0;
+
     /**
      * The stages of the backup user interface.
      * The initial stage of the backup - settings are here.
diff --git a/backup/util/ui/backup_ui_stage.class.php b/backup/util/ui/backup_ui_stage.class.php
index 1e1caf8833f..b6cebada465 100644
--- a/backup/util/ui/backup_ui_stage.class.php
+++ b/backup/util/ui/backup_ui_stage.class.php
@@ -59,6 +59,41 @@ abstract class backup_ui_stage extends base_ui_stage {
     }
 }
 
+/**
+ * Class representing the precheck/selection stage of a backup.
+ *
+ * In this stage the user is required to perform initial selections.
+ * e.g. in course import it is a choice of which course to import from.
+ *
+ * @package   core_backup
+ * @copyright 2019 Peter Dias
+ * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class backup_ui_stage_precheck extends backup_ui_stage {
+    /**
+     * Precheck/selection backup stage constructor
+     * @param backup_ui $ui
+     * @param array $params
+     */
+    public function __construct(backup_ui $ui, array $params = null) {
+        $this->stage = backup_ui::STAGE_PRECHECK;
+        parent::__construct($ui, $params);
+    }
+
+    public function process(base_moodleform $form = null) {
+        // Dummy functions. We don't have to do anything here.
+        return;
+    }
+
+    public function get_next_stage() {
+        return backup_ui::STAGE_INITIAL;
+    }
+
+    public function initialise_stage_form() {
+        // Dummy functions. We don't have to do anything here.
+    }
+}
+
 /**
  * Class representing the initial stage of a backup.
  *
diff --git a/backup/util/ui/base_ui.class.php b/backup/util/ui/base_ui.class.php
index 2c563f0b8ed..41260bab989 100644
--- a/backup/util/ui/base_ui.class.php
+++ b/backup/util/ui/base_ui.class.php
@@ -90,8 +90,11 @@ abstract class base_ui {
         $this->controller = $controller;
         $this->progress = self::PROGRESS_INTIAL;
         $this->stage = $this->initialise_stage(null, $params);
-        // Process UI event before to be safe.
-        $this->controller->process_ui_event();
+
+        if ($this->controller) {
+            // Process UI event before to be safe.
+            $this->controller->process_ui_event();
+        }
     }
 
     /**
diff --git a/backup/util/ui/import_extensions.php b/backup/util/ui/import_extensions.php
index 18384c6f8cb..f746f12f5b0 100644
--- a/backup/util/ui/import_extensions.php
+++ b/backup/util/ui/import_extensions.php
@@ -68,6 +68,11 @@ class import_ui extends backup_ui {
         }
         $selectorlink = new moodle_url($PAGE->url, $this->stage->get_params());
         $selectorlink->remove_params('importid');
+
+        $classes = ["backup_stage"];
+        if ($currentstage == 0) {
+            $classes[] = "backup_stage_current";
+        }
         array_unshift($items, array(
                 'text' => '1. '.get_string('importcurrentstage0', 'backup'),
                 'class' => join(' ', $classes),
@@ -85,7 +90,7 @@ class import_ui extends backup_ui {
      */
     protected function initialise_stage($stage = null, array $params = null) {
         if ($stage == null) {
-            $stage = optional_param('stage', self::STAGE_INITIAL, PARAM_INT);
+            $stage = optional_param('stage', backup_ui::STAGE_PRECHECK, PARAM_INT);
         }
         if (self::$skipcurrentstage) {
             $stage *= 2;
@@ -103,6 +108,9 @@ class import_ui extends backup_ui {
             case backup_ui::STAGE_FINAL:
                 $stage = new import_ui_stage_final($this, $params);
                 break;
+            case backup_ui::STAGE_PRECHECK:
+                $stage = new import_ui_stage_precheck($this, $params);
+                break;
             default:
                 $stage = false;
                 break;
@@ -119,6 +127,7 @@ class import_ui extends backup_ui {
  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  */
 class import_ui_stage_inital extends backup_ui_stage_initial {}
+class import_ui_stage_precheck extends backup_ui_stage_precheck {}
 
 /**
  * Extends the schema stage
