diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
index 27a93c10e3ba52fd951bade226208e2c924a8ade..2e0295e0be3415763d10bd8912cac4b1393a258b 100644
--- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
+++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
@@ -311,7 +311,18 @@ namespace armarx::armem::gui
 
     void MemoryViewer::resolveMemoryID(const MemoryID& id)
     {
-        ARMARX_IMPORTANT << "Resolving memory ID: " << id;
+        // ARMARX_IMPORTANT << "Resolving memory ID: " << id;
+
+        auto handleError = [this](const std::string & msg)
+        {
+            statusLabel->setText(QString::fromStdString(msg));
+            ARMARX_WARNING << msg;
+        };
+
+        if (id.memoryName.empty())
+        {
+            handleError("Memory name is empty.");
+        }
 
         aron::typenavigator::ObjectNavigatorPtr segmentType;
         std::optional<wm::EntityInstance> instance;
@@ -340,14 +351,20 @@ namespace armarx::armem::gui
         {
             // May be handled by remote lookup
             (void) e;
-            // ARMARX_WARNING << e.what();
-            // statusLabel->setText(e.what());
         }
 
         if (!instance)
         {
-            // Resolve remotely (may still fail, returns an optional).
-            instance = mns.resolveEntityInstance(id);
+            try
+            {
+                // Resolve remotely (may still fail, returns an optional).
+                instance = mns.resolveEntityInstance(id);
+            }
+            catch (const armem::error::ArMemError& e)
+            {
+                ARMARX_WARNING << e.what();
+                statusLabel->setText(e.what());
+            }
         }
 
         if (instance)
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
index 64b36187577bd0dacf4b500a29cfd530ee27bf6b..31ecadffade21621779eacb6d7af688e3ede02fe 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
@@ -37,6 +37,8 @@ namespace armarx::armem::gui::instance
 
     InstanceView::InstanceView()
     {
+        Logging::setTag("InstanceView");
+
         QLayout* layout = new QVBoxLayout();
         this->setLayout(layout);
         int margin = 3;
@@ -266,14 +268,13 @@ namespace armarx::armem::gui::instance
         const std::string typeName = item->text(int(Columns::TYPE)).toStdString();
         if (typeName == instance::sanitizedMemoryIDTypeName)
         {
-            aron::Path path = getPath();
+            const aron::Path path = getPath();
 
-            QAction* viewAction = new QAction("Resolve Memory ID");
-            menu.addAction(viewAction);
-            connect(viewAction, &QAction::triggered, [this, path]()
+            QAction* action = makeResolveMemoryIdAction(path);
+            if (action)
             {
-                this->requestMemoryIdResolution(path);
-            });
+                menu.addAction(action);
+            }
         }
 
 
@@ -283,62 +284,34 @@ namespace armarx::armem::gui::instance
         }
     }
 
-    void InstanceView::showImageView(const aron::Path& elementPath)
-    {
-        if (!currentInstance)
-        {
-            return;
-        }
-        if (!imageView)
-        {
-            WidgetsWithToolbar* toolbar = new WidgetsWithToolbar();
-
-            imageView = new ImageView();
-            imageView->toolbar = toolbar;
-            toolbar->addWidget(imageView);
-
-            splitter->addWidget(toolbar);
 
-            connect(toolbar, &WidgetsWithToolbar::closing, [this]()
-            {
-                imageView = nullptr;
-            });
-        }
-        imageView->elementPath = elementPath;
-        updateImageView(currentInstance->data());
-    }
-
-    void InstanceView::removeImageView()
+    QAction* InstanceView::makeResolveMemoryIdAction(const aron::Path& elementPath)
     {
-        imageView->toolbar->close();
-        imageView = nullptr;
-    }
-
-    void InstanceView::requestMemoryIdResolution(const aron::Path& elementPath)
-    {
-        const aron::datanavigator::DictNavigatorPtr& data = currentInstance->data();
-
         aron::datanavigator::NavigatorPtr element;
         try
         {
-            element = data->navigateAbsolute(elementPath);
+            element = currentInstance->data()->navigateAbsolute(elementPath);
         }
         // This can happen when the underlying entity structure changes (a new entity has been selected).
         catch (const aron::error::AronException&)
         {
             // showErrorMessage(e.what());
-            return;
+            return nullptr;
         }
-        catch (const armarx::LocalException&)
+        catch (const armarx::LocalException& e)
         {
-            // showErrorMessage(e.what());
-            return;
+            showErrorMessage(e.what());
+            return nullptr;
         }
 
+        std::stringstream couldNotParseMsg;
+        couldNotParseMsg << "Element " << elementPath.toString() << " could not be parsed as MemoryID.";
+
         auto dictElement = std::dynamic_pointer_cast<aron::datanavigator::DictNavigator>(element);
         if (!dictElement)
         {
-            return;
+            showErrorMessage(couldNotParseMsg.str() + " (Failed to cast to DictNavigator.)");
+            return nullptr;
         }
 
         MemoryID id;
@@ -349,14 +322,60 @@ namespace armarx::armem::gui::instance
             armem::fromAron(dto, id);
         }
         catch (const armarx::aron::error::AronException&)
+        {
+            showErrorMessage(couldNotParseMsg.str());
+            return nullptr;
+        }
+
+        QAction* action = new QAction("Resolve Memory ID");
+
+        if (not(id.hasEntityName() and id.isWellDefined()))
+        {
+            action->setDisabled(true);
+            action->setText(action->text() + " (incomplete Memory ID)");
+        }
+        connect(action, &QAction::triggered, [this, id]()
+        {
+            // ARMARX_IMPORTANT << "emit memoryIdResolutionRequested(id = " << id << ")";
+            emit memoryIdResolutionRequested(id);
+        });
+
+        return action;
+    }
+
+
+    void InstanceView::showImageView(const aron::Path& elementPath)
+    {
+        if (!currentInstance)
         {
             return;
         }
+        if (!imageView)
+        {
+            WidgetsWithToolbar* toolbar = new WidgetsWithToolbar();
 
-        ARMARX_IMPORTANT << "emit memoryIdResolutionRequested(id = " << id << ")";
-        emit memoryIdResolutionRequested(id);
+            imageView = new ImageView();
+            imageView->toolbar = toolbar;
+            toolbar->addWidget(imageView);
+
+            splitter->addWidget(toolbar);
+
+            connect(toolbar, &WidgetsWithToolbar::closing, [this]()
+            {
+                imageView = nullptr;
+            });
+        }
+        imageView->elementPath = elementPath;
+        updateImageView(currentInstance->data());
     }
 
+    void InstanceView::removeImageView()
+    {
+        imageView->toolbar->close();
+        imageView = nullptr;
+    }
+
+
     void InstanceView::updateImageView(const aron::datanavigator::DictNavigatorPtr& data)
     {
         using aron::datanavigator::NDArrayNavigator;
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h
index 504b0e9eaef4d7225a15b90598d0b7e51ad02692..f67e61152e7c8174721c75e99e401d652a5e52c3 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h
@@ -23,7 +23,7 @@ namespace armarx::armem::gui::instance
     class WidgetsWithToolbar;
 
 
-    class InstanceView : public QWidget
+    class InstanceView : public QWidget, public Logging
     {
         Q_OBJECT
         using This = InstanceView;
@@ -57,8 +57,6 @@ namespace armarx::armem::gui::instance
         void showImageView(const aron::Path& elementPath);
         void removeImageView();
 
-        void requestMemoryIdResolution(const aron::Path& elementPath);
-
 
     private:
 
@@ -69,6 +67,8 @@ namespace armarx::armem::gui::instance
 
         void showErrorMessage(const std::string& message);
 
+        QAction* makeResolveMemoryIdAction(const aron::Path& elementPath);
+
 
     private: