diff --git a/etc/config.json b/etc/config.json
index a26337d..4471d7e 100644
--- a/etc/config.json
+++ b/etc/config.json
@@ -8,5 +8,11 @@
     "jobs_working_dir": "/home/josh/var/lib/turbo-hipster/jobs",
     "git_working_dir": "/home/josh/var/lib/turbo-hipster/git",
     "pip_download_cache": "/home/josh/var/cache/pip",
-    "plugins": ["gate_real_db_upgrade"]
+    "plugins": ["gate_real_db_upgrade"],
+    "publish_logs":
+    {
+        "type": "local",
+        "path": "/home/josh/var/www/results/",
+        "prepend_url": "http://localhost/results/"
+    }
 }
\ No newline at end of file
diff --git a/turbo_hipster/task_plugins/gate_real_db_upgrade/datasets/some_dataset_example/config.json b/turbo_hipster/task_plugins/gate_real_db_upgrade/datasets/some_dataset_example/config.json
index fdcd03d..51e00e3 100644
--- a/turbo_hipster/task_plugins/gate_real_db_upgrade/datasets/some_dataset_example/config.json
+++ b/turbo_hipster/task_plugins/gate_real_db_upgrade/datasets/some_dataset_example/config.json
@@ -1,11 +1,5 @@
 {
     "db_user": "nova",
     "db_pass": "tester",
-    "nova_db": "nova",
-    "publish_to":
-        {
-            "type": "local",
-            "path": "/home/josh/var/www/results/",
-            "prepend_url": "http://localhost/results/"
-        }
+    "nova_db": "nova"
 }
diff --git a/turbo_hipster/task_plugins/gate_real_db_upgrade/handle_results.py b/turbo_hipster/task_plugins/gate_real_db_upgrade/handle_results.py
index f3710b9..c986ee6 100644
--- a/turbo_hipster/task_plugins/gate_real_db_upgrade/handle_results.py
+++ b/turbo_hipster/task_plugins/gate_real_db_upgrade/handle_results.py
@@ -21,6 +21,7 @@
 from lib.utils import push_file
 import tempfile
 import os
+import re
 
 def generate_log_index(datasets):
     """ Create an index of logfiles and links to them """
@@ -29,8 +30,12 @@
     output = '<html><head><title>Index of results</title></head><body>'
     output += '<ul>'
     for dataset in datasets:
-        output += '<li><a href="%s">%s</a></li>' % (dataset['result_uri'],
-                                                    dataset['name'])
+        output += '<li>'
+        output += '<a href="%s">%s</a>' % (dataset['result_uri'],
+                                           dataset['name'])
+        output += ' <span class="%s">%s</span>' % (dataset['result'],
+                                                   dataset['result'])
+        output += '</li>'
 
     output += '</ul>'
     output += '</body></html>'
@@ -47,14 +52,13 @@
     return os.path.join(tempdir, index_filename)
 
 
-def generate_push_results(datasets, job_unique_number):
+def generate_push_results(datasets, job_unique_number, publish_config):
     """ Generates and pushes results """
 
     for i, dataset in enumerate(datasets):
-        if 'publish_to' in dataset['config']:
-            result_uri = push_file(job_unique_number,
-                                   dataset['log_file_path'],
-                                   dataset['config']['publish_to'])
+        result_uri = push_file(job_unique_number,
+                               dataset['log_file_path'],
+                               publish_config)
         datasets[i]['result_uri'] = result_uri
 
     index_file = make_index_file(datasets, 'index.html')
@@ -66,4 +70,30 @@
 
 
 def check_log_for_errors(logfile):
+    """ Run regex over the given logfile to find errors """
+    MIGRATION_START_RE = re.compile('([0-9]+) -&gt; ([0-9]+)\.\.\.$')
+    MIGRATION_END_RE = re.compile('^done$')
+    MIGRATION_COMMAND_START = '***** Start DB upgrade to state of'
+    MIGRATION_COMMAND_END = '***** Finished DB upgrade to state of'
+
+    with open(logfile,'r') as fd:
+        migration_started = False
+        for line in fd:
+            if MIGRATION_START_RE.match(line):
+                if migration_started:
+                    # We didn't see the last one finish,
+                    # something must have failed
+                    return False
+
+                migration_started = True
+            elif MIGRATION_END_RE.match(line):
+                if migration_started:
+                    # We found the end to this migration
+                    migration_started = False
+
+        if migration_started:
+            # We never saw the end of a migration,
+            # something must have failed
+            return False
+
     return True
diff --git a/turbo_hipster/task_plugins/gate_real_db_upgrade/task.py b/turbo_hipster/task_plugins/gate_real_db_upgrade/task.py
index c2cde06..21907f8 100644
--- a/turbo_hipster/task_plugins/gate_real_db_upgrade/task.py
+++ b/turbo_hipster/task_plugins/gate_real_db_upgrade/task.py
@@ -141,18 +141,22 @@
     def _handle_results(self):
         """ pass over the results to handle_results.py for post-processing """
         self.log.debug("Process the resulting files (upload/push)")
-        index_url = handle_results.generate_push_results(self._get_datasets(),
-                                                         self.job.unique)
+        index_url = handle_results.generate_push_results(
+            self._get_datasets(),
+            self.job.unique,
+            self.config['publish_logs']
+        )
         self.log.debug("Index URL found at %s" % index_url)
         self.work_data['url'] = index_url
 
     def _check_all_dataset_logs_for_errors(self):
         self.log.debug("Check logs for errors")
         failed = False
-        for dataset in self._get_datasets():
+        for i, dataset in enumerate(self._get_datasets()):
             # Look for the beginning of the migration start
             result = \
                 handle_results.check_log_for_errors(dataset['log_file_path'])
+            self.datasets[i]['result'] = 'SUCCESS' if result else 'FAILURE'
             if not result:
                 failed = True
                 break
@@ -181,6 +185,7 @@
                     self.job.unique,
                     dataset['name'] + '.log'
                 )
+                dataset['result'] = 'UNTESTED'
                 with open(os.path.join(dataset['path'], 'config.json'),
                           'r') as config_stream:
                     dataset['config'] = json.load(config_stream)
