diff --git a/source/RobotAPI/libraries/armem/core/MemoryID.cpp b/source/RobotAPI/libraries/armem/core/MemoryID.cpp
index 30d1c1aeca74aa75c7e9db7a3ef554d8f88d4387..f8d7c832401a4ebf335347c67745c1ce82af4e03 100644
--- a/source/RobotAPI/libraries/armem/core/MemoryID.cpp
+++ b/source/RobotAPI/libraries/armem/core/MemoryID.cpp
@@ -80,6 +80,23 @@ namespace armarx::armem
     }
 
 
+    MemoryID::MemoryID(
+        const std::string& memoryName,
+        const std::string& coreSegmentName,
+        const std::string& providerSegmentName,
+        const std::string& entityName,
+        Time timestamp,
+        int instanceIndex) :
+        memoryName(memoryName),
+        coreSegmentName(coreSegmentName),
+        providerSegmentName(providerSegmentName),
+        entityName(entityName),
+        timestamp(timestamp),
+        instanceIndex(instanceIndex)
+    {
+    }
+
+
     std::string MemoryID::str(bool escapeDelimiters) const
     {
         return str(delimiter, escapeDelimiters);
diff --git a/source/RobotAPI/libraries/armem/core/MemoryID.h b/source/RobotAPI/libraries/armem/core/MemoryID.h
index 7ddf2130801767eabb60c01caba1d2dc427caba3..f9d3d5b58ca4670a8abb4333e417a9a2109843ae 100644
--- a/source/RobotAPI/libraries/armem/core/MemoryID.h
+++ b/source/RobotAPI/libraries/armem/core/MemoryID.h
@@ -63,6 +63,13 @@ namespace armarx::armem
         /// (Re-)Construct a memory ID from a string representation as returned by `str()`.
         explicit MemoryID(const std::string& string);
 
+        MemoryID(const std::string& memoryName,
+                 const std::string& coreSegmentName,
+                 const std::string& providerSegmentName = "",
+                 const std::string& entityName = "",
+                 Time timestamp = Time::microSeconds(-1),
+                 int instanceIndex = -1);
+
 
         /**
          * @brief Indicate whether this ID is well-defined.