diff --git a/core/modules/migrate_drupal/config/install/migrate.migration.d7_field.yml b/core/modules/migrate_drupal/config/install/migrate.migration.d7_field.yml
new file mode 100644
index 0000000..bd36418
--- /dev/null
+++ b/core/modules/migrate_drupal/config/install/migrate.migration.d7_field.yml
@@ -0,0 +1,135 @@
+id: d7_field
+label: Drupal 7 field configuration
+migration_groups:
+  - Drupal 7
+source:
+  plugin: d7_field
+  constants:
+    entity_type: node
+    langcode: und
+process:
+  entity_type: 'constants/entity_type'
+  status: active
+  langcode: 'constants/langcode'
+  field_name: field_name
+  type:
+    -
+      plugin: static_map
+      source:
+        - type
+        - widget_type
+      map:
+        number_integer:
+          number: integer
+          optionwidgets_select: list_integer
+          optionwidgets_buttons: list_integer
+          optionwidgets_onoff: boolean
+        number_decimal:
+          number: decimal
+          optionwidgets_select: list_float
+          optionwidgets_buttons: list_float
+          optionwidgets_onoff: boolean
+        number_float:
+          number: float
+          optionwidgets_select: list_float
+          optionwidgets_buttons: list_float
+          optionwidgets_onoff: boolean
+        text:
+          optionwidgets_select: list_string
+          optionwidgets_buttons: list_string
+          optionwidgets_onoff: boolean
+          text_textfield: text
+          text_textarea: text_long
+        email:
+          email_textfield: email
+        link:
+          link: link
+        filefield:
+          imagefield_widget: image
+          filefield_widget: file
+        date:
+          date_select: datetime
+        datestamp:
+          date_select: datetime
+        datetime:
+          date_select: datetime
+        fr_phone:
+          phone_textfield: telephone
+        be_phone:
+          phone_textfield: telephone
+        it_phone:
+          phone_textfield: telephone
+        el_phone:
+          phone_textfield: telephone
+        ch_phone:
+          phone_textfield: telephone
+        ca_phone:
+          phone_textfield: telephone
+        cr_phone:
+          phone_textfield: telephone
+        pa_phone:
+          phone_textfield: telephone
+        gb_phone:
+          phone_textfield: telephone
+        ru_phone:
+          phone_textfield: telephone
+        ua_phone:
+          phone_textfield: telephone
+        es_phone:
+          phone_textfield: telephone
+        au_phone:
+          phone_textfield: telephone
+        cs_phone:
+          phone_textfield: telephone
+        hu_phone:
+          phone_textfield: telephone
+        pl_phone:
+          phone_textfield: telephone
+        nl_phone:
+          phone_textfield: telephone
+        se_phone:
+          phone_textfield: telephone
+        za_phone:
+          phone_textfield: telephone
+        il_phone:
+          phone_textfield: telephone
+        nz_phone:
+          phone_textfield: telephone
+        br_phone:
+          phone_textfield: telephone
+        cl_phone:
+          phone_textfield: telephone
+        cn_phone:
+          phone_textfield: telephone
+        hk_phone:
+          phone_textfield: telephone
+        mo_phone:
+          phone_textfield: telephone
+        ph_phone:
+          phone_textfield: telephone
+        sg_phone:
+          phone_textfield: telephone
+        jo_phone:
+          phone_textfield: telephone
+        eg_phone:
+          phone_textfield: telephone
+        pk_phone:
+          phone_textfield: telephone
+        int_phone:
+          phone_textfield: telephone
+  cardinality:
+    plugin: static_map
+    bypass: true
+    source: multiple
+    map:
+      0: 1
+      1: -1
+  settings:
+    plugin: field_settings
+    source:
+      - @type
+      - global_settings
+      - widget_settings
+
+destination:
+  plugin: entity:field_storage_config
diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/Field.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/Field.php
new file mode 100644
index 0000000..517f188
--- /dev/null
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/Field.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\migrate_drupal\Plugin\migrate\source\d7\Field.
+ */
+
+namespace Drupal\migrate_drupal\Plugin\migrate\source\d7;
+
+use Drupal\migrate\Row;
+use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
+
+/**
+ * Drupal 7 field source from database.
+ *
+ * @MigrateSource(
+ *   id = "d7_field"
+ * )
+ */
+class Field extends DrupalSqlBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function query() {
+    $query = $this->select('content_node_field', 'cnf')
+      ->fields('cnf', array(
+        'field_name',
+        'type',
+        'global_settings',
+        'required',
+        'multiple',
+        'db_storage',
+        'module',
+        'db_columns',
+        'active',
+        'locked',
+      ))
+      ->fields('cnfi', array(
+        'widget_type',
+        'widget_settings',
+      ));
+    $query->join('content_node_field_instance', 'cnfi', 'cnfi.field_name = cnf.field_name');
+    $query->orderBy('field_name');
+
+    return $query;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function fields() {
+    return array(
+      'field_name' => $this->t('Field name'),
+      'type' => $this->t('Type (text, integer, ....)'),
+      'global_settings' => $this->t('Global settings. Shared with every field instance.'),
+      'required' => $this->t('Required'),
+      'multiple' => $this->t('Multiple'),
+      'db_storage' => $this->t('DB storage'),
+      'module' => $this->t('Module'),
+      'db_columns' => $this->t('DB Columns'),
+      'active' => $this->t('Active'),
+      'locked' => $this->t('Locked'),
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function prepareRow(Row $row) {
+    // Unserialize data.
+    $global_settings = unserialize($row->getSourceProperty('global_settings'));
+    $widget_settings = unserialize($row->getSourceProperty('widget_settings'));
+    $db_columns = unserialize($row->getSourceProperty('db_columns'));
+    $row->setSourceProperty('global_settings', $global_settings);
+    $row->setSourceProperty('widget_settings', $widget_settings);
+    $row->setSourceProperty('db_columns', $db_columns);
+    return parent::prepareRow($row);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getIds() {
+    $ids['field_name'] = array(
+      'type' => 'string',
+      'alias' => 'cnf',
+    );
+    return $ids;
+  }
+
+}
