diff --git a/src/common/migrate_logs_to_dot9_db.py b/src/common/migrate_logs_to_dot9_db.py
index 942abc38216a0e0ce215cd98e4a0910793b33ffa..0df51b99c18745d2dacd13284dc69f625ca4cf80 100755
--- a/src/common/migrate_logs_to_dot9_db.py
+++ b/src/common/migrate_logs_to_dot9_db.py
@@ -29,6 +29,7 @@ class Migration:
 	def __init__(self):
 		self.constants = logger.Constants()
 		self.DONE = False
+		self.PROCESSING = False
 
 		if os.path.exists(PATH_TO_DB):
 			print '%s already exists. Exiting..' % PATH_TO_DB
@@ -202,6 +203,7 @@ def migrate(self, queue = None):
 
 		self.con.commit()
 
+		self.PROCESSING = True
 		os.path.walk(PATH_TO_LOGS_BASE_DIR, self.visit, None)
 		s = '''
 
diff --git a/src/gajim.py b/src/gajim.py
index f501ce53875ca13ce25c3f35530ea225421cb039..ba46e47e02cba5934755bd6ea07838be53d354c1 100755
--- a/src/gajim.py
+++ b/src/gajim.py
@@ -1449,6 +1449,19 @@ def __init__(self):
 		gobject.timeout_add(200, self.process_connections)
 		gobject.timeout_add(500, self.read_sleepy)
 
+def test_migration(migration):
+	if not migration.PROCESSING:
+		dialog = gtk.Dialog()
+		#FIXME: translate these strings after 0.9
+		dialog = gtk.MessageDialog(None,
+			gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL,
+			gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message_format = 'Migration failed')
+
+		dialog.format_secondary_text('Automatic migration failed. You can run it manually by doing /PATH/TO/GAJIM/src/common/migrate_logs_to_dot9_db.py.')
+		dialog.run()
+		dialog.destroy()
+		sys.exit()
+
 def wait_migration(migration):
 	if not migration.DONE:
 		return True # loop for ever
@@ -1530,6 +1543,8 @@ def die_cb(cli):
 			t = threading.Thread(target = m.migrate, args = (q,))
 			t.start()
 			gobject.timeout_add(500, wait_migration, m)
+			# In 10 seconds, we test if migration began
+			gobject.timeout_add(10000, test_migration, m)
 			gtk.main()
 			# Init logger values (self.con/cur, jid_already_in)
 			gajim.logger.init_vars()