diff --git a/src/FieldUtilsTrait.php b/src/FieldUtilsTrait.php
index dac4008..42ea250 100644
--- a/src/FieldUtilsTrait.php
+++ b/src/FieldUtilsTrait.php
@@ -37,7 +37,7 @@ trait FieldUtilsTrait {
   protected function getDestinationFields($entity_type_id, FieldConfig $source_field = NULL) {
     $destination_fields = [];
 
-    $fields = $this->FieldManager()->getFieldStorageDefinitions($entity_type_id);
+    $fields = $this->FieldManager()->getBaseFieldDefinitions($entity_type_id);
     foreach ($fields as $field_id => $field) {
       if ($this->isDestinationFieldCompatible($field, $source_field)) {
         $destination_fields[$field_id] = $field;
@@ -100,7 +100,7 @@ trait FieldUtilsTrait {
    */
   protected function isDestinationFieldCompatible(FieldStorageDefinitionInterface $definition, FieldDefinitionInterface $source_field = NULL) {
     // @todo Create field definition wrapper class to treat FieldDefinitionInterface and FieldStorageDefinitionInterface the same.
-    if ($definition instanceof BaseFieldDefinition && $definition->isReadOnly()) {
+    if ($definition->getName() != 'moderation_state' && $definition instanceof BaseFieldDefinition && $definition->isReadOnly()) {
       return FALSE;
     }
     // Don't allow updates on updates!
