diff --git a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java
index 8a51d1b0c7c47fd74e72d94c554837db94fbc801..200ac1c7ad2cf9ec5b41085d1ad0dcf746a3553b 100644
--- a/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java
+++ b/CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/check/Checker.java
@@ -57,6 +57,7 @@ import de.hft.stuttgart.quality.model.properties.RequirementProperty;
 import de.hft.stuttgart.quality.model.types.Checking;
 import de.hft.stuttgart.quality.model.types.Parameter;
 import de.hft.stuttgart.quality.model.types.ValidationPlan;
+import org.apache.commons.io.FilenameUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
@@ -78,6 +79,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.UncheckedIOException;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -751,10 +753,23 @@ public class Checker {
 
 
         for (CityGmlZipEntry entry : archive.getEntries()) {
-            String xmlOutput = xmlDirectory == null ? null : xmlDirectory + entry.getFullFileName().replaceFirst("\\..+", ".xml");
-            String pdfOutput = pdfDirectory == null ? null : pdfDirectory + entry.getFullFileName().replaceFirst("\\..+", ".pdf");
-            String outputFile = outputDirectory == null ? null : outputDirectory + entry.getFullFileName();
+            String entryName = FilenameUtils.removeExtension(entry.getDisplayName());
+            String xmlOutput = null;
+            String pdfOutput = null;
+            String outputFile = null;
+            if (xmlDirectory != null) {
+                xmlOutput = Path.of(xmlDirectory).resolve(entryName + "_report.xml").toString();
+            }
+            if (pdfDirectory != null) {
+                pdfOutput = Path.of(pdfDirectory).resolve(entryName + "_report.pdf").toString();
+            }
+            if (outputDirectory != null) {
+                outputFile = Path.of(outputDirectory).resolve(entryName + "_validated.gml").toString();
+            }
+
             streamCheck(entry, xmlOutput, pdfOutput, config, l, outputFile);
+
+
         }
         if (outputDirectory != null) {
             ArchivePacker.packAndDeleteDirectory(outputDirectory);
diff --git a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/check/CheckerTest.java b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/check/CheckerTest.java
index 846061832515be19e4d3e7cd125d6f6ce1da18ac..33686366b890124e438f6f987feda3fc330e1fa1 100644
--- a/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/check/CheckerTest.java
+++ b/CityDoctorParent/CityDoctorValidation/src/test/java/de/hft/stuttgart/citydoctor2/check/CheckerTest.java
@@ -175,7 +175,18 @@ public class CheckerTest {
         for (CityGmlZipEntry entry : cgmlArch.getEntries()) {
             Checker.streamCheck(entry, null, null, config, l, null);
         }
+    }
 
+    @Test
+    public void testZipArchiveChecking() throws CityGmlParseException, IOException {
+        CityGmlZipArchive cgmlArch = CityGmlZipArchive.register("src/test/resources/zipArchive.zip");
+        assertNotNull(cgmlArch);
+        cgmlArch.mountArchive(new ParserConfiguration(8, false));
+        ValidationConfiguration config = ValidationConfiguration.loadStandardValidationConfig();
+        FeatureCheckedListener l = co -> {
+            assertTrue(co.isValidated());
+        };
+        Checker.streamCheck(cgmlArch, null, null, config, l, null);
     }
 
 }
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CheckDialog.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CheckDialog.java
index 2cc5f7af70587688b4c86b14eb72c38db6d40ac0..576b7820e4a653bb8fb104beb389d987b6eaaafb 100644
--- a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CheckDialog.java
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CheckDialog.java
@@ -500,7 +500,7 @@ public class CheckDialog {
 								return;
 							}
 							outputPath = Path.of(outputPathTextField.getText());
-							progress.setProgress(ProgressIndicator.INDETERMINATE_PROGRESS);
+							Platform.runLater(() -> progress.setProgress(ProgressIndicator.INDETERMINATE_PROGRESS));
 						}
 						controller.startZipFileChecks(config, progress::setProgress, streamCheckOption.isSelected(),
 								outputPath, pdfReportsOption.isSelected(),
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
index 8d4990e7c7e76cffdf05513108c7aaa5b8410fd1..9b503af36b9da6b04673f3105a8e170b61e31ffb 100644
--- a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
@@ -31,10 +31,13 @@ import org.apache.logging.log4j.Logger;
 import org.citygml4j.core.model.core.CityModel;
 import org.xml.sax.SAXParseException;
 
+import java.awt.*;
 import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.*;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 
@@ -981,6 +984,7 @@ public class CityDoctorController {
                 String filename = FilenameUtils.removeExtension(zipArchive.getArchivePath().getFileName().toString());
                 filename = filename + "_validated";
                 outputZipDirectory = outputPath.resolve(filename);
+                Files.createDirectories(outputZipDirectory);
             } else {
                 String filename = FilenameUtils.removeExtension(outputPath.toAbsolutePath().getFileName().toString());
                 outputZipDirectory = Path.of(filename);
@@ -988,13 +992,17 @@ public class CityDoctorController {
 
             String xmlReportsDirectory = null;
             String pdfReportsDirectory = null;
-            if (pdfReports) {
-                pdfReportsDirectory = outputZipDirectory.resolve("pdf_reports").toAbsolutePath().toString();
-            }
             if (xmlReports) {
-                xmlReportsDirectory = outputZipDirectory.resolve("xml_reports").toAbsolutePath().toString();
+                xmlReportsDirectory = Files.createDirectories(
+                        outputZipDirectory.resolve("xml_reports/")).toAbsolutePath().toString();
+            }
+            if (pdfReports) {
+                pdfReportsDirectory = Files.createDirectories(
+                        outputZipDirectory.resolve("pdf_reports/")).toAbsolutePath().toString();
             }
             Checker.streamCheck(zipArchive, xmlReportsDirectory, pdfReportsDirectory, valConfig, outputZipDirectory.toString());
+            Desktop desktop = Desktop.getDesktop();
+            desktop.open(outputPath.toFile());
         } catch (CityGmlParseException e) {
             throw new RuntimeException(e);
         } catch (IOException e) {
diff --git a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/resources/de/hft/stuttgart/citydoctor2/gui/CheckDialog.fxml b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/resources/de/hft/stuttgart/citydoctor2/gui/CheckDialog.fxml
index db0874df694e9021c50849570e39f63de8d6b94f..5261641c5b6ca6e3f143e4d0e754e1802438ea45 100644
--- a/CityDoctorParent/Extensions/CityDoctorGUI/src/main/resources/de/hft/stuttgart/citydoctor2/gui/CheckDialog.fxml
+++ b/CityDoctorParent/Extensions/CityDoctorGUI/src/main/resources/de/hft/stuttgart/citydoctor2/gui/CheckDialog.fxml
@@ -75,7 +75,8 @@
                                           </Label>
                                        </children>
                                     </HBox>
-                                    <VBox fx:id="streamCheckParametersVBox" prefHeight="200.0" prefWidth="100.0">
+                                    <VBox fx:id="streamCheckParametersVBox" disable="true" prefHeight="200.0"
+                                          prefWidth="100.0">
                                        <children>
                                           <Label fx:id="outputPathLabel" text="Output path:">
                                              <font>