diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp
index 795f7df51099dff3c9ae60393d43f4c6a5bcf2f0..82b8310e10849047b1a2686f01b4789df265aa03 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/controller/ScenarioListController.cpp
@@ -228,7 +228,11 @@ void ScenarioListController::addApplicationsToScenario(QList<QPair<QString, Appl
     }
 
     ScenarioPtr scenario = item->getScenario();
-
+    if (!scenario->isScenarioFileWriteable())
+    {
+        QMessageBox::critical(0, "Adding application failed!", "The scenario '" + QString::fromStdString(scenario->getName()) + "' is read only. You cannot add an application to this scenario!");
+        return;
+    }
     Parser::DependenciesGenerator generator;
     std::vector<string> acceptedApps = generator.getDependencieTree(scenario->getPackage()->getName());
 
@@ -264,6 +268,7 @@ void ScenarioListController::addApplicationsToScenario(QList<QPair<QString, Appl
             return;
         }
 
+
         string appName = app->getName();
         size_t runIndex = appName.rfind("Run");
         if (runIndex != std::string::npos)
@@ -449,7 +454,10 @@ void ScenarioListController::createScenario()
         QStringList packageNames;
         for (auto package : *packages)
         {
-            packageNames << QString::fromStdString(package->getName());
+            if (package->isScenarioPathWritable())
+            {
+                packageNames << QString::fromStdString(package->getName());
+            }
         }
         createScenarioView.setPackages(packageNames);
         createScenarioView.exec();
@@ -703,7 +711,7 @@ void ScenarioListController::updateStati()
     IceUtil::Time start = IceUtil::Time ::now();
     bool changed = false;
     //update all app instances and scenarios
-    for (ScenarioManager::Data_Structure::PackagePtr & package : *packages)
+    for (ScenarioManager::Data_Structure::PackagePtr& package : *packages)
     {
         ScenarioVectorPtr scenarios = package->getScenarios();
         for (ScenarioPtr scenario : *scenarios)
diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp
index cb7a5ed5b725b8b358d8854cce0961a146fd7688..6be00c2b8da84fdbb2a9b6385fa724e08222706d 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/detailedapplicationview.cpp
@@ -191,6 +191,11 @@ void DetailedApplicationView::showApplicationInstance(ApplicationInstancePtr app
     QtProperty* appInstanceTopItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
                                      QLatin1String("ApplicationInstance"));
 
+    if (!appInstance->isConfigWritable())
+    {
+        appInstanceTopItem->setEnabled(false);
+    }
+
     QtVariantProperty* nameItem = variantManager->addProperty(QVariant::String, QString("Name"));
 
     nameItem->setValue(QString::fromStdString(appInstance->getName()));
@@ -309,6 +314,10 @@ void DetailedApplicationView::showScenario(ScenarioPtr scenario)
 
     QtProperty* scenarioTopItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
                                   QLatin1String("Scenario"));
+    if (!scenario->isScenarioFileWriteable())
+    {
+        scenarioTopItem->setEnabled(false);
+    }
 
     QtVariantProperty* nameItem = variantManager->addProperty(QVariant::String, QString("Name"));
     nameItem->setValue(QString::fromStdString(scenario->getName()));
@@ -329,6 +338,10 @@ void DetailedApplicationView::showScenario(ScenarioPtr scenario)
     QtProperty* scenarioPropertyTopItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
                                           QLatin1String("Scenario Properties"));
     scenarioTopItem->addSubProperty(scenarioPropertyTopItem);
+    if (!scenario->isGlobalConfigWritable())
+    {
+        scenarioPropertyTopItem->setEnabled(false);
+    }
 
     armarx::PropertyDefinitionsPtr props = scenario->getGlobalConfig();
 
@@ -603,14 +616,20 @@ void DetailedApplicationView::on_fileUpdate()
     {
 
         //DANGER delets old config
-        lastAppInstance->resetConfigPath();
-        lastAppInstance->save();
+        if (lastAppInstance->isConfigWritable())
+        {
+            lastAppInstance->resetConfigPath();
+            lastAppInstance->save();
+        }
 
         emit saveScenario(lastAppInstance);
     }
     else if (lastScenario.get() != nullptr)
     {
-        lastScenario->save();
+        if (lastAppInstance->isConfigWritable())
+        {
+            lastScenario->save();
+        }
     }
 }
 
diff --git a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp
index 6d8ae178e2837877de32ab26b30d43655b50d6bb..ec3638550fa802fac8f8302edf869f0debb2e080 100644
--- a/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp
+++ b/source/ArmarXGui/gui-plugins/ScenarioManager/gui/packageadderview.cpp
@@ -69,7 +69,7 @@ void PackageAdderView::on_packageName_textChanged(const QString& text)
     CMakePackageFinder pFinder(text.toStdString());
     if (pFinder.packageFound())
     {
-        ui->packagePath->setText(QString::fromStdString(pFinder.getPackageDir()));
+        ui->packagePath->setText(QString::fromStdString(pFinder.getConfigDir()));
         ui->foundPackageLabel->setPixmap(QPixmap(":/icons/user-online.svg"));
         found = true;
     }