diff --git a/migration_templates/d7_simplenews_newsletter.yml b/migration_templates/d7_simplenews_newsletter.yml
new file mode 100644
index 0000000..4694ef0
--- /dev/null
+++ b/migration_templates/d7_simplenews_newsletter.yml
@@ -0,0 +1,28 @@
+id: d7_simplenews_newsletter
+dependencies:
+  module:
+    - migrate_drupal
+    - simplenews
+label: Simplenews newsletters
+migration_tags:
+  - Drupal 7
+source:
+  plugin: simplenews_newsletter
+process:
+  name: name
+  id:
+    plugin: machine_name
+    source: name
+  description: description
+  format: format
+  priority: priority
+  receipt: receipt
+  from_name: from_name
+  subject: email_subject
+  from_address: from_address
+  hyperlinks: hyperlinks
+  new_account: new_account
+  opt_inout: opt_inout
+  weight: weight
+destination:
+  plugin: entity:simplenews_newsletter
diff --git a/migration_templates/d7_simplenews_subscriber.yml b/migration_templates/d7_simplenews_subscriber.yml
new file mode 100644
index 0000000..f74b2a9
--- /dev/null
+++ b/migration_templates/d7_simplenews_subscriber.yml
@@ -0,0 +1,40 @@
+id: d7_simplenews_subscriber
+dependencies:
+  config:
+    - migrate.migration.d7_simplenews_newsletter
+  module:
+    - migrate_drupal
+    - simplenews
+label: Simplenews subscribers
+migration_tags:
+  - Drupal 7
+source:
+  plugin: simplenews_subscriber
+process:
+  id: snid
+  status: activated
+  mail: mail
+  uid:
+    plugin: migration
+    migration: d7_user
+    source: uid
+  langcode: language
+  changes: changes
+  created: created
+  subscriptions:
+    plugin: iterator
+    source: subscriptions
+    process:
+      target_id:
+        plugin: migration
+        migration: d7_simplenews_newsletter
+        source: newsletter_id
+      status: status
+      timestamp: timestamp
+      source: source
+destination:
+  plugin: entity:simplenews_subscriber
+migration_dependencies:
+  required:
+    - d7_user
+    - d7_simplenews_newsletter
diff --git a/src/Plugin/migrate/source/d7/Newsletter.php b/src/Plugin/migrate/source/d7/Newsletter.php
new file mode 100644
index 0000000..91acb69
--- /dev/null
+++ b/src/Plugin/migrate/source/d7/Newsletter.php
@@ -0,0 +1,67 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\simplenews\Plugin\migrate\source\d7\Newsletter.
+ */
+
+namespace Drupal\simplenews\Plugin\migrate\source\d7;
+
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Migration source for Newsletter entities in D7.
+ *
+ * @MigrateSource(
+ *   id = "simplenews_newsletter"
+ * )
+ */
+class Newsletter extends DrupalSqlBase {
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    return [
+      'newsletter_id' => $this->t('Newsletter ID'),
+      'name' => $this->t('Name'),
+      'description' => $this->t('Description'),
+      'format' => $this->t('HTML or plaintext'),
+      'priority' => $this->t('Priority'),
+      'receipt' => $this->t('Request read receipt'),
+      'from_name' => $this->t('Name of the e-mail author'),
+      'email_subject' => $this->t('Newsletter subject'),
+      'from_address' => $this->t('E-mail author address'),
+      'hyperlinks' => $this->t('Indicates if hyperlinks should be kept inline or extracted'),
+      'new_account' => $this->t('Indicates how to integrate with the register form'),
+      'opt_inout' => $this->t('Defines the Opt-In/out options'),
+      'block' => $this->t('TRUE if a block should be provided for this newsletter'),
+      'weight' => $this->t('Weight of the newsletter when displayed in listings'),
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    return ['newsletter_id' => ['type' => 'serial']];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    return $this->select('simplenews_newsletter', 'n')
+      ->fields('n')
+      ->orderBy('newsletter_id');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function calculateDependencies() {
+    $this->dependencies = parent::calculateDependencies();
+    // Declare dependency to the provider of the base class.
+    $this->addDependency('module', 'migrate_drupal');
+    return $this->dependencies;
+  }
+
+}
diff --git a/src/Plugin/migrate/source/d7/Subscriber.php b/src/Plugin/migrate/source/d7/Subscriber.php
new file mode 100644
index 0000000..9421b66
--- /dev/null
+++ b/src/Plugin/migrate/source/d7/Subscriber.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\simplenews\Plugin\migrate\source\Subscriber.
+ */
+
+namespace Drupal\simplenews\Plugin\migrate\source\d7;
+
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Migration source for Subscriber entries in D7.
+ *
+ * @MigrateSource(
+ *   id = "simplenews_subscriber"
+ * )
+ */
+class Subscriber extends DrupalSqlBase {
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    return [
+      'snid' => $this->t('Subscriber ID'),
+      'activated' => $this->t('Activated'),
+      'mail' => $this->t('Subscriber\'s e-mail address'),
+      'uid' => $this->t('Corresponding user'),
+      'language' => $this->t('Language'),
+      'changes' => $this->t('Pending unconfirmed subscription changes'),
+      'created' => $this->t('Time of creation'),
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    return ['snid' => ['type' => 'serial']];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    return $this->select('simplenews_subscriber', 's')
+      ->fields('s')
+      ->orderBy('snid');
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    $result = parent::prepareRow($row);
+
+    // Add associated data from the subscriptions table.
+    $subscriptions = $this->select('simplenews_subscription', 'sub')
+      ->fields('sub', ['newsletter_id', 'status', 'timestamp', 'source'])
+      ->condition('sub.snid', $row->getSourceProperty('snid'))
+      ->execute()
+      ->fetchAllAssoc('newsletter_id');
+    $row->setSourceProperty('subscriptions', $subscriptions);
+
+    return $result;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function calculateDependencies() {
+    $this->dependencies = parent::calculateDependencies();
+    // Declare dependency to the provider of the base class.
+    $this->addDependency('module', 'migrate_drupal');
+    return $this->dependencies;
+  }
+
+}
