diff --git a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp
index 89da836b97d02870d13115948a575bcc969c793e..9854295f05c851702769dc90aa527676deb89a70 100644
--- a/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp
+++ b/ProcessLib/ComponentTransport/ComponentTransportProcess.cpp
@@ -12,6 +12,7 @@
 
 #include <cassert>
 
+#include "ChemistryLib/ChemicalSolverInterface.h"
 #include "ProcessLib/SurfaceFlux/SurfaceFlux.h"
 #include "ProcessLib/SurfaceFlux/SurfaceFluxData.h"
 #include "ProcessLib/Utils/CreateLocalAssemblers.h"
@@ -82,6 +83,11 @@ void ComponentTransportProcess::initializeConcreteProcess(
         mesh.isAxiallySymmetric(), integration_order, _process_data,
         transport_process_variables);
 
+    if (_chemical_solver_interface)
+    {
+        _chemical_solver_interface->initialize();
+    }
+
     _secondary_variables.addSecondaryVariable(
         "darcy_velocity",
         makeExtrapolator(
diff --git a/ProcessLib/TimeLoop.cpp b/ProcessLib/TimeLoop.cpp
index 80b37eef7a28d5a25cdd5dcecd2f0705ae3de463..423fc63a16a23a8aff13313f9b3498108a62c14d 100644
--- a/ProcessLib/TimeLoop.cpp
+++ b/ProcessLib/TimeLoop.cpp
@@ -514,11 +514,6 @@ double TimeLoop::computeTimeStepping(const double prev_dt, double& t,
 /// initialize output, convergence criterion, etc.
 void TimeLoop::initialize()
 {
-    if (_chemical_solver_interface != nullptr)
-    {
-        _chemical_solver_interface->initialize();
-    }
-
     for (auto& process_data : _per_process_data)
     {
         auto& pcs = process_data->process;