diff --git a/include/class.dept.php b/include/class.dept.php
index 384a749a23b86c9d9a237fb383060fec52fc22be..387e8f7fa4fb4e8a6802a18e49951a49d2ef33c2 100644
--- a/include/class.dept.php
+++ b/include/class.dept.php
@@ -786,6 +786,7 @@ implements TemplateVariable, Searchable {
         $this->group_membership = $vars['group_membership'];
         $this->ticket_auto_response = isset($vars['ticket_auto_response'])?$vars['ticket_auto_response']:1;
         $this->message_auto_response = isset($vars['message_auto_response'])?$vars['message_auto_response']:1;
+        $this->flags = $vars['flags'] ?: 0;
 
         $this->setFlag(self::FLAG_ASSIGN_MEMBERS_ONLY, isset($vars['assign_members_only']));
         $this->setFlag(self::FLAG_DISABLE_AUTO_CLAIM, isset($vars['disable_auto_claim']));
@@ -812,7 +813,6 @@ implements TemplateVariable, Searchable {
             $this->setFlag(self::FLAG_ARCHIVED, true);
         }
 
-        $this->flags = 0;
         $this->setFlag(self::FLAG_DISABLE_AUTO_CLAIM, isset($vars['disable_auto_claim']));
 
         switch ($vars['assignment_flag']) {
diff --git a/include/class.email.php b/include/class.email.php
index b0dce8bbce91312575695a6b0fcdf070b580d735..41bb55a1a3ca3f84e1fb3b28357558a9e45f1c5e 100644
--- a/include/class.email.php
+++ b/include/class.email.php
@@ -118,7 +118,9 @@ class Email extends VerySimpleModel {
 
     function getInfo() {
         $base = $this->getHashtable();
-        $base['mail_proto'] = $this->mail_proto;
+        $base['mail_proto'] = $this->mail_protocol;
+        if ($this->mail_encryption != 'NONE')
+          $base['mail_proto'] .= "/{$this->mail_encryption}";
         return $base;
     }
 
@@ -395,16 +397,16 @@ class Email extends VerySimpleModel {
         $this->userid = $vars['userid'];
         $this->mail_active = $vars['mail_active'];
         $this->mail_host = $vars['mail_host'];
-        $this->mail_protocol = $vars['mail_protocol']?$vars['mail_protocol']:'POP';
+        $this->mail_protocol = $vars['mail_protocol'] ?: 'POP';
         $this->mail_encryption = $vars['mail_encryption'];
-        $this->mail_port = $vars['mail_port']?$vars['mail_port']:0;
-        $this->mail_fetchfreq = $vars['mail_fetchfreq']?$vars['mail_fetchfreq']:0;
-        $this->mail_fetchmax = $vars['mail_fetchmax']?$vars['mail_fetchmax']:0;
+        $this->mail_port = $vars['mail_port'] ?: 0;
+        $this->mail_fetchfreq = $vars['mail_fetchfreq'] ?: 0;
+        $this->mail_fetchmax = $vars['mail_fetchmax'] ?: 0;
         $this->smtp_active = $vars['smtp_active'];
         $this->smtp_host = $vars['smtp_host'];
-        $this->smtp_port = $vars['smtp_port']?$vars['smtp_port']:0;
+        $this->smtp_port = $vars['smtp_port'] ?: 0;
         $this->smtp_auth = $vars['smtp_auth'];
-        $this->smtp_spoofing = isset($vars['smtp_spoofing'])?1:0;
+        $this->smtp_spoofing = isset($vars['smtp_spoofing']) ? 1 : 0;
         $this->notes = Format::sanitize($vars['notes']);
 
         //Post fetch email handling...
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 2ca2f89bab9f24ef3e44951e9b74a715006087ba..71e890add94467448a316b9f23728a3ec80c2b34 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -4026,7 +4026,7 @@ implements RestrictedAccess, Threadable, Searchable {
         // department
         if ($vars['assignId'] && !(
             $role
-            ? $role->hasPerm(Ticket::PERM_ASSIGN)
+            ? ($role->hasPerm(Ticket::PERM_ASSIGN) || $role->__new__)
             : $thisstaff->hasPerm(Ticket::PERM_ASSIGN, false)
         )) {
             $errors['assignId'] = __('Action Denied. You are not allowed to assign/reassign tickets.');
@@ -4100,12 +4100,6 @@ implements RestrictedAccess, Threadable, Searchable {
                  $attachments = $attachments->merge($response->getAttachments());
            }
 
-            $message = (string) $message;
-            if ($response) {
-                $message .= ($cfg->isRichTextEnabled()) ? "<br><br>" : "\n\n";
-                $message .= $response->getBody();
-            }
-
             if ($vars['signature']=='mine')
                 $signature=$thisstaff->getSignature();
             elseif ($vars['signature']=='dept' && $dept && $dept->isPublic())
@@ -4117,7 +4111,7 @@ implements RestrictedAccess, Threadable, Searchable {
                 array(
                     'message'   => $message,
                     'signature' => $signature,
-                    'response'  => ($response) ? $response->getBody() : '',
+                    'response'  => $response ?: '',
                     'recipient' => $ticket->getOwner(), //End user
                     'staff'     => $thisstaff,
                 )
diff --git a/include/i18n/en_US/role.yaml b/include/i18n/en_US/role.yaml
index 15dc3be642122ccd8c60dadf666dae5aa29e13e7..ec0832d8d33dd6a27f4e0c3cca1ffa4e46c00d02 100644
--- a/include/i18n/en_US/role.yaml
+++ b/include/i18n/en_US/role.yaml
@@ -68,6 +68,7 @@
   permissions: [
     ticket.create,
     ticket.assign,
+    ticket.release,
     ticket.transfer,
     ticket.refer,
     ticket.reply
diff --git a/include/i18n/en_US/templates/email/ticket.notice.yaml b/include/i18n/en_US/templates/email/ticket.notice.yaml
index bf2a6803c92eb299792264774f933620dc8f9d5c..9cfbefb809692e33b99eef05a01d305e370293a1 100644
--- a/include/i18n/en_US/templates/email/ticket.notice.yaml
+++ b/include/i18n/en_US/templates/email/ticket.notice.yaml
@@ -26,6 +26,9 @@ body: |
     %{message}
     <br>
     <br>
+    %{response}
+    <br>
+    <br>
     If need be, a representative will follow-up with you as soon as
     possible. You can also <a href="%{recipient.ticket_link}">view this
     ticket's progress online</a>.
diff --git a/include/upgrader/streams/core.sig b/include/upgrader/streams/core.sig
index 5a71b05a530be23f96be63f5592aaa20f462efbb..fbebb45e63ee1f85f4388d1ead81fa6b7403dd4f 100644
--- a/include/upgrader/streams/core.sig
+++ b/include/upgrader/streams/core.sig
@@ -1 +1 @@
-192aeec968ad819b88c49d7e0fecd723
+26fd79dc5443f37779f9d2c4108058f4
diff --git a/include/upgrader/streams/core/70921d5c-192aeec9.patch.sql b/include/upgrader/streams/core/70921d5c-192aeec9.patch.sql
deleted file mode 100644
index 3302029a21d2295806d6f70b5ba96704e4f48b75..0000000000000000000000000000000000000000
--- a/include/upgrader/streams/core/70921d5c-192aeec9.patch.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
-* @signature 192aeec968ad819b88c49d7e0fecd723
-* @version v1.11.0
-* @title Final Revisions
-*
-* This patch is for final revisions needed for v1.11
-*/
-
-ALTER TABLE `%TABLE_PREFIX%thread_event`
-  CHANGE `state` `state` enum('created','closed','reopened','assigned','transferred', 'referred', 'overdue','edited','viewed','error','collab','resent', 'deleted') NOT NULL;
-
- -- Finished with patch
-UPDATE `%TABLE_PREFIX%config`
-    SET `value` = '192aeec968ad819b88c49d7e0fecd723'
-    WHERE `key` = 'schema_signature' AND `namespace` = 'core';
diff --git a/include/upgrader/streams/core/70921d5c-26fd79dc.patch.sql b/include/upgrader/streams/core/70921d5c-26fd79dc.patch.sql
new file mode 100644
index 0000000000000000000000000000000000000000..ed631e92d16085eecee64e084327d78ab0f56be4
--- /dev/null
+++ b/include/upgrader/streams/core/70921d5c-26fd79dc.patch.sql
@@ -0,0 +1,31 @@
+/**
+* @signature 26fd79dc5443f37779f9d2c4108058f4
+* @version v1.11.0
+* @title Final Revisions
+*
+* This patch is for final revisions needed for v1.11
+*/
+
+ALTER TABLE `%TABLE_PREFIX%thread_event`
+    CHANGE `state` `state` enum('created','closed','reopened','assigned', 'released', 'transferred', 'referred', 'overdue','edited','viewed','error','collab','resent', 'deleted') NOT NULL;
+
+ALTER TABLE `%TABLE_PREFIX%attachment`
+    ADD INDEX `file_object` (`file_id`,`object_id`);
+
+UPDATE `%TABLE_PREFIX%role`
+    SET `permissions` = REPLACE(`permissions`, '"ticket.transfer":1,', '"ticket.transfer":1,"ticket.refer":1,')
+    WHERE `permissions` IS NOT NULL;
+
+UPDATE `%TABLE_PREFIX%role`
+    SET `permissions` = REPLACE(`permissions`, '"ticket.assign":1,', '"ticket.assign":1,"ticket.release":1,')
+    WHERE `permissions` IS NOT NULL AND `permissions` LIKE '%"ticket.assign":1,%';
+
+-- Ticket Notice Template
+UPDATE `%TABLE_PREFIX%email_template`
+    SET `code_name` = REPLACE('ticket.notice', '%{message}', '%{message}<br><br>%{response}')
+    WHERE `code_name` = 'ticket.notice';
+
+ -- Finished with patch
+UPDATE `%TABLE_PREFIX%config`
+    SET `value` = '26fd79dc5443f37779f9d2c4108058f4', `updated` = NOW()
+    WHERE `key` = 'schema_signature' AND `namespace` = 'core';
diff --git a/scp/tickets.php b/scp/tickets.php
index ca0770817b558436d31691a035011e47abcfb3f4..a3b7103f3784a30b54b11b5666fcbda796fb4529 100644
--- a/scp/tickets.php
+++ b/scp/tickets.php
@@ -43,8 +43,11 @@ if (!$ticket) {
     $queue_id = null;
 
     // Search for user
-    if (isset($_GET['uid']))
-        $user = User::lookup($_GET['uid']);
+    if (isset($_REQUEST['uid']))
+        $user = User::lookup($_REQUEST['uid']);
+
+    if (isset($_REQUEST['email']))
+        $user = User::lookupByEmail($_REQUEST['email']);
 
     if ($user
             && $_GET['a'] !== 'open'
@@ -398,7 +401,7 @@ if($_POST && !$errors):
                 } else {
                     $vars = $_POST;
 
-                    if ($vars['uid'] && (!User::lookup($vars['uid'])))
+                    if ($vars['uid'] && !($user=User::lookup($vars['uid'])))
                         $vars['uid'] = 0;
 
                     $vars['cannedattachments'] = $response_form->getField('attachments')->getClean();
diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql
index f8e31e06d4c2c72fa785f64be1e2edd635bd966e..fbbb6e45050facca4ad2c6390657073d14b23c96 100644
--- a/setup/inc/streams/core/install-mysql.sql
+++ b/setup/inc/streams/core/install-mysql.sql
@@ -25,7 +25,8 @@ CREATE TABLE `%TABLE_PREFIX%attachment` (
   `inline` tinyint(1) unsigned NOT NULL DEFAULT '0',
   `lang` varchar(16),
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `file-type` (`object_id`,`file_id`,`type`)
+  UNIQUE KEY `file-type` (`object_id`,`file_id`,`type`),
+  UNIQUE KEY `file_object` (`file_id`,`object_id`)
 ) DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%faq`;
@@ -718,7 +719,7 @@ CREATE TABLE `%TABLE_PREFIX%thread_event` (
   `team_id` int(11) unsigned NOT NULL,
   `dept_id` int(11) unsigned NOT NULL,
   `topic_id` int(11) unsigned NOT NULL,
-  `state` enum('created','closed','reopened','assigned','transferred', 'referred', 'overdue','edited','viewed','error','collab','resent', 'deleted') NOT NULL,
+  `state` enum('created','closed','reopened','assigned','released','transferred', 'referred', 'overdue','edited','viewed','error','collab','resent', 'deleted') NOT NULL,
   `data` varchar(1024) DEFAULT NULL COMMENT 'Encoded differences',
   `username` varchar(128) NOT NULL default 'SYSTEM',
   `uid` int(11) unsigned DEFAULT NULL,