diff --git includes/actions.inc includes/actions.inc
deleted file mode 100644
index 0daf8e8..0000000
--- includes/actions.inc
+++ /dev/null
@@ -1,384 +0,0 @@
-<?php
-// $Id$
-
-/**
- * @file
- * This is the actions engine for executing stored actions.
- */
-
-/**
- * @defgroup actions Actions
- * @{
- * Functions that perform an action on a certain system object.
- *
- * Action functions are declared by modules by implementing hook_action_info().
- * Modules can cause action functions to run by calling actions_do(), and
- * trigger.module provides a user interface that lets administrators define
- * events that cause action functions to run.
- *
- * Each action function takes two to four arguments:
- * - $entity: The object that the action acts on, such as a node, comment, or
- *   user.
- * - $context: Array of additional information about what triggered the action.
- * - $a1, $a2: Optional additional information, which can be passed into
- *   actions_do() and will be passed along to the action function.
- *
- * @} End of "defgroup actions".
- */
-
-/**
- * Performs a given list of actions by executing their callback functions.
- *
- * Given the IDs of actions to perform, this function finds out what the
- * callback functions for the actions are by querying the database. Then
- * it calls each callback using the function call $function($object, $context,
- * $a1, $a2), passing the input arguments of this function (see below) to the
- * action function.
- *
- * @param $action_ids
- *   The IDs of the actions to perform. Can be a single action ID or an array
- *   of IDs. IDs of configurable actions must be given as numeric action IDs;
- *   IDs of non-configurable actions may be given as action function names.
- * @param $object
- *   The object that the action will act on: a node, user, or comment object.
- * @param $context
- *   Associative array containing extra information about what triggered
- *   the action call, with $context['hook'] giving the name of the hook
- *   that resulted in this call to actions_do().
- * @param $a1
- *   Passed along to the callback.
- * @param $a2
- *   Passed along to the callback.
- * @return
- *   An associative array containing the results of the functions that
- *   perform the actions, keyed on action ID.
- *
- * @ingroup actions
- */
-function actions_do($action_ids, $object = NULL, $context = NULL, $a1 = NULL, $a2 = NULL) {
-  // $stack tracks the number of recursive calls.
-  static $stack;
-  $stack++;
-  if ($stack > variable_get('actions_max_stack', 35)) {
-    watchdog('actions', 'Stack overflow: too many calls to actions_do(). Aborting to prevent infinite recursion.', array(), WATCHDOG_ERROR);
-    return;
-  }
-  $actions = array();
-  $available_actions = actions_list();
-  $actions_result = array();
-  if (is_array($action_ids)) {
-    $conditions = array();
-    foreach ($action_ids as $action_id) {
-      if (is_numeric($action_id)) {
-        $conditions[] = $action_id;
-      }
-      elseif (isset($available_actions[$action_id])) {
-        $actions[$action_id] = $available_actions[$action_id];
-      }
-    }
-
-    // When we have action instances we must go to the database to retrieve
-    // instance data.
-    if (!empty($conditions)) {
-      $query = db_select('actions');
-      $query->addField('actions', 'aid');
-      $query->addField('actions', 'type');
-      $query->addField('actions', 'callback');
-      $query->addField('actions', 'parameters');
-      $query->condition('aid', $conditions, 'IN');
-      $result = $query->execute();
-      foreach ($result as $action) {
-        $actions[$action->aid] = $action->parameters ? unserialize($action->parameters) : array();
-        $actions[$action->aid]['callback'] = $action->callback;
-        $actions[$action->aid]['type'] = $action->type;
-      }
-    }
-
-    // Fire actions, in no particular order.
-    foreach ($actions as $action_id => $params) {
-      // Configurable actions need parameters.
-      if (is_numeric($action_id)) {
-        $function = $params['callback'];
-        if (function_exists($function)) {
-          $context = array_merge($context, $params);
-          $actions_result[$action_id] = $function($object, $context, $a1, $a2);
-        }
-        else {
-          $actions_result[$action_id] = FALSE;
-        }
-      }
-      // Singleton action; $action_id is the function name.
-      else {
-        $actions_result[$action_id] = $action_id($object, $context, $a1, $a2);
-      }
-    }
-  }
-  // Optimized execution of a single action.
-  else {
-    // If it's a configurable action, retrieve stored parameters.
-    if (is_numeric($action_ids)) {
-      $action = db_query("SELECT callback, parameters FROM {actions} WHERE aid = :aid", array(':aid' => $action_ids))->fetchObject();
-      $function = $action->callback;
-      if (function_exists($function)) {
-        $context = array_merge($context, unserialize($action->parameters));
-        $actions_result[$action_ids] = $function($object, $context, $a1, $a2);
-      }
-      else {
-        $actions_result[$action_ids] = FALSE;
-      }
-    }
-    // Singleton action; $action_ids is the function name.
-    else {
-      if (function_exists($action_ids)) {
-        $actions_result[$action_ids] = $action_ids($object, $context, $a1, $a2);
-      }
-      else {
-        // Set to avoid undefined index error messages later.
-        $actions_result[$action_ids] = FALSE;
-      }
-    }
-  }
-  $stack--;
-  return $actions_result;
-}
-
-/**
- * Discovers all available actions by invoking hook_action_info().
- *
- * This function contrasts with actions_get_all_actions(); see the
- * documentation of actions_get_all_actions() for an explanation.
- *
- * @param $reset
- *   Reset the action info static cache.
- * @return
- *   An associative array keyed on action function name, with the same format
- *   as the return value of hook_action_info(), containing all
- *   modules' hook_action_info() return values as modified by any
- *   hook_action_info_alter() implementations.
- *
- * @see hook_action_info()
- */
-function actions_list($reset = FALSE) {
-  $actions = &drupal_static(__FUNCTION__);
-  if (!isset($actions) || $reset) {
-    $actions = module_invoke_all('action_info');
-    drupal_alter('action_info', $actions);
-  }
-
-  // See module_implements() for an explanation of this cast.
-  return (array) $actions;
-}
-
-/**
- * Retrieves all action instances from the database.
- *
- * This function differs from the actions_list() function, which gathers
- * actions by invoking hook_action_info(). The actions returned by this
- * function and the actions returned by actions_list() are partially
- * synchronized. Non-configurable actions from hook_action_info()
- * implementations are put into the database when actions_synchronize() is
- * called, which happens when admin/config/system/actions is visited. Configurable
- * actions are not added to the database until they are configured in the
- * user interface, in which case a database row is created for each
- * configuration of each action.
- *
- * @return
- *   Associative array keyed by numeric action ID. Each value is an associative
- *   array with keys 'callback', 'label', 'type' and 'configurable'.
- */
-function actions_get_all_actions() {
-  $actions = db_query("SELECT aid, type, callback, parameters, label FROM {actions}")->fetchAllAssoc('aid', PDO::FETCH_ASSOC);
-  foreach ($actions as &$action) {
-    $action['configurable'] = (bool) $action['parameters'];
-    unset($action['parameters']);
-    unset($action['aid']);
-  }
-  return $actions;
-}
-
-/**
- * Creates an associative array keyed by hashes of function names or IDs.
- *
- * Hashes are used to prevent actual function names from going out into HTML
- * forms and coming back.
- *
- * @param $actions
- *   An associative array with function names or action IDs as keys
- *   and associative arrays with keys 'label', 'type', etc. as values.
- *   This is usually the output of actions_list() or actions_get_all_actions().
- * @return
- *   An associative array whose keys are hashes of the input array keys, and
- *   whose corresponding values are associative arrays with components
- *   'callback', 'label', 'type', and 'configurable' from the input array.
- */
-function actions_actions_map($actions) {
-  $actions_map = array();
-  foreach ($actions as $callback => $array) {
-    $key = drupal_hash_base64($callback);
-    $actions_map[$key]['callback']     = isset($array['callback']) ? $array['callback'] : $callback;
-    $actions_map[$key]['label']        = $array['label'];
-    $actions_map[$key]['type']         = $array['type'];
-    $actions_map[$key]['configurable'] = $array['configurable'];
-  }
-  return $actions_map;
-}
-
-/**
- * Given a hash of an action array key, returns the key (function or ID).
- *
- * Faster than actions_actions_map() when you only need the function name or ID.
- *
- * @param $hash
- *   Hash of a function name or action ID array key. The array key
- *   is a key into the return value of actions_list() (array key is the action
- *   function name) or actions_get_all_actions() (array key is the action ID).
- * @return
- *   The corresponding array key, or FALSE if no match is found.
- */
-function actions_function_lookup($hash) {
-  // Check for a function name match.
-  $actions_list = actions_list();
-  foreach ($actions_list as $function => $array) {
-    if (drupal_hash_base64($function) == $hash) {
-      return $function;
-    }
-  }
-  $aid = FALSE;
-  // Must be a configurable action; check database.
-  $result = db_query("SELECT aid FROM {actions} WHERE parameters <> ''")->fetchAll(PDO::FETCH_ASSOC);
-  foreach ($result as $row) {
-    if (drupal_hash_base64($row['aid']) == $hash) {
-      $aid = $row['aid'];
-      break;
-    }
-  }
-  return $aid;
-}
-
-/**
- * Synchronizes actions that are provided by modules in hook_action_info().
- *
- * Actions provided by modules in hook_action_info() implementations are
- * synchronized with actions that are stored in the actions database table.
- * This is necessary so that actions that do not require configuration can
- * receive action IDs.
- *
- * @param $delete_orphans
- *   If TRUE, any actions that exist in the database but are no longer
- *   found in the code (for example, because the module that provides them has
- *   been disabled) will be deleted.
- */
-function actions_synchronize($delete_orphans = FALSE) {
-  $actions_in_code = actions_list(TRUE);
-  $actions_in_db = db_query("SELECT aid, callback, label FROM {actions} WHERE parameters = ''")->fetchAllAssoc('callback', PDO::FETCH_ASSOC);
-
-  // Go through all the actions provided by modules.
-  foreach ($actions_in_code as $callback => $array) {
-    // Ignore configurable actions since their instances get put in when the
-    // user adds the action.
-    if (!$array['configurable']) {
-      // If we already have an action ID for this action, no need to assign aid.
-      if (isset($actions_in_db[$callback])) {
-        unset($actions_in_db[$callback]);
-      }
-      else {
-        // This is a new singleton that we don't have an aid for; assign one.
-        db_insert('actions')
-          ->fields(array(
-            'aid' => $callback,
-            'type' => $array['type'],
-            'callback' => $callback,
-            'parameters' => '',
-            'label' => $array['label'],
-            ))
-          ->execute();
-        watchdog('actions', "Action '%action' added.", array('%action' => $array['label']));
-      }
-    }
-  }
-
-  // Any actions that we have left in $actions_in_db are orphaned.
-  if ($actions_in_db) {
-    $orphaned = array_keys($actions_in_db);
-
-    if ($delete_orphans) {
-      $actions = db_query('SELECT aid, label FROM {actions} WHERE callback IN (:orphaned)', array(':orphaned' => $orphaned))->fetchAll();
-      foreach ($actions as $action) {
-        actions_delete($action->aid);
-        watchdog('actions', "Removed orphaned action '%action' from database.", array('%action' => $action->label));
-      }
-    }
-    else {
-      $link = l(t('Remove orphaned actions'), 'admin/config/system/actions/orphan');
-      $count = count($actions_in_db);
-      $orphans = implode(', ', $orphaned);
-      watchdog('actions', '@count orphaned actions (%orphans) exist in the actions table. !link', array('@count' => $count, '%orphans' => $orphans, '!link' => $link), WATCHDOG_WARNING);
-    }
-  }
-}
-
-/**
- * Saves an action and its user-supplied parameter values to the database.
- *
- * @param $function
- *   The name of the function to be called when this action is performed.
- * @param $type
- *   The type of action, to describe grouping and/or context, e.g., 'node',
- *   'user', 'comment', or 'system'.
- * @param $params
- *   An associative array with parameter names as keys and parameter values as
- *   values.
- * @param $label
- *   A user-supplied label of this particular action, e.g., 'Send e-mail
- *   to Jim'.
- * @param $aid
- *   The ID of this action. If omitted, a new action is created.
- * @return
- *   The ID of the action.
- */
-function actions_save($function, $type, $params, $label, $aid = NULL) {
-  // aid is the callback for singleton actions so we need to keep a separate
-  // table for numeric aids.
-  if (!$aid) {
-    $aid = db_next_id();
-  }
-
-  db_merge('actions')
-    ->key(array('aid' => $aid))
-    ->fields(array(
-      'callback' => $function,
-      'type' => $type,
-      'parameters' => serialize($params),
-      'label' => $label,
-    ))
-    ->execute();
-
-  watchdog('actions', 'Action %action saved.', array('%action' => $label));
-  return $aid;
-}
-
-/**
- * Retrieves a single action from the database.
- *
- * @param $aid
- *   The ID of the action to retrieve.
- * @return
- *   The appropriate action row from the database as an object.
- */
-function actions_load($aid) {
-  return db_query("SELECT aid, type, callback, parameters, label FROM {actions} WHERE aid = :aid", array(':aid' => $aid))->fetchObject();
-}
-
-/**
- * Deletes a single action from the database.
- *
- * @param $aid
- *   The ID of the action to delete.
- */
-function actions_delete($aid) {
-  db_delete('actions')
-    ->condition('aid', $aid)
-    ->execute();
-  module_invoke_all('actions_delete', $aid);
-}
-
diff --git includes/common.inc includes/common.inc
index 62a5037..b2bdfb7 100644
--- includes/common.inc
+++ includes/common.inc
@@ -4890,7 +4890,6 @@ function _drupal_bootstrap_full() {
   require_once DRUPAL_ROOT . '/includes/image.inc';
   require_once DRUPAL_ROOT . '/includes/form.inc';
   require_once DRUPAL_ROOT . '/includes/mail.inc';
-  require_once DRUPAL_ROOT . '/includes/actions.inc';
   require_once DRUPAL_ROOT . '/includes/ajax.inc';
   require_once DRUPAL_ROOT . '/includes/token.inc';
   require_once DRUPAL_ROOT . '/includes/errors.inc';
@@ -7067,9 +7066,6 @@ function drupal_flush_all_caches() {
   // after node types are rebuilt.
   menu_rebuild();
 
-  // Synchronize to catch any actions that were added or removed.
-  actions_synchronize();
-
   // Don't clear cache_form - in-progress form submissions may break.
   // Ordered so clearing the page cache will always be the last action.
   $core = array('cache', 'cache_filter', 'cache_bootstrap', 'cache_page');
diff --git modules/simpletest/tests/actions.test modules/simpletest/tests/actions.test
deleted file mode 100644
index 8e0220d..0000000
--- modules/simpletest/tests/actions.test
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-// $Id$
-
-class ActionsConfigurationTestCase extends DrupalWebTestCase {
-  public static function getInfo() {
-    return array(
-      'name' => 'Actions configuration',
-      'description' => 'Tests complex actions configuration by adding, editing, and deleting a complex action.',
-      'group' => 'Actions',
-    );
-  }
-
-  /**
-   * Test the configuration of advanced actions through the administration
-   * interface.
-   */
-  function testActionConfiguration() {
-    // Create a user with permission to view the actions administration pages.
-    $user = $this->drupalCreateUser(array('administer actions'));
-    $this->drupalLogin($user);
-
-    // Make a POST request to admin/config/system/actions/manage.
-    $edit = array();
-    $edit['action'] = drupal_hash_base64('system_goto_action');
-    $this->drupalPost('admin/config/system/actions/manage', $edit, t('Create'));
-
-    // Make a POST request to the individual action configuration page.
-    $edit = array();
-    $action_label = $this->randomName();
-    $edit['actions_label'] = $action_label;
-    $edit['url'] = 'admin';
-    $this->drupalPost('admin/config/system/actions/configure/' . drupal_hash_base64('system_goto_action'), $edit, t('Save'));
-
-    // Make sure that the new complex action was saved properly.
-    $this->assertText(t('The action has been successfully saved.'), t("Make sure we get a confirmation that we've successfully saved the complex action."));
-    $this->assertText($action_label, t("Make sure the action label appears on the configuration page after we've saved the complex action."));
-
-    // Make another POST request to the action edit page.
-    $this->clickLink(t('configure'));
-    preg_match('|admin/config/system/actions/configure/(\d+)|', $this->getUrl(), $matches);
-    $aid = $matches[1];
-    $edit = array();
-    $new_action_label = $this->randomName();
-    $edit['actions_label'] = $new_action_label;
-    $edit['url'] = 'admin';
-    $this->drupalPost(NULL, $edit, t('Save'));
-
-    // Make sure that the action updated properly.
-    $this->assertText(t('The action has been successfully saved.'), t("Make sure we get a confirmation that we've successfully updated the complex action."));
-    $this->assertNoText($action_label, t("Make sure the old action label does NOT appear on the configuration page after we've updated the complex action."));
-    $this->assertText($new_action_label, t("Make sure the action label appears on the configuration page after we've updated the complex action."));
-
-    // Make sure that deletions work properly.
-    $this->clickLink(t('delete'));
-    $edit = array();
-    $this->drupalPost("admin/config/system/actions/delete/$aid", $edit, t('Delete'));
-
-    // Make sure that the action was actually deleted.
-    $this->assertRaw(t('Action %action was deleted', array('%action' => $new_action_label)), t('Make sure that we get a delete confirmation message.'));
-    $this->drupalGet('admin/config/system/actions/manage');
-    $this->assertNoText($new_action_label, t("Make sure the action label does not appear on the overview page after we've deleted the action."));
-    $exists = db_query('SELECT aid FROM {actions} WHERE callback = :callback', array(':callback' => 'drupal_goto_action'))->fetchField();
-    $this->assertFalse($exists, t('Make sure the action is gone from the database after being deleted.'));
-  }
-}
-
-/**
- * Test actions executing in a potential loop, and make sure they abort properly.
- */
-class ActionLoopTestCase extends DrupalWebTestCase {
-  public static function getInfo() {
-    return array(
-      'name' => 'Actions executing in a potentially infinite loop',
-      'description' => 'Tests actions executing in a loop, and makes sure they abort properly.',
-      'group' => 'Actions',
-    );
-  }
-
-  function setUp() {
-    parent::setUp('dblog', 'trigger', 'actions_loop_test');
-  }
-
-  /**
-   * Set up a loop with 3 - 12 recursions, and see if it aborts properly.
-   */
-  function testActionLoop() {
-    $user = $this->drupalCreateUser(array('administer actions'));
-    $this->drupalLogin($user);
-
-    $hash = drupal_hash_base64('actions_loop_test_log');
-    $edit = array('aid' => $hash);
-    $this->drupalPost('admin/structure/trigger/actions_loop_test', $edit, t('Assign'));
-
-    // Delete any existing watchdog messages to clear the plethora of
-    // "Action added" messages from when Drupal was installed.
-    db_delete('watchdog')->execute();
-    // To prevent this test from failing when xdebug is enabled, the maximum
-    // recursion level should be kept low enough to prevent the xdebug
-    // infinite recursion protection mechanism from aborting the request.
-    // See http://drupal.org/node/587634.
-    variable_set('actions_max_stack', mt_rand(3, 12));
-    $this->triggerActions();
-  }
-
-  /**
-   * Create an infinite loop by causing a watchdog message to be set,
-   * which causes the actions to be triggered again, up to actions_max_stack
-   * times.
-   */
-  protected function triggerActions() {
-    $this->drupalGet('<front>', array('query' => array('trigger_actions_on_watchdog' => TRUE)));
-    $expected = array();
-    $expected[] = 'Triggering action loop';
-    for ($i = 1; $i <= variable_get('actions_max_stack', 35); $i++) {
-      $expected[] = "Test log #$i";
-    }
-    $expected[] = 'Stack overflow: too many calls to actions_do(). Aborting to prevent infinite recursion.';
-
-    $result = db_query("SELECT message FROM {watchdog} WHERE type = 'actions_loop_test' OR type = 'actions' ORDER BY wid");
-    $loop_started = FALSE;
-    foreach ($result as $row) {
-      $expected_message = array_shift($expected);
-      $this->assertEqual($row->message, $expected_message, t('Expected message %expected, got %message.', array('%expected' => $expected_message, '%message' => $row->message)));
-    }
-    $this->assertTrue(empty($expected), t('All expected messages found.'));
-  }
-}
diff --git modules/simpletest/tests/actions_loop_test.info modules/simpletest/tests/actions_loop_test.info
deleted file mode 100644
index ca33145..0000000
--- modules/simpletest/tests/actions_loop_test.info
+++ /dev/null
@@ -1,7 +0,0 @@
-; $Id$
-name = Actions loop test
-description = Support module for action loop testing.
-package = Testing
-version = VERSION
-core = 7.x
-hidden = TRUE
diff --git modules/simpletest/tests/actions_loop_test.install modules/simpletest/tests/actions_loop_test.install
deleted file mode 100644
index b0cd667..0000000
--- modules/simpletest/tests/actions_loop_test.install
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-// $Id$
-
-/**
- * Implements hook_install().
- */
-function actions_loop_test_install() {
-   db_update('system')
-    ->fields(array('weight' => 1))
-    ->condition('name', 'actions_loop_test')
-    ->execute();
-}
diff --git modules/simpletest/tests/actions_loop_test.module modules/simpletest/tests/actions_loop_test.module
deleted file mode 100644
index 9c966c3..0000000
--- modules/simpletest/tests/actions_loop_test.module
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-// $Id$
-
-/**
- * Implements hook_trigger_info().
- */
-function actions_loop_test_trigger_info() {
-  return array(
-    'actions_loop_test' => array(
-      'watchdog' => array(
-        'label' => t('When a message is logged'),
-      ),
-    ),
-  );
-}
-
-/**
- * Implements hook_watchdog().
- */
-function actions_loop_test_watchdog(array $log_entry) {
-  // If the triggering actions are not explicitly enabled, abort.
-  if (empty($_GET['trigger_actions_on_watchdog'])) {
-    return;
-  }
-  // Get all the action ids assigned to the trigger on the watchdog hook's
-  // "run" event.
-  $aids = trigger_get_assigned_actions('watchdog');
-  // We can pass in any applicable information in $context. There isn't much in
-  // this case, but we'll pass in the hook name as the bare minimum.
-  $context = array(
-    'hook' => 'watchdog',
-  );
-  // Fire the actions on the associated object ($log_entry) and the context
-  // variable.
-  actions_do(array_keys($aids), $log_entry, $context);
-}
-
-/**
- * Implements hook_init().
- */
-function actions_loop_test_init() {
-  if (!empty($_GET['trigger_actions_on_watchdog'])) {
-    watchdog_skip_semaphore('actions_loop_test', 'Triggering action loop');
-  }
-}
-
-/**
- * Implements hook_action_info().
- */
-function actions_loop_test_action_info() {
-  return array(
-    'actions_loop_test_log' => array(
-      'label' => t('Write a message to the log.'),
-      'type' => 'system',
-      'configurable' => FALSE,
-      'triggers' => array('any'),
-    ),
-  );
-}
-
-/**
- * Write a message to the log.
- */
-function actions_loop_test_log() {
-  $count = &drupal_static(__FUNCTION__, 0);
-  $count++;
-  watchdog_skip_semaphore('actions_loop_test', "Test log #$count");
-}
-
-/**
- * Replacement of the watchdog() function that eliminates the use of semaphores
- * so that we can test the abortion of an action loop.
- */
-function watchdog_skip_semaphore($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) {
-  global $user, $base_root;
-
-  // Prepare the fields to be logged
-  $log_entry = array(
-    'type'        => $type,
-    'message'     => $message,
-    'variables'   => $variables,
-    'severity'    => $severity,
-    'link'        => $link,
-    'user'        => $user,
-    'request_uri' => $base_root . request_uri(),
-    'referer'     => $_SERVER['HTTP_REFERER'],
-    'ip'          => ip_address(),
-    'timestamp'   => REQUEST_TIME,
-  );
-
-  // Call the logging hooks to log/process the message
-  foreach (module_implements('watchdog') as $module) {
-    module_invoke($module, 'watchdog', $log_entry);
-  }
-}
diff --git modules/system/system.admin.inc modules/system/system.admin.inc
index d40a6e0..7c276a7 100644
--- modules/system/system.admin.inc
+++ modules/system/system.admin.inc
@@ -2855,276 +2855,3 @@ function system_add_date_formats_form_submit($form, &$form_state) {
 
   $form_state['redirect'] = 'admin/config/regional/date-time/formats';
 }
-
-/**
- * Menu callback; Displays an overview of available and configured actions.
- */
-function system_actions_manage() {
-  actions_synchronize();
-  $actions = actions_list();
-  $actions_map = actions_actions_map($actions);
-  $options = array();
-  $unconfigurable = array();
-
-  foreach ($actions_map as $key => $array) {
-    if ($array['configurable']) {
-      $options[$key] = $array['label'] . '...';
-    }
-    else {
-      $unconfigurable[] = $array;
-    }
-  }
-
-  $row = array();
-  $instances_present = db_query("SELECT aid FROM {actions} WHERE parameters <> ''")->fetchField();
-  $header = array(
-    array('data' => t('Action type'), 'field' => 'type'),
-    array('data' => t('Label'), 'field' => 'label'),
-    array('data' => $instances_present ? t('Operations') : '', 'colspan' => '2')
-  );
-  $query = db_select('actions')->extend('PagerDefault')->extend('TableSort');
-  $result = $query
-    ->fields('actions')
-    ->limit(50)
-    ->orderByHeader($header)
-    ->execute();
-
-  foreach ($result as $action) {
-    $row[] = array(
-      array('data' => $action->type),
-      array('data' => check_plain($action->label)),
-      array('data' => $action->parameters ? l(t('configure'), "admin/config/system/actions/configure/$action->aid") : ''),
-      array('data' => $action->parameters ? l(t('delete'), "admin/config/system/actions/delete/$action->aid") : '')
-    );
-  }
-
-  if ($row) {
-    $pager = theme('pager');
-    if (!empty($pager)) {
-      $row[] = array(array('data' => $pager, 'colspan' => '3'));
-    }
-    $build['system_actions_header'] = array('#markup' => '<h3>' . t('Available actions:') . '</h3>');
-    $build['system_actions_table'] = array('#markup' => theme('table', array('header' => $header, 'rows' => $row)));
-  }
-
-  if ($actions_map) {
-    $build['system_actions_manage_form'] = drupal_get_form('system_actions_manage_form', $options);
-  }
-
-  return $build;
-}
-
-/**
- * Define the form for the actions overview page.
- *
- * @param $form_state
- *   An associative array containing the current state of the form; not used.
- * @param $options
- *   An array of configurable actions.
- * @return
- *   Form definition.
- *
- * @ingroup forms
- * @see system_actions_manage_form_submit()
- */
-function system_actions_manage_form($form, &$form_state, $options = array()) {
-  $form['parent'] = array(
-    '#type' => 'fieldset',
-    '#title' => t('Create an advanced action'),
-    '#attributes' => array('class' => array('container-inline')),
-  );
-  $form['parent']['action'] = array(
-    '#type' => 'select',
-    '#title' => t('Action'),
-    '#title_display' => 'invisible',
-    '#options' => $options,
-    '#empty_option' => t('Choose an advanced action'),
-  );
-  $form['parent']['actions'] = array('#type' => 'actions');
-  $form['parent']['actions']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Create'),
-  );
-  return $form;
-}
-
-/**
- * Process system_actions_manage form submissions.
- *
- * @see system_actions_manage_form()
- */
-function system_actions_manage_form_submit($form, &$form_state) {
-  if ($form_state['values']['action']) {
-    $form_state['redirect'] = 'admin/config/system/actions/configure/' . $form_state['values']['action'];
-  }
-}
-
-/**
- * Menu callback; Creates the form for configuration of a single action.
- *
- * We provide the "Description" field. The rest of the form is provided by the
- * action. We then provide the Save button. Because we are combining unknown
- * form elements with the action configuration form, we use an 'actions_' prefix
- * on our elements.
- *
- * @param $action
- *   Hash of an action ID or an integer. If it is a hash, we are
- *   creating a new instance. If it is an integer, we are editing an existing
- *   instance.
- * @return
- *   A form definition.
- *
- * @see system_actions_configure_validate()
- * @see system_actions_configure_submit()
- */
-function system_actions_configure($form, &$form_state, $action = NULL) {
-  if ($action === NULL) {
-    drupal_goto('admin/config/system/actions');
-  }
-
-  $actions_map = actions_actions_map(actions_list());
-  $edit = array();
-
-  // Numeric action denotes saved instance of a configurable action.
-  if (is_numeric($action)) {
-    $aid = $action;
-    // Load stored parameter values from database.
-    $data = db_query("SELECT * FROM {actions} WHERE aid = :aid", array(':aid' => $aid))->fetch();
-    $edit['actions_label'] = $data->label;
-    $edit['actions_type'] = $data->type;
-    $function = $data->callback;
-    $action = drupal_hash_base64($data->callback);
-    $params = unserialize($data->parameters);
-    if ($params) {
-      foreach ($params as $name => $val) {
-        $edit[$name] = $val;
-      }
-    }
-  }
-  // Otherwise, we are creating a new action instance.
-  else {
-    $function = $actions_map[$action]['callback'];
-    $edit['actions_label'] = $actions_map[$action]['label'];
-    $edit['actions_type'] = $actions_map[$action]['type'];
-  }
-
-  $form['actions_label'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Label'),
-    '#default_value' => $edit['actions_label'],
-    '#maxlength' => '255',
-    '#description' => t('A unique label for this advanced action. This label will be displayed in the interface of modules that integrate with actions, such as Trigger module.'),
-    '#weight' => -10
-  );
-  $action_form = $function . '_form';
-  $form = array_merge($form, $action_form($edit));
-  $form['actions_type'] = array(
-    '#type' => 'value',
-    '#value' => $edit['actions_type'],
-  );
-  $form['actions_action'] = array(
-    '#type' => 'hidden',
-    '#value' => $action,
-  );
-  // $aid is set when configuring an existing action instance.
-  if (isset($aid)) {
-    $form['actions_aid'] = array(
-      '#type' => 'hidden',
-      '#value' => $aid,
-    );
-  }
-  $form['actions_configured'] = array(
-    '#type' => 'hidden',
-    '#value' => '1',
-  );
-  $form['actions'] = array('#type' => 'actions');
-  $form['actions']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save'),
-    '#weight' => 13
-  );
-
-  return $form;
-}
-
-/**
- * Validate system_actions_configure() form submissions.
- */
-function system_actions_configure_validate($form, &$form_state) {
-  $function = actions_function_lookup($form_state['values']['actions_action']) . '_validate';
-  // Hand off validation to the action.
-  if (function_exists($function)) {
-    $function($form, $form_state);
-  }
-}
-
-/**
- * Process system_actions_configure() form submissions.
- */
-function system_actions_configure_submit($form, &$form_state) {
-  $function = actions_function_lookup($form_state['values']['actions_action']);
-  $submit_function = $function . '_submit';
-
-  // Action will return keyed array of values to store.
-  $params = $submit_function($form, $form_state);
-  $aid = isset($form_state['values']['actions_aid']) ? $form_state['values']['actions_aid'] : NULL;
-
-  actions_save($function, $form_state['values']['actions_type'], $params, $form_state['values']['actions_label'], $aid);
-  drupal_set_message(t('The action has been successfully saved.'));
-
-  $form_state['redirect'] = 'admin/config/system/actions/manage';
-}
-
-/**
- * Create the form for confirmation of deleting an action.
- *
- * @see system_actions_delete_form_submit()
- * @ingroup forms
- */
-function system_actions_delete_form($form, &$form_state, $action) {
-  $form['aid'] = array(
-    '#type' => 'hidden',
-    '#value' => $action->aid,
-  );
-  return confirm_form($form,
-    t('Are you sure you want to delete the action %action?', array('%action' => $action->label)),
-    'admin/config/system/actions/manage',
-    t('This cannot be undone.'),
-    t('Delete'),
-    t('Cancel')
-  );
-}
-
-/**
- * Process system_actions_delete form submissions.
- *
- * Post-deletion operations for action deletion.
- */
-function system_actions_delete_form_submit($form, &$form_state) {
-  $aid = $form_state['values']['aid'];
-  $action = actions_load($aid);
-  actions_delete($aid);
-  watchdog('user', 'Deleted action %aid (%action)', array('%aid' => $aid, '%action' => $action->label));
-  drupal_set_message(t('Action %action was deleted', array('%action' => $action->label)));
-  $form_state['redirect'] = 'admin/config/system/actions/manage';
-}
-
-/**
- * Post-deletion operations for deleting action orphans.
- *
- * @param $orphaned
- *   An array of orphaned actions.
- */
-function system_action_delete_orphans_post($orphaned) {
-  foreach ($orphaned as $callback) {
-    drupal_set_message(t("Deleted orphaned action (%action).", array('%action' => $callback)));
-  }
-}
-
-/**
- * Remove actions that are in the database but not supported by any enabled module.
- */
-function system_actions_remove_orphans() {
-  actions_synchronize(TRUE);
-  drupal_goto('admin/config/system/actions/manage');
-}
diff --git modules/system/system.api.php modules/system/system.api.php
index 1356dd6..af09693 100644
--- modules/system/system.api.php
+++ modules/system/system.api.php
@@ -3580,103 +3580,6 @@ function hook_file_mimetype_mapping_alter(&$mapping) {
 }
 
 /**
- * Declares information about actions.
- *
- * Any module can define actions, and then call actions_do() to make those
- * actions happen in response to events. The trigger module provides a user
- * interface for associating actions with module-defined triggers, and it makes
- * sure the core triggers fire off actions when their events happen.
- *
- * An action consists of two or three parts:
- * - an action definition (returned by this hook)
- * - a function which performs the action (which by convention is named
- *   MODULE_description-of-function_action)
- * - an optional form definition function that defines a configuration form
- *   (which has the name of the action function with '_form' appended to it.)
- *
- * The action function takes two to four arguments, which come from the input
- * arguments to actions_do().
- *
- * @return
- *   An associative array of action descriptions. The keys of the array
- *   are the names of the action functions, and each corresponding value
- *   is an associative array with the following key-value pairs:
- *   - 'type': The type of object this action acts upon. Core actions have types
- *     'node', 'user', 'comment', and 'system'.
- *   - 'label': The human-readable name of the action, which should be passed
- *     through the t() function for translation.
- *   - 'configurable': If FALSE, then the action doesn't require any extra
- *     configuration. If TRUE, then your module must define a form function with
- *     the same name as the action function with '_form' appended (e.g., the
- *     form for 'node_assign_owner_action' is 'node_assign_owner_action_form'.)
- *     This function takes $context as its only parameter, and is paired with
- *     the usual _submit function, and possibly a _validate function.
- *   - 'triggers': An array of the events (that is, hooks) that can trigger this
- *     action. For example: array('node_insert', 'user_update'). You can also
- *     declare support for any trigger by returning array('any') for this value.
- *   - 'behavior': (optional) A machine-readable array of behaviors of this
- *     action, used to signal additionally required actions that may need to be
- *     triggered. Currently recognized behaviors by Trigger module:
- *     - 'changes_property': If an action with this behavior is assigned to a
- *       trigger other than a "presave" hook, any save actions also assigned to
- *       this trigger are moved later in the list. If no save action is present,
- *       one will be added.
- *       Modules that are processing actions (like Trigger module) should take
- *       special care for the "presave" hook, in which case a dependent "save"
- *       action should NOT be invoked.
- *
- * @ingroup actions
- */
-function hook_action_info() {
-  return array(
-    'comment_unpublish_action' => array(
-      'type' => 'comment',
-      'label' => t('Unpublish comment'),
-      'configurable' => FALSE,
-      'behavior' => array('changes_property'),
-      'triggers' => array('comment_presave', 'comment_insert', 'comment_update'),
-    ),
-    'comment_unpublish_by_keyword_action' => array(
-      'type' => 'comment',
-      'label' => t('Unpublish comment containing keyword(s)'),
-      'configurable' => TRUE,
-      'behavior' => array('changes_property'),
-      'triggers' => array('comment_presave', 'comment_insert', 'comment_update'),
-    ),
-    'comment_save_action' => array(
-      'type' => 'comment',
-      'label' => t('Save comment'),
-      'configurable' => FALSE,
-      'triggers' => array('comment_insert', 'comment_update'),
-    ),
-  );
-}
-
-/**
- * Executes code after an action is deleted.
- *
- * @param $aid
- *   The action ID.
- */
-function hook_actions_delete($aid) {
-  db_delete('actions_assignments')
-    ->condition('aid', $aid)
-    ->execute();
-}
-
-/**
- * Alters the actions declared by another module.
- *
- * Called by actions_list() to allow modules to alter the return values from
- * implementations of hook_action_info().
- *
- * @see trigger_example_action_info_alter()
- */
-function hook_action_info_alter(&$actions) {
-  $actions['node_unpublish_action']['label'] = t('Unpublish and remove from public view.');
-}
-
-/**
  * Declare archivers to the system.
  *
  * An archiver is a class that is able to package and unpackage one or more files
diff --git modules/system/system.install modules/system/system.install
index eb6d017..d094562 100644
--- modules/system/system.install
+++ modules/system/system.install
@@ -549,47 +549,6 @@ function system_schema() {
     'primary key' => array('name'),
   );
 
-  $schema['actions'] = array(
-    'description' => 'Stores action information.',
-    'fields' => array(
-      'aid' => array(
-        'description' => 'Primary Key: Unique actions ID.',
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-        'default' => '0',
-      ),
-      'type' => array(
-        'description' => 'The object that that action acts on (node, user, comment, system or custom types.)',
-        'type' => 'varchar',
-        'length' => 32,
-        'not null' => TRUE,
-        'default' => '',
-      ),
-      'callback' => array(
-        'description' => 'The callback function that executes when the action runs.',
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-        'default' => '',
-      ),
-      'parameters' => array(
-        'description' => 'Parameters to be passed to the callback function.',
-        'type' => 'blob',
-        'not null' => TRUE,
-        'size' => 'big',
-      ),
-      'label' => array(
-        'description' => 'Label of the action.',
-        'type' => 'varchar',
-        'length' => 255,
-        'not null' => TRUE,
-        'default' => '0',
-      ),
-    ),
-    'primary key' => array('aid'),
-  );
-
   $schema['batch'] = array(
     'description' => 'Stores details about batches (processes that run in multiple HTTP requests).',
     'fields' => array(
diff --git modules/system/system.module modules/system/system.module
index b5dfc54..f0023e8 100644
--- modules/system/system.module
+++ modules/system/system.module
@@ -221,9 +221,6 @@ function system_permission() {
       'title' => t('Administer software updates'),
       'restrict access' => TRUE,
     ),
-    'administer actions' => array(
-      'title' => t('Administer actions'),
-    ),
     'access administration pages' => array(
       'title' => t('Use the administration pages and help'),
     ),
@@ -930,44 +927,6 @@ function system_menu() {
     'access arguments' => array('access administration pages'),
     'file' => 'system.admin.inc',
   );
-  $items['admin/config/system/actions'] = array(
-    'title' => 'Actions',
-    'description' => 'Manage the actions defined for your site.',
-    'access arguments' => array('administer actions'),
-    'page callback' => 'system_actions_manage',
-    'file' => 'system.admin.inc',
-  );
-  $items['admin/config/system/actions/manage'] = array(
-    'title' => 'Manage actions',
-    'description' => 'Manage the actions defined for your site.',
-    'page callback' => 'system_actions_manage',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -2,
-    'file' => 'system.admin.inc',
-  );
-  $items['admin/config/system/actions/configure'] = array(
-    'title' => 'Configure an advanced action',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_actions_configure'),
-    'access arguments' => array('administer actions'),
-    'type' => MENU_VISIBLE_IN_BREADCRUMB,
-    'file' => 'system.admin.inc',
-  );
-  $items['admin/config/system/actions/delete/%actions'] = array(
-    'title' => 'Delete action',
-    'description' => 'Delete an action.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('system_actions_delete_form', 5),
-    'access arguments' => array('administer actions'),
-    'file' => 'system.admin.inc',
-  );
-  $items['admin/config/system/actions/orphan'] = array(
-    'title' => 'Remove orphans',
-    'page callback' => 'system_actions_remove_orphans',
-    'access arguments' => array('administer actions'),
-    'type' => MENU_CALLBACK,
-    'file' => 'system.admin.inc',
-  );
   $items['admin/config/system/site-information'] = array(
     'title' => 'Site information',
     'description' => t('Change site name, e-mail address, slogan, default front page, and number of posts per page, error pages.'),
@@ -3028,262 +2987,6 @@ function system_flush_caches() {
 }
 
 /**
- * Implements hook_action_info().
- */
-function system_action_info() {
-  return array(
-    'system_message_action' => array(
-      'type' => 'system',
-      'label' => t('Display a message to the user'),
-      'configurable' => TRUE,
-      'triggers' => array('any'),
-    ),
-    'system_send_email_action' => array(
-      'type' => 'system',
-      'label' => t('Send e-mail'),
-      'configurable' => TRUE,
-      'triggers' => array('any'),
-    ),
-    'system_block_ip_action' => array(
-      'type' => 'user',
-      'label' => t('Ban IP address of current user'),
-      'configurable' => FALSE,
-      'triggers' => array('any'),
-    ),
-    'system_goto_action' => array(
-      'type' => 'system',
-      'label' => t('Redirect to URL'),
-      'configurable' => TRUE,
-      'triggers' => array('any'),
-    ),
-  );
-}
-
-/**
- * Return a form definition so the Send email action can be configured.
- *
- * @param $context
- *   Default values (if we are editing an existing action instance).
- *
- * @return
- *   Form definition.
- *
- * @see system_send_email_action_validate()
- * @see system_send_email_action_submit()
- */
-function system_send_email_action_form($context) {
-  // Set default values for form.
-  if (!isset($context['recipient'])) {
-    $context['recipient'] = '';
-  }
-  if (!isset($context['subject'])) {
-    $context['subject'] = '';
-  }
-  if (!isset($context['message'])) {
-    $context['message'] = '';
-  }
-
-  $form['recipient'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Recipient'),
-    '#default_value' => $context['recipient'],
-    '#maxlength' => '254',
-    '#description' => t('The email address to which the message should be sent OR enter [node:author:mail], [comment:author:mail], etc. if you would like to send an e-mail to the author of the original post.'),
-  );
-  $form['subject'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Subject'),
-    '#default_value' => $context['subject'],
-    '#maxlength' => '254',
-    '#description' => t('The subject of the message.'),
-  );
-  $form['message'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Message'),
-    '#default_value' => $context['message'],
-    '#cols' => '80',
-    '#rows' => '20',
-    '#description' => t('The message that should be sent. You may include placeholders like [node:title], [user:name], and [comment:body] to represent data that will be different each time message is sent. Not all placeholders will be available in all contexts.'),
-  );
-  return $form;
-}
-
-/**
- * Validate system_send_email_action form submissions.
- */
-function system_send_email_action_validate($form, $form_state) {
-  $form_values = $form_state['values'];
-  // Validate the configuration form.
-  if (!valid_email_address($form_values['recipient']) && strpos($form_values['recipient'], ':mail') === FALSE) {
-    // We want the literal %author placeholder to be emphasized in the error message.
-    form_set_error('recipient', t('Enter a valid email address or use a token e-mail address such as %author.', array('%author' => '[node:author:mail]')));
-  }
-}
-
-/**
- * Process system_send_email_action form submissions.
- */
-function system_send_email_action_submit($form, $form_state) {
-  $form_values = $form_state['values'];
-  // Process the HTML form to store configuration. The keyed array that
-  // we return will be serialized to the database.
-  $params = array(
-    'recipient' => $form_values['recipient'],
-    'subject'   => $form_values['subject'],
-    'message'   => $form_values['message'],
-  );
-  return $params;
-}
-
-/**
- * Sends an e-mail message.
- *
- * @param object $entity
- *   An optional node object, which will be added as $context['node'] if
- *   provided.
- * @param array $context
- *   Array with the following elements:
- *   - 'recipient': E-mail message recipient. This will be passed through
- *     token_replace().
- *   - 'subject': The subject of the message. This will be passed through
- *     token_replace().
- *   - 'message': The message to send. This will be passed through
- *     token_replace().
- *   - Other elements will be used as the data for token replacement.
- *
- * @ingroup actions
- */
-function system_send_email_action($entity, $context) {
-  if (empty($context['node'])) {
-    $context['node'] = $entity;
-  }
-
-  $recipient = token_replace($context['recipient'], $context);
-
-  // If the recipient is a registered user with a language preference, use
-  // the recipient's preferred language. Otherwise, use the system default
-  // language.
-  $recipient_account = user_load_by_mail($recipient);
-  if ($recipient_account) {
-    $language = user_preferred_language($recipient_account);
-  }
-  else {
-    $language = language_default();
-  }
-  $params = array('context' => $context);
-
-  if (drupal_mail('system', 'action_send_email', $recipient, $language, $params)) {
-    watchdog('action', 'Sent email to %recipient', array('%recipient' => $recipient));
-  }
-  else {
-    watchdog('error', 'Unable to send email to %recipient', array('%recipient' => $recipient));
-  }
-}
-
-/**
- * Implements hook_mail().
- */
-function system_mail($key, &$message, $params) {
-  $context = $params['context'];
-
-  $subject = token_replace($context['subject'], $context);
-  $body = token_replace($context['message'], $context);
-
-  $message['subject'] .= str_replace(array("\r", "\n"), '', $subject);
-  $message['body'][] = $body;
-}
-
-function system_message_action_form($context) {
-  $form['message'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Message'),
-    '#default_value' => isset($context['message']) ? $context['message'] : '',
-    '#required' => TRUE,
-    '#rows' => '8',
-    '#description' => t('The message to be displayed to the current user. You may include placeholders like [node:title], [user:name], and [comment:body] to represent data that will be different each time message is sent. Not all placeholders will be available in all contexts.'),
-  );
-  return $form;
-}
-
-function system_message_action_submit($form, $form_state) {
-  return array('message' => $form_state['values']['message']);
-}
-
-/**
- * Sends a message to the current user's screen.
- *
- * @param object $entity
- *   An optional node object, which will be added as $context['node'] if
- *   provided.
- * @param array $context
- *   Array with the following elements:
- *   - 'message': The message to send. This will be passed through
- *     token_replace().
- *   - Other elements will be used as the data for token replacement in
- *     the message.
- *
- * @ingroup actions
- */
-function system_message_action(&$entity, $context = array()) {
-  if (empty($context['node'])) {
-    $context['node'] = $entity;
-  }
-
-  $context['message'] = token_replace(filter_xss_admin($context['message']), $context);
-  drupal_set_message($context['message']);
-}
-
-/**
- * Settings form for system_goto_action().
- */
-function system_goto_action_form($context) {
-  $form['url'] = array(
-    '#type' => 'textfield',
-    '#title' => t('URL'),
-    '#description' => t('The URL to which the user should be redirected. This can be an internal URL like node/1234 or an external URL like http://drupal.org.'),
-    '#default_value' => isset($context['url']) ? $context['url'] : '',
-    '#required' => TRUE,
-  );
-  return $form;
-}
-
-function system_goto_action_submit($form, $form_state) {
-  return array(
-    'url' => $form_state['values']['url']
-  );
-}
-
-/**
- * Redirects to a different URL.
- *
- * @param $entity
- *   Ignored.
- * @param array $context
- *   Array with the following elements:
- *   - 'url': URL to redirect to. This will be passed through
- *     token_replace().
- *   - Other elements will be used as the data for token replacement.
- *
- * @ingroup actions
- */
-function system_goto_action($entity, $context) {
-  drupal_goto(token_replace($context['url'], $context));
-}
-
-/**
- * Blocks the current user's IP address.
- *
- * @ingroup actions
- */
-function system_block_ip_action() {
-  $ip = ip_address();
-  db_insert('blocked_ips')
-    ->fields(array('ip' => $ip))
-    ->execute();
-  watchdog('action', 'Banned IP address %ip', array('%ip' => $ip));
-}
-
-/**
  * Generate an array of time zones and their local time&date.
  *
  * @param $blank
diff --git modules/trigger/trigger.info modules/trigger/trigger.info
index 4361965..55ecc16 100644
--- modules/trigger/trigger.info
+++ modules/trigger/trigger.info
@@ -4,5 +4,6 @@ description = Enables actions to be fired on certain system events, such as when
 package = Core
 version = VERSION
 core = 7.x
+dependencies[] = actions
 files[] = trigger.test
 configure = admin/structure/trigger
