diff -urpN old/rules/rules/modules/taxonomy.rules.inc new/rules/rules/modules/taxonomy.rules.inc
--- old/rules/rules/modules/taxonomy.rules.inc	1970-01-01 02:00:00.000000000 +0200
+++ new/rules/rules/modules/taxonomy.rules.inc	2008-08-12 22:30:47.500000000 +0300
@@ -0,0 +1,70 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Rules integration for the taxonomy module.
+ */
+
+
+/**
+* Implementation of hook_rules_action_info().
+*/
+function taxonomy_rules_action_info() {
+   $info = array();
+  // Get existing taxonomy vocabularies.
+  $vocabularies = taxonomy_get_vocabularies();
+  foreach ($vocabularies as $vocabulary) {
+      $info['rules_action_taxonomy_term_relation_to_content_'. $vocabulary->vid] = array(
+        'label' => t('Assign or remove a term from vocabulary') .' "'. $vocabulary->name .'"',
+      'arguments' => array(
+        'node' => array(
+          'type' => 'node',
+          'label' => t('Content which term will assigned or removed'),
+        ),
+        'vocabulary' => array(
+          'type' => 'value',
+          'default value' => $vocabulary,
+        ),
+      ),
+      'base' => 'rules_action_taxonomy_term_relation_to_content',
+      'description' => t('Assign a certain taxonomy term to the content.'),      
+      'module' => 'Taxonomy',
+    );
+  }
+  return $info;
+}
+
+
+/**
+ * Action: Assign or remove a term from vocabulary to content.
+ */
+function rules_action_taxonomy_term_relation_to_content($node, $vocabulary, $settings) {
+  if ($settings['term']['term_text']) {
+    // Check term exists.
+    $vocab_terms = taxonomy_get_tree($vocabulary->vid);
+    // Check the term exists in the vocabulary.
+    foreach ($vocab_terms as $vocab_term) {
+      if ($vocab_term->name == $settings['term']['term_text']) {
+        $term = $vocab_term;
+        // If tid was found no need to look for another matching term.
+        break;
+      }
+    }
+  }
+  else {
+    $term = taxonomy_get_term($settings['term']['term_select']);
+  }
+  if ($term) {
+    // Assign or remove term.
+    if ($settings['action']) {
+      if ($node->taxonomy[$tid]) {
+        $node->taxonomy[$tid] = $term; 
+      }
+    }
+    else {
+      unset($node->taxonomy[$term->tid]);
+    }
+    return array('node' => $node);  
+  }
+}
diff -urpN old/rules/rules/modules/taxonomy.rules_forms.inc new/rules/rules/modules/taxonomy.rules_forms.inc
--- old/rules/rules/modules/taxonomy.rules_forms.inc	1970-01-01 02:00:00.000000000 +0200
+++ new/rules/rules/modules/taxonomy.rules_forms.inc	2008-08-12 22:22:48.031250000 +0300
@@ -0,0 +1,49 @@
+<?php
+// $Id$
+
+/**
+ * @file 
+ * Rules configuration forms for the taxonomy module.
+ */
+
+/**
+ * Action: Assign or remove a term from vocabulary to content configuration form.
+ */
+function rules_action_taxonomy_term_relation_to_content_form($settings, &$form, $form_state) {  
+  $vocabulary = $form_state['element']['#info']['arguments']['vocabulary']['default value'];
+  $terms = taxonomy_get_tree($vocabulary->vid);
+  $options = array();
+  foreach ($terms as $value) {
+    $options[$value->tid] = $value->name;
+  }
+  $form['settings']['term'] = array(
+    '#type' => 'fieldset',
+    '#title' => $vocabulary->name ."'s terms",
+    '#description' => empty($options) ? t('There are no terms in the vocabulary, you should !add one.', array('!add' => l(t('add'), 'admin/content/taxonomy/'. $vocabulary->vid .'/add/term' ))) : t('Select an existing term or manually enter the name of the term that should be added or removed from the content.'),
+  );
+  $form['settings']['term']['term_select'] = array(
+    '#type' => 'select',
+    '#title' => t('Select a term from vocabulary'),
+    '#default_value' => $settings['term']['term_select'],
+    '#options' => $options,
+    '#disabled' => empty($options),
+    '#description' => t('Select the the term that should be added or removed.'),
+  );
+  $form['settings']['term']['term_text'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Enter the term name'),
+    '#default_value' => $settings['term']['term_text'],
+    '#disabled' => empty($options),
+    '#description' => t('Enter the term name that should be added or removed. If this field is used "Select a term" field will be ignored.'),
+  );
+  $form['settings']['action'] = array(
+    '#type' => 'radios',
+    '#title' => t('Select an action'),
+    '#default_value' => $settings['action'],
+    '#options' => array(
+      '0' => 'Remove term from content',
+      '1' => 'Assign term to content only if term exists in the vocabulary',
+    ),
+    '#required' => TRUE,
+  ); 
+}
