diff --git a/src/EntityRoutingMapBase.php b/src/EntityRoutingMapBase.php
index cc211c6..c042aa9 100644
--- a/src/EntityRoutingMapBase.php
+++ b/src/EntityRoutingMapBase.php
@@ -3,6 +3,7 @@
 namespace Drupal\form_mode_manager;
 
 use Drupal\Component\Plugin\PluginBase;
+use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
@@ -19,6 +20,7 @@ use Drupal\Core\StringTranslation\StringTranslationTrait;
  * retrieving each possible cases.
  */
 abstract class EntityRoutingMapBase extends PluginBase implements EntityRoutingMapInterface, ContainerFactoryPluginInterface {
+
   use StringTranslationTrait;
 
   /**
@@ -50,6 +52,13 @@ abstract class EntityRoutingMapBase extends PluginBase implements EntityRoutingM
   protected $targetEntityType;
 
   /**
+   * The entity type manager service.
+   *
+   * @var \Drupal\Core\Entity\EntityTypeManagerInterface
+   */
+  protected $entityTypeManager;
+
+  /**
    * Constructs display plugin.
    *
    * @param array $configuration
@@ -58,13 +67,16 @@ abstract class EntityRoutingMapBase extends PluginBase implements EntityRoutingM
    *   The plugin_id for the plugin instance.
    * @param mixed $plugin_definition
    *   The plugin implementation definition.
+   * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
+   *   The entity type manager.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager) {
     parent::__construct($configuration, $plugin_id, $plugin_definition);
+    $this->entityTypeManager = $entity_type_manager;
+    $this->setTargetEntityType();
     $this->setConfiguration($configuration);
     $this->setDefaultFormClass();
     $this->setEditFormClass();
-    $this->setTargetEntityType();
   }
 
   /**
@@ -74,7 +86,8 @@ abstract class EntityRoutingMapBase extends PluginBase implements EntityRoutingM
     return new static(
       $configuration,
       $plugin_id,
-      $plugin_definition
+      $plugin_definition,
+      $container->get('entity_type.manager')
     );
   }
 
@@ -151,7 +164,27 @@ abstract class EntityRoutingMapBase extends PluginBase implements EntityRoutingM
    * {@inheritdoc}
    */
   public function setEditFormClass() {
-    $this->editFormClass = $this->pluginDefinition['editFormClass'];
+    $edit_form_operation = $this->pluginDefinition['editFormClass'];
+
+    if (!$this->entityFormClassExist($edit_form_operation)) {
+      $edit_form_operation = $this->getDefaultFormClass();
+    }
+
+    $this->editFormClass = $edit_form_operation;
+  }
+
+  /**
+   * Check if the entity have an edit operation handler.
+   *
+   * @param string $operation_name
+   *   The name of form handler operation.
+   *
+   * @return bool
+   *   True if generic `edit` form handler exist for this entity.
+   */
+  public function entityFormClassExist($operation_name) {
+    $entity_definition = $this->entityTypeManager->getDefinition($this->getTargetEntityType());
+    return !empty($entity_definition->getFormClass($operation_name));
   }
 
   /**
