diff --git a/include/class.orm.php b/include/class.orm.php
index 50aae3b237f454ec97d26928ed6bbdf7a1ae179b..8aa8e5d39fe0e57ee715d334411ddfb49790d47b 100644
--- a/include/class.orm.php
+++ b/include/class.orm.php
@@ -705,7 +705,7 @@ class MySqlCompiler extends SqlCompiler {
         else {
             $b = $this->input($b);
         }
-        return sprintf('%s IN %s', $a, $b);
+        return sprintf('%s IN (%s)', $a, $b);
     }
 
     function compileJoin($tip, $model, $alias, $info) {
@@ -733,7 +733,7 @@ class MySqlCompiler extends SqlCompiler {
         if ($what instanceof QuerySet) {
             $q = $what->getQuery(array('nosort'=>true));
             $this->params += $q->params;
-            return '(' . (string)$q . ')';
+            return (string)$q;
         }
         else {
             $this->params[] = $what;
diff --git a/include/staff/dynamic-forms.inc.php b/include/staff/dynamic-forms.inc.php
index 0990da7c2a6e5489e7c987ac1ce69f23de8b8b3c..2c4fa1d2c413191f5e648f16bc614292470814c7 100644
--- a/include/staff/dynamic-forms.inc.php
+++ b/include/staff/dynamic-forms.inc.php
@@ -7,7 +7,7 @@
 
 <?php
 $page = ($_GET['p'] && is_numeric($_GET['p'])) ? $_GET['p'] : 1;
-$count = DynamicForm::objects()->filter(array('type'=>'G'))->count();
+$count = DynamicForm::objects()->filter(array('type__in'=>array('T','U','G')))->count();
 $pageNav = new Pagenate($count, $page, PAGE_LIMIT);
 $pageNav->setURL('forms.php');
 $showing=$pageNav->showing().' forms';
diff --git a/include/staff/dynamic-lists.inc.php b/include/staff/dynamic-lists.inc.php
index 2baf9f81a7bc54ea1869ad64f84985985c5708e9..846cab58b8bc4d17dbfcbd275a193d7175cd2da6 100644
--- a/include/staff/dynamic-lists.inc.php
+++ b/include/staff/dynamic-lists.inc.php
@@ -10,7 +10,7 @@ $page = ($_GET['p'] && is_numeric($_GET['p'])) ? $_GET['p'] : 1;
 $count = DynamicList::objects()->count();
 $pageNav = new Pagenate($count, $page, PAGE_LIMIT);
 $pageNav->setURL('lists.php');
-$showing=$pageNav->showing().' dynamic lists';
+$showing=$pageNav->showing().' custom lists';
 ?>
 
 <form action="lists.php" method="POST" name="lists">
diff --git a/include/upgrader/streams/core.sig b/include/upgrader/streams/core.sig
index 55533fd92d8d8cfb4425f7a3046c7170e374aad4..ce6d3fd6537de8fbe1b5c9acda7833e5972d37b6 100644
--- a/include/upgrader/streams/core.sig
+++ b/include/upgrader/streams/core.sig
@@ -1 +1 @@
-6871646b8ea2848fc0039a601e1e7ce4
+17f0cc96b366a747113622fa4780f9bc
diff --git a/include/upgrader/streams/core/d51f303a-DYNAMICF.cleanup.sql b/include/upgrader/streams/core/d51f303a-DYNAMICF.cleanup.sql
deleted file mode 100644
index 00eac557648e4631d36f4f53bec1d96e6c8123bb..0000000000000000000000000000000000000000
--- a/include/upgrader/streams/core/d51f303a-DYNAMICF.cleanup.sql
+++ /dev/null
@@ -1,66 +0,0 @@
--- Port data from the ticket table
--- 1. Create form entries for each ticket
-INSERT INTO `%TABLE_PREFIX%form_entry` (
-    `section_id`, `ticket_id`, `sort`, `created`, `updated`)
-    SELECT 1, `ticket_id`, 10, `created`, `updated`
-    FROM `%TABLE_PREFIX%ticket`;
-
--- 2. Copy subject lines from the ticket table into section #2
-INSERT INTO `%TABLE_PREFIX%form_entry_values` (
-    `field_id`, `entry_id`, `value`)
-    SELECT A3.`field_id`, A2.`id`, A1.`subject`
-    FROM `%TABLE_PREFIX%ticket` A1
-        INNER JOIN `%TABLE_PREFIX%form_entry` A2 ON (A1.`ticket_id`
-                = A2.`ticket_id` AND A2.`section_id` = 2),
-        INNER JOIN `%TABLE_PREFIX%form_field` A3 ON (A2.`section_id`
-                = A3.`section_id`)
-    WHERE A3.`name` = 'subject';
-
--- TODO: Move this to a client info dynamic entry
--- 3. Copy Phone from the ticket table to section #1
-INSERT INTO `%TABLE_PREFIX%form_entry_values` (
-    `field_id`, `entry_id`, `value`)
-    SELECT A3.`field_id`, A2.`id`, CONCAT(A1.`phone`, 'X', A1.`phone_ext`)
-    FROM `%TABLE_PREFIX%ticket` A1
-        INNER JOIN `%TABLE_PREFIX%form_entry` A2 ON (A1.`ticket_id`
-                = A2.`ticket_id` AND A2.`section_id` = 1),
-        INNER JOIN `%TABLE_PREFIX%form_field` A3 ON (A2.`section_id`
-                = A3.`section_id`)
-    WHERE A3.`name` = 'phone' AND LENGTH(A1.`phone`);
-
--- 4. Create <user> accounts for everybody
---      - Start with creating email addresses for the accounts
-INSERT INTO `%TABLE_PREFIX%user_email` (`address`)
-    SELECT DISTINCT `email` FROM `%TABLE_PREFIX%ticket`;
-
---      - Then create the accounts and link the `default_email`s
-INSERT INTO `%TABLE_PREFIX%user` (`first`, `default_email_id`)
-    SELECT MAX(`name`), A2.`id`
-    FROM `%TABLE_PREFIX%ticket` A1
-        INNER JOIN `%TABLE_PREFIX%user_email` A2 ON (A1.`email` = A2.`address`);
-    GROUP BY A2.`id`
-
---      - Now link the user and user_email tables
-ALTER TABLE `%TABLE_PREFIX%user` ADD KEY `def_eml_id` (`default_email_id`, `id`);
-UPDATE `%TABLE_PREFIX%user_email` A1
-    SET user_id = (
-        SELECT A2.`id` FROM `%TABLE_PREFIX%user` A2
-        WHERE `default_email_id` = A1.`id`);
-ALTER TABLE `%TABLE_PREFIX%user` DROP INDEX `def_eml_id`;
-
---      - Update the ticket table
-UPDATE `%TABLE_PREFIX%ticket` A1
-    JOIN `%TABLE_PREFIX%user_email` A2 ON A2.`address` = A1.`email`
-    SET `user_id` = A2.`user_id`,
-        `user_email_id` = A2.`id`;
-
--- 4. Remove columns from ticket table
-ALTER TABLE `%TABLE_PREFIX%ticket`
-    DROP COLUMN `name`,
-    DROP COLUMN `email`,
-    DROP COLUMN `phone`,
-    DROP COLUMN `phone_ext`,
-    DROP COLUMN `subject`;
-
--- 5. Cleanup ticket table with dropped varchar columns
-OPTIMIZE TABLE `%TABLE_PREFIX%ticket`;
diff --git a/include/upgrader/streams/core/dad45ca2-17f0cc96.cleanup.sql b/include/upgrader/streams/core/dad45ca2-17f0cc96.cleanup.sql
new file mode 100644
index 0000000000000000000000000000000000000000..4fe8c0d0a9253566015880bba8b3c615ae143c23
--- /dev/null
+++ b/include/upgrader/streams/core/dad45ca2-17f0cc96.cleanup.sql
@@ -0,0 +1,104 @@
+-- Port data from the ticket table
+-- 1. Create form entries for each ticket
+INSERT INTO `%TABLE_PREFIX%form_entry` (
+    `form_id`, `object_id`, `object_type`, `sort`, `created`, `updated`)
+    SELECT (SELECT id FROM ost_form WHERE `type`='T'),
+        `ticket_id`, 'T', 10, `created`, `updated`
+    FROM `%TABLE_PREFIX%ticket`;
+
+-- 2. Copy subject lines from the ticket table into form entry
+INSERT INTO `%TABLE_PREFIX%form_entry_values` (
+    `field_id`, `entry_id`, `value`)
+    SELECT A3.`id`, A2.`id`, A1.`subject`
+    FROM `%TABLE_PREFIX%ticket` A1
+        INNER JOIN `%TABLE_PREFIX%form` A4 ON (`type`='T')
+        INNER JOIN `%TABLE_PREFIX%form_entry` A2 ON (A2.`object_id`
+                = A1.`ticket_id` AND A2.`object_type` = 'T')
+        INNER JOIN `%TABLE_PREFIX%form_field` A3 ON (A2.`form_id`
+                = A4.`id`)
+    WHERE A3.`name` = 'subject';
+
+-- 2b. Copy priority from ticket to custom form entry
+INSERT INTO `%TABLE_PREFIX%form_entry_values` (
+    `field_id`, `entry_id`, `value`, `value_id`)
+    SELECT A3.`id`, A2.`id`, A5.`priority_desc`, A1.`priority_id`
+    FROM `%TABLE_PREFIX%ticket` A1
+        INNER JOIN `%TABLE_PREFIX%form` A4 ON (`type`='T')
+        INNER JOIN `%TABLE_PREFIX%form_entry` A2 ON (A2.`object_id`
+                = A1.`ticket_id` AND A2.`object_type` = 'T')
+        INNER JOIN `%TABLE_PREFIX%form_field` A3 ON (A2.`form_id`
+                = A4.`id`)
+        INNER JOIN `%TABLE_PREFIX%ticket_priority` A5 ON (A5.`priority_id`
+                = A1.`priority_id`)
+    WHERE A3.`name` = 'priority';
+
+-- 3. Create <user> accounts for everybody
+--      - Start with creating email addresses for the accounts
+INSERT INTO `%TABLE_PREFIX%user_email` (`address`)
+    SELECT DISTINCT `email` FROM `%TABLE_PREFIX%ticket`;
+
+--      - Then create the accounts and link the `default_email`s
+INSERT INTO `%TABLE_PREFIX%user` (`name`, `default_email_id`, `created`, `updated`)
+    SELECT MAX(`name`), A2.`id`, A1.`created`, A1.`updated`
+    FROM `%TABLE_PREFIX%ticket` A1
+        INNER JOIN `%TABLE_PREFIX%user_email` A2 ON (A1.`email` = A2.`address`)
+    GROUP BY A2.`id`;
+
+--      - Now link the user and user_email tables
+ALTER TABLE `%TABLE_PREFIX%user` ADD KEY `def_eml_id` (`default_email_id`, `id`);
+UPDATE `%TABLE_PREFIX%user_email` A1
+    SET user_id = (
+        SELECT A2.`id` FROM `%TABLE_PREFIX%user` A2
+        WHERE `default_email_id` = A1.`id`);
+ALTER TABLE `%TABLE_PREFIX%user` DROP INDEX `def_eml_id`;
+
+--      - Update the ticket table
+ALTER TABLE `%TABLE_PREFIX%ticket` ADD KEY `email_lookup` (`email`);
+UPDATE `%TABLE_PREFIX%ticket` A1
+    JOIN `%TABLE_PREFIX%user_email` A2 ON A2.`address` = A1.`email`
+    SET A1.`user_id` = A2.`user_id`,
+        A1.`user_email_id` = A2.`id`;
+ALTER TABLE `%TABLE_PREFIX%ticket` DROP INDEX `email_lookup`;
+
+-- TODO: Move this to a client info dynamic entry
+-- 4. Create form entries for each ticket
+INSERT INTO `%TABLE_PREFIX%form_entry` (
+    `form_id`, `object_id`, `object_type`, `sort`, `created`, `updated`)
+    SELECT DISTINCT A2.`id`, `user_id`, 'U', 10, MIN(A1.`created`),
+        MAX(A1.`updated`)
+    FROM `%TABLE_PREFIX%ticket` A1
+    JOIN `%TABLE_PREFIX%form` A2 ON (A2.`type` = 'U')
+    GROUP BY `user_id`, A2.`id`;
+
+-- 5. Copy Phone from the ticket table to section #1
+INSERT INTO `%TABLE_PREFIX%form_entry_values` (
+    `field_id`, `entry_id`, `value`)
+    SELECT A3.`id`, A2.`id`, MAX(CONCAT(
+        REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
+            A1.`phone`,
+            ' ', ''),
+            ')', ''),
+            '(', ''),
+            '+', ''),
+            '-', ''),
+            '.', ''), 'X', A1.`phone_ext`))
+    FROM `%TABLE_PREFIX%ticket` A1
+        INNER JOIN `%TABLE_PREFIX%form` A4 ON (`type`='U')
+        INNER JOIN `%TABLE_PREFIX%form_entry` A2 ON (A2.`object_id`
+                = A1.`ticket_id` AND A2.`object_type` = 'U')
+        INNER JOIN `%TABLE_PREFIX%form_field` A3 ON (A2.`form_id`
+                = A4.`id`)
+    WHERE A3.`name` = 'phone' AND LENGTH(A1.`phone`)
+    GROUP BY A3.`id`, A2.`id`;
+
+-- 6. Remove columns from ticket table
+ALTER TABLE `%TABLE_PREFIX%ticket`
+    DROP COLUMN `name`,
+    DROP COLUMN `email`,
+    DROP COLUMN `phone`,
+    DROP COLUMN `phone_ext`,
+    DROP COLUMN `subject`,
+    DROP COLUMN `priority_id`;
+
+-- 5. Cleanup ticket table with dropped varchar columns
+OPTIMIZE TABLE `%TABLE_PREFIX%ticket`;
diff --git a/include/upgrader/streams/core/d51f303a-DYNAMICF.patch.sql b/include/upgrader/streams/core/dad45ca2-17f0cc96.patch.sql
similarity index 93%
rename from include/upgrader/streams/core/d51f303a-DYNAMICF.patch.sql
rename to include/upgrader/streams/core/dad45ca2-17f0cc96.patch.sql
index 3a67733c695fd96663c58b2570dcd941c257f179..d6c7bd6304bb56cdaba8a4c38700ca5fcf9b7185 100644
--- a/include/upgrader/streams/core/d51f303a-DYNAMICF.patch.sql
+++ b/include/upgrader/streams/core/dad45ca2-17f0cc96.patch.sql
@@ -1,6 +1,6 @@
 /**
  * @version v1.8.0-dpr1 Dynamic Forms
- * @signature 0000000000000000000000000000000
+ * @signature 17f0cc96b366a747113622fa4780f9bc
  *
  * Adds the database structure for the dynamic forms feature and migrates
  * the database from the legacy <=1.7 format to the new format with the
@@ -51,7 +51,7 @@ CREATE TABLE `%TABLE_PREFIX%form_entry` (
     `created` datetime NOT NULL,
     `updated` datetime NOT NULL,
     PRIMARY KEY (`id`),
-    KEY `ticket_dyn_form_lookup` (`ticket_id`)
+    KEY `entry_lookup` (`object_id`, `object_type`)
 ) DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%form_entry_values`;
@@ -96,7 +96,7 @@ CREATE TABLE `%TABLE_PREFIX%user` (
   `created` datetime NOT NULL,
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`id`)
-);
+) DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%user_email`;
 CREATE TABLE `%TABLE_PREFIX%user_email` (
@@ -104,8 +104,9 @@ CREATE TABLE `%TABLE_PREFIX%user_email` (
   `user_id` int(10) unsigned NOT NULL,
   `address` varchar(128) NOT NULL,
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `address` (`address`)
-);
+  UNIQUE KEY `address` (`address`),
+  KEY `user_email_lookup` (`user_id`)
+) DEFAULT CHARSET=utf8;
 
 ALTER TABLE `%TABLE_PREFIX%filter_rule`
     CHANGE `what` `what` varchar(32) NOT NULL;
@@ -119,5 +120,5 @@ ALTER TABLE `%TABLE_PREFIX%ticket`
 
 -- Finished with patch
 UPDATE `%TABLE_PREFIX%config`
-    SET `value` = '00000000000000000000000000000000'
+    SET `value` = '17f0cc96b366a747113622fa4780f9bc'
     WHERE `key` = 'schema_signature' AND `namespace` = 'core';
diff --git a/include/upgrader/streams/core/d51f303a-DYNAMICF.task.php b/include/upgrader/streams/core/dad45ca2-17f0cc96.task.php
similarity index 100%
rename from include/upgrader/streams/core/d51f303a-DYNAMICF.task.php
rename to include/upgrader/streams/core/dad45ca2-17f0cc96.task.php
diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql
index aa71d8cfed0dd1d50dd8973191f105f701242677..e5859e815129110747cd04653679859e6ce9c2f8 100644
--- a/setup/inc/streams/core/install-mysql.sql
+++ b/setup/inc/streams/core/install-mysql.sql
@@ -761,7 +761,7 @@ CREATE TABLE `%TABLE_PREFIX%user` (
   `created` datetime NOT NULL,
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`id`)
-);
+) DEFAULT CHARSET=utf8;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%user_email`;
 CREATE TABLE `%TABLE_PREFIX%user_email` (
@@ -769,5 +769,6 @@ CREATE TABLE `%TABLE_PREFIX%user_email` (
   `user_id` int(10) unsigned NOT NULL,
   `address` varchar(128) NOT NULL,
   PRIMARY KEY  (`id`),
-  UNIQUE KEY `address` (`address`)
-);
+  UNIQUE KEY `address` (`address`),
+  KEY `user_email_lookup` (`user_id`)
+) DEFAULT CHARSET=utf8;