diff --git a/src/Entity/Index.php b/src/Entity/Index.php
index afc39f8..4f69cf7 100644
--- a/src/Entity/Index.php
+++ b/src/Entity/Index.php
@@ -566,8 +566,9 @@ public function getProcessorsByStage($stage, $only_enabled = TRUE) {
     $processor_weights = array();
     foreach ($processors as $name => $processor) {
       if ($processor->supportsStage($stage)) {
-        if (!empty($processor_settings[$name]['settings']['weights'][$stage])) {
-          $processor_weights[$name] = $processor_settings[$name]['settings']['weights'][$stage];
+        $processor_settings = $processor->getConfiguration();
+        if (isset($processor_settings['weights'][$stage])) {
+          $processor_weights[$name] = $processor_settings['weights'][$stage];
         }
         else {
           $processor_weights[$name] = $processor->getDefaultWeight($stage);
diff --git a/src/Form/IndexProcessorsForm.php b/src/Form/IndexProcessorsForm.php
index a610efc..4f3585e 100644
--- a/src/Form/IndexProcessorsForm.php
+++ b/src/Form/IndexProcessorsForm.php
@@ -169,7 +169,8 @@ public function form(array $form, FormStateInterface $form_state) {
     foreach ($processors_by_stage as $stage => $processors) {
       /** @var \Drupal\search_api\Processor\ProcessorInterface $processor */
       foreach ($processors as $processor_id => $processor) {
-        $weight = $processor->getDefaultWeight($stage);
+        $config = $processor->getConfiguration();
+        $weight = isset($config['weights'][$stage]) ? $config['weights'][$stage]  : $processor->getDefaultWeight($stage);
         if ($processor->isHidden()) {
           $form['processors'][$processor_id]['weights'][$stage] = array(
             '#type' => 'value',
