diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 6895cf4e5b27ecec5872a38890d8111b41405fa7..c1ae33fbe624fe2558c8f2dfb11d2ae380fb192a 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -99,9 +99,30 @@ namespace armarx::armem::server
     MemoryToIceAdapter::commit(const data::Commit& commitIce, Time timeArrived)
     {
         ARMARX_CHECK_NOT_NULL(workingMemory);
+        auto handleException = [](const std::string & what)
+        {
+            data::CommitResult result;
+            data::EntityUpdateResult& r = result.results.emplace_back();
+            r.success = false;
+            r.errorMessage = what;
+            return result;
+        };
 
         armem::Commit commit;
-        armem::fromIce(commitIce, commit, timeArrived);
+        try
+        {
+            armem::fromIce(commitIce, commit, timeArrived);
+        }
+        catch (const aron::error::AronNotValidException& e)
+        {
+            throw;
+            return handleException(e.what());
+        }
+        catch (const Ice::Exception& e)
+        {
+            throw;
+            return handleException(e.what());
+        }
 
         armem::CommitResult result = this->commit(commit);
         data::CommitResult resultIce;
@@ -147,6 +168,16 @@ namespace armarx::armem::server
                 result.success = false;
                 result.errorMessage = e.what();
             }
+            catch (const aron::error::AronException& e)
+            {
+                result.success = false;
+                result.errorMessage = e.what();
+            }
+            catch (const Ice::Exception& e)
+            {
+                result.success = false;
+                result.errorMessage = e.what();
+            }
         }
 
         if (publishUpdates)