diff --git a/GUI/coregui/Models/MaterialModel.cpp b/GUI/coregui/Models/MaterialModel.cpp
index 1e9354c1c6ac044adb18ffe2657aad6d11a4df07..0952255cccc9d1447ea466fefcf1657d49b25ce2 100644
--- a/GUI/coregui/Models/MaterialModel.cpp
+++ b/GUI/coregui/Models/MaterialModel.cpp
@@ -20,16 +20,17 @@
 #include "MaterialDataItem.h"
 #include "AppSvc.h"
 
-
 MaterialModel::MaterialModel(QObject* parent) : SessionModel(SessionXML::MaterialModelTag, parent)
 {
     setObjectName(SessionXML::MaterialModelTag);
-    AppSvc::subscribe(this);
+    if (AppSvc::materialModel() == nullptr)
+        AppSvc::subscribe(this);
 }
 
 MaterialModel::~MaterialModel()
 {
-    AppSvc::unsubscribe(this);
+    if (AppSvc::materialModel() == this)
+        AppSvc::unsubscribe(this);
 }
 
 MaterialModel* MaterialModel::createCopy(SessionItem* parent)
diff --git a/GUI/coregui/mainwindow/AppSvc.cpp b/GUI/coregui/mainwindow/AppSvc.cpp
index ac140bee29befab7f96c4304c0751bf00d10dd23..c98c0518023250cf0431dd4831e20640c5761634 100644
--- a/GUI/coregui/mainwindow/AppSvc.cpp
+++ b/GUI/coregui/mainwindow/AppSvc.cpp
@@ -88,9 +88,9 @@ void AppSvc::this_unsubscribe(ProjectManager* projectManager)
 
 void AppSvc::this_subscribe(MaterialModel* materialModel)
 {
-    // MaterialModel created first will be subscribed
     if (m_materialModel)
-        return;
+        throw GUIHelpers::Error("AppSvc::projectManager() -> Error. Attempt to subscribe "
+                                "MaterialModel twice.");
 
     m_materialModel = materialModel;
 }
@@ -98,7 +98,8 @@ void AppSvc::this_subscribe(MaterialModel* materialModel)
 void AppSvc::this_unsubscribe(MaterialModel* materialModel)
 {
     if (m_materialModel != materialModel)
-        return;
+        throw GUIHelpers::Error("AppSvc::projectManager() -> Error. Attempt to unsubscribe "
+                                "MaterialModel before it was subscribed.");
 
     m_materialModel = nullptr;
 }