diff --git a/include/class.cron.php b/include/class.cron.php
index 257926e253fe1662b0630548b62e483bffe20e48..3aa0357c198ce61e25a22dae6bc9ea982954877e 100644
--- a/include/class.cron.php
+++ b/include/class.cron.php
@@ -35,6 +35,11 @@ class Cron {
         if($ost) $ost->purgeLogs();
     }
 
+    function PurgeDrafts() {
+        require_once(INCLUDE_DIR.'class.draft.php');
+        Draft::cleanup();
+    }
+
     function CleanOrphanedFiles() {
         require_once(INCLUDE_DIR.'class.file.php');
         AttachmentFile::deleteOrphans();
@@ -49,6 +54,7 @@ class Cron {
         self::TicketMonitor();
         self::PurgeLogs();
         self::CleanOrphanedFiles();
+        self::PurgeDrafts();
     }
 }
 ?>
diff --git a/include/class.draft.php b/include/class.draft.php
index 6796428b6d0a51ea0c5777331190c2e942e987b8..a4942ecb4bc5611fd9fa4572a3c0e1d022f893b0 100644
--- a/include/class.draft.php
+++ b/include/class.draft.php
@@ -149,6 +149,14 @@ class Draft {
             $sql .= ' AND staff_id='.db_input($staff_id);
         return (!db_query($sql) || !db_affected_rows());
     }
+
+    static function cleanup() {
+        // Keep client drafts for two weeks (14 days)
+        $sql = 'DELETE FROM '.DRAFT_TABLE
+            ." WHERE `namespace` LIKE 'ticket.client.%'
+            AND datediff(now(), updated) > 14";
+        return db_query($sql);
+    }
 }
 
 ?>