diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 3145c73f8c1395d6c5f99aea09877fc0360f4d4d..6b5f6fd3f2fedd5fb4169c67812108dd7b4b4b11 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -90,8 +90,11 @@ bool DataItem::containsNonXMLData() const
     return static_cast<bool>(m_datafield);
 }
 
-QString DataItem::loadDatafield(const QString& projectDir, MessageService* messageService)
+QString DataItem::loadDatafield(MessageService* messageService, const QString& projectDir)
 {
+    if (projectDir.isEmpty())
+        return {};
+
     ASSERT(messageService);
     const QString filename = fileName(projectDir);
     try {
@@ -123,7 +126,7 @@ bool DataItem::saveDatafield(const QString& projectDir)
 
 void DataItem::saveDatafieldInBackground(const QString &projectDir)
 {
-    if (!containsNonXMLData() || !isModifiedSinceLastSave())
+    if (!containsNonXMLData() || !isModifiedSinceLastSave() || projectDir.isEmpty())
         return;
 
     std::unique_lock<std::mutex> lock(m_update_data_mutex);
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index 47769f26d688b3383535eb4ea8ba811b1380c930..2eac217a529c246f6082e4687eae29ff72af655f 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -56,9 +56,9 @@ public:
     void setFileName(const QString& filename);
     QDateTime lastModified() const override;
     bool containsNonXMLData() const override;
-    QString loadDatafield(const QString& projectDir, MessageService* messageService) override;
+    QString loadDatafield(MessageService* messageService, const QString& projectDir = "") override;
     bool saveDatafield(const QString& projectDir) override;
-    void saveDatafieldInBackground(const QString& projectDir);
+    void saveDatafieldInBackground(const QString& projectDir = "");
 
     void setLastModified(const QDateTime& dtime);
 
diff --git a/GUI/Model/Data/RealItem.cpp b/GUI/Model/Data/RealItem.cpp
index 65cd1fe38f9af26094390f3337bd4716432fbd22..2b5e9a4428c3994206e75dd5f8aa0d6ae7dd9c19 100644
--- a/GUI/Model/Data/RealItem.cpp
+++ b/GUI/Model/Data/RealItem.cpp
@@ -423,13 +423,13 @@ QString RealItem::readFrom(QXmlStreamReader* r, const QString& projectDir,
             // data
         } else if (tag == Tag::Data) {
             m_dataItem.reset(readItemToEnd<DataItem>(r, this, tag));
-            dataError = m_dataItem->loadDatafield(projectDir, messageService);
+            dataError = m_dataItem->loadDatafield(messageService, projectDir);
             XML::gotoEndElementOfTag(r, tag);
 
             // native data
         } else if (tag == Tag::NativeData) {
             m_nativeDataItem.reset(readItemToEnd<DataItem>(r, this, tag));
-            nativeDataError == m_nativeDataItem->loadDatafield(projectDir, messageService);
+            nativeDataError == m_nativeDataItem->loadDatafield(messageService, projectDir);
             XML::gotoEndElementOfTag(r, tag);
 
             // native data units
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 5f5ffaefdf0fd77f0c63eafab38698684b5e528b..517f480153dd87150d8f3e1a74bc6b664aa0b7dc 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -628,7 +628,7 @@ void JobItem::readFrom(QXmlStreamReader* r, const QString& projectDir,
             // simulated data
         } else if (tag == Tag::SimulatedData) {
             m_simulatedDataItem.reset(readItemToEnd<DataItem>(r, this, Tag::SimulatedData));
-            simError = m_simulatedDataItem->loadDatafield(projectDir, messageService);
+            simError = m_simulatedDataItem->loadDatafield(messageService, projectDir);
             XML::gotoEndElementOfTag(r, tag);
 
             // fit suite
diff --git a/GUI/Model/Project/IOService.cpp b/GUI/Model/Project/IOService.cpp
index 4434d858e425c9127630a65139a4fbe669ff8fe5..847121138ac769699acf21676fcf0fdfa587f70d 100644
--- a/GUI/Model/Project/IOService.cpp
+++ b/GUI/Model/Project/IOService.cpp
@@ -82,7 +82,7 @@ void DatafieldIOService::loadDataFiles(const QString& projectDir, MessageService
     DatafieldDirHistory newHistory;
     for (SaveLoadInterface* item : dataInterfaces()) {
         try {
-            item->loadDatafield(projectDir, messageService);
+            item->loadDatafield(messageService, projectDir);
             newHistory.markAsSaved(item);
             // handling crash of GUI during job run and non-existing file
             if (auto* jobItem = parentJobItem(item)) {
diff --git a/GUI/Support/IO/SaveLoadInterface.h b/GUI/Support/IO/SaveLoadInterface.h
index d1893fe73a4cf26556cb41cde7ff1380069ca1d2..c44d9de6fc5f2aa2e45b6d004bf6e70ad6a0081d 100644
--- a/GUI/Support/IO/SaveLoadInterface.h
+++ b/GUI/Support/IO/SaveLoadInterface.h
@@ -29,7 +29,7 @@ public:
     virtual ~SaveLoadInterface() = default;
 
     //! Loads non-XML data from _projectDir_ and returns success flag.
-    virtual QString loadDatafield(const QString& projectDir, MessageService* messageService) = 0;
+    virtual QString loadDatafield(MessageService* messageService, const QString& projectDir = "") = 0;
 
     //! Saves non-XML data in _projectDir_ and returns success flag.
     virtual bool saveDatafield(const QString& projectDir) = 0;