diff --git a/include/class.config.php b/include/class.config.php
index 03fe8891c0acfbabe2ea41c750f926a606225277..aae5a2a7e8eb8d98bc0a234fbe5b1e4d84d94995 100644
--- a/include/class.config.php
+++ b/include/class.config.php
@@ -610,6 +610,10 @@ class OsticketConfig extends Config {
         return ($this->get('message_alert_dept_manager'));
     }
 
+    function alertAcctManagerONNewMessage() {
+        return ($this->get('message_alert_acct_manager'));
+    }
+
     function alertONNewNote() {
         return ($this->get('note_alert_active'));
     }
@@ -642,6 +646,10 @@ class OsticketConfig extends Config {
         return ($this->get('ticket_alert_dept_members'));
     }
 
+    function alertAcctManagerONNewTicket() {
+        return ($this->get('ticket_alert_acct_manager'));
+    }
+
     function alertONTransfer() {
         return ($this->get('transfer_alert_active'));
     }
@@ -1061,13 +1069,15 @@ class OsticketConfig extends Config {
        if($vars['ticket_alert_active']
                 && (!isset($vars['ticket_alert_admin'])
                     && !isset($vars['ticket_alert_dept_manager'])
-                    && !isset($vars['ticket_alert_dept_members']))) {
+                    && !isset($vars['ticket_alert_dept_members'])
+                    && !isset($vars['ticket_alert_acct_manager']))) {
             $errors['ticket_alert_active']='Select recipient(s)';
         }
         if($vars['message_alert_active']
                 && (!isset($vars['message_alert_laststaff'])
                     && !isset($vars['message_alert_assigned'])
-                    && !isset($vars['message_alert_dept_manager']))) {
+                    && !isset($vars['message_alert_dept_manager'])
+                    && !isset($vars['message_alert_acct_manager']))) {
             $errors['message_alert_active']='Select recipient(s)';
         }
 
@@ -1106,10 +1116,12 @@ class OsticketConfig extends Config {
             'ticket_alert_admin'=>isset($vars['ticket_alert_admin'])?1:0,
             'ticket_alert_dept_manager'=>isset($vars['ticket_alert_dept_manager'])?1:0,
             'ticket_alert_dept_members'=>isset($vars['ticket_alert_dept_members'])?1:0,
+            'ticket_alert_acct_manager'=>isset($vars['ticket_alert_acct_manager'])?1:0,
             'message_alert_active'=>$vars['message_alert_active'],
             'message_alert_laststaff'=>isset($vars['message_alert_laststaff'])?1:0,
             'message_alert_assigned'=>isset($vars['message_alert_assigned'])?1:0,
             'message_alert_dept_manager'=>isset($vars['message_alert_dept_manager'])?1:0,
+            'message_alert_acct_manager'=>isset($vars['message_alert_acct_manager'])?1:0,
             'note_alert_active'=>$vars['note_alert_active'],
             'note_alert_laststaff'=>isset($vars['note_alert_laststaff'])?1:0,
             'note_alert_assigned'=>isset($vars['note_alert_assigned'])?1:0,
diff --git a/include/class.organization.php b/include/class.organization.php
index 5592aa95f8799a19067e79cb8f79ae9562f5ac29..4f55f290b3d08d038c07c2d97552095d80932633 100644
--- a/include/class.organization.php
+++ b/include/class.organization.php
@@ -32,6 +32,8 @@ class OrganizationModel extends VerySimpleModel {
     const COLLAB_PRIMARY_CONTACT =  0x0002;
     const ASSIGN_AGENT_MANAGER =    0x0004;
 
+    var $_manager;
+
     function getId() {
         return $this->id;
     }
@@ -40,8 +42,18 @@ class OrganizationModel extends VerySimpleModel {
         return $this->name;
     }
 
+    function getAccountManager() {
+        if (!isset($this->_manager)) {
+            if ($this->manager[0] == 't')
+                $this->_manager = Team::lookup(substr($this->manager, 1));
+            if ($this->manager[0] == 's')
+                $this->_manager = Staff::lookup(substr($this->manager, 1));
+        }
+        return $this->_manager;
+    }
+
     function getAccountManagerId() {
-        return $this->staff_id;
+        return $this->manager;
     }
 
     function autoAddCollabs() {
@@ -195,8 +207,19 @@ class Organization extends OrganizationModel {
             }
         }
 
-        if ($vars['staff_id'] && (!$staff = Staff::lookup($vars['staff_id'])))
-            $errors['staff_id'] = 'Select a staff member from the list';
+        if ($vars['manager']) {
+            switch ($vars['manager'][0]) {
+            case 's':
+                if ($staff = Staff::lookup(substr($vars['manager'], 1)))
+                    break;
+            case 't':
+                if ($vars['manager'][0] == 't'
+                        && $team = Team::lookup(substr($vars['manager'], 1)))
+                    break;
+            default:
+                $errors['manager'] = 'Select a staff member or team from the list';
+            }
+        }
 
         if (!$valid || $errors)
             return false;
@@ -225,7 +248,7 @@ class Organization extends OrganizationModel {
 
         // Set staff and primary contacts
         $this->set('domain', $vars['domain']);
-        $this->set('staff_id', $staff ? $staff->getId() : 0);
+        $this->set('manager', $vars['manager'] ?: '');
         if ($vars['contacts'] && is_array($vars['contacts'])) {
             foreach ($this->allMembers() as $u) {
                 $u->setPrimaryContact(array_search($u->id, $vars['contacts']) !== false);
diff --git a/include/class.ticket.php b/include/class.ticket.php
index 663ecc57ff633a3a49ff5af83d7701330310ed51..a5c48d99c3b7c260425dfd94902ae4826e3a77a2 100644
--- a/include/class.ticket.php
+++ b/include/class.ticket.php
@@ -937,6 +937,16 @@ class Ticket {
             if($cfg->alertDeptManagerONNewTicket() && $dept && ($manager=$dept->getManager()))
                 $recipients[]= $manager;
 
+            // Account manager
+            if ($cfg->alertAcctManagerONNewMessage()
+                    && ($org = $this->getOwner()->getOrganization())
+                    && ($acct_manager = $org->getAcctManager())) {
+                if ($acct_manager instanceof Team)
+                    $recipients = array_merge($recipients, $acct_manager->getMembers());
+                else
+                    $recipients[] = $acct_manager;
+            }
+
             foreach( $recipients as $k=>$staff) {
                 if(!is_object($staff) || !$staff->isAvailable() || in_array($staff->getEmail(), $sentlist)) continue;
                 $alert = $this->replaceVars($msg, array('recipient' => $staff));
@@ -1620,6 +1630,16 @@ class Ticket {
             if($cfg->alertDeptManagerONNewMessage() && $dept && ($manager=$dept->getManager()))
                 $recipients[]=$manager;
 
+            // Account manager
+            if ($cfg->alertAcctManagerONNewMessage()
+                    && ($org = $this->getOwner()->getOrganization())
+                    && ($acct_manager = $org->getAcctManager())) {
+                if ($acct_manager instanceof Team)
+                    $recipients = array_merge($recipients, $acct_manager->getMembers());
+                else
+                    $recipients[] = $acct_manager;
+            }
+
             $sentlist=array(); //I know it sucks...but..it works.
             foreach( $recipients as $k=>$staff) {
                 if(!$staff || !$staff->getEmail() || !$staff->isAvailable() || in_array($staff->getEmail(), $sentlist)) continue;
@@ -2334,9 +2354,12 @@ class Ticket {
         }
 
         // Auto assignment to organization account manager
-        if (($org = $user->getOrganization()) && $org->getAccountManagerId()) {
-            if (!isset($vars['staffId']))
-                $vars['staffId'] = $org->getAccountManagerId();
+        if (($org = $user->getOrganization())
+                && ($code = $org->getAccountManagerId())) {
+            if (!isset($vars['staffId']) && $code[0] == 's')
+                $vars['staffId'] = substr($code, 1);
+            elseif (!isset($vars['teamId']) && $code[0] == 't')
+                $vars['teamId'] = substr($code, 1);
         }
 
         // Intenal mapping magic...see if we need to override anything
diff --git a/include/staff/settings-alerts.inc.php b/include/staff/settings-alerts.inc.php
index 0ab5cb689367ca713400a67af17613d261eec4b8..c0dbc628e38bae07c38eac2da5a83258229e56c3 100644
--- a/include/staff/settings-alerts.inc.php
+++ b/include/staff/settings-alerts.inc.php
@@ -36,6 +36,11 @@
                 <input type="checkbox" name="ticket_alert_dept_members" <?php echo $config['ticket_alert_dept_members']?'checked':''; ?>> Department Members <em>(spammy)</em>
             </td>
         </tr>
+        <tr>
+            <td>
+                <input type="checkbox" name="ticket_alert_acct_manager" <?php echo $config['ticket_alert_acct_manager']?'checked':''; ?>> Organization Account Manager
+            </td>
+        </tr>
         <tr><th><em><b>New Message Alert</b>:
             <i class="help-tip icon-question-sign" href="#new_message"></i>
             </em></th></tr>
@@ -61,6 +66,11 @@
               <input type="checkbox" name="message_alert_dept_manager" <?php echo $config['message_alert_dept_manager']?'checked':''; ?>> Department Manager <em>(spammy)</em>
             </td>
         </tr>
+        <tr>
+            <td>
+                <input type="checkbox" name="message_alert_acct_manager" <?php echo $config['message_alert_acct_manager']?'checked':''; ?>> Organization Account Manager
+            </td>
+        </tr>
         <tr><th><em><b>New Internal Note Alert</b>:
             <i class="help-tip icon-question-sign" href="#new_activity"></i>
             </em></th></tr>
@@ -72,11 +82,6 @@
               &nbsp;&nbsp;&nbsp;<font class="error">&nbsp;<?php echo $errors['note_alert_active']; ?></font>
             </td>
         </tr>
-        <tr>
-            <td>
-              <input type="checkbox" name="note_alert_laststaff" <?php echo $config['note_alert_laststaff']?'checked':''; ?>> Last Respondent
-            </td>
-        </tr>
         <tr>
             <td>
               <input type="checkbox" name="note_alert_assigned" <?php echo $config['note_alert_assigned']?'checked':''; ?>> Assigned Staff
diff --git a/include/staff/templates/org-profile.tmpl.php b/include/staff/templates/org-profile.tmpl.php
index f8a8c1e56058eec3ed598917dd14dd7df29920b5..3dda76484b0a7e0432957b2045eff10b83580f9f 100644
--- a/include/staff/templates/org-profile.tmpl.php
+++ b/include/staff/templates/org-profile.tmpl.php
@@ -47,16 +47,29 @@ if ($ticket && $ticket->getOwnerId() == $user->getId())
                     Account Manager:
                 </td>
                 <td>
-                    <select name="staff_id">
+                    <select name="manager">
                         <option value="0" selected="selected">&mdash; None &mdash;</option><?php
-                        if (($agents=Staff::getAvailableStaffMembers())) {
-                            foreach($agents as $id => $name) {
+                        if ($users=Staff::getAvailableStaffMembers()) { ?>
+                            <optgroup label="Staff Members (<?php echo count($users); ?>)">
+<?php                       foreach($users as $id => $name) {
+                                $k = "s$id";
                                 echo sprintf('<option value="%s" %s>%s</option>',
-                                        $id,(($info['staff_id']==$id)?'selected="selected"':''),$name);
+                                    $k,(($info['manager']==$k)?'selected="selected"':''),$name);
                             }
+                            echo '</optgroup>';
+                        }
+
+                        if ($teams=Team::getActiveTeams()) { ?>
+                            <optgroup label="Teams (<?php echo count($teams); ?>)">
+<?php                       foreach($teams as $id => $name) {
+                                $k="t$id";
+                                echo sprintf('<option value="%s" %s>%s</option>',
+                                    $k,(($info['manager']==$k)?'selected="selected"':''),$name);
+                            }
+                            echo '</optgroup>';
                         } ?>
                     </select>
-                    <br/><span class="error"><?php echo $errors['staff_id']; ?></span>
+                    <br/><span class="error"><?php echo $errors['manager']; ?></span>
                 </td>
             </tr>
             <tr>