--- /dev/null
+Index: src/dird/migrate.c
+===================================================================
+--- src/dird/migrate.c (revision 7926)
++++ src/dird/migrate.c (working copy)
+@@ -402,14 +402,6 @@
+    }
+ 
+    migration_cleanup(jcr, jcr->JobStatus);
+-   if (mig_jcr) {
+-      char jobid[50];
+-      UAContext *ua = new_ua_context(jcr);
+-      edit_uint64(jcr->previous_jr.JobId, jobid);
+-      /* Purge all old file records, but leave Job record */
+-      purge_files_from_jobs(ua, jobid);
+-      free_ua_context(ua);
+-   }
+    return true;
+ }
+ 
+@@ -1087,11 +1079,26 @@
+          edit_uint64(mig_jcr->jr.JobId, ec2));
+       db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
+ 
+-      /* Now mark the previous job as migrated if it terminated normally */
+-      if (jcr->JobStatus == JS_Terminated) {
++      /*
++       * If we terminated a migration normally:
++       *   - mark the previous job as migrated
++       *   - move any Log records to the new JobId
++       *   - Purge the File records from the previous job
++       */
++      if (jcr->JobType == JT_MIGRATE && jcr->JobStatus == JS_Terminated) {
++         char old_jobid[50], new_jobid[50];
+          Mmsg(query, "UPDATE Job SET Type='%c' WHERE JobId=%s",
+-              (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, ec1));
++              (char)JT_MIGRATED_JOB, edit_uint64(jcr->previous_jr.JobId, new_jobid));
+          db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
++         UAContext *ua = new_ua_context(jcr);
++         /* Move JobLog to new JobId */
++         Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
++           new_jobid,
++           edit_uint64(jcr->previous_jr.JobId, old_jobid));
++         db_sql_query(mig_jcr->db, query.c_str(), NULL, NULL);
++         /* Purge all old file records, but leave Job record */
++         purge_files_from_jobs(ua, old_jobid);
++         free_ua_context(ua);
+       } 
+ 
+       if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) {
+@@ -1100,7 +1107,6 @@
+          set_jcr_job_status(jcr, JS_ErrorTerminated);
+       }
+ 
+-
+       update_bootstrap_file(mig_jcr);
+ 
+       if (!db_get_job_volume_names(mig_jcr, mig_jcr->db, mig_jcr->jr.JobId, &mig_jcr->VolumeName)) {