diff --git a/application/modules/requests/models/ApprovalActionWatchersModel.php b/application/modules/requests/models/ApprovalActionWatchersModel.php
index a26304cbbc6db9cc2ce07cac00e640b89abdd73d..38626351b14ed708e5bdac57b0b3598061872a58 100644
--- a/application/modules/requests/models/ApprovalActionWatchersModel.php
+++ b/application/modules/requests/models/ApprovalActionWatchersModel.php
@@ -39,7 +39,8 @@ class Requests_ApprovalActionWatchersModel extends Requests_ApprovalActionModel
             'className'           => '',
             'participatingRoles'  => array(),
             'editingRoles'        => array(),
-            'watchingRole'        => NULL
+            'watchingRole'        => NULL,
+            'action'              => NULL
         );
         
         $new = new self($data);
@@ -92,14 +93,16 @@ class Requests_ApprovalActionWatchersModel extends Requests_ApprovalActionModel
         $sqlParts = array();
         foreach ($models as $model) {
             $sqlParts[] = $db->quoteInto('(?, ', $model->_data['approvalActionId'])
-                        . $db->quoteInto('?) ',  $model->_data['watchingRole']);
+                        . $db->quoteInto('?, ',  $model->_data['watchingRole'])
+                        . $db->quoteInto('?) ',  $model->_data['action']);
         }
         $sql .= implode(', ', $sqlParts);
         $db->query($sql);
 
         $sql = 'UPDATE creqApprovalActionsWatchers AS a, '
              . '       creqApprovalActionsWatchersUpdate AS b '
-             . 'SET a.watchingRole = b.watchingRole '
+             . 'SET a.watchingRole = b.watchingRole, '
+             . '    a.action       = b.action '
              . 'WHERE a.approvalActionId = b.approvalActionId ';
         $db->query($sql);
     }
@@ -108,11 +111,12 @@ class Requests_ApprovalActionWatchersModel extends Requests_ApprovalActionModel
     {
         $db = Zend_Registry::get('db');
 
-        $sql = 'INSERT INTO creqApprovalActionsWatchers (approvalActionId, watchingRole) VALUES ';
+        $sql = 'INSERT INTO creqApprovalActionsWatchers (approvalActionId, watchingRole, action) VALUES ';
         $sqlParts = array();
         foreach ($models as $model) {
             $sqlParts[] = $db->quoteInto('(?, ', $model->_data['approvalActionId'])
-                        . $db->quoteInto('?)'  , $model->_data['watchingRole']);
+                        . $db->quoteInto('?, ',  $model->_data['watchingRole'])
+                        . $db->quoteInto('?)'  , $model->_data['action']);
         }
         $sql .= implode(', ', $sqlParts);
         $db->query($sql);
@@ -125,13 +129,23 @@ class Requests_ApprovalActionWatchersModel extends Requests_ApprovalActionModel
         }
 
         $db = Zend_Registry::get('db');
-        $sql = 'INSERT INTO creqRequestWatchers (request, watchingApprovalRole) VALUES ';
-        $sqlParts = array();
-        foreach ($requests as $request) {
-            $sqlParts[] = $db->quoteInto('(?, ', $request->getId())
-                        . $db->quoteInto('?)',   $this->_data['watchingRole']);
+        if ($this->_data['action'] == 'add') {
+	        $sql = 'INSERT INTO creqRequestWatchers (request, watchingApprovalRole) VALUES ';
+	        $sqlParts = array();
+	        foreach ($requests as $request) {
+	            $sqlParts[] = $db->quoteInto('(?, ', $request->getId())
+	                        . $db->quoteInto('?)',   $this->_data['watchingRole']);
+	        }
+	        $sql .= implode(', ', $sqlParts);
+        } else if ($this->_data['action'] == 'remove') {
+        	$sql = 'DELETE FROM creqRequestWatchers WHERE (request, watchingApprovalRole) IN (';
+        	$sqlParts = array('(-1, -1)');
+        	foreach ($requests as $request) {
+                $sqlParts[] = $db->quoteInto('(?, ', $request->getId())
+                            . $db->quoteInto('?)',   $this->_data['watchingRole']);
+        	}
+        	$sql .= implode(', ', $sqlParts) . ')';
         }
-        $sql .= implode(', ', $sqlParts);
         try {
             $db->query($sql);
         } catch (Exception $e) {
@@ -151,10 +165,16 @@ class Requests_ApprovalActionWatchersModel extends Requests_ApprovalActionModel
     public function setExtendedData($in)
     {
         $this->_data['watchingRole'] = $in['watchingRole'];
+        $this->_data['action'] = $in['action'];
     }
     
     public function getWatchingRole()
     {
         return $this->_data['watchingRole'];
     }
+    
+    public function getAction()
+    {
+    	return $this->_data['action'];
+    }
 }
\ No newline at end of file
diff --git a/application/modules/requests/views/scripts/approval-chain-manager/edit-action/watchers.phtml b/application/modules/requests/views/scripts/approval-chain-manager/edit-action/watchers.phtml
index d11133f3b37c8f4958cfdfa98c5aee1f4b2fa78a..506c4fc7fbe2ad00810357572efb488efaacc636 100644
--- a/application/modules/requests/views/scripts/approval-chain-manager/edit-action/watchers.phtml
+++ b/application/modules/requests/views/scripts/approval-chain-manager/edit-action/watchers.phtml
@@ -5,8 +5,17 @@ if ($this->approvalAction->getId()) {
 }
 ?>
 
-Role to set as watchers:<br />
+Role to
+<?php echo $this->formSelect($prefix . 'action' . $postifx,
+                             $this->approvalAction->getAction(),
+                             null,
+                             array('add' => 'add', 'remove' => 'remove')); ?>
+ as watchers:<br />
+
 <?php echo $this->formSelect($prefix . 'watchingRole' . $postifx,
                              $this->approvalAction->getWatchingRole(),
                              null,
                              array('' => '--Select--') + $this->approvalRoles); ?>
+
+<br />
+                             
\ No newline at end of file