diff --git a/include/class.config.php b/include/class.config.php
index 0616bb96b1a6ac569efceed44db7f82880da78d7..07210051b1e173a38f49fc96b68231dd789a9d0a 100644
--- a/include/class.config.php
+++ b/include/class.config.php
@@ -385,6 +385,10 @@ class OsticketConfig extends Config {
         return ($email=$this->getDefaultEmail()) ? $email->getAddress() : null;
     }
 
+    function getDefaultTicketStatusId() {
+        return $this->get('default_ticket_status_id', 1);
+    }
+
     function getDefaultSLAId() {
         return $this->get('default_sla_id');
     }
@@ -930,6 +934,7 @@ class OsticketConfig extends Config {
     function updateTicketsSettings($vars, &$errors) {
         $f=array();
         $f['default_sla_id']=array('type'=>'int',   'required'=>1, 'error'=>'Selection required');
+        $f['default_ticket_status_id'] = array('type'=>'int', 'required'=>1, 'error'=>'Selection required');
         $f['default_priority_id']=array('type'=>'int',   'required'=>1, 'error'=>'Selection required');
         $f['max_open_tickets']=array('type'=>'int',   'required'=>1, 'error'=>'Enter valid numeric value');
         $f['autolock_minutes']=array('type'=>'int',   'required'=>1, 'error'=>'Enter lock time in minutes');
@@ -979,6 +984,7 @@ class OsticketConfig extends Config {
             'random_ticket_ids'=>$vars['random_ticket_ids'],
             'default_priority_id'=>$vars['default_priority_id'],
             'default_help_topic'=>$vars['default_help_topic'],
+            'default_ticket_status_id'=>$vars['default_ticket_status_id'],
             'default_sla_id'=>$vars['default_sla_id'],
             'max_open_tickets'=>$vars['max_open_tickets'],
             'autolock_minutes'=>$vars['autolock_minutes'],
diff --git a/include/class.filter.php b/include/class.filter.php
index 2370ab6640ba791257c8e96aecc34b46874f5f61..51f176c4fb741a75e23ed940925c51498b06c1d8 100644
--- a/include/class.filter.php
+++ b/include/class.filter.php
@@ -107,6 +107,10 @@ class Filter {
         return $this->ht['dept_id'];
     }
 
+    function getStatusId() {
+        return $this->ht['status_id'];
+    }
+
     function getPriorityId() {
         return $this->ht['priority_id'];
     }
@@ -302,6 +306,8 @@ class Filter {
         if ($this->getPriorityId()) $ticket['priorityId']=$this->getPriorityId();
         #       Set SLA plan (?)
         if ($this->getSLAId())      $ticket['slaId']=$this->getSLAId();
+        #       Set status
+        if ($this->getStatusId())   $ticket['statusId']=$this->getStatusId();
         #       Auto-assign to (?)
         #       XXX: Unset the other (of staffId or teamId) (?)
         if ($this->getStaffId())    $ticket['staffId']=$this->getStaffId();
@@ -509,6 +515,7 @@ class Filter {
             .',execorder='.db_input($vars['execorder'])
             .',email_id='.db_input($emailId)
             .',dept_id='.db_input($vars['dept_id'])
+            .',status_id='.db_input($vars['status_id'])
             .',priority_id='.db_input($vars['priority_id'])
             .',sla_id='.db_input($vars['sla_id'])
             .',topic_id='.db_input($vars['topic_id'])
diff --git a/include/class.topic.php b/include/class.topic.php
index ee0f2a47ede9eab61d87bf0955c5aec9fcd8bd30..d068e214db18cbcb43ad64df7524e53c316146b7 100644
--- a/include/class.topic.php
+++ b/include/class.topic.php
@@ -106,6 +106,10 @@ class Topic {
         return $this->ht['priority_id'];
     }
 
+    function getStatusId() {
+        return $this->ht['status_id'];
+    }
+
     function getStaffId() {
         return $this->ht['staff_id'];
     }
@@ -327,6 +331,7 @@ class Topic {
             .',topic_pid='.db_input($vars['topic_pid'])
             .',dept_id='.db_input($vars['dept_id'])
             .',priority_id='.db_input($vars['priority_id'])
+            .',status_id='.db_input($vars['status_id'])
             .',sla_id='.db_input($vars['sla_id'])
             .',form_id='.db_input($vars['form_id'])
             .',page_id='.db_input($vars['page_id'])
diff --git a/include/staff/filter.inc.php b/include/staff/filter.inc.php
index f2339c537e5ca048f894589a67d869899050f806..92b97eec0c4ab4531b4b74429030ae86a41b9d5a 100644
--- a/include/staff/filter.inc.php
+++ b/include/staff/filter.inc.php
@@ -239,6 +239,36 @@ $info=Format::htmlchars(($errors && $_POST)?$_POST:$info);
                 &nbsp;<span class="error">*&nbsp;<?php echo $errors['dept_id']; ?></span>&nbsp;<i class="help-tip icon-question-sign" href="#department"></i>
             </td>
         </tr>
+        <tr>
+            <td width="180">
+                Status:
+            </td>
+            <td>
+                <span>
+                <select name="status_id">
+                    <option value="">&mdash; Default &mdash;</option>
+                    <?php
+                    foreach (TicketStatusList::getAll() as $status) {
+                        $name = $status->getName();
+                        if (!($isenabled = $status->isEnabled()))
+                            $name.=' (Disabled)';
+
+                        echo sprintf('<option value="%d" %s %s>%s</option>',
+                                $status->getId(),
+                                ($info['status_id'] == $status->getId())
+                                 ? 'selected="selected"' : '',
+                                 $isenabled ? '' : 'disabled="disabled"',
+                                 $name
+                                );
+                    }
+                    ?>
+                </select>
+                &nbsp;
+                <span class="error"><?php echo $errors['status_id']; ?></span>
+                <i class="help-tip icon-question-sign" href="#status"></i>
+                </span>
+            </td>
+        </tr>
         <tr>
             <td width="180">
                 Priority:
diff --git a/include/staff/helptopic.inc.php b/include/staff/helptopic.inc.php
index 00f06d38d0ca604b2adf81daa606132110fd7359..4d86a6a1b1819669561db362fcdd73b354660ff2 100644
--- a/include/staff/helptopic.inc.php
+++ b/include/staff/helptopic.inc.php
@@ -128,6 +128,36 @@ if ($info['form_id'] == Topic::FORM_USE_PARENT) echo 'selected="selected"';
                 <i class="help-tip icon-question-sign" href="#department"></i>
             </td>
         </tr>
+        <tr>
+            <td width="180">
+                Status:
+            </td>
+            <td>
+                <span>
+                <select name="status_id">
+                    <option value="">&mdash; System Default &mdash;</option>
+                    <?php
+                    foreach (TicketStatusList::getAll() as $status) {
+                        $name = $status->getName();
+                        if (!($isenabled = $status->isEnabled()))
+                            $name.=' (Disabled)';
+
+                        echo sprintf('<option value="%d" %s %s>%s</option>',
+                                $status->getId(),
+                                ($info['status_id'] == $status->getId())
+                                 ? 'selected="selected"' : '',
+                                 $isenabled ? '' : 'disabled="disabled"',
+                                 $name
+                                );
+                    }
+                    ?>
+                </select>
+                &nbsp;
+                <span class="error"><?php echo $errors['status_id']; ?></span>
+                <i class="help-tip icon-question-sign" href="#status"></i>
+                </span>
+            </td>
+        </tr>
         <tr>
             <td width="180">
                 Priority:
diff --git a/include/staff/settings-tickets.inc.php b/include/staff/settings-tickets.inc.php
index a7960a02b16552d72bd5377a138ccc049b535d46..d6b3701406195347665bba0551921fb97751ab13 100644
--- a/include/staff/settings-tickets.inc.php
+++ b/include/staff/settings-tickets.inc.php
@@ -25,7 +25,50 @@ if(!($maxfileuploads=ini_get('max_file_uploads')))
                 Random
             </td>
         </tr>
+        <tr>
+            <td width="180" class="required">
+                Default Status:
+            </td>
+            <td>
+                <span>
+                <select name="default_ticket_status_id">
+                <?php
+                foreach (TicketStatusList::getAll(array('open')) as $status) {
+                    $name = $status->getName();
+                    if (!($isenabled = $status->isEnabled()))
+                        $name.=' (Disabled)';
 
+                    echo sprintf('<option value="%d" %s %s>%s</option>',
+                            $status->getId(),
+                            ($config['default_ticket_status_id'] ==
+                             $status->getId() && $isenabled)
+                             ? 'selected="selected"' : '',
+                             $isenabled ? '' : 'disabled="disabled"',
+                             $name
+                            );
+                }
+                ?>
+                </select>
+                &nbsp;
+                <span class="error">*&nbsp;<?php echo $errors['default_ticket_status_id']; ?></span>
+                <i class="help-tip icon-question-sign" href="#default_ticket_status"></i>
+                </span>
+            </td>
+        </tr>
+        <tr>
+            <td width="180" class="required">Default Priority:</td>
+            <td>
+                <select name="default_priority_id">
+                    <?php
+                    $priorities= db_query('SELECT priority_id,priority_desc FROM '.TICKET_PRIORITY_TABLE);
+                    while (list($id,$tag) = db_fetch_row($priorities)){ ?>
+                        <option value="<?php echo $id; ?>"<?php echo ($config['default_priority_id']==$id)?'selected':''; ?>><?php echo $tag; ?></option>
+                    <?php
+                    } ?>
+                </select>
+                &nbsp;<span class="error">*&nbsp;<?php echo $errors['default_priority_id']; ?></span> <i class="help-tip icon-question-sign" href="#default_priority"></i>
+             </td>
+        </tr>
         <tr>
             <td width="180" class="required">
                 Default SLA:
@@ -49,20 +92,6 @@ if(!($maxfileuploads=ini_get('max_file_uploads')))
                 </span>
             </td>
         </tr>
-        <tr>
-            <td width="180" class="required">Default Priority:</td>
-            <td>
-                <select name="default_priority_id">
-                    <?php
-                    $priorities= db_query('SELECT priority_id,priority_desc FROM '.TICKET_PRIORITY_TABLE);
-                    while (list($id,$tag) = db_fetch_row($priorities)){ ?>
-                        <option value="<?php echo $id; ?>"<?php echo ($config['default_priority_id']==$id)?'selected':''; ?>><?php echo $tag; ?></option>
-                    <?php
-                    } ?>
-                </select>
-                &nbsp;<span class="error">*&nbsp;<?php echo $errors['default_priority_id']; ?></span> <i class="help-tip icon-question-sign" href="#default_priority"></i>
-             </td>
-        </tr>
         <tr>
             <td width="180">Default Help Topic:</td>
             <td>
diff --git a/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql b/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql
index 6d1b62c33c19e7845cdeba77e7d2db4c181014da..337a974067b8f3c4cfa5911c0f820ca341698f97 100644
--- a/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql
+++ b/include/upgrader/streams/core/8f99b8bf-00000000.patch.sql
@@ -24,6 +24,12 @@ CREATE TABLE IF NOT EXISTS `%TABLE_PREFIX%ticket_status` (
   UNIQUE KEY `name` (`name`)
 ) DEFAULT CHARSET=utf8;
 
+ALTER TABLE  `%TABLE_PREFIX%help_topic`
+    ADD  `status_id` INT UNSIGNED NOT NULL DEFAULT  '0' AFTER  `noautoresp`;
+
+ALTER TABLE  `%TABLE_PREFIX%filter`
+    ADD  `status_id` INT UNSIGNED NOT NULL DEFAULT  '0' AFTER  `email_id`;
+
 UPDATE `%TABLE_PREFIX%config`
     SET `value` = 'cbf8c933d6d2eaaa971042eb2efce247'
     WHERE `key` = 'schema_signature' AND `namespace` = 'core';
diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql
index 8cde196b944f9526bd9062a312faee5f7dcc0d14..f3b41bf656b2931fec8a3f9a4e1fa651b2238880 100644
--- a/setup/inc/streams/core/install-mysql.sql
+++ b/setup/inc/streams/core/install-mysql.sql
@@ -282,6 +282,7 @@ CREATE TABLE `%TABLE_PREFIX%filter` (
   `disable_autoresponder` tinyint(1) unsigned NOT NULL default '0',
   `canned_response_id` int(11) unsigned NOT NULL default '0',
   `email_id` int(10) unsigned NOT NULL default '0',
+  `status_id` int(10) unsigned NOT NULL default '0',
   `priority_id` int(10) unsigned NOT NULL default '0',
   `dept_id` int(10) unsigned NOT NULL default '0',
   `staff_id` int(10) unsigned NOT NULL default '0',
@@ -407,8 +408,9 @@ CREATE TABLE `%TABLE_PREFIX%help_topic` (
   `isactive` tinyint(1) unsigned NOT NULL default '1',
   `ispublic` tinyint(1) unsigned NOT NULL default '1',
   `noautoresp` tinyint(3) unsigned NOT NULL default '0',
-  `priority_id` tinyint(3) unsigned NOT NULL default '0',
-  `dept_id` tinyint(3) unsigned NOT NULL default '0',
+  `status_id` int(10) unsigned NOT NULL default '0',
+  `priority_id` int(10) unsigned NOT NULL default '0',
+  `dept_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',
   `sla_id` int(10) unsigned NOT NULL default '0',