diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
index f7d2eee97b3ec601420ce9cf010af23817814dd7..9343a88d5589a19d832eadfdca2c4125494e226d 100644
--- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
+++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp
@@ -152,10 +152,18 @@ namespace armarx
                 robotNode->setJointValue(value + calibration.offset);
             }
 
-            for (const auto& provided : providedPoses)
+            for (const objpose::data::ProvidedObjectPose& provided : providedPoses)
             {
                 objpose::ObjectPose& pose = objectPoses.emplace_back();
                 pose.fromProvidedPose(provided, robot);
+                if (pose.objectID.dataset().empty())
+                {
+                    // Try to find the data set. (It might be good to cache this.)
+                    if (std::optional<ObjectInfo> objectInfo = objectFinder.findObject(pose.objectID))
+                    {
+                        pose.objectID = { objectInfo->dataset(), pose.objectID.className(), pose.objectID.instanceName() };
+                    }
+                }
                 if (!(provided.localOOBB.position && provided.localOOBB.orientation && provided.localOOBB.extents))
                 {
                     pose.localOOBB = getObjectOOBB(pose.objectID);