diff --git a/include/class.ticket.php b/include/class.ticket.php
index b113c1850798d04820c6034aecc426eda875aa42..be76545652c1dba2d5725b1a7447a6b29d8cb0b9 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -970,7 +970,7 @@ class Ticket {
         $ecb = null;
         switch($status->getState()) {
             case 'closed':
-                $sql.=', closed=NOW(), duedate=NULL ';
+                $sql.=', closed=NOW(), lastupdate=NOW(), duedate=NULL ';
                 if ($thisstaff)
                     $sql.=', staff_id='.db_input($thisstaff->getId());
 
@@ -983,7 +983,7 @@ class Ticket {
             case 'open':
                 // TODO: check current status if it allows for reopening
                 if ($this->isClosed()) {
-                    $sql .= ',closed=NULL, reopened=NOW() ';
+                    $sql .= ',closed=NULL, lastupdate=NOW(), reopened=NOW() ';
                     $ecb = function ($t) {
                         $t->logEvent('reopened', 'closed');
                     };
@@ -1261,7 +1261,7 @@ class Ticket {
     function onMessage($message, $autorespond=true) {
         global $cfg;
 
-        db_query('UPDATE '.TICKET_TABLE.' SET isanswered=0,lastmessage=NOW() WHERE ticket_id='.db_input($this->getId()));
+        db_query('UPDATE '.TICKET_TABLE.' SET isanswered=0,lastupdate=NOW(),lastmessage=NOW() WHERE ticket_id='.db_input($this->getId()));
 
         // Auto-assign to closing staff or last respondent
         // If the ticket is closed and auto-claim is not enabled then put the
@@ -2748,6 +2748,7 @@ class Ticket {
         //We are ready son...hold on to the rails.
         $number = $topic ? $topic->getNewTicketNumber() : $cfg->getNewTicketNumber();
         $sql='INSERT INTO '.TICKET_TABLE.' SET created=NOW() '
+            .' ,lastupdate= NOW() '
             .' ,lastmessage= NOW()'
             .' ,user_id='.db_input($user->getId())
             .' ,`number`='.db_input($number)
diff --git a/include/staff/tickets.inc.php b/include/staff/tickets.inc.php
index 3d72b883803150f312e5947a7a56ee95e5108ea5..df4c483746a54c00bd9818a7a3a00d15718128f8 100644
--- a/include/staff/tickets.inc.php
+++ b/include/staff/tickets.inc.php
@@ -103,7 +103,7 @@ case 'due':
 
 default:
 case 'updated':
-    $tickets->order_by('cdata__:priority__priority_urgency', '-updated');
+    $tickets->order_by('cdata__:priority__priority_urgency', '-lastupdate');
     break;
 }
 
diff --git a/include/upgrader/streams/core/b26f29a6-d7480e1c.patch.sql b/include/upgrader/streams/core/b26f29a6-d7480e1c.patch.sql
index a44de85cd550a7e0d0ecbc58e3b1a4936790406c..90cf32c4d6a2f19f37e562e2e1db6bd7c0aef45d 100644
--- a/include/upgrader/streams/core/b26f29a6-d7480e1c.patch.sql
+++ b/include/upgrader/streams/core/b26f29a6-d7480e1c.patch.sql
@@ -150,12 +150,15 @@ UPDATE `%TABLE_PREFIX%user_account` A1
 DROP TABLE %TABLE_PREFIX%_timezones;
 
 ALTER TABLE `%TABLE_PREFIX%ticket`
-    ADD `est_duedate` datetime default NULL AFTER `duedate`;
+    ADD `est_duedate` datetime default NULL AFTER `duedate`,
+    ADD `lastupdate` datetime default NULL AFTER `lastresponse`;
 
 UPDATE `%TABLE_PREFIX%ticket` A1
     JOIN `%TABLE_PREFIX%sla` A2 ON (A1.sla_id = A2.id)
     SET A1.`est_duedate` =
-        COALESCE(A1.`duedate`, A1.`created` + INTERVAL A2.`grace_period` HOUR);
+        COALESCE(A1.`duedate`, A1.`created` + INTERVAL A2.`grace_period` HOUR),
+      A1.`lastupdate` =
+        CAST(GREATEST(IFNULL(A1.lastmessage, 0), IFNULL(A1.closed, 0), IFNULL(A1.reopened, 0), A1.created) as DATETIME);
 
 -- Finished with patch
 UPDATE `%TABLE_PREFIX%config`
diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql
index b2c5b31009713b15c9fd2954409a5754064883d1..b10118f2fb5dc49d4f42b74df3e0e5b01b147bc4 100644
--- a/setup/inc/streams/core/install-mysql.sql
+++ b/setup/inc/streams/core/install-mysql.sql
@@ -614,6 +614,7 @@ CREATE TABLE `%TABLE_PREFIX%ticket` (
   `closed` datetime default NULL,
   `lastmessage` datetime default NULL,
   `lastresponse` datetime default NULL,
+  `lastupdate` datetime default NULL,
   `created` datetime NOT NULL,
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`ticket_id`),