diff --git a/apps/files_encryption/ajax/getMigrationStatus.php b/apps/files_encryption/ajax/getMigrationStatus.php
new file mode 100644
index 0000000000000000000000000000000000000000..4da035a97d46ffd41e8fd8cb99ef0a9c8e2b037b
--- /dev/null
+++ b/apps/files_encryption/ajax/getMigrationStatus.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * Copyright (c) 2013, Bjoern Schiessle <schiessle@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ *
+ * @brief check migration status
+ */
+use OCA\Encryption\Util;
+
+\OCP\JSON::checkAppEnabled('files_encryption');
+
+$user = isset($_POST['user']) ? $_POST['user'] : '';
+$password = isset($_POST['password']) ? $_POST['password'] : '';
+
+$migrationCompleted = true;
+
+if ($user !== '' && $password !== '') {
+	if (\OCP\User::checkPassword($user, $password)) {
+		$util = new Util(new \OC_FilesystemView('/'), $user);
+		if ($util->getMigrationStatus() !== Util::MIGRATION_COMPLETED) {
+			$migrationCompleted = false;
+		}
+	}
+}
+
+\OCP\JSON::success(array('data' => array('migrationCompleted' => $migrationCompleted)));
diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php
index c930ac9eca8be5cb9b88e3651a8771428613bf4c..fd9aa429b01622fee7c1aa719c2bd5c7c66aa711 100644
--- a/apps/files_encryption/appinfo/app.php
+++ b/apps/files_encryption/appinfo/app.php
@@ -10,6 +10,8 @@ OC::$CLASSPATH['OCA\Encryption\Session'] = 'files_encryption/lib/session.php';
 OC::$CLASSPATH['OCA\Encryption\Capabilities'] = 'files_encryption/lib/capabilities.php';
 OC::$CLASSPATH['OCA\Encryption\Helper'] = 'files_encryption/lib/helper.php';
 
+\OCP\Util::addscript('files_encryption', 'detect-migration');
+
 if (!OC_Config::getValue('maintenance', false)) {
 	OC_FileProxy::register(new OCA\Encryption\Proxy());
 
@@ -52,4 +54,3 @@ if (!OC_Config::getValue('maintenance', false)) {
 // Register settings scripts
 OCP\App::registerAdmin('files_encryption', 'settings-admin');
 OCP\App::registerPersonal('files_encryption', 'settings-personal');
-
diff --git a/apps/files_encryption/js/detect-migration.js b/apps/files_encryption/js/detect-migration.js
new file mode 100644
index 0000000000000000000000000000000000000000..301e77f24f7e88b38ca1678b437cb316432a1573
--- /dev/null
+++ b/apps/files_encryption/js/detect-migration.js
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2013
+ *  Bjoern Schiessle <schiessle@owncloud.com>
+ * This file is licensed under the Affero General Public License version 3 or later.
+ * See the COPYING-README file.
+ */
+
+
+$(document).ready(function(){
+	$('form[name="login"]').on('submit', function() {
+		var user = $('#user').val();
+		var password = $('#password').val();
+		$.ajax({
+			type: 'POST',
+			url: OC.linkTo('files_encryption', 'ajax/getMigrationStatus.php'),
+			dataType: 'json',
+			data: {user: user, password: password},
+			async: false,
+			success: function(response) {
+				if (response.data.migrationCompleted === false) {
+					var message = t('files_encryption', 'Initial encryption started... This can take some time. Please wait.');
+					$('#messageText').text(message);
+					$('#message').removeClass('hidden').addClass('update');
+				}
+			}
+		});
+	});
+
+});
diff --git a/apps/files_encryption/lib/util.php b/apps/files_encryption/lib/util.php
index 33ab3f5696590534c34215b99c28bfa697ea7b4b..434ed225644368dc0ede89fd1c655a9db9922037 100644
--- a/apps/files_encryption/lib/util.php
+++ b/apps/files_encryption/lib/util.php
@@ -1245,7 +1245,6 @@ class Util {
 		$sql = 'SELECT `migration_status` FROM `*PREFIX*encryption` WHERE `uid` = ?';
 
 		$args = array($this->userId);
-
 		$query = \OCP\DB::prepare($sql);
 
 		$result = $query->execute($args);
@@ -1266,20 +1265,23 @@ class Util {
 		// If no record is found
 		if (empty($migrationStatus)) {
 			\OCP\Util::writeLog('Encryption library', "Could not get migration status for " . $this->userId . ", no record found", \OCP\Util::ERROR);
-			// insert missing entry in DB with status open
-			$sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`,`migration_status`) VALUES (?,?,?,?)';
-			$args = array(
-				$this->userId,
-				'server-side',
-				0,
-				self::MIGRATION_OPEN
-			);
-			$query = \OCP\DB::prepare($sql);
-			$query->execute($args);
-
-			return self::MIGRATION_OPEN;
-			// If a record is found
-		} else {
+			// insert missing entry in DB with status open if the user exists
+			if (\OCP\User::userExists($this->userId)) {
+				$sql = 'INSERT INTO `*PREFIX*encryption` (`uid`,`mode`,`recovery_enabled`,`migration_status`) VALUES (?,?,?,?)';
+				$args = array(
+					$this->userId,
+					'server-side',
+					0,
+					self::MIGRATION_OPEN
+				);
+				$query = \OCP\DB::prepare($sql);
+				$query->execute($args);
+
+				return self::MIGRATION_OPEN;
+			} else {
+				return false;
+			}
+		} else { // If a record is found
 			return (int)$migrationStatus[0];
 		}
 
diff --git a/core/css/styles.css b/core/css/styles.css
index 5c0aa1fedc2255217bf258513f7cd1bb352fbb23..859f11ff0a8d61b08ffe949a7d7f89e26c76288b 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -283,6 +283,11 @@ input[type="submit"].enabled {
 	opacity: .6;
 }
 
+#body-login p#message img {
+	vertical-align: middle;
+	padding: 5px;
+}
+
 #body-login div.buttons { text-align:center; }
 #body-login p.info {
 	width: 22em;
@@ -481,6 +486,10 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; }
 	color: #ccc;
 }
 
+#body-login .update img.float-spinner {
+	float: left;
+}
+
 #body-user .warning, #body-settings .warning {
 	margin-top: 8px;
 	padding: 5px;
diff --git a/core/templates/login.php b/core/templates/login.php
index aca42c84387ce44040125cc48bfcda841124bff0..b81128a3269a2d4cd848ef14985adc79cee6dfdd 100644
--- a/core/templates/login.php
+++ b/core/templates/login.php
@@ -1,5 +1,5 @@
 <!--[if IE 8]><style>input[type="checkbox"]{padding:0;}</style><![endif]-->
-<form method="post">
+<form method="post" name="login">
 	<fieldset>
 	<?php if (!empty($_['redirect_url'])) {
 		print_unescaped('<input type="hidden" name="redirect_url" value="' . OC_Util::sanitizeHTML($_['redirect_url']) . '" />');
@@ -18,6 +18,10 @@
 				<small><?php p($l->t('Please contact your administrator.')); ?></small>
 			</div>
 		<?php endif; ?>
+		<p id="message" class="hidden">
+			<img class="float-spinner" src="<?php p(\OCP\Util::imagePath('core', 'loading-dark.gif'));?>"/>
+			<span id="messageText"></span>
+		</p>
 		<p class="infield grouptop">
 			<input type="text" name="user" id="user" placeholder=""
 				   value="<?php p($_['username']); ?>"<?php p($_['user_autofocus'] ? ' autofocus' : ''); ?>