diff --git a/core/modules/action/migration_templates/d6_action.yml b/core/modules/action/migration_templates/d6_action.yml
new file mode 100644
index 0000000..3c7fc53
--- /dev/null
+++ b/core/modules/action/migration_templates/d6_action.yml
@@ -0,0 +1,35 @@
+id: d6_action
+label: Actions
+migration_tags:
+  - Drupal 6
+source:
+  plugin: d6_action
+process:
+  id: aid
+  label: description
+  type: type
+  plugin:
+    -
+      plugin: static_map
+      source: callback
+      map:
+        system_goto_action: action_goto_action
+        system_send_email_action: action_send_email_action
+        system_message_action: action_message_action
+        system_block_ip_action: 0
+      bypass: true
+    -
+      plugin: skip_on_empty
+      method: row
+  configuration:
+    -
+      plugin: static_map
+      source: parameters
+      map:
+        0: []
+      bypass: true
+    -
+      plugin: callback
+      callable: unserialize
+destination:
+  plugin: entity:action
\ No newline at end of file
diff --git a/core/modules/action/migration_templates/d7_action.yml b/core/modules/action/migration_templates/d7_action.yml
new file mode 100644
index 0000000..05c0237
--- /dev/null
+++ b/core/modules/action/migration_templates/d7_action.yml
@@ -0,0 +1,35 @@
+id: d7_action
+label: Actions
+migration_tags:
+  - Drupal 7
+source:
+  plugin: d7_action
+process:
+  id: aid
+  label: label
+  type: type
+  plugin:
+    -
+      plugin: static_map
+      source: callback
+      map:
+        system_goto_action: action_goto_action
+        system_send_email_action: action_send_email_action
+        system_message_action: action_message_action
+        system_block_ip_action: 0
+      bypass: true
+    -
+      plugin: skip_on_empty
+      method: row
+  configuration:
+    -
+      plugin: static_map
+      source: parameters
+      map:
+        0: []
+      bypass: true
+    -
+      plugin: callback
+      callable: unserialize
+destination:
+  plugin: entity:action
diff --git a/core/modules/action/src/Plugin/migrate/source/d6/Action.php b/core/modules/action/src/Plugin/migrate/source/d6/Action.php
index 2ca7741..14a9721 100644
--- a/core/modules/action/src/Plugin/migrate/source/d6/Action.php
+++ b/core/modules/action/src/Plugin/migrate/source/d6/Action.php
@@ -13,7 +13,8 @@
  * Drupal 6 action source from database.
  *
  * @MigrateSource(
- *   id = "d6_action"
+ *   id = "d6_action",
+ *   source_provider = "action"
  * )
  */
 class Action extends DrupalSqlBase {
diff --git a/core/modules/action/src/Plugin/migrate/source/d7/Action.php b/core/modules/action/src/Plugin/migrate/source/d7/Action.php
new file mode 100644
index 0000000..b44406d
--- /dev/null
+++ b/core/modules/action/src/Plugin/migrate/source/d7/Action.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\action\Plugin\migrate\source\d7\Action.
+ */
+
+namespace Drupal\action\Plugin\migrate\source\d7;
+
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Drupal 7 action source from database.
+ *
+ * @MigrateSource(
+ *   id = "d7_action",
+ *   source_provider = "system"
+ * )
+ */
+class Action extends DrupalSqlBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    $query = $this->select('actions', 'a')
+      ->fields('a', array(
+          'aid',
+          'type',
+          'callback',
+          'parameters',
+          'label',
+        )
+      );
+    return $query;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    return array(
+      'aid' => $this->t('Action ID'),
+      'type' => $this->t('Module'),
+      'callback' => $this->t('Callback function'),
+      'parameters' => $this->t('Action configuration'),
+      'label' => $this->t('Label of the action'),
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['aid']['type'] = 'string';
+    return $ids;
+  }
+
+}
