diff --git a/GUI/Model/Session/SessionItem.cpp b/GUI/Model/Session/SessionItem.cpp
index eb8fed9b6a5bb09cf5d29e29ecee48794abf1769..57ef06eb2480877befd9811af62b9354aeeea246 100644
--- a/GUI/Model/Session/SessionItem.cpp
+++ b/GUI/Model/Session/SessionItem.cpp
@@ -543,6 +543,11 @@ void SessionItem::writeNonSessionItems(QXmlStreamWriter*) const {}
 
 void SessionItem::readNonSessionItems(QXmlStreamReader*) {}
 
+bool SessionItem::allowWritingChildToXml(SessionItem* child) const
+{
+    return true;
+}
+
 void SessionItem::childDeleted(SessionItem* child)
 {
     int index = rowOfChild(child);
diff --git a/GUI/Model/Session/SessionItem.h b/GUI/Model/Session/SessionItem.h
index eef243f3d9c0268edab060943191d6da92a3400a..17a3089966847c0036f8f3bb33fede7ae34f9a25 100644
--- a/GUI/Model/Session/SessionItem.h
+++ b/GUI/Model/Session/SessionItem.h
@@ -314,6 +314,7 @@ public:
 
     virtual void writeNonSessionItems(QXmlStreamWriter* writer) const;
     virtual void readNonSessionItems(QXmlStreamReader* reader);
+    virtual bool allowWritingChildToXml(SessionItem* child) const;
 
 private:
     void childDeleted(SessionItem* child);
diff --git a/GUI/Model/Session/SessionXML.cpp b/GUI/Model/Session/SessionXML.cpp
index f1118ea39acb1dbbb4579c9a42b756f6aa7947a4..ce963bbd23242cec0c12c5b1789c5f285f546b4b 100644
--- a/GUI/Model/Session/SessionXML.cpp
+++ b/GUI/Model/Session/SessionXML.cpp
@@ -82,7 +82,8 @@ void GUI::Session::XML::writeItemAndChildItems(QXmlStreamWriter* writer, const S
     }
 
     for (auto* child : item->children())
-        writeItemAndChildItems(writer, child);
+        if (item->allowWritingChildToXml(child))
+            writeItemAndChildItems(writer, child);
 
     QByteArray a = item->serializeBinaryData();
     if (!a.isEmpty()) {