diff --git a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp
index 04fc39807fdc3e705666affdc3ffbd7913e46bfc..86d6b019851a01f610b99afb233e797a3de8e10e 100644
--- a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp
+++ b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp
@@ -455,6 +455,12 @@ bool USFGameInstance::GoToCondition(const USFCondition* Condition, bool bForced
 		FSFLoggingUtils::Log("[USFGameInstance::GoToCondition()]: Could not load next condition.", true);
 		return false;
 	}
+
+	if (!bStudyStarted && !bIsStarting) {
+		StartCondition = Condition; //Start at this condition
+		bIsStarting = true; //To avoid infinite loops, when StartStudy calls GoToCondition(StartCondition)
+		return StartStudy();
+	}
 	GoToConditionSynced(Condition->UniqueName, bForced, Fade);
 	return true;
 }
diff --git a/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp b/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp
index 35cfceedb71f68693297ccee9fce29d5121f4600..bc88b182654b8a8fea646a5c348b35eb98353b82 100644
--- a/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp
+++ b/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp
@@ -307,19 +307,19 @@ void USFParticipant::StoreInIndependentVarLongTable() const
 	}
 }
 
-void USFParticipant::DeleteStoredDataForConditionFromLongTable(USFCondition* Condition)
+void USFParticipant::DeleteStoredDataForConditionFromLongTable(const USFCondition* Condition)
 {
 	const FString Filename = FPaths::ProjectDir() + "StudyFramework/StudyLogs/Phase_" + Condition->PhaseName + ".csv";
 	RemoveLinesOfConditionAndWriteToFile(Condition, Filename);
 }
 
-void USFParticipant::DeleteStoredTrialDataForCondition(USFCondition* Condition, USFMultipleTrialDependentVariable* DependentVariable)
+void USFParticipant::DeleteStoredTrialDataForCondition(const USFCondition* Condition, USFMultipleTrialDependentVariable* DependentVariable)
 {
 	const FString Filename = FPaths::ProjectDir() + "StudyFramework/StudyLogs/Phase_" + Condition->PhaseName + "_" + DependentVariable->Name + ".csv";
 	RemoveLinesOfConditionAndWriteToFile(Condition, Filename);
 }
 
-void USFParticipant::RemoveLinesOfConditionAndWriteToFile(USFCondition* Condition, const FString Filename)
+void USFParticipant::RemoveLinesOfConditionAndWriteToFile(const USFCondition* Condition, const FString Filename)
 {
 	TArray<FString> Lines;
 	TArray<FString> CleanedLines;
diff --git a/Source/StudyFrameworkPlugin/Public/SFGameInstance.h b/Source/StudyFrameworkPlugin/Public/SFGameInstance.h
index 2a3836fec63d2956bb131be994fffe66ee4a9e0c..9032efce886766f8c4664313908a9e7a7c9e46e1 100644
--- a/Source/StudyFrameworkPlugin/Public/SFGameInstance.h
+++ b/Source/StudyFrameworkPlugin/Public/SFGameInstance.h
@@ -218,12 +218,14 @@ protected:
 	// this is used if the study should not be started from the beginning
 	// e.g., when starting a map directly for debugging in the editor
 	// or when continuing a crashed study run
-	USFCondition* StartCondition;
+	const USFCondition* StartCondition;
 
 	// State of Study / GameInstance
 	UPROPERTY(BlueprintReadOnly)
 	bool bStudyStarted = false;
 
+	bool bIsStarting = false;
+
 	UPROPERTY(BlueprintReadOnly)
 	bool bStudyEnded = false;
 
diff --git a/Source/StudyFrameworkPlugin/Public/SFParticipant.h b/Source/StudyFrameworkPlugin/Public/SFParticipant.h
index 0c39bced0b7596127f2ee2c86fd8f194fee82390..c88de85eddc10bc371e3421304e0196b94d2c65e 100644
--- a/Source/StudyFrameworkPlugin/Public/SFParticipant.h
+++ b/Source/StudyFrameworkPlugin/Public/SFParticipant.h
@@ -82,8 +82,8 @@ public:
 	// recycling bin file name
 	void CreateLongTableBackUp(const FString PathToSrcFile) const;
 	void StoreTrialInTrialDVLongTable(USFMultipleTrialDependentVariable* DependentVariable, TArray<FString> Values) const;
-	void DeleteStoredDataForConditionFromLongTable(USFCondition* Condition);
-	void DeleteStoredTrialDataForCondition(USFCondition* Condition, USFMultipleTrialDependentVariable* DependentVariable);
+	void DeleteStoredDataForConditionFromLongTable(const USFCondition* Condition);
+	void DeleteStoredTrialDataForCondition(const USFCondition* Condition, USFMultipleTrialDependentVariable* DependentVariable);
 	void SetCurrentBackUpFolderName(FString BackUpFolderName);
 
 protected:
@@ -98,7 +98,7 @@ protected:
 
 	void StoreInPhaseLongTable() const;
 	void StoreInIndependentVarLongTable() const;
-	void RemoveLinesOfConditionAndWriteToFile(USFCondition* Condition, FString Filename);
+	void RemoveLinesOfConditionAndWriteToFile(const USFCondition* Condition, FString Filename);
 
 	// This is the parent folder within RecyclingBin, where backups
 	// of the current operation will be stored.