diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp
index 90ebecdecbee6d9e84aa86fd1dd60fbd38d76082..c554afd52d27cd534b4015eb2c5114ddd8955181 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp
@@ -137,8 +137,8 @@ namespace armarx::armem::articulated_object
                 const std::string& instanceName)
     {
         ArticulatedObject obj{.description = description,
-                              .instance = "", // TODO(fabian.reister):
-                              .config = {}, // will be populated by synchronize
+                              .instance = instanceName,
+                              .config = {}, // will be populated by `synchronize()`
                               .timestamp = timestamp};
 
         synchronize(obj, timestamp);
@@ -149,7 +149,9 @@ namespace armarx::armem::articulated_object
     void
     Reader::synchronize(ArticulatedObject& obj, const armem::Time& timestamp)
     {
-        auto state = queryState(obj.instance, timestamp);
+        ARMARX_CHECK_NOT_EMPTY(obj.instance) << "An instance name must be provided!";
+
+        auto state = queryState(obj.name(), timestamp);
 
         if (not state) /* c++20 [[unlikely]] */
         {
@@ -201,6 +203,8 @@ namespace armarx::armem::articulated_object
     std::optional<robot::RobotDescription>
     Reader::queryDescription(const std::string& name, const armem::Time& timestamp)
     {
+        // FIXME: why is `name` unused?
+
         // Query all entities from provider.
         armem::client::query::Builder qb;
 
diff --git a/source/RobotAPI/libraries/armem_robot/types.h b/source/RobotAPI/libraries/armem_robot/types.h
index df39df99e945e4a1ef38c38db6f9428404a35bed..92f16199a760a2a11475b21fcd63a570dbedbedf 100644
--- a/source/RobotAPI/libraries/armem_robot/types.h
+++ b/source/RobotAPI/libraries/armem_robot/types.h
@@ -8,6 +8,7 @@
 
 #include <IceUtil/Time.h>
 
+#include "ArmarXCore/core/exceptions/local/ExpressionException.h"
 #include "RobotAPI/libraries/ArmarXObjects/ObjectID.h"
 #include <ArmarXCore/core/PackagePath.h>
 
@@ -41,6 +42,14 @@ namespace armarx::armem::robot
         RobotState config;
 
         IceUtil::Time timestamp;
+
+        std::string name() const 
+        {
+            ARMARX_CHECK_NOT_EMPTY(description.name) << "The robot name must be set!";
+            ARMARX_CHECK_NOT_EMPTY(instance) << "The robot instance name must be provided!";
+
+            return description.name + "/" + instance;
+        }
     };
 
     using Robots = std::vector<Robot>;
diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
index a364df3f70d1231c3f0ed8c1b2a1510e4d099679..5ea6d2cd90c0412c2b9243262ffb3166f5ce9f13 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
@@ -113,7 +113,7 @@ namespace armarx::armem::robot_state
         .snapshots().latest(); // TODO(fabian.reister): atTime(timestamp);
         // clang-format on
 
-        ARMARX_INFO << "Lookup query in reader";
+        ARMARX_DEBUG << "Lookup query in reader";
 
         if (not memoryReader)
         {
@@ -125,7 +125,7 @@ namespace armarx::armem::robot_state
         {
             const armem::client::QueryResult qResult = memoryReader.query(qb.buildQueryInput());
 
-            ARMARX_INFO << "Lookup result in reader: " << qResult;
+            ARMARX_DEBUG << "Lookup result in reader: " << qResult;
 
             if (not qResult.success) /* c++20 [[unlikely]] */
             {