diff --git a/core/modules/block/custom_block/custom_block.module b/core/modules/block/custom_block/custom_block.module
index b8785de..86df478 100644
--- a/core/modules/block/custom_block/custom_block.module
+++ b/core/modules/block/custom_block/custom_block.module
@@ -201,22 +201,22 @@ function custom_block_add_body_field($block_type_id, $label = 'Block body') {
   $field = field_info_field('block_body');
   $instance = field_info_instance('custom_block', 'block_body', $block_type_id);
   if (empty($field)) {
-    $field = array(
+    $field = entity_create('field_entity', array(
       'field_name' => 'block_body',
       'type' => 'text_with_summary',
       'entity_types' => array('custom_block'),
-    );
-    $field = field_create_field($field);
+    ));
+    $field->save();
   }
   if (empty($instance)) {
-    $instance = array(
+    $instance = entity_create('field_instance', array(
       'field_name' => 'block_body',
       'entity_type' => 'custom_block',
       'bundle' => $block_type_id,
       'label' => $label,
       'settings' => array('display_summary' => FALSE),
-    );
-    $instance = field_create_instance($instance);
+    ));
+    $instance->save();
 
     // Assign widget settings for the 'default' form mode.
     entity_get_form_display('custom_block', $block_type_id, 'default')
diff --git a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php
index 909dd12..ab2f78c 100644
--- a/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php
+++ b/core/modules/block/custom_block/lib/Drupal/custom_block/Tests/CustomBlockFieldTest.php
@@ -64,21 +64,21 @@ public function testBlockFields() {
     $this->blockType = $this->createCustomBlockType('link');
 
     // Create a field with settings to validate.
-    $this->field = array(
+    $this->field = entity_create('field_entity', array(
       'field_name' => drupal_strtolower($this->randomName()),
       'type' => 'link',
       'cardinality' => 2,
-    );
-    field_create_field($this->field);
-    $this->instance = array(
+    ));
+    $this->field->save();
+    $this->instance = entity_create('field_instance', array(
       'field_name' => $this->field['field_name'],
       'entity_type' => 'custom_block',
       'bundle' => 'link',
       'settings' => array(
         'title' => DRUPAL_OPTIONAL,
       ),
-    );
-    field_create_instance($this->instance);
+    ));
+    $this->instance->save();
     entity_get_form_display('custom_block', 'link', 'default')
       ->setComponent($this->field['field_name'], array(
         'type' => 'link_default',
diff --git a/core/modules/comment/comment.install b/core/modules/comment/comment.install
index 0361b50..9361590 100644
--- a/core/modules/comment/comment.install
+++ b/core/modules/comment/comment.install
@@ -10,7 +10,7 @@
  */
 function comment_uninstall() {
   // Delete comment_body field.
-  field_delete_field('comment_body');
+  field_info_field('comment_body')->delete();
 
   // Remove variables.
   variable_del('comment_block_count');
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index 629249f..4e75d2e 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -345,26 +345,26 @@ function comment_node_type_delete($info) {
 function _comment_body_field_create($info) {
   // Create the field if needed.
   if (!field_read_field('comment_body', array('include_inactive' => TRUE))) {
-    $field = array(
+    $field = entity_create('field_entity', array(
       'field_name' => 'comment_body',
       'type' => 'text_long',
       'entity_types' => array('comment'),
-    );
-    field_create_field($field);
+    ));
+    $field->save();
   }
   // Create the instance if needed.
   if (!field_read_instance('comment', 'comment_body', 'comment_node_' . $info->type, array('include_inactive' => TRUE))) {
     entity_invoke_bundle_hook('create', 'comment', 'comment_node_' . $info->type);
     // Attaches the body field by default.
-    $instance = array(
+    $instance = entity_create('field_instance', array(
       'field_name' => 'comment_body',
       'label' => 'Comment',
       'entity_type' => 'comment',
       'bundle' => 'comment_node_' . $info->type,
       'settings' => array('text_processing' => 1),
       'required' => TRUE,
-    );
-    field_create_instance($instance);
+    ));
+    $instance->save();
 
     // Assign widget settings for the 'default' form mode.
     entity_get_form_display('comment', 'comment_node_' . $info->type, 'default')
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
index c92d2ab..ecd464a 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
@@ -41,7 +41,7 @@ function testCommentDefaultFields() {
       $this->assertTrue(isset($instances['comment_node_' . $type_name]['comment_body']), format_string('The comment_body field is present for comments on type @type', array('@type' => $type_name)));
 
       // Delete the instance along the way.
-      field_delete_instance($instances['comment_node_' . $type_name]['comment_body']);
+      $instances['comment_node_' . $type_name]['comment_body']->delete();
     }
 
     // Check that the 'comment_body' field is deleted.
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
index 0fdbb61..47efe82 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentLanguageTest.php
@@ -73,7 +73,7 @@ function setUp() {
     // Make comment body translatable.
     $field = field_info_field('comment_body');
     $field['translatable'] = TRUE;
-    field_update_field($field);
+    $field->save();
     $this->assertTrue(field_is_translatable('comment', $field), 'Comment body is translatable.');
   }
 
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php
index 100e02f..2a14791 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentTranslationUITest.php
@@ -65,7 +65,7 @@ function setupTestFields() {
     parent::setupTestFields();
     $field = field_info_field('comment_body');
     $field['translatable'] = TRUE;
-    field_update_field($field);
+    $field->save();
   }
 
   /**
diff --git a/core/modules/contact/lib/Drupal/contact/Tests/Views/ContactFieldsTest.php b/core/modules/contact/lib/Drupal/contact/Tests/Views/ContactFieldsTest.php
index 0ce0071..2263ea0 100644
--- a/core/modules/contact/lib/Drupal/contact/Tests/Views/ContactFieldsTest.php
+++ b/core/modules/contact/lib/Drupal/contact/Tests/Views/ContactFieldsTest.php
@@ -39,19 +39,17 @@ public static function getInfo() {
   protected function setUp() {
     parent::setUp();
 
-    $field = array(
+    $this->field = entity_create('field_entity', array(
       'field_name' => strtolower($this->randomName()),
       'type' => 'text'
-    );
-
-    $this->field = field_create_field($field);
+    ));
+    $this->field->save();
 
-    $instance = array(
-      'field_name' => $field['field_name'],
+    entity_create('field_instance', array(
+      'field_name' => $this->field['field_name'],
       'entity_type' => 'contact_message',
       'bundle' => 'contact_message',
-    );
-    field_create_instance($instance);
+    ))->save();
 
     $this->container->get('views.views_data')->clear();
   }
diff --git a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php
index dd7712e..c740898 100644
--- a/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php
+++ b/core/modules/datetime/lib/Drupal/datetime/Tests/DatetimeFieldTest.php
@@ -49,12 +49,13 @@ function setUp() {
     $this->drupalLogin($web_user);
 
     // Create a field with settings to validate.
-    $this->field = field_create_field(array(
+    $this->field = entity_create('field_entity', array(
       'field_name' => drupal_strtolower($this->randomName()),
       'type' => 'datetime',
       'settings' => array('datetime_type' => 'date'),
     ));
-    $this->instance = field_create_instance(array(
+    $this->field->save();
+    $this->instance = entity_create('field_instance', array(
       'field_name' => $this->field['field_name'],
       'entity_type' => 'test_entity',
       'bundle' => 'test_bundle',
@@ -62,6 +63,7 @@ function setUp() {
         'default_value' => 'blank',
       ),
     ));
+    $this->instance->save();
 
     entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
       ->setComponent($this->field['field_name'], array(
@@ -151,7 +153,7 @@ function testDatetimeField() {
 
     // Change the field to a datetime field.
     $this->field['settings']['datetime_type'] = 'datetime';
-    field_update_field($this->field);
+    $this->field->save();
 
     // Display creation form.
     $this->drupalGet('test-entity/add/test_bundle');
@@ -218,7 +220,7 @@ function testDatelistWidget() {
 
     // Change the field to a datetime field.
     $this->field['settings']['datetime_type'] = 'datetime';
-    field_update_field($this->field);
+    $this->field->save();
 
     // Change the widget to a datelist widget.
     entity_get_form_display($this->instance['entity_type'], $this->instance['bundle'], 'default')
@@ -283,12 +285,12 @@ function testDefaultValue() {
 
     // Change the field to a datetime field.
     $this->field['settings']['datetime_type'] = 'datetime';
-    field_update_field($this->field);
+    $this->field->save();
 
     // Set the default value to 'now'.
     $this->instance['settings']['default_value'] = 'now';
     $this->instance['default_value_function'] = 'datetime_default_value';
-    field_update_instance($this->instance);
+    $this->instance->save();
 
     // Display creation form.
     $date = new DrupalDateTime();
@@ -306,7 +308,7 @@ function testDefaultValue() {
     // Set the default value to 'blank'.
     $this->instance['settings']['default_value'] = 'blank';
     $this->instance['default_value_function'] = 'datetime_default_value';
-    field_update_instance($this->instance);
+    $this->instance->save();
 
     // Display creation form.
     $date = new DrupalDateTime();
@@ -324,7 +326,7 @@ function testInvalidField() {
 
     // Change the field to a datetime field.
     $this->field['settings']['datetime_type'] = 'datetime';
-    field_update_field($this->field);
+    $this->field->save();
 
     // Display creation form.
     $this->drupalGet('test-entity/add/test_bundle');
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php b/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php
index 30aec3f..8c455f0 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/EditTestBase.php
@@ -59,10 +59,11 @@ function createFieldWithInstance($field_name, $type, $cardinality, $label, $inst
       'type' => $type,
       'cardinality' => $cardinality,
     );
-    $this->$field = field_create_field($this->field);
+    $this->$field = entity_create('field_entity', $this->field);
+    $this->$field->save();
 
     $instance = $field_name . '_instance';
-    $this->$instance = array(
+    $this->$instance = entity_create('field_instance', array(
       'field_name' => $field_name,
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
@@ -70,8 +71,8 @@ function createFieldWithInstance($field_name, $type, $cardinality, $label, $inst
       'description' => $label,
       'weight' => mt_rand(0, 127),
       'settings' => $instance_settings,
-    );
-    field_create_instance($this->$instance);
+    ));
+    $this->$instance->save();
 
     entity_get_form_display('entity_test', 'entity_test', 'default')
       ->setComponent($field_name, array(
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
index 432c2be..e78ad0f 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
@@ -80,23 +80,23 @@ function testText() {
 
     // Editor selection with text processing, cardinality 1.
     $this->field_text_instance['settings']['text_processing'] = 1;
-    field_update_instance($this->field_text_instance);
+    $this->field_text_instance->save();
     $this->assertEqual('form', $this->getSelectedEditor($items, $field_name), "With text processing, cardinality 1, the 'form' editor is selected.");
 
     // Editor selection without text processing, cardinality 1 (again).
     $this->field_text_instance['settings']['text_processing'] = 0;
-    field_update_instance($this->field_text_instance);
+    $this->field_text_instance->save();
     $this->assertEqual('direct', $this->getSelectedEditor($items, $field_name), "Without text processing again, cardinality 1, the 'direct' editor is selected.");
 
     // Editor selection without text processing, cardinality >1
     $this->field_text_field['cardinality'] = 2;
-    field_update_field($this->field_text_field);
+    $this->field_text_field->save();
     $items[] = array('value' => 'Hallo, wereld!', 'format' => 'full_html');
     $this->assertEqual('form', $this->getSelectedEditor($items, $field_name), "Without text processing, cardinality >1, the 'form' editor is selected.");
 
     // Editor selection with text processing, cardinality >1
     $this->field_text_instance['settings']['text_processing'] = 1;
-    field_update_instance($this->field_text_instance);
+    $this->field_text_instance->save();
     $this->assertEqual('form', $this->getSelectedEditor($items, $field_name), "With text processing, cardinality >1, the 'form' editor is selected.");
   }
 
@@ -134,7 +134,7 @@ function testTextWysiwyg() {
 
     // Editor selection with text processing, cardinality >1
     $this->field_textarea_field['cardinality'] = 2;
-    field_update_field($this->field_textarea_field);
+    $this->field_textarea_field->save();
     $items[] = array('value' => 'Hallo, wereld!', 'format' => 'full_html');
     $this->assertEqual('form', $this->getSelectedEditor($items, $field_name), "With cardinality >1, and both items using the full_html text format, the 'form' editor is selected.");
   }
@@ -164,7 +164,7 @@ function testNumber() {
 
     // Editor selection with cardinality >1.
     $this->field_nr_field['cardinality'] = 2;
-    field_update_field($this->field_nr_field);
+    $this->field_nr_field->save();
     $this->assertEqual('form', $this->getSelectedEditor($items, $field_name), "With cardinality >1, the 'form' editor is selected.");
   }
 
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
index e1ee984..43c71ea 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditIntegrationTest.php
@@ -138,7 +138,7 @@ function testEditorSelection() {
 
     // Editor selection with text processing, cardinality >1
     $this->field_textarea_field['cardinality'] = 2;
-    field_update_field($this->field_textarea_field);
+    $this->field_textarea_field->save();
     $items[] = array('value' => 'Hallo, wereld!', 'format' => 'full_html');
     $this->assertEqual('form', $this->getSelectedEditor($items, $this->field_name), "With cardinality >1, and both items using the full_html text format, the 'form' editor is selected.");
   }
diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php b/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
index 50badce..e2afabe 100644
--- a/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
+++ b/core/modules/email/lib/Drupal/email/Tests/EmailFieldTest.php
@@ -50,13 +50,13 @@ function testEmailField() {
       'field_name' => drupal_strtolower($this->randomName()),
       'type' => 'email',
     );
-    field_create_field($this->field);
+    entity_create('field_entity', $this->field)->save();
     $this->instance = array(
       'field_name' => $this->field['field_name'],
       'entity_type' => 'test_entity',
       'bundle' => 'test_bundle',
     );
-    field_create_instance($this->instance);
+    entity_create('field_instance', $this->instance)->save();
 
     // Create a form display for the default form mode.
     entity_get_form_display('test_entity', 'test_bundle', 'default')
diff --git a/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php b/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php
index 1555b8d..9fc5bcc 100644
--- a/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php
+++ b/core/modules/email/lib/Drupal/email/Tests/EmailItemTest.php
@@ -39,13 +39,13 @@ public function setUp() {
       'field_name' => 'field_email',
       'type' => 'email',
     );
-    field_create_field($this->field);
+    entity_create('field_entity', $this->field)->save();
     $this->instance = array(
       'entity_type' => 'entity_test',
       'field_name' => 'field_email',
       'bundle' => 'entity_test',
     );
-    field_create_instance($this->instance);
+    entity_create('field_instance', $this->instance)->save();
 
     // Create a form display for the default form mode.
     entity_get_form_display('entity_test', 'entity_test', 'default')
diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php
index 051fb76..e33f487 100644
--- a/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php
+++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityDisplayTest.php
@@ -144,13 +144,13 @@ public function testFieldComponent() {
       'field_name' => 'test_field',
       'type' => 'test_field'
     );
-    field_create_field($field);
+    entity_create('field_entity', $field)->save();
     $instance = array(
       'field_name' => $field['field_name'],
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     );
-    field_create_instance($instance);
+    entity_create('field_instance', $instance)->save();
 
     // Check that providing no options results in default values being used.
     $display->setComponent($field['field_name']);
diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php
index b92cfbf..5d199ad 100644
--- a/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php
+++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityFormDisplayTest.php
@@ -66,13 +66,13 @@ public function testFieldComponent() {
       'field_name' => 'test_field',
       'type' => 'test_field'
     );
-    field_create_field($field);
+    entity_create('field_entity', $field)->save();
     $instance = array(
       'field_name' => $field['field_name'],
       'entity_type' => 'entity_test',
       'bundle' => 'entity_test',
     );
-    field_create_instance($instance);
+    entity_create('field_instance', $instance)->save();
 
     // Check that providing no options results in default values being used.
     $form_display->setComponent($field['field_name']);
diff --git a/core/modules/entity_reference/entity_reference.module b/core/modules/entity_reference/entity_reference.module
index 3c68c46..2e47c31 100644
--- a/core/modules/entity_reference/entity_reference.module
+++ b/core/modules/entity_reference/entity_reference.module
@@ -218,7 +218,7 @@ function entity_reference_field_update_field($field, $prior_field, $has_data) {
     foreach ($bundles as $bundle) {
       $instance = field_info_instance($entity_type, $field_name, $bundle);
       $instance['settings']['handler_settings'] = array();
-      field_update_instance($instance);
+      $instance->save();
     }
   }
 }
@@ -453,7 +453,7 @@ function entity_reference_create_instance($entity_type, $bundle, $field_name, $f
         'target_type' => $target_entity_type,
       ),
     );
-    field_create_field($field);
+    entity_create('field_entity', $field)->save();
   }
 
   if (empty($instance)) {
@@ -467,6 +467,7 @@ function entity_reference_create_instance($entity_type, $bundle, $field_name, $f
         'handler_settings' => $selection_handler_settings,
       ),
     );
-    field_create_instance($instance);
+    entity_create('field_instance', $instance)->save();
   }
 }
+
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php
index b6bb5aa..6efe285 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceAutoCreateTest.php
@@ -46,7 +46,7 @@ function setUp() {
       'cardinality' => FIELD_CARDINALITY_UNLIMITED,
     );
 
-    field_create_field($field);
+    entity_create('field_entity', $field)->save();
 
     $instance = array(
       'label' => 'Entity reference field',
@@ -66,7 +66,7 @@ function setUp() {
       ),
     );
 
-    field_create_instance($instance);
+    entity_create('field_instance', $instance)->save();
 
     entity_get_form_display('node', $referencing->type, 'default')
       ->setComponent('test_field', array(
diff --git a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceSelectionSortTest.php b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceSelectionSortTest.php
index d3245e0..253249d 100644
--- a/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceSelectionSortTest.php
+++ b/core/modules/entity_reference/lib/Drupal/entity_reference/Tests/EntityReferenceSelectionSortTest.php
@@ -41,7 +41,7 @@ public function testSort() {
       'type' => 'text',
       'entity_types' => array('node'),
     );
-    field_create_field($field_info);
+    entity_create('field_entity', $field_info)->save();
 
     $instance_info = array(
       'label' => 'Text Field',
@@ -51,7 +51,7 @@ public function testSort() {
       'settings' => array(),
       'required' => FALSE,
     );
-    field_create_instance($instance_info);
+    entity_create('field_instance', $instance_info)->save();
 
 
     // Build a fake field instance.
