diff --git a/propulsion_design/propulsion_design_conf.xml b/propulsion_design/propulsion_design_conf.xml
index 592f27398c22d3ea2f09c7cf644cc6c34bda3e91..23ff8a6e5dc2441f16d5f41d460c03d13b1ece73 100644
--- a/propulsion_design/propulsion_design_conf.xml
+++ b/propulsion_design/propulsion_design_conf.xml
@@ -86,7 +86,7 @@
 				<upper_boundary>+Inf</upper_boundary>
 				<lower_boundary>0.0</lower_boundary>
 			</pylon_mass>
-			<engine_efficiency>
+			<engine_efficiency  description="Increase or decrease the efficiency by manipulating the fuel flow (Efficiency increase (value higher than 1) -> decreased fuelflow).">
 				<value>1.0</value>
 				<unit>1</unit>
 				<upper_boundary>+Inf</upper_boundary>
diff --git a/propulsion_design/src/engine_design/engine_design.cpp b/propulsion_design/src/engine_design/engine_design.cpp
index 669d088b81fa682d16030ecc98ae76a51715d9b7..8fff672fb98fa96915107f7ff512e99ff7a54c10 100644
--- a/propulsion_design/src/engine_design/engine_design.cpp
+++ b/propulsion_design/src/engine_design/engine_design.cpp
@@ -30,13 +30,13 @@
 
 namespace design
 {
-    void EngineDesigner::write_deck_value(const DeckData &data) const
+    void EngineDesigner::write_deck_value(const DeckData &data, std::string engine_name) const
     {
         /* The deck values assume a ; as separator */
         constexpr char delimiter = ';';
 
         /* Get the file name to export to */
-        const std::filesystem::path file_name = engine_directory_ / (data.name + ".csv");
+        const std::filesystem::path file_name = engine_directory_ / engine_name / (data.name + ".csv");
 
         /* Open the file */
         std::ofstream file(file_name, std::ios::out | std::ios::trunc);
@@ -71,4 +71,20 @@ namespace design
         /* Close the file */
         file.close();
     }
+
+     // Scale values in DeckData
+    auto EngineDesigner::scale_deck_data_values(DeckData &deck_data, double efficiency_factor) -> DeckData
+    {
+        double technology_factor = 1+(1-efficiency_factor);
+        for (auto i = 0; i < deck_data.values.shape()[0]; ++i) {
+            for (auto j = 0; j < deck_data.values.shape()[1]; ++j) {
+                for (auto k = 0; k < deck_data.values.shape()[2]; ++k) {
+                    if (deck_data.values[i][j][k] != -9999) {
+                        deck_data.values[i][j][k] *= technology_factor;
+                    }
+                }
+            }
+        }
+        return deck_data;
+    }
 }; // namespace design
diff --git a/propulsion_design/src/engine_design/engine_design.h b/propulsion_design/src/engine_design/engine_design.h
index 0dc4ad9cb46f9a361cfc8a9c66cc923069d14f07..73ebe444583b6785d7627f956b2c579222e67dea 100644
--- a/propulsion_design/src/engine_design/engine_design.h
+++ b/propulsion_design/src/engine_design/engine_design.h
@@ -147,7 +147,16 @@ namespace design
          *
          * @param data The deck data to write.
          */
-        void write_deck_value(const DeckData &data) const;
+        void write_deck_value(const DeckData &data, std::string engine_name) const;
+
+         /**
+         * @brief Recalculate the engine data deck with the efficiency defined in the engine.xml.
+         *
+         * @param deck_data Engine deck data values.
+         * @param efficiency_factor Value of the efficiency factor defined in the engine.xml.
+         * @return scaled deck data.
+         */
+        auto scale_deck_data_values(DeckData &deck_data, double efficiency_factor) -> DeckData;
 
       private:
         /* === Properties === */
diff --git a/propulsion_design/src/engine_design/rubber/rubber_design.cpp b/propulsion_design/src/engine_design/rubber/rubber_design.cpp
index 53ec38926bce57abdcf7be3ed037ef207db381e5..706c3bd19387f2a5f9b85ed691c22dd6c2fad1b1 100644
--- a/propulsion_design/src/engine_design/rubber/rubber_design.cpp
+++ b/propulsion_design/src/engine_design/rubber/rubber_design.cpp
@@ -37,19 +37,26 @@ namespace design
 {
     void Rubber::initialize()
     {
+        /* Initialize the EngineDesigner */
+        EngineDesigner::initialize();
+
         /* Check whether the engine efficiency technology factor is 1.0 */
         const auto efficiency_factor = static_cast<float>(
             this->configuration()->at(
                 "module_configuration_file/program_settings/technology_factors/engine_efficiency/value"));
         if (std::abs(efficiency_factor - 1.0) > 1e-6)
         {
-            /** @todo Actually implement the change in the engine efficiency factor. */
-            throw std::runtime_error("[design::Rubber::initialize()] The engine efficiency technology factor is not 1.0. Changing this factor is not yet supported!");
+            std::filesystem::path path_to_csv = EngineDesigner::engine_database(); 
+            std::string engine_name = this->configuration()->at("module_configuration_file/program_settings/propulsion/engine/Rubber/engine_model/value");
+            std::string added_path = (std::filesystem::path(path_to_csv) / engine_name / engine_name).string();
+            DeckData deck_data = DeckData::from_csv(added_path.append("_WF.csv"));
+
+            DeckData deck_data_scaled = EngineDesigner::scale_deck_data_values(deck_data, EngineDesigner::technology_factor("engine_efficiency"));    
+            EngineDesigner::write_deck_value(deck_data_scaled, engine_name);
+            utility::print(std::format(
+                "Design with engine efficiency factor = {:.2f}", efficiency_factor), Level::Info);
         }
 
-        /* Initialize the EngineDesigner */
-        EngineDesigner::initialize();
-
         /* Loop through all propulsion settings */
         for (const auto &propulsion : this->configuration()->getVector("module_configuration_file/program_settings/propulsion"))
         {