diff --git a/includes/data_entity.inline_entity_form.inc b/includes/data_entity.inline_entity_form.inc
new file mode 100644
index 00000000..28267fad
--- /dev/null
+++ b/includes/data_entity.inline_entity_form.inc
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * @file
+ * Defines the inline entity form controller for Taxonomy terms.
+ */
+
+class DataEntityInlineEntityFormController extends EntityInlineEntityFormController {
+
+  public function entityForm($entity_form, &$form_state) {
+    module_load_include('inc', 'data_entity', 'data_entity.pages');
+    $temp_form = array();
+    $temp_form = data_entity_entity_edit_form($temp_form, $form_state, data_get_table(substr($entity_form['#entity_type'], 5)), $entity_form['#entity']);
+    $entity_form = array_merge($temp_form, $entity_form);
+    unset($entity_form['save']);
+    return parent::entityForm($entity_form, $form_state);
+  }
+
+  public function entityFormSubmit(&$entity_form, &$form_state) {
+    parent::entityFormSubmit($entity_form, $form_state);
+
+    module_load_include('inc', 'data_entity', 'data_entity.pages');
+    $field = current($form_state['inline_entity_form']);
+    $field = $field['instance']['field_name'];
+
+    if (isset($entity_form['#entity']->is_new)) {
+      $entity_form['#entity']->entity_type = $entity_form['#entity_type'];
+
+      $form_state['values']['data'] = $form_state['values'][$field]['und']['form']['data'];
+      $form_state['values']['table'] = $form_state['values'][$field]['und']['form']['table'];
+    }
+    else {
+      $index = explode('-', $form_state['clicked_button']['#name']);
+      $index = end($index);
+
+      $form_state['values']['data'] = $form_state['values'][$field]['und']['entities'][$index]['form']['data'];
+      $form_state['values']['table'] = $form_state['values'][$field]['und']['entities'][$index]['form']['table'];
+    }
+    foreach ($form_state['values']['data'] as $attr => $datum) {
+      $entity_form['#entity']->$attr = $datum;
+    }
+    data_entity_entity_edit_form_submit($entity_form, $form_state);
+  }
+}
diff --git a/inline_entity_form.info b/inline_entity_form.info
index 7452543c..21791bdc 100644
--- a/inline_entity_form.info
+++ b/inline_entity_form.info
@@ -12,6 +12,7 @@ files[] = includes/node.inline_entity_form.inc
 files[] = includes/taxonomy_term.inline_entity_form.inc
 files[] = includes/commerce_product.inline_entity_form.inc
 files[] = includes/commerce_line_item.inline_entity_form.inc
+files[] = includes/data_entity.inline_entity_form.inc
 files[] = tests/inline_entity_form_test_base.test
 files[] = tests/multiple_values_widget.test
 
diff --git a/inline_entity_form.module b/inline_entity_form.module
index 66424096..fe29c2ea 100644
--- a/inline_entity_form.module
+++ b/inline_entity_form.module
@@ -127,6 +127,15 @@ function inline_entity_form_entity_info_alter(&$entity_info) {
       'controller' => 'CommerceLineItemInlineEntityFormController',
     );
   }
+
+  if (module_exists('data_entity')) {
+    $tables = data_entity_get_entity_tables();
+    foreach ($tables as $table_name => $table) {
+      if (isset($entity_info['data_' . $table_name])) {
+        $entity_info['data_' . $table_name]['inline entity form']['controller'] = 'DataEntityInlineEntityFormController';
+      }
+    }
+  }
 }
 
 /**
