diff --git a/MaterialLib/MPL/CreateComponent.cpp b/MaterialLib/MPL/CreateComponent.cpp
index c042afe9501e1cfb84e99cd2f939c508bcbe4f6d..d5d3026f2469f51f61b0137a4c01516ac69a444c 100644
--- a/MaterialLib/MPL/CreateComponent.cpp
+++ b/MaterialLib/MPL/CreateComponent.cpp
@@ -72,10 +72,6 @@ std::vector<std::unique_ptr<Component>> createComponents(
     }
 
     std::vector<std::unique_ptr<Component>> components;
-
-    // Collect component's names to avoid duplicate components.
-    std::set<std::string> component_names;
-
     for (
         auto const& component_config :
         //! \ogs_file_param{prj__media__medium__phases__phase__components__component}
@@ -83,10 +79,11 @@ std::vector<std::unique_ptr<Component>> createComponents(
     {
         auto component = createComponent(component_config);
 
-        bool new_insertion = false;
-        std::tie(std::ignore, new_insertion) =
-            component_names.insert(component->name());
-        if (!new_insertion)
+        if (std::find_if(components.begin(),
+                         components.end(),
+                         [component_name = component->name()](auto const& c) {
+                             return c->name() == component_name;
+                         }) != components.end())
         {
             OGS_FATAL("Found duplicates with the same component name tag '%s'.",
                       component->name().c_str());
@@ -94,6 +91,7 @@ std::vector<std::unique_ptr<Component>> createComponents(
 
         components.push_back(std::move(component));
     }
+
     return components;
 }
 }  // namespace MaterialPropertyLib
diff --git a/MaterialLib/MPL/CreatePhase.cpp b/MaterialLib/MPL/CreatePhase.cpp
index 800de257b90905abf3542d6c72b60d4954a3b555..f1c9757de0f622b3e3e59077bf8e633824c87656 100644
--- a/MaterialLib/MPL/CreatePhase.cpp
+++ b/MaterialLib/MPL/CreatePhase.cpp
@@ -89,17 +89,17 @@ std::vector<std::unique_ptr<Phase>> createPhases(
 
     std::vector<std::unique_ptr<Phase>> phases;
 
-    std::set<std::string> phase_names;
-
-    //! \ogs_file_param{prj__media__medium__phases__phase}
-    for (auto phase_config : config->getConfigSubtreeList("phase"))
+    for (auto phase_config :
+         //! \ogs_file_param{prj__media__medium__phases__phase}
+         config->getConfigSubtreeList("phase"))
     {
         auto phase = createPhase(phase_config);
-        bool new_insertion = false;
-        std::tie(std::ignore, new_insertion) =
-            phase_names.insert(phase->name());
 
-        if (!new_insertion)
+        if (std::find_if(phases.begin(),
+                         phases.end(),
+                         [phase_name = phase->name()](auto const& p) {
+                             return p->name() == phase_name;
+                         }) != phases.end())
         {
             OGS_FATAL("Found duplicates with the same phase name tag '%s'.",
                       phase->name().c_str());
@@ -107,6 +107,7 @@ std::vector<std::unique_ptr<Phase>> createPhases(
 
         phases.push_back(std::move(phase));
     }
+
     return phases;
 }
 }  // namespace MaterialPropertyLib