diff --git a/core/lib/Drupal/Core/Entity/EntityFormBuilder.php b/core/lib/Drupal/Core/Entity/EntityFormBuilder.php
index ff4b917..853813b 100644
--- a/core/lib/Drupal/Core/Entity/EntityFormBuilder.php
+++ b/core/lib/Drupal/Core/Entity/EntityFormBuilder.php
@@ -40,8 +40,8 @@ public function __construct(EntityManagerInterface $entity_manager, FormBuilderI
   /**
    * {@inheritdoc}
    */
-  public function getForm(EntityInterface $entity, $operation = 'default', array $form_state_additions = array()) {
-    $form_object = $this->entityManager->getFormObject($entity->getEntityTypeId(), $operation);
+  public function getForm(EntityInterface $entity, $operation = 'default', array $form_state_additions = array(), $form_class = NULL) {
+    $form_object = $this->entityManager->getFormObject($entity->getEntityTypeId(), $operation, $form_class);
     $form_object->setEntity($entity);
 
     $form_state = (new FormState())->setFormState($form_state_additions);
diff --git a/core/lib/Drupal/Core/Entity/EntityTypeManager.php b/core/lib/Drupal/Core/Entity/EntityTypeManager.php
index abe96a5..de3cd78 100644
--- a/core/lib/Drupal/Core/Entity/EntityTypeManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityTypeManager.php
@@ -179,8 +179,11 @@ public function getListBuilder($entity_type) {
   /**
    * {@inheritdoc}
    */
-  public function getFormObject($entity_type, $operation) {
-    if (!$class = $this->getDefinition($entity_type, TRUE)->getFormClass($operation)) {
+  public function getFormObject($entity_type, $operation, $form_class = NULL) {
+    if (is_null($form_class)) {
+      $form_class = $operation;
+    }
+    if (!$class = $this->getDefinition($entity_type, TRUE)->getFormClass($form_class)) {
       throw new InvalidPluginDefinitionException($entity_type, sprintf('The "%s" entity type did not specify a "%s" form class.', $entity_type, $operation));
     }
 
