--- bacula-3.0.1-old/src/dird/dird_conf.h	2009-01-28 04:47:21.000000000 -0600
+++ bacula-3.0.1/src/dird/dird_conf.h	2009-07-06 15:15:11.000000000 -0500
@@ -435,6 +435,7 @@
    bool AllowHigherDuplicates;        /* Permit Higher Level */
    bool CancelQueuedDuplicates;       /* Cancel queued jobs */
    bool CancelRunningDuplicates;      /* Cancel Running jobs */
+   bool MigratePurgeJobs;             /* Migration Purges source job on completion */
    
 
    /* Methods */
--- bacula-3.0.1-old/src/dird/dird_conf.c	2009-03-05 03:43:19.000000000 -0600
+++ bacula-3.0.1/src/dird/dird_conf.c	2009-07-06 15:15:11.000000000 -0500
@@ -336,6 +336,7 @@
    {"allowhigherduplicates",   store_bool, ITEM(res_job.AllowHigherDuplicates), 0, ITEM_DEFAULT, true},
    {"cancelqueuedduplicates",  store_bool, ITEM(res_job.CancelQueuedDuplicates), 0, ITEM_DEFAULT, true},
    {"cancelrunningduplicates", store_bool, ITEM(res_job.CancelRunningDuplicates), 0, ITEM_DEFAULT, false},
+   {"migratepurgejobs", store_bool, ITEM(res_job.MigratePurgeJobs), 0, ITEM_DEFAULT, false},
    {"pluginoptions", store_str, ITEM(res_job.PluginOptions), 0, 0, 0},
    {NULL, NULL, {0}, 0, 0, 0}
 };
--- bacula-3.0.1-old/src/dird/migrate.c	2009-04-27 10:43:34.000000000 -0500
+++ bacula-3.0.1/src/dird/migrate.c	2009-07-06 12:03:30.000000000 -0500
@@ -1174,8 +1174,13 @@
          Mmsg(query, "UPDATE Log SET JobId=%s WHERE JobId=%s",
            new_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);
+         if (jcr->job->MigratePurgeJobs) {
+            /* Purge old Job record */
+            purge_jobs_from_catalog(ua, old_jobid);
+         } else {
+            /* Purge all old file records, but leave Job record */
+            purge_files_from_jobs(ua, old_jobid);
+         }
          free_ua_context(ua);
       } 
 
