diff --git a/sources/content/config/install/tmgmt_content.settings.yml b/sources/content/config/install/tmgmt_content.settings.yml
new file mode 100644
index 0000000..e69de29
diff --git a/sources/content/config/schema/tmgmt_content.schema.yml b/sources/content/config/schema/tmgmt_content.schema.yml
new file mode 100644
index 0000000..4ba82c5
--- /dev/null
+++ b/sources/content/config/schema/tmgmt_content.schema.yml
@@ -0,0 +1,10 @@
+tmgmt_content.settings:
+  type: mapping
+  mapping:
+    embedded_fields:
+      label: 'Embedded fields'
+      type: sequence
+      sequence:
+        type: sequence
+        sequence:
+          type: boolean
diff --git a/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php b/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
index 3f675ed..65669b1 100644
--- a/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
+++ b/sources/content/src/Plugin/tmgmt/Source/ContentEntitySource.php
@@ -7,6 +7,8 @@
 
 namespace Drupal\tmgmt_content\Plugin\tmgmt\Source;
 
+use Drupal\Core\Entity\ContentEntityInterface;
+use Drupal\Core\Entity\Plugin\DataType\EntityReference;
 use Drupal\Core\Field\FieldDefinitionInterface;
 use Drupal\Core\Field\FieldItemInterface;
 use Drupal\Core\TypedData\OptionsProviderInterface;
@@ -63,35 +65,42 @@ class ContentEntitySource extends SourcePluginBase {
     if (!isset($languages[$id])) {
       throw new TMGMTException(t('Entity %entity could not be translated because the language %language is not applicable', array('%entity' => $entity->language()->getId(), '%language' => $entity->language()->getName())));
     }
-    $field_definitions = $entity->getFieldDefinitions();
 
     if (!$entity->hasTranslation($job_item->getJob()->getSourceLangcode())) {
       throw new TMGMTException(t('The entity %id with translation %lang does not exist.', array('%id' => $entity->id(), '%lang' => $job_item->getJob()->getSourceLangcode())));
     }
 
+    $translation = $entity->getTranslation($job_item->getJob()->getSourceLangcode());
+    $data = $this->extractTranslatableData($translation);
+    return $data;
+  }
+
+  /**
+   * Function that gets all the translatable data.
+   *
+   * @param \Drupal\Core\TypedData\TranslatableInterface $translation
+   */
+  public function extractTranslatableData(ContentEntityInterface $translation) {
+
     // @todo Expand this list or find a better solution to exclude fields like
     //   content_translation_source.
+
+    $field_definitions = $translation->getFieldDefinitions();
     $exclude_field_types = ['language'];
     $translatable_fields = array_filter($field_definitions, function (FieldDefinitionInterface $field_definition) use ($exclude_field_types) {
-      return $field_definition->isTranslatable() && !in_array($field_definition->getType(), $exclude_field_types);
+        return $field_definition->isTranslatable() && !in_array($field_definition->getType(), $exclude_field_types);
     });
 
     $data = array();
-    $translation = $entity->getTranslation($job_item->getJob()->getSourceLangcode());
     foreach ($translatable_fields as $key => $field_definition) {
       $field = $translation->get($key);
-      $data[$key]['#label'] = $field_definition->getLabel();
       foreach ($field as $index => $field_item) {
-        $data[$key][$index]['#label'] = t('Delta #@delta', array('@delta' => $index));
         $format = NULL;
         /* @var FieldItemInterface $field_item */
         foreach ($field_item->getProperties() as $property_key => $property) {
           // Ignore computed values.
           $property_definition = $property->getDataDefinition();
-          if (($property_definition->isComputed())) {
-            continue;
-          }
-          // Ignore values that are not primitves.
+          // Ignore values that are not primitives.
           if (!($property instanceof PrimitiveInterface)) {
             continue;
           }
@@ -100,17 +109,24 @@ class ContentEntitySource extends SourcePluginBase {
           if ($property instanceof OptionsProviderInterface || !($property instanceof StringInterface)) {
             $translate = FALSE;
           }
+          // All the labels are here, to make sure we don't have empty labels in
+          // the UI because of no data.
+          if ($translate == TRUE) {
+            $data[$key]['#label'] = $field_definition->getLabel();
+            $data[$key][$index]['#label'] = t('Delta #@delta', array('@delta' => $index));
+          }
           $data[$key][$index][$property_key] = array(
             '#label' => $property_definition->getLabel(),
             '#text' => $property->getValue(),
             '#translate' => $translate,
           );
-          if($property_definition->getDataType() == 'filter_format'){
+
+          if ($property_definition->getDataType() == 'filter_format') {
             $format = $property->getValue();
           }
         }
         // Add the format to the translatable properties.
-        if(!empty($format)) {
+        if (!empty($format)) {
           foreach ($data[$key][$index] as $name => $value) {
             if (isset($value['#translate']) && $value['#translate'] == TRUE) {
               $data[$key][$index][$name]['#format'] = $format;
@@ -119,6 +135,31 @@ class ContentEntitySource extends SourcePluginBase {
         }
       }
     }
+
+    $untranslatable_fields = array_filter($field_definitions, function (FieldDefinitionInterface $field_definition) use ($exclude_field_types) {
+      return !($field_definition->isTranslatable()) && !in_array($field_definition->getType(), $exclude_field_types);
+    });
+    foreach ($untranslatable_fields as $key => $field_definition) {
+      $field = $translation->get($key);
+      foreach ($field as $index => $field_item) {
+        $format = NULL;
+
+        /* @var FieldItemInterface $field_item */
+        foreach ($field_item->getProperties(TRUE) as $property_key => $property) {
+          // If the property is a content entity reference and it's value is
+          // defined, than we call this method again to get all the data.
+          if ($property instanceof EntityReference) {
+            if ($property->getValue() instanceof ContentEntityInterface) {
+              // All the labels are here, to make sure we don't have empty
+              // labels in the UI because of no data.
+              $data[$key]['#label'] = $field_definition->getLabel();
+              $data[$key][$index]['#label'] = t('Delta #@delta', array('@delta' => $index));
+              $data[$key][$index][$property_key] = $this->extractTranslatableData($property->getValue());
+            }
+          }
+        }
+      }
+    }
     return $data;
   }
 
diff --git a/sources/content/src/Tests/ContentEntitySourceUiTest.php b/sources/content/src/Tests/ContentEntitySourceUiTest.php
index a982f68..f1a489f 100644
--- a/sources/content/src/Tests/ContentEntitySourceUiTest.php
+++ b/sources/content/src/Tests/ContentEntitySourceUiTest.php
@@ -341,4 +341,27 @@ class ContentEntitySourceUiTest extends EntityTestBase {
     $this->assertRaw(t('There are @count items in the <a href="@url">translation cart</a> including the current item.',
         array('@count' => 3, '@url' => Url::fromRoute('tmgmt.cart')->toString())));
   }
+
+  /**
+   * Tests the embedded references.
+   */
+  function testEmbeddedReferences() {
+
+    $this->drupalGet('admin/config/regional/tmgmt_settings');
+
+    $checked_reference_fields = array(
+      'embedded_fields[node][type]' => TRUE,
+      'embedded_fields[node][uid]' => TRUE,
+    );
+
+    $this->drupalPostForm(NULL, $checked_reference_fields, t('Save configuration'));
+
+    // Check if the save was successful.
+    $this->assertText(t('The configuration options have been saved.'));
+    // Check if the saved reference fields are checked.
+    $rows = $this->xpath('//div[@id="edit-embedded-fields-node"]/div/input[@checked="checked"]/@value');
+    foreach ($rows as $value) {
+      $this->assertEqual('type' || 'uid ', (string) $value->value);
+    }
+  }
 }
diff --git a/sources/content/tmgmt_content.module b/sources/content/tmgmt_content.module
index 8cc5fb4..ec0630e 100644
--- a/sources/content/tmgmt_content.module
+++ b/sources/content/tmgmt_content.module
@@ -7,6 +7,8 @@
 use Drupal\Core\Entity\Plugin\DataType\EntityReference;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\tmgmt\JobInterface;
+use \Drupal\Core\TypedData\DataReferenceDefinition;
+use \Drupal\field\FieldStorageConfigInterface;
 
 /**
  * Implements hook_tmgmt_source_suggestions()
@@ -54,3 +56,86 @@ function tmgmt_content_tmgmt_source_suggestions(array $items, JobInterface $job)
 
   return $suggestions;
 }
+
+  /**
+   * Implements hook_form_FORM_ID_alter() for tmgmt_settings_form().
+   *
+   * @param array $form
+   * @param \Drupal\Core\Form\FormStateInterface $form_state
+   */
+function tmgmt_content_form_tmgmt_settings_form_alter(array &$form, FormStateInterface $form_state) {
+  module_load_include('inc', 'views', 'views.views');
+  $entity_types = \Drupal::entityManager()->getDefinitions();
+
+  $form['content']['embedded_fields'] = array(
+    '#type' => 'details',
+    '#title' => t('Embedded references'),
+    '#description' => t('All checked reference fields will automatically add the translatable data of the reference to the job.'),
+    '#tree' => TRUE,
+    '#open' => TRUE,
+  );
+
+  foreach ($entity_types as $entity_type) {
+    $field_options = array();
+    $content_translation_manager = \Drupal::service('content_translation.manager');
+    if ($content_translation_manager->isEnabled($entity_type->id())) {
+      $storage_definitions = \Drupal::entityManager()->getFieldStorageDefinitions($entity_type->id());
+
+      foreach ($storage_definitions as $storage_definition) {
+        $property_definitions = $storage_definition->getPropertyDefinitions();
+        foreach ($property_definitions as $property_definition) {
+          if ($property_definition->getDataType() == 'entity_reference') {
+            if ($storage_definition instanceof FieldStorageConfigInterface) {
+              list($label) = views_entity_field_label($entity_type->id(), $storage_definition->getName());
+              $field_options[$storage_definition->getName()] = $label;
+            }
+            else {
+              $field_options[$storage_definition->getName()] = $storage_definition->getLabel();
+            }
+            break;
+          }
+        }
+      }
+      if (!empty($field_options)) {
+        if (\Drupal::config('tmgmt_content.settings')->get('embedded_fields.' . $entity_type->id())) {
+          $form['content']['embedded_fields'][$entity_type->id()] = array(
+            '#type' => 'checkboxes',
+            '#title' => $entity_type->getLabel(),
+            '#options' => $field_options,
+            '#default_value' => array_keys(\Drupal::config('tmgmt_content.settings')->get('embedded_fields.' . $entity_type->id())),
+          );
+        }
+        else {
+          $form['content']['embedded_fields'][$entity_type->id()] = array(
+            '#type' => 'checkboxes',
+            '#title' => $entity_type->getLabel(),
+            '#options' => $field_options,
+          );
+        }
+
+      }
+    }
+  }
+
+  $form['#submit'][] = 'tmgmt_content_settings_submit';
+}
+
+/**
+ * Submit function.
+ *
+ * @param array $form
+ * @param \Drupal\Core\Form\FormStateInterface $form_state
+ */
+function tmgmt_content_settings_submit(array &$form, FormStateInterface $form_state) {
+  $embedded_fields = array();
+  foreach ($form_state->getValue('embedded_fields') as $key=>$fields) {
+    foreach (array_filter($fields) as $id=>$label) {
+      $embedded_fields[$key][$id] = TRUE;
+    }
+  }
+
+  \Drupal::configFactory()->getEditable('tmgmt_content.settings')
+    ->set('embedded_fields', $embedded_fields)
+    ->save();
+}
+
