diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java
index 6887159e4986cb773ef8215d3c7a61e0a1a370c0..ca6c3b86bd2073aee7000fd77c7b833eaf10fb0e 100644
--- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java
+++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java
@@ -30,11 +30,14 @@ public class MigrationController extends BaseController
 	{
 		public static final String ERROR = "error";
 		public static final String MIGRATION_SETTINGS = "migrationSettings";
+		public static final String STATUS_TEXT_KEY = "statusTextKey";
 	}
 
 	private static class ReturnValues
 	{
 		public static final String MIGRATION_SETTINGS = "migration/migration";
+		public static final String STATUS = "migration/status";
+		public static final String STATUS_FRAGMENT = "migration/statusFragment";
 	}
 
 	private final MigrationService migrationService;
@@ -106,4 +109,17 @@ public class MigrationController extends BaseController
 		// TODO: redirect to success page
 		return ReturnValues.MIGRATION_SETTINGS;
 	}
+
+	@GetMapping("/status")
+	public String status()
+	{
+		return ReturnValues.STATUS;
+	}
+
+	@GetMapping("/getStatus")
+	public String getMigrationStatus(Model model)
+	{
+		model.addAttribute(ModelAttributes.STATUS_TEXT_KEY, "migration.status.running");
+		return ReturnValues.STATUS_FRAGMENT;
+	}
 }
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/resources/languages/base_de.properties b/BudgetMasterServer/src/main/resources/languages/base_de.properties
index b8de58e0677550f56b1f4ccbe7285a3c83514285..deac411684821ee2151fb2181f7a1fd989de4448 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_de.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_de.properties
@@ -649,3 +649,6 @@ migration.settings.password=Passwort
 migration.settings.verification.password.description=Bitte gib dein aktuelles BudgetMaster Passwort ein, um den Migrationsprozess zu bestätigen.<br><span class="red-text bold">Die Migration kann nicht abgebrochen werden.</span><br>Deine bestehende BudgetMaster Datenbank wird weder geändert noch gelöscht.
 migration.settings.verification.password=Aktuelles BudgetMaster Passwort
 migration.settings.verification.password.wrong=Ungültiges Bestätigungspasswort
+migration.status.running=Migration läuft...
+migration.status.finished=Migration fertiggestellt!
+migration.status.error=Migration fehlgeschlagen!
diff --git a/BudgetMasterServer/src/main/resources/languages/base_en.properties b/BudgetMasterServer/src/main/resources/languages/base_en.properties
index ff69f2097e9df3df1f0f3e42670114ca6e2a31c3..8166a4ba44d9156d1c4fbc778160a1c99e1c19bb 100644
--- a/BudgetMasterServer/src/main/resources/languages/base_en.properties
+++ b/BudgetMasterServer/src/main/resources/languages/base_en.properties
@@ -648,3 +648,7 @@ migration.settings.password=Password
 migration.settings.verification.password.description=Please enter your current BudgetMaster password to confirm the migration process.<br><span class="red-text bold">The migration can not be canceled.</span><br>Your existing BudgetMaster database will neither be modified nor deleted.
 migration.settings.verification.password=Current BudgetMaster password
 migration.settings.verification.password.wrong=Invalid verification password
+migration.status.running=Migration is running...
+migration.status.finished=Migration finished!
+migration.status.error=Migration failed!
+
diff --git a/BudgetMasterServer/src/main/resources/static/js/migration.js b/BudgetMasterServer/src/main/resources/static/js/migration.js
new file mode 100644
index 0000000000000000000000000000000000000000..fc1b6d02b397411333213d218a1f2b4a95370f42
--- /dev/null
+++ b/BudgetMasterServer/src/main/resources/static/js/migration.js
@@ -0,0 +1,24 @@
+$(document).ready(function()
+{
+    getMigrationStatus();
+});
+
+function getMigrationStatus()
+{
+    console.log("ja")
+
+    $.ajax({
+        type: 'GET',
+        url: $('#migration-status').attr('data-url'),
+        data: {},
+        success: function(data)
+        {
+            $('#migration-status').html(data);
+        },
+        complete: function()
+        {
+            // schedule the next request when the current one is complete
+            setTimeout(getMigrationStatus, 3000);
+        }
+    });
+}
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/resources/templates/migration/status.ftl b/BudgetMasterServer/src/main/resources/templates/migration/status.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..5943e03b24b7250c7a3e9088a5825d6679d73645
--- /dev/null
+++ b/BudgetMasterServer/src/main/resources/templates/migration/status.ftl
@@ -0,0 +1,50 @@
+<html>
+    <head>
+        <#import "../helpers/header.ftl" as header>
+        <@header.globals/>
+        <@header.header "BudgetMaster - ${locale.getString('title.migration')}"/>
+        <#import "/spring.ftl" as s>
+    </head>
+    <@header.body>
+        <#import "../helpers/navbar.ftl" as navbar>
+        <@navbar.navbar "migration" settings/>
+        <#import "../helpers/validation.ftl" as validation>
+
+        <main>
+            <div class="card main-card background-color">
+                <div class="container">
+                    <div class="section center-align">
+                        <div class="headline">${locale.getString("title.migration")}</div>
+                    </div>
+                </div>
+
+                <div class="container center-align">
+                    <div class="row">
+                        <div class="col s12 m12 l8 offset-l2">
+                            <div class="preloader-wrapper small active">
+                                <div class="spinner-layer spinner-blue-only">
+                                    <div class="circle-clipper left">
+                                        <div class="circle"></div>
+                                    </div>
+                                    <div class="gap-patch">
+                                        <div class="circle"></div>
+                                    </div>
+                                    <div class="circle-clipper right">
+                                        <div class="circle"></div>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div id="migration-status" data-url="<@s.url '/migration/getStatus'/>"></div>
+                </div>
+            </div>
+        </main>
+
+        <!-- Scripts-->
+        <#import "../helpers/scripts.ftl" as scripts>
+        <@scripts.scripts/>
+        <script src="<@s.url '/js/migration.js'/>"></script>
+    </@header.body>
+</html>
\ No newline at end of file
diff --git a/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..80073e5b80ded45dff24a0ef1408d4285e9f0e04
--- /dev/null
+++ b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl
@@ -0,0 +1,15 @@
+<#global locale = static["de.thecodelabs.utils.util.Localization"]>
+<#import "/spring.ftl" as s>
+<#import "../helpers/header.ftl" as header>
+
+<div class="row">
+    <div class="col s12 m12 l8 offset-l2">
+        <div class="headline-small">${locale.getString(statusTextKey)}</div>
+    </div>
+</div>
+
+<div class="row">
+    <div class="col s12 m12 l8 offset-l2">
+        Status:
+    </div>
+</div>
\ No newline at end of file