From c83248ce440b82232e6977329375ebeb251d8d07 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Wed, 22 May 2013 07:32:18 -0500
Subject: [PATCH] Allow osTicket to install on a database cluster

The problem stems from assumed MySQL insert ids. In MySQL clusters, the id
numbers will not necessarily be consecutive. This patch causes the install
and upgrade patches to lookup the assumed values for the linked id numbers.
---
 .../upgrader/sql/c00511c7-7be60a84.patch.sql  |  28 +--
 ....patch.sql => c0fd16f4-d959a00e.patch.sql} |   0
 .../upgrader/sql/d959a00e-557cc9f9.patch.sql  |  11 +
 main.inc.php                                  |   2 +-
 setup/inc/class.installer.php                 |  70 +++++--
 setup/inc/sql/osTicket-mysql.sql              | 189 +++++++++---------
 setup/inc/sql/osTicket-mysql.sql.md5          |   2 +-
 7 files changed, 172 insertions(+), 130 deletions(-)
 rename include/upgrader/sql/{c0fd16f4-959a00e.patch.sql => c0fd16f4-d959a00e.patch.sql} (100%)
 create mode 100644 include/upgrader/sql/d959a00e-557cc9f9.patch.sql

diff --git a/include/upgrader/sql/c00511c7-7be60a84.patch.sql b/include/upgrader/sql/c00511c7-7be60a84.patch.sql
index 25465e81b..d0948979f 100644
--- a/include/upgrader/sql/c00511c7-7be60a84.patch.sql
+++ b/include/upgrader/sql/c00511c7-7be60a84.patch.sql
@@ -46,7 +46,7 @@ CREATE TABLE `%TABLE_PREFIX%ticket_event` (
   KEY `ticket_stats` (`timestamp`, `state`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-ALTER TABLE `%TABLE_PREFIX%config` 
+ALTER TABLE `%TABLE_PREFIX%config`
     ADD `passwd_reset_period` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `staff_session_timeout`,
     ADD `default_timezone_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `default_template_id`,
     ADD `default_sla_id` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `default_dept_id`,
@@ -56,7 +56,7 @@ ALTER TABLE `%TABLE_PREFIX%config`
     ADD `max_staff_file_uploads` TINYINT UNSIGNED NOT NULL AFTER `max_user_file_uploads`,
     ADD `assigned_alert_active` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' AFTER `overdue_alert_dept_members`,
     ADD `assigned_alert_staff` TINYINT(1) UNSIGNED NOT NULL DEFAULT '1' AFTER `assigned_alert_active`,
-    ADD `assigned_alert_team_lead` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `assigned_alert_staff`, 
+    ADD `assigned_alert_team_lead` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `assigned_alert_staff`,
     ADD `assigned_alert_team_members` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER `assigned_alert_team_lead`,
     ADD `transfer_alert_active` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `note_alert_dept_manager` ,
     ADD `transfer_alert_assigned` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT '0' AFTER `transfer_alert_active` ,
@@ -72,7 +72,7 @@ ALTER TABLE `%TABLE_PREFIX%config`
 UPDATE `%TABLE_PREFIX%config` SET default_timezone_id =
     (SELECT id FROM `%TABLE_PREFIX%timezone` WHERE offset = `%TABLE_PREFIX%config`.timezone_offset);
 
-ALTER TABLE `%TABLE_PREFIX%staff` 
+ALTER TABLE `%TABLE_PREFIX%staff`
     ADD `passwdreset` DATETIME NULL DEFAULT NULL AFTER `lastlogin`;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%sla`;
@@ -89,7 +89,7 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%sla` (
     PRIMARY KEY  (`id`),
     UNIQUE KEY `name` (`name`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
- 
+
 -- Create a default SLA
 INSERT INTO `%TABLE_PREFIX%sla` (`isactive`, `enable_priority_escalation`,
         `disable_overdue_alerts`, `grace_period`, `name`, `notes`, `created`, `updated`)
@@ -134,7 +134,7 @@ ALTER TABLE `%TABLE_PREFIX%staff`
     ADD `default_signature_type` ENUM( 'none', 'mine', 'dept' ) NOT NULL DEFAULT 'none' AFTER `auto_refresh_rate`;
 
 -- Copy over time zone offet to tz_id
-UPDATE `%TABLE_PREFIX%staff` SET timezone_id = 
+UPDATE `%TABLE_PREFIX%staff` SET timezone_id =
     (SELECT id FROM `%TABLE_PREFIX%timezone` WHERE offset = `%TABLE_PREFIX%staff`.timezone_offset);
 
 ALTER TABLE `%TABLE_PREFIX%groups`
@@ -159,14 +159,14 @@ ALTER TABLE `%TABLE_PREFIX%help_topic`
     ADD team_id INT UNSIGNED NOT NULL DEFAULT '0' AFTER staff_id,
     ADD sla_id INT UNSIGNED NOT NULL DEFAULT '0' AFTER team_id,
     ADD INDEX ( staff_id , team_id ),
-    ADD INDEX ( sla_id ); 
+    ADD INDEX ( sla_id );
 
 ALTER TABLE `%TABLE_PREFIX%email`
     ADD mail_archivefolder VARCHAR(255) NULL AFTER mail_fetchmax,
     ADD notes TEXT NULL DEFAULT NULL AFTER smtp_auth,
     ADD smtp_spoofing TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' AFTER smtp_auth;
 
-ALTER TABLE `%TABLE_PREFIX%api_key` 
+ALTER TABLE `%TABLE_PREFIX%api_key`
     ADD notes TEXT NULL DEFAULT NULL AFTER apikey,
     ADD UNIQUE (apikey);
 
@@ -199,11 +199,11 @@ CREATE TABLE `%TABLE_PREFIX%email_filter` (
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- Copy banlist to a new email filter
-INSERT INTO `%TABLE_PREFIX%email_filter` (`id`, `execorder`, `isactive`,
+INSERT INTO `%TABLE_PREFIX%email_filter` (`execorder`, `isactive`,
     `match_all_rules`, `stop_onmatch`, `reject_email`, `use_replyto_email`,
     `disable_autoresponder`, `email_id`, `priority_id`, `dept_id`, `staff_id`,
     `team_id`, `sla_id`, `name`, `notes`) VALUES
-    (1, 99, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 'SYSTEM BAN LIST', 
+    (99, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 'SYSTEM BAN LIST',
         'Internal list for email banning. Do not remove');
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%email_filter_rule`;
@@ -219,12 +219,12 @@ CREATE TABLE `%TABLE_PREFIX%email_filter_rule` (
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`id`),
   KEY `filter_id` (`filter_id`),
-  UNIQUE `filter` (`filter_id`, `what`, `how`, `val`) 
+  UNIQUE `filter` (`filter_id`, `what`, `how`, `val`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- SYSTEM BAN LIST was the first filter created, with ID of '1'
-INSERT INTO `%TABLE_PREFIX%email_filter_rule` (`filter_id`, `what`, `how`, `val`) 
-    SELECT 1, 'email', 'equals', email FROM `%TABLE_PREFIX%email_banlist`;
+INSERT INTO `%TABLE_PREFIX%email_filter_rule` (`filter_id`, `what`, `how`, `val`)
+    SELECT LAST_INSERT_ID(), 'email', 'equals', email FROM `%TABLE_PREFIX%email_banlist`;
 
 -- Create table session
 DROP TABLE IF EXISTS `%TABLE_PREFIX%session`;
@@ -283,7 +283,7 @@ ALTER TABLE `%TABLE_PREFIX%kb_premade`
   ADD `notes` TEXT NOT NULL AFTER `response`,
   DROP INDEX `title`,
   ADD FULLTEXT `resp` (`title` ,`response`);
-  
+
 ALTER TABLE `%TABLE_PREFIX%kb_premade` RENAME TO `%TABLE_PREFIX%canned_response`;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%faq_category`;
@@ -308,4 +308,4 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%faq_topic` (
 
 
 UPDATE `%TABLE_PREFIX%config`
-    SET `schema_signature`='7be60a8432e44989e782d5914ef784d2'; 
+    SET `schema_signature`='7be60a8432e44989e782d5914ef784d2';
diff --git a/include/upgrader/sql/c0fd16f4-959a00e.patch.sql b/include/upgrader/sql/c0fd16f4-d959a00e.patch.sql
similarity index 100%
rename from include/upgrader/sql/c0fd16f4-959a00e.patch.sql
rename to include/upgrader/sql/c0fd16f4-d959a00e.patch.sql
diff --git a/include/upgrader/sql/d959a00e-557cc9f9.patch.sql b/include/upgrader/sql/d959a00e-557cc9f9.patch.sql
new file mode 100644
index 000000000..74cc5294a
--- /dev/null
+++ b/include/upgrader/sql/d959a00e-557cc9f9.patch.sql
@@ -0,0 +1,11 @@
+/**
+ * The database install script changed to support installation on cluster
+ * servers. No significant changes need to be rolled for continuous updaters
+ *
+ * @version v1.7.1
+ * @signature 557cc9f9a663c56c259604ee1fe2e1fd
+ */
+
+-- update schema signature
+UPDATE `%TABLE_PREFIX%config`
+    SET `schema_signature`='557cc9f9a663c56c259604ee1fe2e1fd';
diff --git a/main.inc.php b/main.inc.php
index a8aac57df..6a4b8db3d 100644
--- a/main.inc.php
+++ b/main.inc.php
@@ -76,7 +76,7 @@
 
     #Current version && schema signature (Changes from version to version)
     define('THIS_VERSION','1.7.0+'); //Shown on admin panel
-    define('SCHEMA_SIGNATURE', 'd959a00e55c75e0c903b9e37324fd25d'); //MD5 signature of the db schema. (used to trigger upgrades)
+    define('SCHEMA_SIGNATURE', '557cc9f9a663c56c259604ee1fe2e1fd'); //MD5 signature of the db schema. (used to trigger upgrades)
     #load config info
     $configfile='';
     if(file_exists(ROOT_DIR.'ostconfig.php')) //Old installs prior to v 1.6 RC5
diff --git a/setup/inc/class.installer.php b/setup/inc/class.installer.php
index 21ac30f9b..dfbd12591 100644
--- a/setup/inc/class.installer.php
+++ b/setup/inc/class.installer.php
@@ -44,7 +44,7 @@ class Installer extends SetupWizard {
     function install($vars) {
 
         $this->errors=$f=array();
-        
+
         $f['name']          = array('type'=>'string',   'required'=>1, 'error'=>'Name required');
         $f['email']         = array('type'=>'email',    'required'=>1, 'error'=>'Valid email required');
         $f['fname']         = array('type'=>'string',   'required'=>1, 'error'=>'First name required');
@@ -58,7 +58,7 @@ class Installer extends SetupWizard {
         $f['dbname']        = array('type'=>'string',   'required'=>1, 'error'=>'Database name required');
         $f['dbuser']        = array('type'=>'string',   'required'=>1, 'error'=>'Username required');
         $f['dbpass']        = array('type'=>'string',   'required'=>1, 'error'=>'password required');
-        
+
 
         if(!Validator::process($f,$vars,$this->errors) && !$this->errors['err'])
             $this->errors['err']='Missing or invalid data - correct the errors and try again.';
@@ -67,14 +67,14 @@ class Installer extends SetupWizard {
         //Staff's email can't be same as system emails.
         if($vars['admin_email'] && $vars['email'] && !strcasecmp($vars['admin_email'],$vars['email']))
             $this->errors['admin_email']='Conflicts with system email above';
-        //Admin's pass confirmation. 
+        //Admin's pass confirmation.
         if(!$this->errors && strcasecmp($vars['passwd'],$vars['passwd2']))
             $this->errors['passwd2']='passwords to not match!';
         //Check table prefix underscore required at the end!
         if($vars['prefix'] && substr($vars['prefix'], -1)!='_')
             $this->errors['prefix']='Bad prefix. Must have underscore (_) at the end. e.g \'ost_\'';
 
-        //Make sure admin username is not very predictable. XXX: feels dirty but necessary 
+        //Make sure admin username is not very predictable. XXX: feels dirty but necessary
         if(!$this->errors['username'] && in_array(strtolower($vars['username']),array('admin','admins','username','osticket')))
             $this->errors['username']='Bad username';
 
@@ -123,11 +123,27 @@ class Installer extends SetupWizard {
             $this->errors['err']='Unable to open config file for writing. Permission denied! (#3)';
         elseif(!$this->load_sql_file($schemaFile,$vars['prefix'], true, $debug))
             $this->errors['err']='Error parsing SQL schema! Get help from developers (#4)';
-              
+
+        $sql='SELECT `id` FROM '.PREFIX.'sla ORDER BY `id` LIMIT 1';
+        $sla_id_1 = mysql_result(mysql_query($sql), 0);
+
+        $sql='SELECT `dept_id` FROM '.PREFIX.'department ORDER BY `dept_id` LIMIT 1';
+        $dept_id_1 = mysql_result(mysql_query($sql), 0);
+
+        $sql='SELECT `tpl_id` FROM '.PREFIX.'email_template ORDER BY `tpl_id` LIMIT 1';
+        $template_id_1 = mysql_result(mysql_query($sql), 0);
+
+        $sql='SELECT `group_id` FROM '.PREFIX.'groups ORDER BY `group_id` LIMIT 1';
+        $group_id_1 = mysql_result(mysql_query($sql), 0);
+
+        $sql='SELECT `id` FROM '.PREFIX.'timezone WHERE offset=-5.0 LIMIT 1';
+        $eastern_timezone = mysql_result(mysql_query($sql), 0);
+
         if(!$this->errors) {
             //Create admin user.
             $sql='INSERT INTO '.PREFIX.'staff SET created=NOW() '
-                .', isactive=1, isadmin=1, group_id=1, dept_id=1, timezone_id=8, max_page_size=25 '
+                .", isactive=1, isadmin=1, group_id=$group_id_1, dept_id=$dept_id_1"
+                .", timezone_id=$eastern_timezone, max_page_size=25"
                 .', email='.db_input($_POST['admin_email'])
                 .', firstname='.db_input($vars['fname'])
                 .', lastname='.db_input($vars['lname'])
@@ -138,11 +154,26 @@ class Installer extends SetupWizard {
         }
 
         if(!$this->errors) {
+            //Create default emails!
+            $email = $vars['email'];
+            list(,$domain)=explode('@',$vars['email']);
+            $sql='INSERT INTO '.PREFIX.'email (`name`,`email`,`created`,`updated`) VALUES '
+                    ." ('Support','$email',NOW(),NOW())"
+                    .",('osTicket Alerts','alerts@$domain',NOW(),NOW())"
+                    .",('','noreply@$domain',NOW(),NOW())";
+            @mysql_query($sql);
+            $support_email_id = mysql_insert_id();
+
+            $sql='SELECT `email_id` FROM '.PREFIX."email WHERE `email`='alerts@$domain' LIMIT 1";
+            $alert_email_id = mysql_result(mysql_query($sql), 0);
+
             //Create config settings---default settings!
             //XXX: rename ostversion  helpdesk_* ??
             $sql='INSERT INTO '.PREFIX.'config SET updated=NOW(), isonline=0 '
-                .', default_email_id=1, alert_email_id=2, default_dept_id=1 '
-                .', default_sla_id=1, default_timezone_id=8, default_template_id=1 '
+                .", default_email_id=$support_email_id, alert_email_id=$alert_email_id"
+                .", default_dept_id=$dept_id_1"
+                .", default_sla_id=$sla_id_1, default_timezone_id=$eastern_timezone"
+                .", default_template_id=$template_id_1 "
                 .', admin_email='.db_input($vars['admin_email'])
                 .', schema_signature='.db_input($signature)
                 .', helpdesk_url='.db_input(URL)
@@ -170,18 +201,17 @@ class Installer extends SetupWizard {
         @fclose($fp);
 
         /************* Make the system happy ***********************/
-        //Create default emails!
-        $email = $vars['email'];
-        list(,$domain)=explode('@',$vars['email']);
-        $sql='INSERT INTO '.PREFIX.'email (`email_id`, `dept_id`, `name`,`email`,`created`,`updated`) VALUES '
-                ." (1,1,'Support','$email',NOW(),NOW())"
-                .",(2,1,'osTicket Alerts','alerts@$domain',NOW(),NOW())"
-                .",(3,1,'','noreply@$domain',NOW(),NOW())";
-        @mysql_query($sql);
-                   
+
+
+        $sql='UPDATE '.PREFIX."email SET dept_id=$dept_id_1";
+        mysql_query($sql);
+        $sql='UPDATE '.PREFIX."department SET email_id=$email_id_1"
+            .", autoresp_email_id=$email_id_1";
+        mysql_query($sql);
+
         //Create a ticket to make the system warm and happy.
         $sql='INSERT INTO '.PREFIX.'ticket SET created=NOW(), status="open", source="Web" '
-            .' ,priority_id=2, dept_id=1, topic_id=1 '
+            ." ,priority_id=0, dept_id=$dept_id_1, topic_id=0 "
             .' ,ticketID='.db_input(Misc::randNumber(6))
             .' ,email="support@osticket.com" '
             .' ,name="osTicket Support" '
@@ -189,7 +219,7 @@ class Installer extends SetupWizard {
         if(mysql_query($sql) && ($tid=mysql_insert_id())) {
             if(!($msg=file_get_contents(INC_DIR.'msg/installed.txt')))
                 $msg='Congratulations and Thank you for choosing osTicket!';
-                        
+
             $sql='INSERT INTO '.PREFIX.'ticket_thread SET created=NOW()'
                 .', source="Web" '
                 .', thread_type="M" '
@@ -199,7 +229,7 @@ class Installer extends SetupWizard {
             @mysql_query($sql);
         }
         //TODO: create another personalized ticket and assign to admin??
-                    
+
         //Log a message.
         $msg="Congratulations osTicket basic installation completed!\n\nThank you for choosing osTicket!";
         $sql='INSERT INTO '.PREFIX.'syslog SET created=NOW(), updated=NOW(), log_type="Debug" '
diff --git a/setup/inc/sql/osTicket-mysql.sql b/setup/inc/sql/osTicket-mysql.sql
index 3d14f86d5..2f8d3fda9 100644
--- a/setup/inc/sql/osTicket-mysql.sql
+++ b/setup/inc/sql/osTicket-mysql.sql
@@ -143,8 +143,8 @@ CREATE TABLE `%TABLE_PREFIX%config` (
   `allow_attachments` tinyint(1) unsigned NOT NULL default '0',
   `allow_email_attachments` tinyint(1) unsigned NOT NULL default '0',
   `allow_online_attachments` tinyint(1) unsigned NOT NULL default '0',
-  `allow_online_attachments_onlogin` tinyint(1) unsigned NOT NULL default 
-    '0',
+  `allow_online_attachments_onlogin` tinyint(1) unsigned NOT NULL default
+  '0',
   `random_ticket_ids` tinyint(1) unsigned NOT NULL default '1',
   `log_level` tinyint(1) unsigned NOT NULL default '2',
   `log_graceperiod` int(10) unsigned NOT NULL default '12',
@@ -156,8 +156,8 @@ CREATE TABLE `%TABLE_PREFIX%config` (
   `daydatetime_format` varchar(60) NOT NULL default 'D, M j Y g:ia',
   `reply_separator` varchar(60) NOT NULL default '-- do not edit --',
   `admin_email` varchar(125) NOT NULL default '',
-  `helpdesk_title` varchar(255) NOT NULL default 
-    'osTicket Support Ticket System',
+  `helpdesk_title` varchar(255) NOT NULL default
+  'osTicket Support Ticket System',
   `helpdesk_url` varchar(255) NOT NULL default '',
   `schema_signature` char(32) NOT NULL default '',
   `updated` timestamp NOT NULL default CURRENT_TIMESTAMP,
@@ -165,6 +165,25 @@ CREATE TABLE `%TABLE_PREFIX%config` (
   KEY `isoffline` (`isonline`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
+DROP TABLE IF EXISTS `%TABLE_PREFIX%sla`;
+CREATE TABLE `%TABLE_PREFIX%sla` (
+  `id` int(11) unsigned NOT NULL auto_increment,
+  `isactive` tinyint(1) unsigned NOT NULL default '1',
+  `enable_priority_escalation` tinyint(1) unsigned NOT NULL default '1',
+  `disable_overdue_alerts` tinyint(1) unsigned NOT NULL default '0',
+  `grace_period` int(10) unsigned NOT NULL default '0',
+  `name` varchar(64) NOT NULL default '',
+  `notes` text,
+  `created` datetime NOT NULL,
+  `updated` datetime NOT NULL,
+  PRIMARY KEY  (`id`),
+  UNIQUE KEY `name` (`name`)
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
+
+INSERT INTO `%TABLE_PREFIX%sla` (`isactive`, `enable_priority_escalation`,
+  `disable_overdue_alerts`, `grace_period`, `name`, `notes`, `created`, `updated`)
+  VALUES (1, 1, 0, 48, 'Default SLA', NULL, NOW(), NOW());
+
 DROP TABLE IF EXISTS `%TABLE_PREFIX%department`;
 CREATE TABLE `%TABLE_PREFIX%department` (
   `dept_id` int(11) unsigned NOT NULL auto_increment,
@@ -188,9 +207,9 @@ CREATE TABLE `%TABLE_PREFIX%department` (
   KEY `tpl_id` (`tpl_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%department` (`dept_id`, `tpl_id`, `sla_id`, `email_id`, `autoresp_email_id`, `manager_id`, `dept_name`, `dept_signature`, `ispublic`, `ticket_auto_response`, `message_auto_response`) VALUES
-    (1, 0, 0, 1, 1, 0, 'Support', 'Support Dept', 1, 1, 1),
-    (2, 0, 1, 1, 1, 0, 'Billing', 'Billing Dept', 1, 1, 1);
+INSERT INTO `%TABLE_PREFIX%department` (`sla_id`, `dept_name`, `dept_signature`, `ispublic`, `ticket_auto_response`, `message_auto_response`) VALUES
+  (0, 'Support', 'Support Dept', 1, 1, 1),
+  ((SELECT `id` FROM `%TABLE_PREFIX%sla` ORDER BY `id` LIMIT 1), 'Billing', 'Billing Dept', 1, 1, 1);
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%email`;
 CREATE TABLE `%TABLE_PREFIX%email` (
@@ -258,8 +277,8 @@ CREATE TABLE `%TABLE_PREFIX%filter` (
 
 
 INSERT INTO `%TABLE_PREFIX%filter` (
-  `id`,`isactive`,`execorder`,`reject_ticket`,`name`,`notes`,`created`)
-    VALUES (1, 1, 99, 1, 'SYSTEM BAN LIST', 'Internal list for email banning. Do not remove', NOW());
+`isactive`,`execorder`,`reject_ticket`,`name`,`notes`,`created`)
+VALUES (1, 99, 1, 'SYSTEM BAN LIST', 'Internal list for email banning. Do not remove', NOW());
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%filter_rule`;
 CREATE TABLE `%TABLE_PREFIX%filter_rule` (
@@ -274,12 +293,12 @@ CREATE TABLE `%TABLE_PREFIX%filter_rule` (
   `updated` datetime NOT NULL,
   PRIMARY KEY  (`id`),
   KEY `filter_id` (`filter_id`),
-  UNIQUE `filter` (`filter_id`, `what`, `how`, `val`) 
+  UNIQUE `filter` (`filter_id`, `what`, `how`, `val`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 INSERT INTO `%TABLE_PREFIX%filter_rule` (
-  `id`, `filter_id`, `isactive`, `what`,`how`,`val`,`created`)
-    VALUES (1, 1, 1, 'email', 'equal', 'test@example.com',NOW());
+  `filter_id`, `isactive`, `what`,`how`,`val`,`created`)
+  VALUES (LAST_INSERT_ID(), 1, 'email', 'equal', 'test@example.com',NOW());
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%email_template`;
 CREATE TABLE `%TABLE_PREFIX%email_template` (
@@ -320,8 +339,8 @@ CREATE TABLE `%TABLE_PREFIX%email_template` (
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- TODO: Dump revised copy before release!!!
-INSERT INTO `%TABLE_PREFIX%email_template` (`tpl_id`, `cfg_id`, `isactive`, `name`, `notes`, `ticket_autoresp_subj`, `ticket_autoresp_body`, `ticket_autoreply_subj`, `ticket_autoreply_body`, `ticket_notice_subj`, `ticket_notice_body`, `ticket_alert_subj`, `ticket_alert_body`, `message_autoresp_subj`, `message_autoresp_body`, `message_alert_subj`, `message_alert_body`, `note_alert_subj`, `note_alert_body`, `assigned_alert_subj`, `assigned_alert_body`, `transfer_alert_subj`, `transfer_alert_body`, `ticket_overdue_subj`, `ticket_overdue_body`, `ticket_overlimit_subj`, `ticket_overlimit_body`, `ticket_reply_subj`, `ticket_reply_body`, `created`, `updated`) VALUES
-(1, 1, 1, 'osTicket Default Template', 'Default osTicket templates', 'Support Ticket Opened [#%{ticket.number}]', '%{ticket.name},\r\n\r\nA request for support has been created and assigned ticket #%{ticket.number}. A representative will follow-up with you as soon as possible.\r\n\r\nYou can view this ticket''s progress online here: %{ticket.client_link}.\r\n\r\nIf you wish to send additional comments or information regarding this issue, please don''t open a new ticket. Simply login using the link above and update the ticket.\r\n\r\n%{signature}', 'Support Ticket Opened [#%{ticket.number}]', '%{ticket.name},\r\n\r\nA request for support has been created and assigned ticket #%{ticket.number} with the following auto-reply:\r\n\r\n%{response}\r\n\r\n\r\nWe hope this response has sufficiently answered your questions. If not, please do not open another ticket. If need be, representative will follow-up with you as soon as possible.\r\n\r\nYou can view this ticket''s progress online here: %{ticket.client_link}.', '[#%{ticket.number}] %{ticket.subject}', '%{ticket.name},\r\n\r\nOur customer care team has created a ticket, #%{ticket.number} on your behalf, with the following message.\r\n\r\n%{message}\r\n\r\nIf you wish to provide additional comments or information regarding this issue, please don''t open a new ticket. You can update or view this ticket''s progress online here: %{ticket.client_link}.\r\n\r\n%{signature}', 'New Ticket Alert', '%{recipient},\r\n\r\nNew ticket #%{ticket.number} created.\r\n\r\n-----------------------\r\nName: %{ticket.name}\r\nEmail: %{ticket.email}\r\nDept: %{ticket.dept.name}\r\n\r\n%{message}\r\n-----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', '[#%{ticket.number}] Message Added', '%{ticket.name},\r\n\r\nYour reply to support request #%{ticket.number} has been noted.\r\n\r\nYou can view this support request progress online here: %{ticket.client_link}.\r\n\r\n%{signature}', 'New Message Alert', '%{recipient},\r\n\r\nNew message appended to ticket #%{ticket.number}\r\n\r\n----------------------\r\nName: %{ticket.name}\r\nEmail: %{ticket.email}\r\nDept: %{ticket.dept.name}\r\n\r\n%{message}\r\n----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', 'New Internal Note Alert', '%{recipient},\r\n\r\nInternal note appended to ticket #%{ticket.number}\r\n\r\n----------------------\r\n* %{note.title} *\r\n\r\n%{note.message}\r\n----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', 'Ticket #%{ticket.number} Assigned to you', '%{assignee},\r\n\r\nTicket #%{ticket.number} has been assigned to you by %{assigner}\r\n\r\n----------------------\r\n\r\n%{comments}\r\n\r\n----------------------\r\n\r\nTo view complete details, simply login to the support system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Support Ticket System - powered by osTicket.', 'Ticket Transfer #%{ticket.number} - %{ticket.dept.name}', '%{recipient},\r\n\r\nTicket #%{ticket.number} has been transferred to %{ticket.dept.name} department by %{staff.name}\r\n\r\n----------------------\r\n\r\n%{comments}\r\n\r\n----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', 'Stale Ticket Alert', '%{recipient},\r\n\r\nA ticket, #%{ticket.number} assigned to you or in your department is seriously overdue.\r\n\r\n%{ticket.staff_link}\r\n\r\nWe should all work hard to guarantee that all tickets are being addressed in a timely manner.\r\n\r\n- Your friendly (although with limited patience) Support Ticket System - powered by osTicket.', 'Open Tickets Limit Reached', '%{ticket.name}\r\n\r\nYou have reached the maximum number of open tickets allowed.\r\n\r\nTo be able to open another ticket, one of your pending tickets must be closed. To update or add comments to an open ticket simply login using the link below.\r\n\r\n%{url}/tickets.php?e=%{ticket.email}\r\n\r\nThank you.\r\n\r\nSupport Ticket System', '[#%{ticket.number}] %{ticket.subject}', '%{ticket.name},\r\n\r\nA customer support staff member has replied to your support request, #%{ticket.number} with the following response:\r\n\r\n%{response}\r\n\r\nWe hope this response has sufficiently answered your questions. If not, please do not send another email. Instead, reply to this email or login to your account for a complete archive of all your support requests and responses.\r\n\r\n%{ticket.client_link}\r\n\r\n%{signature}', NOW(), NOW());
+INSERT INTO `%TABLE_PREFIX%email_template` (`isactive`, `name`, `notes`, `ticket_autoresp_subj`, `ticket_autoresp_body`, `ticket_autoreply_subj`, `ticket_autoreply_body`, `ticket_notice_subj`, `ticket_notice_body`, `ticket_alert_subj`, `ticket_alert_body`, `message_autoresp_subj`, `message_autoresp_body`, `message_alert_subj`, `message_alert_body`, `note_alert_subj`, `note_alert_body`, `assigned_alert_subj`, `assigned_alert_body`, `transfer_alert_subj`, `transfer_alert_body`, `ticket_overdue_subj`, `ticket_overdue_body`, `ticket_overlimit_subj`, `ticket_overlimit_body`, `ticket_reply_subj`, `ticket_reply_body`, `created`, `updated`) VALUES
+(1, 'osTicket Default Template', 'Default osTicket templates', 'Support Ticket Opened [#%{ticket.number}]', '%{ticket.name},\r\n\r\nA request for support has been created and assigned ticket #%{ticket.number}. A representative will follow-up with you as soon as possible.\r\n\r\nYou can view this ticket''s progress online here: %{ticket.client_link}.\r\n\r\nIf you wish to send additional comments or information regarding this issue, please don''t open a new ticket. Simply login using the link above and update the ticket.\r\n\r\n%{signature}', 'Support Ticket Opened [#%{ticket.number}]', '%{ticket.name},\r\n\r\nA request for support has been created and assigned ticket #%{ticket.number} with the following auto-reply:\r\n\r\n%{response}\r\n\r\n\r\nWe hope this response has sufficiently answered your questions. If not, please do not open another ticket. If need be, representative will follow-up with you as soon as possible.\r\n\r\nYou can view this ticket''s progress online here: %{ticket.client_link}.', '[#%{ticket.number}] %{ticket.subject}', '%{ticket.name},\r\n\r\nOur customer care team has created a ticket, #%{ticket.number} on your behalf, with the following message.\r\n\r\n%{message}\r\n\r\nIf you wish to provide additional comments or information regarding this issue, please don''t open a new ticket. You can update or view this ticket''s progress online here: %{ticket.client_link}.\r\n\r\n%{signature}', 'New Ticket Alert', '%{recipient},\r\n\r\nNew ticket #%{ticket.number} created.\r\n\r\n-----------------------\r\nName: %{ticket.name}\r\nEmail: %{ticket.email}\r\nDept: %{ticket.dept.name}\r\n\r\n%{message}\r\n-----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', '[#%{ticket.number}] Message Added', '%{ticket.name},\r\n\r\nYour reply to support request #%{ticket.number} has been noted.\r\n\r\nYou can view this support request progress online here: %{ticket.client_link}.\r\n\r\n%{signature}', 'New Message Alert', '%{recipient},\r\n\r\nNew message appended to ticket #%{ticket.number}\r\n\r\n----------------------\r\nName: %{ticket.name}\r\nEmail: %{ticket.email}\r\nDept: %{ticket.dept.name}\r\n\r\n%{message}\r\n----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', 'New Internal Note Alert', '%{recipient},\r\n\r\nInternal note appended to ticket #%{ticket.number}\r\n\r\n----------------------\r\n* %{note.title} *\r\n\r\n%{note.message}\r\n----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', 'Ticket #%{ticket.number} Assigned to you', '%{assignee},\r\n\r\nTicket #%{ticket.number} has been assigned to you by %{assigner}\r\n\r\n----------------------\r\n\r\n%{comments}\r\n\r\n----------------------\r\n\r\nTo view complete details, simply login to the support system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Support Ticket System - powered by osTicket.', 'Ticket Transfer #%{ticket.number} - %{ticket.dept.name}', '%{recipient},\r\n\r\nTicket #%{ticket.number} has been transferred to %{ticket.dept.name} department by %{staff.name}\r\n\r\n----------------------\r\n\r\n%{comments}\r\n\r\n----------------------\r\n\r\nTo view/respond to the ticket, please login to the support ticket system.\r\n\r\n%{ticket.staff_link}\r\n\r\n- Your friendly Customer Support System - powered by osTicket.', 'Stale Ticket Alert', '%{recipient},\r\n\r\nA ticket, #%{ticket.number} assigned to you or in your department is seriously overdue.\r\n\r\n%{ticket.staff_link}\r\n\r\nWe should all work hard to guarantee that all tickets are being addressed in a timely manner.\r\n\r\n- Your friendly (although with limited patience) Support Ticket System - powered by osTicket.', 'Open Tickets Limit Reached', '%{ticket.name}\r\n\r\nYou have reached the maximum number of open tickets allowed.\r\n\r\nTo be able to open another ticket, one of your pending tickets must be closed. To update or add comments to an open ticket simply login using the link below.\r\n\r\n%{url}/tickets.php?e=%{ticket.email}\r\n\r\nThank you.\r\n\r\nSupport Ticket System', '[#%{ticket.number}] %{ticket.subject}', '%{ticket.name},\r\n\r\nA customer support staff member has replied to your support request, #%{ticket.number} with the following response:\r\n\r\n%{response}\r\n\r\nWe hope this response has sufficiently answered your questions. If not, please do not send another email. Instead, reply to this email or login to your account for a complete archive of all your support requests and responses.\r\n\r\n%{ticket.client_link}\r\n\r\n%{signature}', NOW(), NOW());
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%file`;
 CREATE TABLE `%TABLE_PREFIX%file` (
@@ -335,19 +354,19 @@ CREATE TABLE `%TABLE_PREFIX%file` (
   KEY `hash` (`hash`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%file` (`id`, `type`, `size`, `hash`, `name`, `created`) VALUES
-(1, 'text/plain', '25', '670c6cc1d1dfc97fad20e5470251b255', 'osTicket.txt', NOW());
+INSERT INTO `%TABLE_PREFIX%file` (`type`, `size`, `hash`, `name`, `created`) VALUES
+  ('text/plain', '25', '670c6cc1d1dfc97fad20e5470251b255', 'osTicket.txt', NOW());
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%file_chunk`;
 CREATE TABLE `%TABLE_PREFIX%file_chunk` (
-    `file_id` int(11) NOT NULL,
-    `chunk_id` int(11) NOT NULL,
-    `filedata` longblob NOT NULL,
-    PRIMARY KEY (`file_id`, `chunk_id`)
+  `file_id` int(11) NOT NULL,
+  `chunk_id` int(11) NOT NULL,
+  `filedata` longblob NOT NULL,
+  PRIMARY KEY (`file_id`, `chunk_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 INSERT INTO `%TABLE_PREFIX%file_chunk` (`file_id`, `chunk_id`, `filedata`)
-VALUES (1, 0, 0x43616e6e6564206174746163686d656e747320726f636b210a);
+  VALUES (LAST_INSERT_ID(), 0, 0x43616e6e6564206174746163686d656e747320726f636b210a);
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%groups`;
 CREATE TABLE `%TABLE_PREFIX%groups` (
@@ -372,10 +391,10 @@ CREATE TABLE `%TABLE_PREFIX%groups` (
   KEY `group_active` (`group_enabled`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%groups` (`group_id`, `group_enabled`, `group_name`, `can_create_tickets`, `can_edit_tickets`, `can_delete_tickets`, `can_close_tickets`, `can_assign_tickets`, `can_transfer_tickets`, `can_ban_emails`, `can_manage_premade`, `can_manage_faq`, `notes`, `created`, `updated`) VALUES
-    (1, 1, 'Admins', 1, 1, 1, 1, 1, 1, 1, 1, 1, 'overlords', NOW(), NOW()),
-    (2, 1, 'Managers', 1, 1, 1, 1, 1, 1, 1, 1, 1, '', NOW(), NOW()),
-    (3, 1, 'Staff', 1, 1, 0, 1, 1, 1, 0, 0, 0, '', NOW(), NOW());
+INSERT INTO `%TABLE_PREFIX%groups` (`group_enabled`, `group_name`, `can_create_tickets`, `can_edit_tickets`, `can_delete_tickets`, `can_close_tickets`, `can_assign_tickets`, `can_transfer_tickets`, `can_ban_emails`, `can_manage_premade`, `can_manage_faq`, `notes`, `created`, `updated`) VALUES
+  (1, 'Admins', 1, 1, 1, 1, 1, 1, 1, 1, 1, 'overlords', NOW(), NOW()),
+  (1, 'Managers', 1, 1, 1, 1, 1, 1, 1, 1, 1, '', NOW(), NOW()),
+  (1, 'Staff', 1, 1, 0, 1, 1, 1, 0, 0, 0, '', NOW(), NOW());
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%group_dept_access`;
 CREATE TABLE `%TABLE_PREFIX%group_dept_access` (
@@ -385,8 +404,9 @@ CREATE TABLE `%TABLE_PREFIX%group_dept_access` (
   KEY `dept_id`  (`dept_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%group_dept_access` (`group_id`, `dept_id`) VALUES
-    (1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2);
+INSERT INTO `%TABLE_PREFIX%group_dept_access` (`group_id`, `dept_id`)
+  SELECT `%TABLE_PREFIX%groups`.`group_id`, `%TABLE_PREFIX%department`.`dept_id`
+  FROM `%TABLE_PREFIX%groups`, `%TABLE_PREFIX%department`;
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%help_topic`;
 CREATE TABLE `%TABLE_PREFIX%help_topic` (
@@ -413,9 +433,9 @@ CREATE TABLE `%TABLE_PREFIX%help_topic` (
   KEY `sla_id` (`sla_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%help_topic` (`topic_id`, `isactive`, `ispublic`, `noautoresp`, `priority_id`, `dept_id`, `staff_id`, `team_id`, `sla_id`, `topic`, `notes`) VALUES
-    (1, 1, 1, 0, 2, 1, 0, 0, 1, 'Support', NULL),
-    (2, 1, 1, 0, 3, 1, 0, 0, 0, 'Billing', NULL);
+INSERT INTO `%TABLE_PREFIX%help_topic` (`isactive`, `ispublic`, `noautoresp`, `dept_id`, `sla_id`, `topic`, `notes`) VALUES
+  (1, 1, 0, (SELECT `dept_id` FROM `%TABLE_PREFIX%department` ORDER BY `dept_id` LIMIT 1), (SELECT `id` FROM `%TABLE_PREFIX%sla` ORDER BY `id` LIMIT 1), 'Support', NULL),
+  (1, 1, 0, (SELECT `dept_id` FROM `%TABLE_PREFIX%department` ORDER BY `dept_id` LIMIT 1), 0, 'Billing', NULL);
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%canned_response`;
 CREATE TABLE `%TABLE_PREFIX%canned_response` (
@@ -434,9 +454,9 @@ CREATE TABLE `%TABLE_PREFIX%canned_response` (
   FULLTEXT KEY `resp` (`title`,`response`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%canned_response` (`canned_id`, `dept_id`, `isenabled`, `title`, `response`) VALUES
-    (1, 0, 1, 'What is osTicket (sample)?', '\r\nosTicket is a widely-used open source support ticket system, an attractive alternative to higher-cost and complex customer support systems - simple, lightweight, reliable, open source, web-based and easy to setup and use.'),
-    (2, 0, 1, 'Sample (with variables)', '\r\n%{ticket.name},\r\n\r\nYour ticket #%{ticket.number} created on %{ticket.create_date} is in %{ticket.dept.name} department.\r\n\r\n');
+INSERT INTO `%TABLE_PREFIX%canned_response` (`isenabled`, `title`, `response`) VALUES
+  (1, 'What is osTicket (sample)?', '\r\nosTicket is a widely-used open source support ticket system, an attractive alternative to higher-cost and complex customer support systems - simple, lightweight, reliable, open source, web-based and easy to setup and use.'),
+  (1, 'Sample (with variables)', '\r\n%{ticket.name},\r\n\r\nYour ticket #%{ticket.number} created on %{ticket.create_date} is in %{ticket.dept.name} department.\r\n\r\n');
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%canned_attachment`;
 CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%canned_attachment` (
@@ -445,7 +465,8 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%canned_attachment` (
   PRIMARY KEY  (`canned_id`,`file_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%canned_attachment` (`canned_id`, `file_id`) VALUES (1,1);
+INSERT INTO `%TABLE_PREFIX%canned_attachment` (`canned_id`, `file_id`)
+  VALUES (LAST_INSERT_ID(), (SELECT `id` FROM `%TABLE_PREFIX%file` ORDER BY `id` LIMIT 1));
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%session`;
 CREATE TABLE `%TABLE_PREFIX%session` (
@@ -461,25 +482,6 @@ CREATE TABLE `%TABLE_PREFIX%session` (
   KEY `user_id` (`user_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
-DROP TABLE IF EXISTS `%TABLE_PREFIX%sla`;
-CREATE TABLE `%TABLE_PREFIX%sla` (
-  `id` int(11) unsigned NOT NULL auto_increment,
-  `isactive` tinyint(1) unsigned NOT NULL default '1',
-  `enable_priority_escalation` tinyint(1) unsigned NOT NULL default '1',
-  `disable_overdue_alerts` tinyint(1) unsigned NOT NULL default '0',
-  `grace_period` int(10) unsigned NOT NULL default '0',
-  `name` varchar(64) NOT NULL default '',
-  `notes` text,
-  `created` datetime NOT NULL,
-  `updated` datetime NOT NULL,
-  PRIMARY KEY  (`id`),
-  UNIQUE KEY `name` (`name`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
-
-INSERT INTO `%TABLE_PREFIX%sla` (`isactive`, `enable_priority_escalation`,
-        `disable_overdue_alerts`, `grace_period`, `name`, `notes`, `created`, `updated`)
-    VALUES (1, 1, 0, 48, 'Default SLA', NULL, NOW(), NOW());
-
 DROP TABLE IF EXISTS `%TABLE_PREFIX%staff`;
 CREATE TABLE `%TABLE_PREFIX%staff` (
   `staff_id` int(11) unsigned NOT NULL auto_increment,
@@ -549,8 +551,8 @@ CREATE TABLE `%TABLE_PREFIX%team` (
   KEY `lead_id` (`lead_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%team` (`lead_id`, `isenabled`, `noalerts`, `name`, `notes`, `created`, `updated`)
-    VALUES (0, 1, 0, 'Level I Support', '', NOW(), NOW());
+INSERT INTO `%TABLE_PREFIX%team` (`isenabled`, `noalerts`, `name`, `notes`, `created`, `updated`)
+  VALUES (1, 0, 'Level I Support', '', NOW(), NOW());
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%team_member`;
 CREATE TABLE `%TABLE_PREFIX%team_member` (
@@ -566,7 +568,7 @@ CREATE TABLE `%TABLE_PREFIX%ticket` (
   `ticketID` int(11) unsigned NOT NULL default '0',
   `dept_id` int(10) unsigned NOT NULL default '1',
   `sla_id` int(10) unsigned NOT NULL default '0',
-  `priority_id` int(10) unsigned NOT NULL default '2',
+  `priority_id` int(10) unsigned NOT NULL default '0',
   `topic_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',
@@ -577,8 +579,7 @@ CREATE TABLE `%TABLE_PREFIX%ticket` (
   `phone_ext` varchar(8) default NULL,
   `ip_address` varchar(64) NOT NULL default '',
   `status` enum('open','closed') NOT NULL default 'open',
-  `source` enum('Web','Email','Phone','API','Other') NOT NULL default
-'Other',
+  `source` enum('Web','Email','Phone','API','Other') NOT NULL default 'Other',
   `isoverdue` tinyint(1) unsigned NOT NULL default '0',
   `isanswered` tinyint(1) unsigned NOT NULL default '0',
   `duedate` datetime default NULL,
@@ -666,11 +667,11 @@ CREATE TABLE `%TABLE_PREFIX%ticket_priority` (
   KEY `ispublic` (`ispublic`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%ticket_priority` (`priority_id`, `priority`, `priority_desc`, `priority_color`, `priority_urgency`, `ispublic`) VALUES
-    (1, 'low', 'Low', '#DDFFDD', 4, 1),
-    (2, 'normal', 'Normal', '#FFFFF0', 3, 1),
-    (3, 'high', 'High', '#FEE7E7', 2, 1),
-    (4, 'emergency', 'Emergency', '#FEE7E7', 1, 0);
+INSERT INTO `%TABLE_PREFIX%ticket_priority` (`priority`, `priority_desc`, `priority_color`, `priority_urgency`, `ispublic`) VALUES
+  ('low', 'Low', '#DDFFDD', 4, 1),
+  ('normal', 'Normal', '#FFFFF0', 3, 1),
+  ('high', 'High', '#FEE7E7', 2, 1),
+  ('emergency', 'Emergency', '#FEE7E7', 1, 0);
 
 DROP TABLE IF EXISTS `%TABLE_PREFIX%ticket_thread`;
 CREATE TABLE `%TABLE_PREFIX%ticket_thread` (
@@ -701,34 +702,34 @@ CREATE TABLE `%TABLE_PREFIX%timezone` (
   PRIMARY KEY  (`id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
-INSERT INTO `%TABLE_PREFIX%timezone` (`id`, `offset`, `timezone`) VALUES
-(1, -12.0, 'Eniwetok, Kwajalein'),
-(2, -11.0, 'Midway Island, Samoa'),
-(3, -10.0, 'Hawaii'),
-(4, -9.0, 'Alaska'),
-(5, -8.0, 'Pacific Time (US & Canada)'),
-(6, -7.0, 'Mountain Time (US & Canada)'),
-(7, -6.0, 'Central Time (US & Canada), Mexico City'),
-(8, -5.0, 'Eastern Time (US & Canada), Bogota, Lima'),
-(9, -4.0, 'Atlantic Time (Canada), Caracas, La Paz'),
-(10, -3.5, 'Newfoundland'),
-(11, -3.0, 'Brazil, Buenos Aires, Georgetown'),
-(12, -2.0, 'Mid-Atlantic'),
-(13, -1.0, 'Azores, Cape Verde Islands'),
-(14, 0.0, 'Western Europe Time, London, Lisbon, Casablanca'),
-(15, 1.0, 'Brussels, Copenhagen, Madrid, Paris'),
-(16, 2.0, 'Kaliningrad, South Africa'),
-(17, 3.0, 'Baghdad, Riyadh, Moscow, St. Petersburg'),
-(18, 3.5, 'Tehran'),
-(19, 4.0, 'Abu Dhabi, Muscat, Baku, Tbilisi'),
-(20, 4.5, 'Kabul'),
-(21, 5.0, 'Ekaterinburg, Islamabad, Karachi, Tashkent'),
-(22, 5.5, 'Bombay, Calcutta, Madras, New Delhi'),
-(23, 6.0, 'Almaty, Dhaka, Colombo'),
-(24, 7.0, 'Bangkok, Hanoi, Jakarta'),
-(25, 8.0, 'Beijing, Perth, Singapore, Hong Kong'),
-(26, 9.0, 'Tokyo, Seoul, Osaka, Sapporo, Yakutsk'),
-(27, 9.5, 'Adelaide, Darwin'),
-(28, 10.0, 'Eastern Australia, Guam, Vladivostok'),
-(29, 11.0, 'Magadan, Solomon Islands, New Caledonia'),
-(30, 12.0, 'Auckland, Wellington, Fiji, Kamchatka');
+INSERT INTO `%TABLE_PREFIX%timezone` (`offset`, `timezone`) VALUES
+  (-12.0, 'Eniwetok, Kwajalein'),
+  (-11.0, 'Midway Island, Samoa'),
+  (-10.0, 'Hawaii'),
+  (-9.0, 'Alaska'),
+  (-8.0, 'Pacific Time (US & Canada)'),
+  (-7.0, 'Mountain Time (US & Canada)'),
+  (-6.0, 'Central Time (US & Canada), Mexico City'),
+  (-5.0, 'Eastern Time (US & Canada), Bogota, Lima'),
+  (-4.0, 'Atlantic Time (Canada), Caracas, La Paz'),
+  (-3.5, 'Newfoundland'),
+  (-3.0, 'Brazil, Buenos Aires, Georgetown'),
+  (-2.0, 'Mid-Atlantic'),
+  (-1.0, 'Azores, Cape Verde Islands'),
+  (0.0, 'Western Europe Time, London, Lisbon, Casablanca'),
+  (1.0, 'Brussels, Copenhagen, Madrid, Paris'),
+  (2.0, 'Kaliningrad, South Africa'),
+  (3.0, 'Baghdad, Riyadh, Moscow, St. Petersburg'),
+  (3.5, 'Tehran'),
+  (4.0, 'Abu Dhabi, Muscat, Baku, Tbilisi'),
+  (4.5, 'Kabul'),
+  (5.0, 'Ekaterinburg, Islamabad, Karachi, Tashkent'),
+  (5.5, 'Bombay, Calcutta, Madras, New Delhi'),
+  (6.0, 'Almaty, Dhaka, Colombo'),
+  (7.0, 'Bangkok, Hanoi, Jakarta'),
+  (8.0, 'Beijing, Perth, Singapore, Hong Kong'),
+  (9.0, 'Tokyo, Seoul, Osaka, Sapporo, Yakutsk'),
+  (9.5, 'Adelaide, Darwin'),
+  (10.0, 'Eastern Australia, Guam, Vladivostok'),
+  (11.0, 'Magadan, Solomon Islands, New Caledonia'),
+  (12.0, 'Auckland, Wellington, Fiji, Kamchatka');
diff --git a/setup/inc/sql/osTicket-mysql.sql.md5 b/setup/inc/sql/osTicket-mysql.sql.md5
index d14b842c7..53796ad62 100644
--- a/setup/inc/sql/osTicket-mysql.sql.md5
+++ b/setup/inc/sql/osTicket-mysql.sql.md5
@@ -1 +1 @@
-d959a00e55c75e0c903b9e37324fd25d
+557cc9f9a663c56c259604ee1fe2e1fd
-- 
GitLab