diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.cpp b/source/RobotAPI/components/units/GraspCandidateObserver.cpp
index 527216c96a63d769c625cc5deeae30fab64fef47..d0c628d9a9091240bdd507e9c5e8fad1f67de472 100644
--- a/source/RobotAPI/components/units/GraspCandidateObserver.cpp
+++ b/source/RobotAPI/components/units/GraspCandidateObserver.cpp
@@ -274,6 +274,15 @@ BimanualGraspCandidateSeq GraspCandidateObserver::getSelectedBimanualCandidates(
     return selectedBimanualCandidates;
 }
 
+void GraspCandidateObserver::clearCandidatesByProvider(const std::string& providerName, const Ice::Current&)
+{
+    std::unique_lock lock(dataMutex);
+
+    if (candidates.count(providerName))
+    {
+        candidates[providerName].clear();
+    }
+}
 
 bool GraspCandidateObserver::hasProvider(const std::string& providerName)
 {
diff --git a/source/RobotAPI/components/units/GraspCandidateObserver.h b/source/RobotAPI/components/units/GraspCandidateObserver.h
index beb95c3a2bde2c9bd3c568031dd4ce2db7939d07..0124ab79fbba4f14c8d66ee9a0de3c315a7e3e61 100644
--- a/source/RobotAPI/components/units/GraspCandidateObserver.h
+++ b/source/RobotAPI/components/units/GraspCandidateObserver.h
@@ -104,6 +104,9 @@ namespace armarx
         void setSelectedBimanualCandidates(const grasping::BimanualGraspCandidateSeq& candidates, const ::Ice::Current&) override;
         grasping::BimanualGraspCandidateSeq getSelectedBimanualCandidates(const Ice::Current&) override;
 
+
+        void clearCandidatesByProvider(const std::string& providerName, const Ice::Current& c) override;
+
     private:
         bool hasProvider(const std::string& providerName);
         void checkHasProvider(const std::string& providerName);
diff --git a/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice b/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice
index 68dae5a2ab9393fae6bed6f8b49a5977ec770851..24164d0ebe50fb798af41e8e48637c3437e6151d 100644
--- a/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice
+++ b/source/RobotAPI/interface/observers/GraspCandidateObserverInterface.ice
@@ -66,6 +66,8 @@ module armarx
             void setSelectedBimanualCandidates(BimanualGraspCandidateSeq candidates);
             BimanualGraspCandidateSeq getSelectedBimanualCandidates();
 
+            void clearCandidatesByProvider(string providerName);
+
         };
     };