diff --git a/include/class.role.php b/include/class.role.php
index ef424a917d5cd45a95e0186977cd6e578893005c..1f2ab4d8cda60f1f16130a1a1dba505e0823cc34 100644
--- a/include/class.role.php
+++ b/include/class.role.php
@@ -281,6 +281,26 @@ class RolePermission {
                     /* @trans */ 'Delete',
                     /* @trans */ 'Ability to delete tickets'),
                 ),
+            /* @trans */ 'Tasks' => array(
+                'task.create'  => array(
+                    /* @trans */ 'Create',
+                    /* @trans */ 'Ability to create tasks'),
+                'task.edit'   => array(
+                    /* @trans */ 'Edit',
+                    /* @trans */ 'Ability to edit tasks'),
+                'task.assign'   => array(
+                    /* @trans */ 'Assign',
+                    /* @trans */ 'Ability to assign tasks to agents or teams'),
+                'task.transfer'   => array(
+                    /* @trans */ 'Transfer',
+                    /* @trans */ 'Ability to transfer tasks between departments'),
+                'task.close'   => array(
+                    /* @trans */ 'Close',
+                    /* @trans */ 'Ability to close tasks'),
+                'tasks.delete'   => array(
+                    /* @trans */ 'Delete',
+                    /* @trans */ 'Ability to delete tasks'),
+                ),
             /* @trans */ 'Knowledgebase' => array(
                 'kb.premade'   => array(
                     /* @trans */ 'Premade',
diff --git a/include/i18n/en_US/role.yaml b/include/i18n/en_US/role.yaml
index f3def31e27e96f965ff5aa4fc8c3325ea225d81c..d83a60c2914848730123c02c623b52e7b210cd71 100644
--- a/include/i18n/en_US/role.yaml
+++ b/include/i18n/en_US/role.yaml
@@ -24,6 +24,13 @@
     ticket.reply,
     ticket.close,
     ticket.delete,
+    task.create,
+    task.edit,
+    task.assign,
+    task.transfer,
+    task.reply,
+    task.close,
+    task.delete,
     kb.premade,
     kb.faq,
     stats.agents,
@@ -42,6 +49,12 @@
     ticket.transfer,
     ticket.reply,
     ticket.close,
+    task.create,
+    task.edit,
+    task.assign,
+    task.transfer,
+    task.reply,
+    task.close,
     kb.premade,
     kb.faq,
     stats.agents,
@@ -57,4 +70,8 @@
     ticket.create,
     ticket.assign,
     ticket.transfer,
-    ticket.reply]
+    ticket.reply
+    task.create,
+    task.assign,
+    task.transfer,
+    task.reply]
diff --git a/include/upgrader/streams/core.sig b/include/upgrader/streams/core.sig
index 73c2003f8c53fd3a92199db12c39bff375b68149..fff47877fe2996017555fd667e82af5a7ab1db9d 100644
--- a/include/upgrader/streams/core.sig
+++ b/include/upgrader/streams/core.sig
@@ -1 +1 @@
-48b4499152a6c11e714d4a40fc33332a
+366ff61fbe023fe840a4a65138320d11
diff --git a/include/upgrader/streams/core/4b4daf9c-48b44991.patch.sql b/include/upgrader/streams/core/4b4daf9c-48b44991.patch.sql
deleted file mode 100644
index 7ceb7daed55117866ff95f206adb9eb513133a92..0000000000000000000000000000000000000000
--- a/include/upgrader/streams/core/4b4daf9c-48b44991.patch.sql
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @version v1.9.5
- * @signature 48b4499152a6c11e714d4a40fc33332a
- * @title Add tasks
- *
- * This patch introduces the concept of tasks
- *
- */
-
--- create task task
-CREATE TABLE `%TABLE_PREFIX%task` (
-  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
-  `object_id` int(11) NOT NULL DEFAULT '0',
-  `object_type` char(1) NOT NULL,
-  `number` varchar(20) DEFAULT NULL,
-  `dept_id` int(10) unsigned NOT NULL DEFAULT '0',
-  `sla_id` int(10) unsigned NOT NULL DEFAULT '0',
-  `staff_id` int(10) unsigned NOT NULL DEFAULT '0',
-  `team_id` int(10) unsigned NOT NULL DEFAULT '0',
-  `flags` int(10) unsigned NOT NULL DEFAULT '0',
-  `created` datetime NOT NULL,
-  `updated` datetime NOT NULL,
-  PRIMARY KEY (`id`),
-  KEY `dept_id` (`dept_id`),
-  KEY `staff_id` (`staff_id`),
-  KEY `team_id` (`team_id`),
-  KEY `created` (`created`),
-  KEY `sla_id` (`sla_id`),
-  KEY `object` (`object_id`,`object_type`)
-) DEFAULT CHARSET=utf8;
-
--- Add flags field to form field
-ALTER TABLE  `%TABLE_PREFIX%form_field`
-    ADD  `flags` INT UNSIGNED NOT NULL DEFAULT  '1' AFTER  `form_id`;
-
--- Flag field stored in the system elsewhere as nonstorable locally.
-UPDATE `%TABLE_PREFIX%form_field` A1 JOIN `%TABLE_PREFIX%form` A2 ON(A2.id=A1.form_id)
-    SET A1.`flags` = 3
-    WHERE A2.`type` = 'U' AND A1.`name` IN('name','email');
-
-UPDATE `%TABLE_PREFIX%form_field` A1 JOIN `%TABLE_PREFIX%form` A2 ON(A2.id=A1.form_id)
-    SET A1.`flags`=3
-    WHERE A2.`type`='O' AND A1.`name` IN('name');
-
--- TODO: add ticket thread entry??
-
-
--- rename ticket sequence numbering
-
-UPDATE `%TABLE_PREFIX%config`
-    SET `key` = 'ticket_number_format'
-    WHERE `key` = 'number_format'  AND `namespace` = 'core';
-
-UPDATE `%TABLE_PREFIX%config`
-    SET `key` = 'ticket_sequence_id'
-    WHERE `key` = 'sequence_id'  AND `namespace` = 'core';
-
--- Set new schema signature
-UPDATE `%TABLE_PREFIX%config`
-    SET `value` = '48b4499152a6c11e714d4a40fc33332a'
-    WHERE `key` = 'schema_signature' AND `namespace` = 'core';
diff --git a/include/upgrader/streams/core/b26f29a6-4b4daf9c.cleanup.sql b/include/upgrader/streams/core/c7c82835-366ff61f.cleanup.sql
similarity index 100%
rename from include/upgrader/streams/core/b26f29a6-4b4daf9c.cleanup.sql
rename to include/upgrader/streams/core/c7c82835-366ff61f.cleanup.sql
diff --git a/include/upgrader/streams/core/b26f29a6-4b4daf9c.patch.sql b/include/upgrader/streams/core/c7c82835-366ff61f.patch.sql
similarity index 67%
rename from include/upgrader/streams/core/b26f29a6-4b4daf9c.patch.sql
rename to include/upgrader/streams/core/c7c82835-366ff61f.patch.sql
index 62280690740e46da12e8f2d052fea4c9a37d3e55..df0890e1504f13da161cacb6e5e03d564cb40882 100644
--- a/include/upgrader/streams/core/b26f29a6-4b4daf9c.patch.sql
+++ b/include/upgrader/streams/core/c7c82835-366ff61f.patch.sql
@@ -1,9 +1,9 @@
 /**
- * @version v1.9.5
- * @signature 2257f6f22ca4b31bea6045b8b7d59d56
- * @title Threads revisited
+ * @version v1.9.6
+ * @signature  366ff61fbe023fe840a4a65138320d11
+ * @title Add tasks
  *
- * This patch adds ability to thread anything
+ * This patch adds ability to thread anything and introduces tasks
  *
  */
 
@@ -77,9 +77,40 @@ ALTER TABLE  `%TABLE_PREFIX%ticket_email_info`
 
 RENAME TABLE `%TABLE_PREFIX%ticket_email_info` TO  `%TABLE_PREFIX%thread_entry_email`;
 
+-- create task task
+CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%task` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `object_id` int(11) NOT NULL DEFAULT '0',
+  `object_type` char(1) NOT NULL,
+  `number` varchar(20) DEFAULT NULL,
+  `dept_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `sla_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `staff_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `team_id` int(10) unsigned NOT NULL DEFAULT '0',
+  `flags` int(10) unsigned NOT NULL DEFAULT '0',
+  `duedate` datetime DEFAULT NULL,
+  `created` datetime NOT NULL,
+  `updated` datetime NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `dept_id` (`dept_id`),
+  KEY `staff_id` (`staff_id`),
+  KEY `team_id` (`team_id`),
+  KEY `created` (`created`),
+  KEY `sla_id` (`sla_id`),
+  KEY `object` (`object_id`,`object_type`)
+) DEFAULT CHARSET=utf8;
 
+-- rename ticket sequence numbering
+
+UPDATE `%TABLE_PREFIX%config`
+    SET `key` = 'ticket_number_format'
+    WHERE `key` = 'number_format'  AND `namespace` = 'core';
+
+UPDATE `%TABLE_PREFIX%config`
+    SET `key` = 'ticket_sequence_id'
+    WHERE `key` = 'sequence_id'  AND `namespace` = 'core';
 
 -- Set new schema signature
 UPDATE `%TABLE_PREFIX%config`
-    SET `value` = '2257f6f22ca4b31bea6045b8b7d59d56'
+    SET `value` = '366ff61fbe023fe840a4a65138320d11'
     WHERE `key` = 'schema_signature' AND `namespace` = 'core';
diff --git a/include/upgrader/streams/core/4b4daf9c-48b44991.task.php b/include/upgrader/streams/core/c7c82835-366ff61f.task.php
similarity index 54%
rename from include/upgrader/streams/core/4b4daf9c-48b44991.task.php
rename to include/upgrader/streams/core/c7c82835-366ff61f.task.php
index baf686b4d367228276c08710baa60916d55d47e1..eec7c43f72b3fe48f18ad2c0feb64824cb732f17 100644
--- a/include/upgrader/streams/core/4b4daf9c-48b44991.task.php
+++ b/include/upgrader/streams/core/c7c82835-366ff61f.task.php
@@ -4,8 +4,17 @@
  *
  */
 
-class TaskFormLoader extends MigrationTask {
+class TaskLoader extends MigrationTask {
     var $description = "Loading initial data for tasks";
+    static $pman = array(
+            'ticket.create'     => 'task.create',
+            'ticket.edit'       => 'task.edit',
+            'ticket.reply'      => 'task.reply',
+            'ticket.delete'     => 'task.delete',
+            'ticket.close'      => 'task.close',
+            'ticket.assign'     => 'task.assign',
+            'ticket.transfer'   => 'task.transfer',
+    );
 
     function run($max_time) {
         global $cfg;
@@ -30,9 +39,20 @@ class TaskFormLoader extends MigrationTask {
             break;
         }
 
+        // Copy ticket permissions
+        foreach (Role::objects() as $role) {
+            $perms = $role->getPermissionInfo();
+            foreach (self::$pmap as  $k => $v) {
+                if (in_array($k, $perms))
+                    $perms[] = $v;
+            }
+            $role->updatePerms($perms);
+            $role->save();
+        }
+
     }
 }
 
-return 'TaskFormLoader';
+return 'TaskLoader';
 
 ?>
diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql
index b106d286f2a665cf2acc296ae222ffd2298d7aae..d17ef3cdb1c998a20946d10787a955dcce2fe37b 100644
--- a/setup/inc/streams/core/install-mysql.sql
+++ b/setup/inc/streams/core/install-mysql.sql
@@ -779,6 +779,7 @@ CREATE TABLE `%TABLE_PREFIX%task` (
   `staff_id` int(10) unsigned NOT NULL DEFAULT '0',
   `team_id` int(10) unsigned NOT NULL DEFAULT '0',
   `flags` int(10) unsigned NOT NULL DEFAULT '0',
+  `duedate` datetime DEFAULT NULL,
   `created` datetime NOT NULL,
   `updated` datetime NOT NULL,
   PRIMARY KEY (`id`),