diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt
index 38d9515cc25818652636ca4b8c5e969eaaf9519a..73d3ba403a1ce700891e2351a848e35fd62c8457 100644
--- a/source/RobotAPI/libraries/armem/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem/CMakeLists.txt
@@ -139,6 +139,7 @@ set(LIB_HEADERS
     core/aron_conversions.h
     core/json_conversions.h
     core/ice_conversions.h
+    core/ice_conversions_boost_templates.h
     core/ice_conversions_templates.h
 
     core/error.h
diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h b/source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h
new file mode 100644
index 0000000000000000000000000000000000000000..7b6681236bc3d0517d6fd61656a1dc598a8d6a36
--- /dev/null
+++ b/source/RobotAPI/libraries/armem/core/ice_conversions_boost_templates.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <map>
+
+#include <boost/container/flat_map.hpp>
+
+
+namespace armarx::armem
+{
+    // std::map <-> boost::container::flat_map
+
+    template <class IceKeyT, class IceValueT, class CppKeyT, class CppValueT>
+    void toIce(std::map<IceKeyT, IceValueT>& iceMap,
+               const boost::container::flat_map<CppKeyT, CppValueT>& cppMap)
+    {
+        iceMap.clear();
+        for (const auto& [key, value] : cppMap)
+        {
+            iceMap.emplace(toIce<IceKeyT>(key), toIce<IceValueT>(value));
+        }
+    }
+
+    template <class IceKeyT, class IceValueT, class CppKeyT, class CppValueT>
+    void fromIce(const std::map<IceKeyT, IceValueT>& iceMap,
+                 boost::container::flat_map<CppKeyT, CppValueT>& cppMap)
+    {
+        cppMap.clear();
+        for (const auto& [key, value] : iceMap)
+        {
+            cppMap.emplace(fromIce<CppKeyT>(key), fromIce<CppValueT>(value));
+        }
+    }
+
+}