diff --git a/src/Form/ProcessMigrationForm.php b/src/Form/ProcessMigrationForm.php
index 9f3e9f1..4003b71 100644
--- a/src/Form/ProcessMigrationForm.php
+++ b/src/Form/ProcessMigrationForm.php
@@ -163,7 +163,7 @@ class ProcessMigrationForm extends MigrationEntityFormBase {
             '#disabled' => TRUE,
             '#default_value' => $process_array['plugin'],
           ],
-          'plugin_config' => $this->getProcessForm($process_array['plugin']),
+          'plugin_config' => $this->getProcessForm($process_array['plugin'], $form_state),
           'plugin_remove' => [
             '#type' => 'submit',
             '#name' => 'remove_' . $delta,
@@ -248,22 +248,10 @@ class ProcessMigrationForm extends MigrationEntityFormBase {
    * @return array
    *   An array representing the form for this process config.
    */
-  protected function getProcessForm($process_id) {
-    /** @var \Drupal\Core\Config\TypedConfigManager $config_manager */
-    $config_manager = \Drupal::service('config.typed');
-    $definition = $config_manager->getDefinition('migrate.process.' . $process_id);
-
-    // We don't need the plugin definition.
-    unset($definition['mapping']['plugin']);
-
-    $element = [];
-    foreach ($definition['mapping'] as $config_name => $config_info) {
-      $element[$config_name] = [
-        '#type' => 'textfield',
-        '#title' => $config_info['label'],
-      ];
-    }
-    return $element;
+  protected function getProcessForm($process_id, $form_state) {
+    $form = \Drupal::service('migrate_api.schema_form_builder')->getFormArray('migrate.process.' . $process_id, $form_state);
+    unset($form['plugin']);
+    return $form;
   }
 
   /**
