diff --git a/src/Controller/TaxonomiesController.php b/src/Controller/TaxonomiesController.php
index 50aa309e152b2fdb9dd352f15ca7421f3f4a8382..678101bbc5e79f7f8fce3436e23fe8de8a3a0db1 100755
--- a/src/Controller/TaxonomiesController.php
+++ b/src/Controller/TaxonomiesController.php
@@ -6,20 +6,37 @@
 use Drupal\structure_sync\StructureSyncHelper;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\taxonomy\Entity\Term;
+use Drupal\Core\Entity\EntityFieldManagerInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Controller for syncing taxonomy terms.
  */
 class TaxonomiesController extends ControllerBase {
 
+  /**
+   * The entity field manager.
+   *
+   * @var \Drupal\Core\Entity\EntityFieldManagerInterface
+   */
+  protected $entityFieldManager;
+
   private $config;
 
   /**
    * Constructor for taxonomies controller.
    */
-  public function __construct() {
+  public function __construct(EntityFieldManagerInterface $entity_field_manager) {
     $this->config = $this->getEditableConfig();
     $this->entityTypeManager();
+    $this->entityFieldManager = $entity_field_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    return new static($container->get('entity_field.manager'));
   }
 
   /**
@@ -101,8 +118,7 @@ public function exportTaxonomies(array $form = NULL, FormStateInterface $form_st
         $entity_field_names = [];
         $all_term_fields = $entity->getFields();
         foreach ($all_term_fields as $field_name => $field) {
-          $is_custom_field = 'field_' === substr($field_name, 0, 6);
-          if ($is_custom_field) {
+          if ($this->isCustomField($vocabulary, $field_name)) {
             $entity_field_names[] = $field_name;
           }
         }
@@ -212,18 +228,18 @@ public function importTaxonomies(array $form, FormStateInterface $form_state = N
       switch ($style) {
         case 'full':
           self::deleteDeletedTaxonomies($taxonomies, $context);
-          self::importTaxonomiesFull($taxonomies, $context);
+          $this->importTaxonomiesFull($taxonomies, $context);
           self::taxonomiesImportFinishedCallback(NULL, NULL, NULL);
           break;
 
         case 'safe':
-          self::importTaxonomiesSafe($taxonomies, $context);
+          $this->importTaxonomiesSafe($taxonomies, $context);
           self::taxonomiesImportFinishedCallback(NULL, NULL, NULL);
           break;
 
         case 'force':
           self::deleteTaxonomies($context);
-          self::importTaxonomiesForce($taxonomies, $context);
+          $this->importTaxonomiesForce($taxonomies, $context);
           self::taxonomiesImportFinishedCallback(NULL, NULL, NULL);
           break;
       }
@@ -322,7 +338,7 @@ public static function deleteDeletedTaxonomies($taxonomies, &$context) {
    * Basically a safe import with update actions for already existing taxonomy
    * terms.
    */
-  public static function importTaxonomiesFull($taxonomies, &$context) {
+  public function importTaxonomiesFull($taxonomies, &$context) {
     $uuidsInConfig = [];
     foreach ($taxonomies as $voc) {
       foreach ($voc as $taxonomy) {
@@ -363,8 +379,7 @@ public static function importTaxonomiesFull($taxonomies, &$context) {
             // terms.
             $entity_fields = [];
             foreach ($taxonomy as $field_name => $field_value) {
-              $is_custom_field = 'field_' === substr($field_name, 0, 6);
-              if ($is_custom_field) {
+              if ($this->isCustomField($vid, $field_name)) {
                 $not_term_reference = empty($field_value[0]['vid']);
 
                 if ($not_term_reference) {
@@ -486,7 +501,7 @@ public static function importTaxonomiesFull($taxonomies, &$context) {
         StructureSyncHelper::logMessage('Running additional full import'
           . ' after all terms have been created in order to identify missing '
           . ' TIDs for term reference fields.');
-        Self::importTaxonomiesFull($taxonomies, $context);
+        $this->importTaxonomiesFull($taxonomies, $context);
       }
 
       $firstRun = FALSE;
@@ -510,7 +525,7 @@ public static function importTaxonomiesFull($taxonomies, &$context) {
    * Safely meaning that it should only add what isn't already there and not
    * delete and/or update any terms.
    */
-  public static function importTaxonomiesSafe($taxonomies, &$context) {
+  public function importTaxonomiesSafe($taxonomies, &$context) {
     $tidsDone = [];
     $tidsLeft = [];
     $newTids = [];
@@ -553,8 +568,7 @@ public static function importTaxonomiesSafe($taxonomies, &$context) {
                 // terms.
                 $entity_fields = [];
                 foreach ($taxonomy as $field_name => $field_value) {
-                  $is_custom_field = 'field_' === substr($field_name, 0, 6);
-                  if ($is_custom_field) {
+                  if ($this->isCustomField($vid, $field_name)) {
                     $not_term_reference = empty($field_value[0]['vid']);
 
                     if ($not_term_reference) {
@@ -654,7 +668,7 @@ public static function importTaxonomiesSafe($taxonomies, &$context) {
         StructureSyncHelper::logMessage('Running additional full import'
           . ' after all terms have been created in order to identify missing '
           . ' TIDs for term reference fields.');
-        Self::importTaxonomiesFull($taxonomies, $context);
+        $this->importTaxonomiesFull($taxonomies, $context);
       }
 
       $firstRun = FALSE;
@@ -683,7 +697,7 @@ public static function deleteTaxonomies(&$context) {
   /**
    * Function to import (create) all taxonomies that need to be imported.
    */
-  public static function importTaxonomiesForce($taxonomies, &$context) {
+  public function importTaxonomiesForce($taxonomies, &$context) {
     $tidsDone = [];
     $tidsLeft = [];
     $newTids = [];
@@ -720,8 +734,7 @@ public static function importTaxonomiesForce($taxonomies, &$context) {
               // terms.
               $entity_fields = [];
               foreach ($taxonomy as $field_name => $field_value) {
-                $is_custom_field = 'field_' === substr($field_name, 0, 6);
-                if ($is_custom_field) {
+                if ($this->isCustomField($vid, $field_name)) {
                   $not_term_reference = empty($field_value[0]['vid']);
 
                   if ($not_term_reference) {
@@ -804,7 +817,7 @@ public static function importTaxonomiesForce($taxonomies, &$context) {
         StructureSyncHelper::logMessage('Running additional full import'
           . ' after all terms have been created in order to identify missing '
           . ' TIDs for term reference fields.');
-        Self::importTaxonomiesFull($taxonomies, $context);
+        $this->importTaxonomiesFull($taxonomies, $context);
       }
 
       $firstRun = FALSE;
@@ -822,4 +835,14 @@ public static function taxonomiesImportFinishedCallback($success, $results, $ope
     drupal_set_message(t('Successfully imported taxonomies'));
   }
 
+  /**
+   * Determines if the field name is a custom field.
+   */
+  private function isCustomField($entity_bundle_id, $field_name) {
+    $base_field_definitions = $this->entityFieldManager->getBaseFieldDefinitions('taxonomy_term');
+    $field_definitions = $this->entityFieldManager->getFieldDefinitions('taxonomy_term', $entity_bundle_id);
+
+    return isset($field_definitions[$field_name]) && !isset($base_field_definitions[$field_name]);
+  }
+
 }
diff --git a/src/StructureSyncHelper.php b/src/StructureSyncHelper.php
index 678a6031a9c51b93a232f589e1b8be9eb8e914ba..b6f35eb0f1ca9f292f247b626a75bf0f04e8ab75 100755
--- a/src/StructureSyncHelper.php
+++ b/src/StructureSyncHelper.php
@@ -16,7 +16,7 @@ class StructureSyncHelper {
    * Function to export taxonomy terms.
    */
   public static function exportTaxonomies(array $form = NULL, FormStateInterface $form_state = NULL) {
-    $taxonomiesController = new TaxonomiesController();
+    $taxonomiesController = TaxonomiesController::create(\Drupal::getContainer());
     $taxonomiesController->exportTaxonomies($form, $form_state);
   }
 
@@ -44,7 +44,7 @@ public static function exportMenuLinks(array $form = NULL, FormStateInterface $f
    * 'safe' or 'force' to apply that import style.
    */
   public static function importTaxonomies(array $form, FormStateInterface $form_state = NULL) {
-    $taxonomiesController = new TaxonomiesController();
+    $taxonomiesController = TaxonomiesController::create(\Drupal::getContainer());
     $taxonomiesController->importTaxonomies($form, $form_state);
   }