diff --git a/src/FieldUtilsTrait.php b/src/FieldUtilsTrait.php
index dac4008..cfc82ae 100644
--- a/src/FieldUtilsTrait.php
+++ b/src/FieldUtilsTrait.php
@@ -27,6 +27,26 @@ trait FieldUtilsTrait {
   }
 
   /**
+   * Return same like EntityFieldManager::getFieldStorageDefinitions() plus writable computed fields.
+   *
+   * @param $entity_type_id
+   *
+   * @return \Drupal\Core\Field\FieldStorageDefinitionInterface[]
+   */
+  protected function getFieldStorageDefinitions($entity_type_id) {
+
+    $fields = $this->FieldManager()->getFieldStorageDefinitions($entity_type_id);
+
+    foreach ($this->FieldManager()->getBaseFieldDefinitions($entity_type_id) as $field_name => $definition) {
+      if (!isset($fields[$field_name]) && !$definition->isReadOnly()) {
+        $fields[$field_name] = $definition;
+      }
+    }
+
+    return $fields;
+  }
+
+  /**
    * Return all fields that can be used as destinations fields.
    *
    * @param $entity_type_id
@@ -37,7 +57,7 @@ trait FieldUtilsTrait {
   protected function getDestinationFields($entity_type_id, FieldConfig $source_field = NULL) {
     $destination_fields = [];
 
-    $fields = $this->FieldManager()->getFieldStorageDefinitions($entity_type_id);
+    $fields = $this->getFieldStorageDefinitions($entity_type_id);
     foreach ($fields as $field_id => $field) {
       if ($this->isDestinationFieldCompatible($field, $source_field)) {
         $destination_fields[$field_id] = $field;
@@ -169,7 +189,7 @@ trait FieldUtilsTrait {
    * @return \Drupal\Core\Field\FieldStorageDefinitionInterface|null
    */
   protected function getFieldStorageDefinition($entity_type_id, $field_name) {
-    $definitions = $this->FieldManager()->getFieldStorageDefinitions($entity_type_id);
+    $definitions = $this->getFieldStorageDefinitions($entity_type_id);
     if (!isset($definitions[$field_name])) {
       return NULL;
     }
