diff -urpN old/workflow_ng_taxonomy.inc new/workflow_ng_taxonomy.inc
--- old/workflow_ng_taxonomy.inc	1970-01-01 05:30:00.000000000 +0530
+++ new/workflow_ng_taxonomy.inc	2008-05-09 02:15:11.140625000 +0530
@@ -0,0 +1,104 @@
+<?php
+// $Id$
+
+/**
+ * @file workflow-ng integration for taxonomy.
+ */
+
+/**
+ * Implementation of hook_module_info.
+ */
+function taxonomy_module_info() {
+  return array(
+    'taxonomy_workflow_ng_forms' => array(
+      'file' => 'workflow_ng_taxonomy_forms.inc',
+      'file path' => drupal_get_path('module', 'workflow_ng') .'/modules/',
+    ),
+  );
+}
+
+/**
+ * Implementation of hook_action_info().
+ */
+function taxonomy_action_info() {
+   $info = array();
+   $info['workflow_ng_action_load_vocabulary'] = array(
+      '#label' => t('Load vocabulary'),
+      '#new arguments' => array(
+        'vocabulary' => array('#entity' => 'vocabulary', '#label' => t('Vocabulary')),
+      ),
+      '#description' => t("Load an exisiting vocabulary as a new argument. 
+        This action or 'Add vocabulary' must be used before any other action on a vocabulary can be preformed."),
+      '#module' => 'Taxonomy',
+   );
+   $info['workflow_ng_action_add_vocabulary'] = array(
+      '#label' => t('Add and load vocabulary'),
+      '#new arguments' => array(
+        'vocabulary' => array('#entity' => 'vocabulary', '#label' => t('Vocabulary')),
+      ),
+      '#description' => t("Create a new vocabulary and load it as a new argument. 
+        This action or 'Load vocabulary'  must be used before any other action on a vocabulary can be preformed.
+        You may use replacement patterns (tokens) in any of the text fields."),        
+      '#module' => 'Taxonomy',
+   );
+   $info['workflow_ng_action_add_term'] = array(
+      '#label' => t('Add term to vocabulary'),
+      '#arguments' => array(
+        'vocabulary' => array('#entity' => 'vocabulary', '#label' => t('Vocabulary which term will be added to'))
+      ),
+      '#description' => t("Add a term to a loaded vocabulary. Note that this action is meant for adding simple terms, which means it doesn't 
+        deal with 'Synonyms', 'Parents' and 'Related terms' if they are enabled."),        
+      '#module' => 'Taxonomy',
+   );
+   return $info;
+}
+
+/**
+ * Action: Load vocabulary.
+ */
+function workflow_ng_action_load_vocabulary($settings, &$arguments, &$log) {
+  if ($settings['vocabulary_token']) {
+    extract(workflow_ng_token_replace_all(array('vocabulary_token'), $settings, $arguments, $log));
+    $vid = $vocabulary_token;
+  }
+  else {
+    $vid = $settings['vocabulary_list'];  
+  }
+  $return = taxonomy_get_vocabulary($vid);
+  if (!empty($return)) {
+    return array('#new arguments' => array('vocabulary' => $return));
+  }
+}
+
+/**
+ * Action: Add and load a new vocabulary.
+ */
+function workflow_ng_action_add_vocabulary($settings, &$arguments, &$log) {
+  extract(workflow_ng_token_replace_all(array('name', 'description', 'help'), $settings, $arguments, $log));
+  // Update settings according to token replacemnts.
+  $settings['name'] = $name;
+  $settings['description'] = $description;
+  $settings['help'] = $help;
+  
+  $settings['weight'] = $settings['weight_vocabulary'];
+  taxonomy_save_vocabulary($settings);
+  // Settings has now the vid.
+  $return = taxonomy_get_vocabulary($settings['vid']);
+  return array('#new arguments' => array('vocabulary' => $return));
+}
+
+/**
+ * Action: Add a term to a loaded vocabulary.
+ */
+function workflow_ng_action_add_term($vocabulary, $settings, &$arguments, &$log) {
+  extract(workflow_ng_token_replace_all(array('name', 'description'), $settings, $arguments, $log));
+  // Update settings according to token replacemnts.
+  $settings['name'] = $name;
+  $settings['description'] = $description;
+
+  $settings['weight'] = $settings['weight_vocabulary'];
+  
+  // Set the vid from the loaded vocabulary argument.
+  $settings['vid'] = $vocabulary->vid;
+  taxonomy_save_term($settings);
+}
diff -urpN old/workflow_ng_taxonomy_forms.inc new/workflow_ng_taxonomy_forms.inc
--- old/workflow_ng_taxonomy_forms.inc	1970-01-01 05:30:00.000000000 +0530
+++ new/workflow_ng_taxonomy_forms.inc	2008-05-09 02:15:19.984375000 +0530
@@ -0,0 +1,128 @@
+<?php
+// $Id$
+
+/**
+ * @file workflow-ng forms for taxonomy.
+ */
+
+/**
+ * Action: Load vocabulary form.
+ *
+ * @ingroup forms
+ * @see workflow_ng_action_load_vocabulary_submit
+ */
+function workflow_ng_action_load_vocabulary_form($settings = array(), $argument_info) {
+  //Get existing taxonomy vocabulries.
+  $vocabularies = taxonomy_get_vocabularies();
+  foreach ($vocabularies as $key => $vocabulary) {
+    $options[$key] = $vocabulary->name;
+  }
+  $options ? $description = t('Select the vocabulary that should be loaded.') : $description = t('There are no exisiting vocabularies. Create a nodequeue manually through the !url or using a workflow_ng action.', 
+    array('!url' => l('settings', 'admin/content/taxonomy')));
+  $form = array();
+  $form['vocabulary_list'] = array(
+    '#type' => 'select',
+    '#title' => t('Vocabulary by list'),
+    '#description' => $description,
+    '#options' => $options,  
+    '#default_value' => $settings['vocabulary_list'],
+    '#disabled' => empty($options),
+  );
+  $form['vocabulary_token'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Vocabulary by text'),
+    '#description' => t('Enter the vocabulary id (vid) of the exisiting vocabulary.'),
+    '#default_value' => $settings['vocabulary_token'],
+  ); 
+  workflow_ng_token_replacement_help($form, $argument_info);   
+  return $form;
+}
+
+function workflow_ng_action_load_vocabulary_submit($form_id, $form_values) {
+  $token = workflow_ng_token_get_settings(array('vocabulary_token'), $form_values);
+  $settings =  array('vocabulary_list' => $form_values['vocabulary_list'], 'vocabulary_token' => $form_values['vocabulary_token']);
+  return $token + $settings;
+}
+
+/**
+ * Action: Add and load a new vocabulary form.
+ *
+ * @ingroup forms
+ * @see workflow_ng_action_add_vocabulary_submit
+ */
+function workflow_ng_action_add_vocabulary_form($settings = array(), $argument_info) {
+  // Pass the corect weight settings - weight vocabulary
+  $settings['weight_vocabulary'] ? $settings['weight'] = $settings['weight_vocabulary'] : $settings['weight'] = 0;
+  $form = taxonomy_form_vocabulary($settings);
+  // Change vocabuly weight name in order to prevent name collision.
+  $form['weight_vocabulary'] = $form['weight'];
+  unset($form['weight']);
+  unset($form['submit']);
+  workflow_ng_token_replacement_help($form, $argument_info);   
+  return $form;
+}
+
+function workflow_ng_action_add_vocabulary_submit($form_id, $form_values) {
+  $token = workflow_ng_token_get_settings(array('name', 'description', 'help'), $form_values);
+  $form_list = array(
+    'name',
+    'description',
+    'help',
+    'nodes',
+    'hierarchy',
+    'relations',
+    'tags',
+    'multiple',
+    'required',
+    'weight_vocabulary',
+  );  
+  foreach ($form_list as $form_item) {
+    $settings[$form_item] = $form_values[$form_item];
+  }
+  
+  // Remove node types which are not set.
+  foreach ($form_values['nodes'] as $key => $node_type) {
+    if (empty($node_type)) {
+      unset($settings['nodes'][$key]);
+    }
+  }
+  return $token + $settings;
+}
+
+/**
+ * Action: Add a term to a loaded vocabulary form.
+ *
+ * @ingroup forms
+ * @see workflow_ng_action_add_term_to_content_submit
+ */
+function workflow_ng_action_add_term_form($settings = array(), $argument_info) {
+  // Pass the corect weight settings - weight vocabulary
+  $settings['weight_vocabulary'] ? $settings['weight'] = $settings['weight_vocabulary'] : $settings['weight'] = 0;
+  // We still don't know the vid.
+  $form = taxonomy_form_term(0, $settings);
+
+  // Change vocabuly weight name in order to prevent name collision.
+  $form['weight_vocabulary'] = $form['weight'];
+  // We can't get synonyms as we still don't have tid.
+  unset($form['synonyms']);
+  unset($form['weight']);
+  unset($form['destination']);
+  unset($form['submit']);  
+  workflow_ng_token_replacement_help($form, $argument_info);   
+  
+  return $form;
+}
+
+function workflow_ng_action_add_term_submit($form_id, $form_values) {
+  $token = workflow_ng_token_get_settings(array('name', 'description'), $form_values);
+  $form_list = array(
+    'name',
+    'description',
+    'weight_vocabulary',
+  );  
+  foreach ($form_list as $form_item) {
+    $settings[$form_item] = $form_values[$form_item];
+  }
+  return $token + $settings;
+}
+
