diff --git a/core/config/schema/core.entity.schema.yml b/core/config/schema/core.entity.schema.yml
index e5db26d..3c52cce 100644
--- a/core/config/schema/core.entity.schema.yml
+++ b/core/config/schema/core.entity.schema.yml
@@ -137,3 +137,27 @@ entity_form_display.field.string:
         placeholder:
           type: label
           label: 'Placeholder'
+
+entity_view_display.field.telephone_link:
+  type: entity_field_view_display_base
+  label: 'Telephone link format settings'
+  mapping:
+    settings:
+      type: mapping
+      label: 'Settings'
+      mapping:
+        title:
+          type: label
+          label: 'Title to replace basic numeric telephone number display.'
+
+entity_form_display.field.telephone_default:
+  type: entity_field_form_display_base
+  label: 'Telephone default format settings'
+  mapping:
+    settings:
+      type: mapping
+      label: 'Settings'
+      mapping:
+        placeholder:
+          type: label
+          label: 'Placeholder'
diff --git a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
index 544ae46..e42303d 100644
--- a/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/StringFormatter.php
@@ -20,6 +20,7 @@
  *   field_types = {
  *     "string",
  *     "string_long",
+ *     "telephone",
  *     "email"
  *   },
  *   quickedit = {
diff --git a/core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
similarity index 94%
rename from core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
rename to core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
index 5c65cf6..b31af34 100644
--- a/core/modules/telephone/src/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/TelephoneLinkFormatter.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\Plugin\field\formatter\TelephoneLinkFormatter.
+ * Contains \Drupal\Core\Field\Plugin\field\formatter\TelephoneLinkFormatter.
  */
 
-namespace Drupal\telephone\Plugin\Field\FieldFormatter;
+namespace Drupal\Core\Field\Plugin\Field\FieldFormatter;
 
 use Drupal\Core\Field\FormatterBase;
 use Drupal\Core\Field\FieldItemListInterface;
diff --git a/core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/TelephoneItem.php
similarity index 93%
rename from core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php
rename to core/lib/Drupal/Core/Field/Plugin/Field/FieldType/TelephoneItem.php
index 2b1a5b6..7011b33 100644
--- a/core/modules/telephone/src/Plugin/Field/FieldType/TelephoneItem.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldType/TelephoneItem.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\Plugin\Field\FieldType\TelephoneItem.
+ * Contains \Drupal\Core\Field\Plugin\Field\FieldType\TelephoneItem.
  */
 
-namespace Drupal\telephone\Plugin\Field\FieldType;
+namespace Drupal\Core\Field\Plugin\Field\FieldType;
 
 use Drupal\Core\Field\FieldItemBase;
 use Drupal\Core\Field\FieldStorageDefinitionInterface;
diff --git a/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
similarity index 93%
rename from core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
rename to core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
index 2be36da..555ece4 100644
--- a/core/modules/telephone/src/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
+++ b/core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/TelephoneDefaultWidget.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\Plugin\Field\FieldWidget\TelephoneDefaultWidget.
+ * Contains \Drupal\Core\Field\Plugin\Field\FieldWidget\TelephoneDefaultWidget.
  */
 
-namespace Drupal\telephone\Plugin\Field\FieldWidget;
+namespace Drupal\Core\Field\Plugin\Field\FieldWidget;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\WidgetBase;
diff --git a/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php b/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
index a02c3d0..3a93df8 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteUninstallTest.php
@@ -22,7 +22,7 @@ class FieldImportDeleteUninstallTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('telephone');
+  public static $modules = array('filter');
 
   protected function setUp() {
     parent::setUp();
@@ -55,7 +55,7 @@ public function testImportDeleteUninstall() {
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'field_test',
       'entity_type' => 'entity_test',
-      'type' => 'telephone',
+      'type' => 'text',
     ));
     $field_storage->save();
     entity_create('field_instance_config', array(
@@ -87,7 +87,7 @@ public function testImportDeleteUninstall() {
 
     // Stage uninstall of the Telephone module.
     $core_extension = \Drupal::config('core.extension')->get();
-    unset($core_extension['module']['telephone']);
+    unset($core_extension['module']['text']);
     $staging->write('core.extension', $core_extension);
 
     // Stage the field deletion
@@ -101,7 +101,7 @@ public function testImportDeleteUninstall() {
     // Telephone module.
     $this->configImporter()->import();
 
-    $this->assertFalse(\Drupal::moduleHandler()->moduleExists('telephone'));
+    $this->assertFalse(\Drupal::moduleHandler()->moduleExists('text'));
     $this->assertFalse(entity_load_by_uuid('field_storage_config', $field_storage->uuid()), 'The test field has been deleted by the configuration synchronization');
     $deleted_storages = \Drupal::state()->get('field.storage.deleted') ?: array();
     $this->assertFalse(isset($deleted_storages[$field_storage->uuid()]), 'Telephone field has been completed removed from the system.');
@@ -116,7 +116,7 @@ public function testImportAlreadyDeletedUninstall() {
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'field_test',
       'entity_type' => 'entity_test',
-      'type' => 'telephone',
+      'type' => 'text',
     ));
     $field_storage->save();
     $field_storage_uuid = $field_storage->uuid();
@@ -148,7 +148,7 @@ public function testImportAlreadyDeletedUninstall() {
 
     // Stage uninstall of the Telephone module.
     $core_extension = \Drupal::config('core.extension')->get();
-    unset($core_extension['module']['telephone']);
+    unset($core_extension['module']['text']);
     $staging->write('core.extension', $core_extension);
 
     $deleted_storages = \Drupal::state()->get('field.storage.deleted') ?: array();
@@ -161,7 +161,7 @@ public function testImportAlreadyDeletedUninstall() {
     // Telephone module.
     $this->configImporter()->import();
 
-    $this->assertFalse(\Drupal::moduleHandler()->moduleExists('telephone'));
+    $this->assertFalse(\Drupal::moduleHandler()->moduleExists('text'));
     $deleted_storages = \Drupal::state()->get('field.storage.deleted') ?: array();
     $this->assertFalse(isset($deleted_storages[$field_storage_uuid]), 'Field has been completed removed from the system.');
   }
diff --git a/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php b/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
index 67dc92d..a48a499 100644
--- a/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
+++ b/core/modules/field/src/Tests/FieldImportDeleteUninstallUiTest.php
@@ -23,7 +23,7 @@ class FieldImportDeleteUninstallUiTest extends FieldTestBase {
    *
    * @var array
    */
-  public static $modules = array('entity_test', 'telephone', 'config', 'filter', 'text');
+  public static $modules = array('entity_test', 'options', 'config', 'filter', 'text');
 
   protected function setUp() {
     parent::setUp();
@@ -40,7 +40,10 @@ public function testImportDeleteUninstall() {
     $field_storage = entity_create('field_storage_config', array(
       'name' => 'field_tel',
       'entity_type' => 'entity_test',
-      'type' => 'telephone',
+      'type' => 'list_integer',
+      'settings' => array(
+        'allowed_values' => array(1 => 'One', 2 => 'Two', 3 => 'Three'),
+      ),
     ));
     $field_storage->save();
     entity_create('field_instance_config', array(
@@ -62,7 +65,7 @@ public function testImportDeleteUninstall() {
 
     // Create an entity which has values for the telephone and text field.
     $entity = entity_create('entity_test');
-    $value = '+0123456789';
+    $value = 1;
     $entity->field_tel = $value;
     $entity->field_text = $this->randomMachineName(20);
     $entity->name->value = $this->randomMachineName();
@@ -85,7 +88,7 @@ public function testImportDeleteUninstall() {
 
     // Stage uninstall of the Telephone module.
     $core_extension = \Drupal::config('core.extension')->get();
-    unset($core_extension['module']['telephone']);
+    unset($core_extension['module']['options']);
     $staging->write('core.extension', $core_extension);
 
     // Stage the field deletion
diff --git a/core/modules/telephone/src/Tests/TelephoneFieldTest.php b/core/modules/field/src/Tests/Telephone/TelephoneFieldTest.php
similarity index 93%
rename from core/modules/telephone/src/Tests/TelephoneFieldTest.php
rename to core/modules/field/src/Tests/Telephone/TelephoneFieldTest.php
index f686517..0ff855a 100644
--- a/core/modules/telephone/src/Tests/TelephoneFieldTest.php
+++ b/core/modules/field/src/Tests/Telephone/TelephoneFieldTest.php
@@ -2,17 +2,17 @@
 
 /**
  * @file
- * Contains \Drupal\telephone\TelephoneFieldTest.
+ * Contains \Drupal\field\Tests\Telephone\TelephoneFieldTest.
  */
 
-namespace Drupal\telephone\Tests;
+namespace Drupal\field\Tests\Telephone;
 
 use Drupal\simpletest\WebTestBase;
 
 /**
  * Tests the creation of telephone fields.
  *
- * @group telephone
+ * @group field
  */
 class TelephoneFieldTest extends WebTestBase {
 
@@ -24,7 +24,6 @@ class TelephoneFieldTest extends WebTestBase {
   public static $modules = array(
     'field',
     'node',
-    'telephone'
   );
 
   protected $instance;
@@ -45,7 +44,7 @@ protected function setUp() {
    */
   function testTelephoneField() {
 
-    // Add the telepone field to the article content type.
+    // Add the telephone field to the article content type.
     entity_create('field_storage_config', array(
       'name' => 'field_telephone',
       'entity_type' => 'node',
diff --git a/core/modules/telephone/src/Tests/TelephoneItemTest.php b/core/modules/field/src/Tests/Telephone/TelephoneItemTest.php
similarity index 92%
rename from core/modules/telephone/src/Tests/TelephoneItemTest.php
rename to core/modules/field/src/Tests/Telephone/TelephoneItemTest.php
index 8b25689..fe72a9c 100644
--- a/core/modules/telephone/src/Tests/TelephoneItemTest.php
+++ b/core/modules/field/src/Tests/Telephone/TelephoneItemTest.php
@@ -2,10 +2,10 @@
 
 /**
  * @file
- * Contains \Drupal\field\Tests\TelephoneItemTest.
+ * Contains \Drupal\field\Tests\Telephone\TelephoneItemTest.
  */
 
-namespace Drupal\telephone\Tests;
+namespace Drupal\field\Tests\Telephone;
 
 use Drupal\Core\Field\FieldItemListInterface;
 use Drupal\Core\Field\FieldItemInterface;
@@ -14,7 +14,7 @@
 /**
  * Tests the new entity API for the telephone field type.
  *
- * @group telephone
+ * @group field
  */
 class TelephoneItemTest extends FieldUnitTestBase {
 
@@ -23,7 +23,7 @@ class TelephoneItemTest extends FieldUnitTestBase {
    *
    * @var array
    */
-  public static $modules = array('telephone');
+  public static $modules = array();
 
   protected function setUp() {
     parent::setUp();
diff --git a/core/modules/field/src/Tests/reEnableModuleFieldTest.php b/core/modules/field/src/Tests/reEnableModuleFieldTest.php
index dcbd20a..3e10a20 100644
--- a/core/modules/field/src/Tests/reEnableModuleFieldTest.php
+++ b/core/modules/field/src/Tests/reEnableModuleFieldTest.php
@@ -24,9 +24,8 @@ class reEnableModuleFieldTest extends WebTestBase {
   public static $modules = array(
     'field',
     'node',
-    // We use telephone module instead of test_field because test_field is
+    // We use telephone field instead of test_field because test_field is
     // hidden and does not display on the admin/modules page.
-    'telephone'
   );
 
   protected function setUp() {
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateDrupal6Test.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateDrupal6Test.php
index c13d023..0955e84 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateDrupal6Test.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateDrupal6Test.php
@@ -44,7 +44,6 @@ class MigrateDrupal6Test extends MigrateFullDrupalTestBase {
     'statistics',
     'syslog',
     'taxonomy',
-    'telephone',
     'text',
     'update',
     'views',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php
index 4be0bea..1b28622 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldFormatterSettingsTest.php
@@ -23,7 +23,7 @@ class MigrateFieldFormatterSettingsTest extends MigrateDrupalTestBase {
    *
    * @var array
    */
-  public static $modules = array('node', 'field', 'datetime', 'image', 'text', 'link', 'file', 'telephone');
+  public static $modules = array('node', 'field', 'datetime', 'image', 'text', 'link', 'file');
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
index d154214..9dbb541 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldInstanceTest.php
@@ -24,7 +24,6 @@ class MigrateFieldInstanceTest extends MigrateDrupalTestBase {
    * @var array
    */
   public static $modules = array(
-    'telephone',
     'link',
     'file',
     'image',
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php
index 85ef644..e712397 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldTest.php
@@ -22,7 +22,7 @@ class MigrateFieldTest extends MigrateDrupalTestBase {
    *
    * @var array
    */
-  public static $modules = array('field', 'telephone', 'link', 'file', 'image', 'datetime', 'node', 'options');
+  public static $modules = array('field', 'link', 'file', 'image', 'datetime', 'node', 'options');
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php
index 09b922c..123f0fc 100644
--- a/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php
+++ b/core/modules/migrate_drupal/src/Tests/d6/MigrateFieldWidgetSettingsTest.php
@@ -24,7 +24,6 @@ class MigrateFieldWidgetSettingsTest extends MigrateDrupalTestBase {
    */
   public static $modules = array(
     'field',
-    'telephone',
     'link',
     'file',
     'image',
diff --git a/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php b/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php
index 85662d2..e6d2b22 100644
--- a/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php
+++ b/core/modules/rdf/src/Tests/Field/TelephoneFieldRdfaTest.php
@@ -28,7 +28,7 @@ class TelephoneFieldRdfaTest extends FieldRdfaTestBase {
   /**
    * {@inheritdoc}
    */
-  public static $modules = array('telephone', 'text');
+  public static $modules = array('text');
 
   protected function setUp() {
     parent::setUp();
diff --git a/core/modules/telephone/config/schema/telephone.schema.yml b/core/modules/telephone/config/schema/telephone.schema.yml
deleted file mode 100644
index 73f740c..0000000
--- a/core/modules/telephone/config/schema/telephone.schema.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# Schema for the configuration files of the Telephone module.
-
-entity_view_display.field.telephone_link:
-  type: entity_field_view_display_base
-  label: 'Telephone link format settings'
-  mapping:
-    settings:
-      type: mapping
-      label: 'Settings'
-      mapping:
-        title:
-          type: label
-          label: 'Title to replace basic numeric telephone number display.'
-
-entity_form_display.field.telephone_default:
-  type: entity_field_form_display_base
-  label: 'Telephone default format settings'
-  mapping:
-    settings:
-      type: mapping
-      label: 'Settings'
-      mapping:
-        placeholder:
-          type: label
-          label: 'Placeholder'
diff --git a/core/modules/telephone/telephone.info.yml b/core/modules/telephone/telephone.info.yml
deleted file mode 100644
index 3e27ccb..0000000
--- a/core/modules/telephone/telephone.info.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-name: Telephone
-type: module
-description: 'Defines a field type for telephone numbers.'
-package: Field types
-version: VERSION
-core: 8.x
-dependencies:
-  - field
diff --git a/core/modules/telephone/telephone.module b/core/modules/telephone/telephone.module
deleted file mode 100644
index 6c5d524..0000000
--- a/core/modules/telephone/telephone.module
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-/**
- * @file
- * Defines a simple telephone number field type.
- */
-
-use Drupal\Core\Routing\RouteMatchInterface;
-
-/**
- * Implements hook_help().
- */
-function telephone_help($route_name, RouteMatchInterface $route_match) {
-  switch ($route_name) {
-    case 'help.page.telephone':
-      $output = '';
-      $output .= '<h3>' . t('About') . '</h3>';
-      $output .= '<p>' . t('The Telephone module allows you to create fields that contain telephone numbers. See the <a href="!field">Field module help</a> and the <a href="!field_ui">Field UI help</a> pages for general information on fields and how to create and manage them. For more information, see the <a href="!telephone_documentation">online documentation for the Telephone module</a>.', array('!field' => \Drupal::url('help.page', array('name' => 'field')), '!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')), '!telephone_documentation' => 'https://drupal.org/documentation/modules/telephone')) . '</p>';
-      $output .= '<h3>' . t('Uses') . '</h3>';
-      $output .= '<dl>';
-      $output .= '<dt>' . t('Managing and displaying telephone fields') . '</dt>';
-      $output .= '<dd>' . t('The <em>settings</em> and the <em>display</em> of the telephone field can be configured separately. See the <a href="!field_ui">Field UI help</a> for more information on how to manage fields and their display.', array('!field_ui' => \Drupal::url('help.page', array('name' => 'field_ui')))) . '</dd>';
-      $output .= '<dt>' . t('Displaying telephone numbers as links') . '</dt>';
-      $output .= '<dd>' . t('Telephone numbers can be displayed as links with the scheme name <em>tel:</em> by choosing the <em>Telephone</em> display format on the <em>Manage display</em> page. Any spaces will be stripped out of the link text.') . '</dd>';
-      $output .= '</dl>';
-      return $output;
-  }
-}
-
-/**
- * Implements hook_field_formatter_info_alter().
- */
-function telephone_field_formatter_info_alter(&$info) {
-  $info['string']['field_types'][] = 'telephone';
-}
