PDSExecutionWatcher leads to hanging process on integration-test shutdown
## Situation
In #996 review we encountered that the PDS server is still running after integration tests has been started.
Inside this issue this problem will be solved.

### Reproduce problem
We simply start a PDS integration test server with
`./gradlew startIntegrationTestPDS`

After the gradle build is done, we  will see with
`ps aux| grep "pds"` that the server is up and running

`./gradlew stopIntegrationTestPDS`

After the gradle build is done, we  will see with
`ps aux| grep "pds"` that the server is STILL up and running - so this is a bug.


diff --git a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java
index f75fc5077..0b8784d3b 100644
--- a/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java
+++ b/sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java
@@ -7,6 +7,7 @@ import java.io.FileWriter;
 
 import com.daimler.sechub.adapter.AdapterMetaData;
 import com.daimler.sechub.adapter.AdapterMetaDataCallback;
+import com.daimler.sechub.test.TestUtil;
 
 /**
  * This is a simple test application for checkmarx.
@@ -73,7 +74,7 @@ public class CheckmarxAdapterTestApplication {
                 return null;
             }
         });
-		File file = File.createTempFile("checkmarx-adaptertest-result", ".xml");
+		File file = TestUtil.createTempFileInBuildFolder("checkmarx-adaptertest-result", "xml").toFile();
 		FileWriter fileWriter= new FileWriter(file);
 		fileWriter.write(data);
 		fileWriter.close();
diff --git a/sechub-doc/src/test/java/com/daimler/sechub/docgen/util/TextFileWriterTest.java b/sechub-doc/src/test/java/com/daimler/sechub/docgen/util/TextFileWriterTest.java
index e94e16cf6..ad8f655e3 100644
--- a/sechub-doc/src/test/java/com/daimler/sechub/docgen/util/TextFileWriterTest.java
+++ b/sechub-doc/src/test/java/com/daimler/sechub/docgen/util/TextFileWriterTest.java
@@ -7,33 +7,39 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.daimler.sechub.test.TestUtil;
 
 public class TextFileWriterTest {
 	
 	private TextFileWriter writerToTest;
 
 
-	@Before
-	public void before() throws Exception {
+	@BeforeEach
+	void before() throws Exception {
 		writerToTest = new TextFileWriter();
 	}
 
 
 	@Test
-	public void is_able_to_save_a_temporary_file() throws Exception {
+	void is_able_to_save_a_file_having_path_not_createad_before() throws Exception {
 		/* prepare */
-		File file = new File(System.getProperty("java.io.tmpdir"));
-		File subFolder = new File(file, "subFolder");
+		File file = TestUtil.createTempDirectoryInBuildFolder("textfilewriter-test").toFile();
+		File subFolder = new File(file, "subFolder"); 
 		File targetFile = new File(subFolder, "targetFile");
 		targetFile.deleteOnExit();
 
+		assertFalse(subFolder.exists());
+		assertFalse(targetFile.exists());
+
 		/* execute */
 		writerToTest.save(targetFile, "text");
 
 		/* test */
-		assertTrue(targetFile.exists());
+		assertTrue(subFolder.exists());
+		assertTrue(targetFile.exists()); 
 
 		try (BufferedReader br = new BufferedReader(new FileReader(targetFile))) {
 			String line = br.readLine();
diff --git a/sechub-integrationtest/build.gradle b/sechub-integrationtest/build.gradle
index b55cfd191..7727bef17 100644
--- a/sechub-integrationtest/build.gradle
+++ b/sechub-integrationtest/build.gradle
@@ -29,10 +29,11 @@ def integrationTestPDSPortValue = 8444;
 def pdsVersion = VersionData.getPdsVersion()
 def serverVersion = VersionData.getServerVersion()
 
-// define dummy path (not existing, will be changed later in integrationTest task! 
-def tempDirPath = new File(System.getProperty("user.home"),"sechub-inttest").toPath();
+// initialize shared volume path (but not force directory creation, will be done later)
+long nanoTime = System.nanoTime()
 
-def intTestFolderPath = tempDirPath.toString();
+File tempFolder = new File("${project.projectDir}/build/tmp/sharedvolume-${nanoTime}")
+def tempDirPath = tempFolder.toPath()
 
 task copyIntegrationTestResults(type: Copy) {
         with{
@@ -60,9 +61,9 @@ tasks.clean.dependsOn(tasks.cleanLogFiles)
 // configures integration test shared volume
 task configureIntTestSharedVolume {
     doFirst {
-            // at this point we create a new temp directory for integration tests
-            tempDirPath = Files.createTempDirectory("sechub-inttest")
+            // at this point we create the temp directory structure for our integration tests
             println (">> CREATE temp dir: $tempDirPath")
+            Files.createDirectories(tempDirPath)
    }
 }
 
diff --git a/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/AsUser.java b/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/AsUser.java
index 04d331229..0f963626f 100644
--- a/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/AsUser.java
+++ b/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/AsUser.java
@@ -659,7 +659,7 @@ public class AsUser {
         RequestCallback requestCallback = request -> request.getHeaders().setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL));
 
         ResponseExtractor<File> responseExtractor = response -> {
-            Path path = Files.createTempFile(fileName, fileEnding);
+            Path path = TestUtil.createTempFileInBuildFolder(fileName, fileEnding);
             Files.copy(response.getBody(), path, StandardCopyOption.REPLACE_EXISTING);
             if (TestUtil.isDeletingTempFiles()) {
                 path.toFile().deleteOnExit();
diff --git a/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/WithSecHubClient.java b/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/WithSecHubClient.java
index 04467fe3f..726fbc210 100644
--- a/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/WithSecHubClient.java
+++ b/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/WithSecHubClient.java
@@ -5,7 +5,6 @@ import static org.junit.Assert.*;
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
@@ -45,7 +44,7 @@ public class WithSecHubClient {
     WithSecHubClient(AsUser asUser) {
         this.asUser = asUser;
         try {
-            this.outputFolder = Files.createTempDirectory("with-sechub-client-");
+            this.outputFolder = TestUtil.createTempDirectoryInBuildFolder("with-sechub-client-");
             this.outputFolder.toFile().deleteOnExit();
         } catch (IOException e) {
             throw new IllegalStateException("Can NOT create temp directory for tests!", e);
@@ -193,7 +192,7 @@ public class WithSecHubClient {
             this.downloadedFile = file;
 
             try {
-                unzipTo = Files.createTempDirectory("sechub-assertzip");
+                unzipTo = TestUtil.createTempDirectoryInBuildFolder("sechub-assertzip");
                 if (TestUtil.isDeletingTempFiles()) {
                     unzipTo.toFile().deleteOnExit();
                 }
diff --git a/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/internal/SecHubClientExecutor.java b/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/internal/SecHubClientExecutor.java
index 9be53fdaf..2486a1f69 100644
--- a/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/internal/SecHubClientExecutor.java
+++ b/sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/internal/SecHubClientExecutor.java
@@ -247,8 +247,7 @@ public class SecHubClientExecutor {
 
     private File createTempFileForOutput() throws IOException {
         /* create temporary file for output */
-        File tmpGoOutputFile = File.createTempFile("sechub-client-test-", ".txt");
-        tmpGoOutputFile.deleteOnExit();
+        File tmpGoOutputFile = TestUtil.createTempFileInBuildFolder("sechub-client-test-", "txt").toFile();
         LOG.info("Temporary go output at:{}", tmpGoOutputFile);
         return tmpGoOutputFile;
     }
diff --git a/sechub-integrationtest/src/test/java/com/daimler/sechub/integrationtest/internal/PersistentScenarioTestDataProviderTest.java b/sechub-integrationtest/src/test/java/com/daimler/sechub/integrationtest/internal/PersistentScenarioTestDataProviderTest.java
index 9431f5b1d..be50db7e2 100644
--- a/sechub-integrationtest/src/test/java/com/daimler/sechub/integrationtest/internal/PersistentScenarioTestDataProviderTest.java
+++ b/sechub-integrationtest/src/test/java/com/daimler/sechub/integrationtest/internal/PersistentScenarioTestDataProviderTest.java
@@ -3,18 +3,18 @@ package com.daimler.sechub.integrationtest.internal;
 
 import static org.junit.Assert.*;
 
-import java.nio.file.Files;
-
 import org.junit.Before;
 import org.junit.Test;
 
+import com.daimler.sechub.test.TestUtil;
+
 public class PersistentScenarioTestDataProviderTest {
 
     private PersistentScenarioTestDataProvider providerToTest;
 
     @Before
     public void before() throws Exception {
-        providerToTest = new PersistentScenarioTestDataProvider(Files.createTempFile("sechub-scenario_testdata", ".properties").toFile());
+        providerToTest = new PersistentScenarioTestDataProvider(TestUtil.createTempFileInBuildFolder("sechub-scenario_testdata", "properties").toFile());
     }
 
     @Test
diff --git a/sechub-pds/src/test/java/com/daimler/sechub/pds/config/PDSPathExecutableValidatorTest.java b/sechub-pds/src/test/java/com/daimler/sechub/pds/config/PDSPathExecutableValidatorTest.java
index 15da49b37..1a54f3989 100644
--- a/sechub-pds/src/test/java/com/daimler/sechub/pds/config/PDSPathExecutableValidatorTest.java
+++ b/sechub-pds/src/test/java/com/daimler/sechub/pds/config/PDSPathExecutableValidatorTest.java
@@ -3,7 +3,6 @@ package com.daimler.sechub.pds.config;
 
 import static org.junit.Assert.*;
 
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.attribute.PosixFilePermission;
 import java.nio.file.attribute.PosixFilePermissions;
@@ -12,6 +11,8 @@ import java.util.Collections;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.daimler.sechub.test.TestUtil;
+
 public class PDSPathExecutableValidatorTest {
 
     private PDSPathExecutableValidator validatorToTest;
@@ -34,7 +35,7 @@ public class PDSPathExecutableValidatorTest {
     @Test
     public void path_existing_but_not_executable_not_valid() throws Exception {
         /* prepare */
-        Path tempFile = Files.createTempFile("pds_executable", ".sh");
+        Path tempFile = TestUtil.createTempFileInBuildFolder("pds_executable", "sh");
         
         /* execute */
         String message = validatorToTest.createValidationErrorMessage(tempFile.toRealPath().toString());
@@ -47,7 +48,7 @@ public class PDSPathExecutableValidatorTest {
     @Test
     public void path_existing_and_executable_is_valid() throws Exception {
         /* prepare */
-        Path tempFile = Files.createTempFile("pds_executable", ".sh",PosixFilePermissions.asFileAttribute(Collections.singleton(PosixFilePermission.OWNER_EXECUTE)));
+        Path tempFile = TestUtil.createTempFileInBuildFolder("pds_executable", "sh",PosixFilePermissions.asFileAttribute(Collections.singleton(PosixFilePermission.OWNER_EXECUTE)));
         
         /* execute */
         String message = validatorToTest.createValidationErrorMessage(tempFile.toRealPath().toString());
diff --git a/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSFileUploadJobServiceTest.java b/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSFileUploadJobServiceTest.java
index c32fef274..60b940fcd 100644
--- a/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSFileUploadJobServiceTest.java
+++ b/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSFileUploadJobServiceTest.java
@@ -7,7 +7,6 @@ import static org.mockito.Mockito.*;
 
 import java.io.File;
 import java.io.InputStream;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Optional;
 import java.util.UUID;
@@ -23,6 +22,7 @@ import com.daimler.sechub.pds.test.ExtendedMockMultipartFile;
 import com.daimler.sechub.pds.util.PDSFileChecksumSHA256Service;
 import com.daimler.sechub.pds.util.PDSZipSupport;
 import com.daimler.sechub.storage.core.JobStorage;
+import com.daimler.sechub.test.TestUtil;
 
 public class PDSFileUploadJobServiceTest {
 
@@ -46,7 +46,7 @@ public class PDSFileUploadJobServiceTest {
 
     @BeforeEach
     void beforeEach() throws Exception {
-        tmpUploadPath = Files.createTempDirectory("pds-upload");
+        tmpUploadPath = TestUtil.createTempDirectoryInBuildFolder("pds-upload");
         jobUUID = UUID.randomUUID();
         checksumService = mock(PDSFileChecksumSHA256Service.class);
         workspaceService = mock(PDSWorkspaceService.class);
diff --git a/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSWorkspaceServiceTest.java b/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSWorkspaceServiceTest.java
index cbb785e96..f5583fdcb 100644
--- a/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSWorkspaceServiceTest.java
+++ b/sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSWorkspaceServiceTest.java
@@ -7,7 +7,6 @@ import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.*;
 
 import java.io.ByteArrayInputStream;
-import java.nio.file.Files;
 import java.util.Collections;
 import java.util.UUID;
 
@@ -20,6 +19,7 @@ import com.daimler.sechub.pds.execution.PDSExecutionParameterEntry;
 import com.daimler.sechub.pds.storage.PDSMultiStorageService;
 import com.daimler.sechub.pds.storage.PDSStorageInfoCollector;
 import com.daimler.sechub.storage.core.JobStorage;
+import com.daimler.sechub.test.TestUtil;
 
 class PDSWorkspaceServiceTest {
 
@@ -46,7 +46,7 @@ class PDSWorkspaceServiceTest {
     @DisplayName("createLocationData method contains expected pathes when using temp directory for upload")
     void createLocationData_contains_expected_pathes_when_using_temp_directory_as_upload_base_path() throws Exception {
         /* prepare */
-        String path = Files.createTempDirectory("pds_ws_test").toAbsolutePath().toString();
+        String path = TestUtil.createTempDirectoryInBuildFolder("pds_ws_test").toAbsolutePath().toString();
         serviceToTest.uploadBasePath = path;
 
         UUID jobUUID = UUID.randomUUID();
diff --git a/sechub-pds/src/test/java/com/daimler/sechub/pds/util/PDSFileUnzipSupportTest.java b/sechub-pds/src/test/java/com/daimler/sechub/pds/util/PDSFileUnzipSupportTest.java
index 29226a934..421b90ecd 100644
--- a/sechub-pds/src/test/java/com/daimler/sechub/pds/util/PDSFileUnzipSupportTest.java
+++ b/sechub-pds/src/test/java/com/daimler/sechub/pds/util/PDSFileUnzipSupportTest.java
@@ -4,7 +4,6 @@ package com.daimler.sechub.pds.util;
 import static org.junit.jupiter.api.Assertions.*;
 
 import java.io.File;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -12,6 +11,7 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import com.daimler.sechub.pds.util.PDSFileUnzipSupport.UnzipResult;
+import com.daimler.sechub.test.TestUtil;
 
 class PDSFileUnzipSupportTest {
 
@@ -26,7 +26,7 @@ class PDSFileUnzipSupportTest {
     void bugfix_773_zipfile_without_explicit_directory_entries_can_be_extracted_as_well() throws Exception {
         /* prepare */
         File singleZipfile = resolveTestFile("zipfiles/bugfix-773.zip");
-        File targetFolder = Files.createTempDirectory("pds_773-bugfix_test").toFile();
+        File targetFolder = TestUtil.createTempDirectoryInBuildFolder("pds_773-bugfix_test").toFile();
         targetFolder.mkdirs();
 
         /* execute */
@@ -46,7 +46,7 @@ class PDSFileUnzipSupportTest {
     void single_file_zip_can_be_extracted() throws Exception {
         /* prepare */
         File singleZipfile = resolveTestFile("zipfiles/single_file.zip");
-        File targetFolder = Files.createTempDirectory("pds_sinlgezip_test").toFile();
+        File targetFolder = TestUtil.createTempDirectoryInBuildFolder("pds_sinlgezip_test").toFile();
         targetFolder.mkdirs();
 
         /* execute */
@@ -62,7 +62,7 @@ class PDSFileUnzipSupportTest {
     void two_files_zip_can_be_extracted() throws Exception {
         /* prepare */
         File twoFilesZipfile = resolveTestFile("zipfiles/two_files.zip");
-        File targetFolder = Files.createTempDirectory("pds_twofileszip_test").toFile();
+        File targetFolder = TestUtil.createTempDirectoryInBuildFolder("pds_twofileszip_test").toFile();
         targetFolder.mkdirs();
 
         /* execute */
@@ -79,7 +79,7 @@ class PDSFileUnzipSupportTest {
         /* prepare */
         File abcZipfile = resolveTestFile("zipfiles/hierarchical_files.zip");
 
-        File targetFolder = Files.createTempDirectory("pds_abczip_test").toFile();
+        File targetFolder = TestUtil.createTempDirectoryInBuildFolder("pds_abczip_test").toFile();
         targetFolder.mkdirs();
 
         /* execute */
diff --git a/sechub-scan/src/test/java/com/daimler/sechub/domain/scan/admin/FullScanDataToZipOutputSupportTest.java b/sechub-scan/src/test/java/com/daimler/sechub/domain/scan/admin/FullScanDataToZipOutputSupportTest.java
index f72d55db8..c737fd441 100644
--- a/sechub-scan/src/test/java/com/daimler/sechub/domain/scan/admin/FullScanDataToZipOutputSupportTest.java
+++ b/sechub-scan/src/test/java/com/daimler/sechub/domain/scan/admin/FullScanDataToZipOutputSupportTest.java
@@ -21,6 +21,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.daimler.sechub.domain.scan.log.ProjectScanLog;
+import com.daimler.sechub.test.TestUtil;
 
 public class FullScanDataToZipOutputSupportTest {
 
@@ -38,7 +39,7 @@ public class FullScanDataToZipOutputSupportTest {
 		/* prepare */
 		FullScanData fullScanData = createFullScanDataTwoProductsOneLogEntry();
 
-		File file = File.createTempFile("log_fullscan", ".zip");
+		File file = TestUtil.createTempFileInBuildFolder("log_fullscan", "zip").toFile();
 
 		/* execute */
 		try(FileOutputStream fos = new FileOutputStream(file)){
@@ -75,7 +76,7 @@ public class FullScanDataToZipOutputSupportTest {
 		FullScanData fullScanData2 = createFullScanDataTwoProductsOneLogEntry();
 		fullScanData.allScanData.addAll(fullScanData2.allScanData);
 
-		File file = File.createTempFile("log_fullscan", ".zip");
+		File file = TestUtil.createTempFileInBuildFolder("log_fullscan", "zip").toFile();
 
 		/* execute */
 		try(FileOutputStream fos = new FileOutputStream(file)){
diff --git a/sechub-storage-s3-aws-test/src/test/java/com/daimler/sechub/storage/s3/AwsS3JobStorageTest.java b/sechub-storage-s3-aws-test/src/test/java/com/daimler/sechub/storage/s3/AwsS3JobStorageTest.java
index eb196be49..61f854f0e 100644
--- a/sechub-storage-s3-aws-test/src/test/java/com/daimler/sechub/storage/s3/AwsS3JobStorageTest.java
+++ b/sechub-storage-s3-aws-test/src/test/java/com/daimler/sechub/storage/s3/AwsS3JobStorageTest.java
@@ -30,6 +30,7 @@ import com.amazonaws.services.s3.AmazonS3;
 import com.amazonaws.services.s3.model.Bucket;
 import com.daimler.sechub.storage.s3.aws.AwsS3JobStorage;
 import com.daimler.sechub.test.TestPortProvider;
+import com.daimler.sechub.test.TestUtil;
 
 public class AwsS3JobStorageTest {
 
@@ -74,7 +75,7 @@ public class AwsS3JobStorageTest {
         /* prepare */
         AwsS3JobStorage storage = new AwsS3JobStorage(amazonTestClient, "bucket2", "jobstorage/projectName", UUID.randomUUID());
 
-        Path tmpFile = Files.createTempFile("storage_test", ".txt");
+        Path tmpFile = TestUtil.createTempFileInBuildFolder("storage_test", "txt");
 
         /* execute */
         InputStream inputStream = new FileInputStream(tmpFile.toFile());
@@ -94,7 +95,7 @@ public class AwsS3JobStorageTest {
         String testContent = "line1\nline2";
         AwsS3JobStorage storage = new AwsS3JobStorage(amazonTestClient, "bucket2", "jobstorage/projectName", jobjUUID);
 
-        Path tmpFile = Files.createTempFile("storage_test", ".txt");
+        Path tmpFile = TestUtil.createTempFileInBuildFolder("storage_test", "txt");
         BufferedWriter bw = Files.newBufferedWriter(tmpFile);
 
         bw.write(testContent);
@@ -300,7 +301,7 @@ public class AwsS3JobStorageTest {
     }
 
     private AwsS3JobStorage storeCreatedTestDataFile(String name, AwsS3JobStorage storage) throws IOException, FileNotFoundException {
-        Path tmpFile = Files.createTempFile("storage_test", ".txt");
+        Path tmpFile = TestUtil.createTempFileInBuildFolder("storage_test", "txt");
         try (BufferedWriter bw = new BufferedWriter(new FileWriter(tmpFile.toFile()))) {
             bw.write(TEST_DATA);
         }
diff --git a/sechub-storage-sharedvolume-spring/build.gradle b/sechub-storage-sharedvolume-spring/build.gradle
index e8a0aa911..04e9e77c2 100644
--- a/sechub-storage-sharedvolume-spring/build.gradle
+++ b/sechub-storage-sharedvolume-spring/build.gradle
@@ -10,4 +10,5 @@ dependencies {
     implementation library.slf4j
     implementation project(':sechub-storage-core')
 	testImplementation library.mockito_inline
+	testImplementation project(':sechub-testframework')
 }
diff --git a/sechub-storage-sharedvolume-spring/src/main/java/com/daimler/sechub/storage/sharevolume/spring/AbstractSharedVolumePropertiesSetup.java b/sechub-storage-sharedvolume-spring/src/main/java/com/daimler/sechub/storage/sharevolume/spring/AbstractSharedVolumePropertiesSetup.java
index 7cc4b0bbf..08be3e1d5 100644
--- a/sechub-storage-sharedvolume-spring/src/main/java/com/daimler/sechub/storage/sharevolume/spring/AbstractSharedVolumePropertiesSetup.java
+++ b/sechub-storage-sharedvolume-spring/src/main/java/com/daimler/sechub/storage/sharevolume/spring/AbstractSharedVolumePropertiesSetup.java
@@ -54,18 +54,16 @@ public abstract class AbstractSharedVolumePropertiesSetup implements SharedVolum
             LOG.info("Using {} as shared volume directory for uploads", propertiesUploadDir);
             return propertiesUploadDir;
         }
-
+        /* at this point there is no upload directory defined - so start a fallback*/
         try {
             LOG.info(
-                    "Temp upload directy set, so creating a new temp directory. This should be used only on testing or when you just use ONE server instance. Using multiple server instances you need an NFS.");
+                    "Temp upload directy NOT set, so creating a new temp directory. This should be used only on testing or when you just use ONE server instance. Using multiple server instances you need an NFS.");
 
-            Path rootPath = Files.createTempDirectory("sechub-temp-sharedvolume");
+            Path rootPath = Files.createTempDirectory("sechub-fallback-sharedvolume");
             Path uploadPath = rootPath.resolve("upload");
             Files.createDirectories(uploadPath);
             uploadPath.toFile().deleteOnExit();
 
-            LOG.info("Temporary upload dir is at:{}", uploadPath);
-
             return uploadPath.toFile().getAbsolutePath();
 
         } catch (IOException e) {
diff --git a/sechub-storage-sharedvolume-spring/src/test/java/com/daimler/sechub/storage/sharevolume/spring/SharedVolumeJobStorageTest.java b/sechub-storage-sharedvolume-spring/src/test/java/com/daimler/sechub/storage/sharevolume/spring/SharedVolumeJobStorageTest.java
index 91c087091..5e91e2ff2 100644
--- a/sechub-storage-sharedvolume-spring/src/test/java/com/daimler/sechub/storage/sharevolume/spring/SharedVolumeJobStorageTest.java
+++ b/sechub-storage-sharedvolume-spring/src/test/java/com/daimler/sechub/storage/sharevolume/spring/SharedVolumeJobStorageTest.java
@@ -7,7 +7,6 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Set;
 import java.util.UUID;
@@ -16,13 +15,15 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
+import com.daimler.sechub.test.TestUtil;
+
 class SharedVolumeJobStorageTest {
 
     private Path rootLocation;
 
     @BeforeEach
     void beforeEach() throws Exception {
-        rootLocation = Files.createTempDirectory("sechub-sharedvolume-test");
+        rootLocation = TestUtil.createTempDirectoryInBuildFolder("sechub-sharedvolume-test");
     }
 
     @Test
@@ -46,7 +47,7 @@ class SharedVolumeJobStorageTest {
     private SharedVolumeJobStorage storeTestData(UUID jobUUID, String fileName) throws IOException, FileNotFoundException {
         SharedVolumeJobStorage storage = new SharedVolumeJobStorage(rootLocation, "test1", jobUUID);
 
-        Path tmpFile = Files.createTempFile("storage_test", ".txt");
+        Path tmpFile = TestUtil.createTempFileInBuildFolder("storage_test", "txt");
 
         /* execute */
         InputStream inputStream = new FileInputStream(tmpFile.toFile());
diff --git a/sechub-test/src/test/java/com/daimler/sechub/test/report/ThymeLeafHTMLReportingTest.java b/sechub-test/src/test/java/com/daimler/sechub/test/report/ThymeLeafHTMLReportingTest.java
index 33408db6a..9c54d3be8 100644
--- a/sechub-test/src/test/java/com/daimler/sechub/test/report/ThymeLeafHTMLReportingTest.java
+++ b/sechub-test/src/test/java/com/daimler/sechub/test/report/ThymeLeafHTMLReportingTest.java
@@ -3,8 +3,8 @@ package com.daimler.sechub.test.report;
 import static com.daimler.sechub.test.report.ReportTestHelper.*;
 import static org.junit.jupiter.api.Assertions.*;
 
-import java.io.File;
 import java.io.IOException;
+import java.nio.file.Path;
 import java.util.Locale;
 import java.util.Map;
 
@@ -158,11 +158,11 @@ public class ThymeLeafHTMLReportingTest {
         if (!TestUtil.isKeepingTempfiles()) {
             return;
         }
-        File testFile = TestUtil.createTempFileInBuildFolder("thymeleaf-html-reporttest-" + context.exampleName + "." + fileEnding);
+        Path testFile = TestUtil.createTempFileInBuildFolder("thymeleaf-html-reporttest-" + context.exampleName + "." + fileEnding);
         TextFileWriter writer = new TextFileWriter();
-        writer.save(testFile, content);
+        writer.save(testFile.toFile(), content);
 
-        System.out.println("Wrote test file to:" + testFile.getAbsolutePath());
+        System.out.println("Wrote test file to:" + testFile);
     }
 
     private enum ReportInputFormat {
diff --git a/sechub-testframework/src/main/java/com/daimler/sechub/test/TestFileSupport.java b/sechub-testframework/src/main/java/com/daimler/sechub/test/TestFileSupport.java
index 560af02d4..ebcedfbe7 100644
--- a/sechub-testframework/src/main/java/com/daimler/sechub/test/TestFileSupport.java
+++ b/sechub-testframework/src/main/java/com/daimler/sechub/test/TestFileSupport.java
@@ -11,7 +11,6 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.nio.file.Files;
 import java.nio.file.Path;
 
 /**
@@ -231,7 +230,7 @@ public class TestFileSupport {
     
     public File createTempFile(String prefix, String ending) {
         try {
-            Path path = Files.createTempFile(prefix, ending);
+            Path path = TestUtil.createTempFileInBuildFolder(prefix, ending);
             return path.toFile();
         } catch (IOException e) {
            throw new IllegalStateException("cannot create temp file!",e);
diff --git a/sechub-testframework/src/main/java/com/daimler/sechub/test/TestUtil.java b/sechub-testframework/src/main/java/com/daimler/sechub/test/TestUtil.java
index 1015883b7..4d08fe1a3 100644
--- a/sechub-testframework/src/main/java/com/daimler/sechub/test/TestUtil.java
+++ b/sechub-testframework/src/main/java/com/daimler/sechub/test/TestUtil.java
@@ -5,6 +5,7 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.nio.file.attribute.FileAttribute;
 import java.util.UUID;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -90,7 +91,10 @@ public class TestUtil {
 
     /**
      * Checks if temporary files are deleted
-     * @return false when environment variable {@value TestUtil#SECHUB_KEEP_TEMPFILES} is set to `true` otherwise true
+     * 
+     * @return false when environment variable
+     *         {@value TestUtil#SECHUB_KEEP_TEMPFILES} is set to `true` otherwise
+     *         true
      */
     public static boolean isDeletingTempFiles() {
         return !isKeepingTempfiles();
@@ -98,7 +102,10 @@ public class TestUtil {
 
     /**
      * Checks if temporary files are kept
-     * @return true when environment variable {@value TestUtil#SECHUB_KEEP_TEMPFILES} is set to `true` otherwise false
+     * 
+     * @return true when environment variable
+     *         {@value TestUtil#SECHUB_KEEP_TEMPFILES} is set to `true` otherwise
+     *         false
      */
     public static boolean isKeepingTempfiles() {
         return Boolean.parseBoolean(System.getenv(SECHUB_KEEP_TEMPFILES));
@@ -106,17 +113,43 @@ public class TestUtil {
 
     /**
      * Creates a temporary file inside gradle build folder at
-     * `./build/sechub/tmp/**`. When environment entry
-     * `{@value TestUtil#SECHUB_KEEP_TEMPFILES}` is set to `true` those files will
-     * be kept when JVM exits. Otherwise, those files will be deleted by JVM on
+     * `./build/sechub/tmp/${prefix}_tmp_${nanoTime}.${fileEnding}`. When environment
+     * entry `{@value TestUtil#SECHUB_KEEP_TEMPFILES}` is set to `true` those files
+     * will be kept when JVM exits. Otherwise, those files will be deleted by JVM on
      * shutdown phase normally.
      * 
      * @param prefix filename prefix
-     * @param suffix filename suffix
+     * @param fileEnding filename ending
      * @return file
+     * @throws IOException
+     */
+    public static Path createTempFileInBuildFolder(String prefix, String fileEnding, FileAttribute<?>... attributes) throws IOException {
+        return createTempFileInBuildFolder(prefix + "_tmp_" + System.nanoTime() + "." + fileEnding, attributes);
+    }
+
+    /**
+     * Creates a temporary directory inside gradle build folder at
+     * `./build/sechub/tmp/${dirName}_tmp_${nanoTime}`. When environment entry
+     * `{@value TestUtil#SECHUB_KEEP_TEMPFILES}` is set to `true` those files will
+     * be kept when JVM exits. Otherwise, those files will be deleted by JVM on
+     * shutdown phase normally.
+     * 
+     * @param dirName
+     * @return
+     * @throws IOException
      */
-    public static File createTempFileInBuildFolder(String prefix, String suffix) {
-        return createTempFileInBuildFolder(prefix + "_tmp_" + System.nanoTime() + "." + suffix);
+    public static Path createTempDirectoryInBuildFolder(String dirName, FileAttribute<?>... attributes) throws IOException {
+        Path tmpPath = ensureBuildTmpDirAsFile();
+
+        Path dirAsPath = tmpPath.toRealPath().resolve(dirName + "tmp_" + System.nanoTime());
+        if (Files.notExists(dirAsPath)) {
+            Files.createDirectory(dirAsPath, attributes);
+
+            if (isDeletingTempFiles()) {
+                dirAsPath.toFile().deleteOnExit();
+            }
+        }
+        return dirAsPath;
     }
 
     /**
@@ -131,22 +164,35 @@ public class TestUtil {
      * @param explicitFileName the EXACT file name to use.
      * 
      * @return file
+     * @throws IOException
      */
-    public static File createTempFileInBuildFolder(String explicitFileName) {
-        File parent = new File("./build/sechub/tmp");
-        File file = new File(parent, explicitFileName);
-        if (file.exists()) {
-            LOG.warn("Temporary file already exists and will be deleted:{}",file.getAbsolutePath());
+    public static Path createTempFileInBuildFolder(String explicitFileName, FileAttribute<?>... attributes) throws IOException {
+        Path parent = ensureBuildTmpDirAsFile();
+        Path filePath = parent.resolve(explicitFileName);
+
+        if (Files.exists(filePath)) {
+            LOG.warn("Temporary file already exists and will be deleted:{}", filePath);
             try {
-                Files.delete(file.toPath());
+                Files.delete(filePath);
             } catch (IOException e) {
-                throw new RuntimeException("Cannot delete former temp file",e);
+                throw new RuntimeException("Cannot delete former temp file", e);
             }
         }
+        Files.createFile(filePath, attributes);
         if (isDeletingTempFiles()) {
-            file.deleteOnExit();
+            filePath.toFile().deleteOnExit();
+        }
+        return filePath;
+    }
+
+    private static Path ensureBuildTmpDirAsFile() throws IOException {
+        File file = new File("./build/sechub/tmp");
+        if (!file.exists()) {
+            if (!file.mkdirs()) {
+                throw new IOException("Was not able to create tmp folder at:" + file.getAbsolutePath());
+            }
         }
-        return file;
+        return file.toPath().toRealPath();
     }
 
     public static boolean isWindows() {
diff --git a/sechub-testframework/src/test/java/com/daimler/sechub/test/TestUtilTest.java b/sechub-testframework/src/test/java/com/daimler/sechub/test/TestUtilTest.java
index 492040bea..0a642280f 100644
--- a/sechub-testframework/src/test/java/com/daimler/sechub/test/TestUtilTest.java
+++ b/sechub-testframework/src/test/java/com/daimler/sechub/test/TestUtilTest.java
@@ -3,6 +3,9 @@ package com.daimler.sechub.test;
 
 import static org.junit.Assert.*;
 
+import java.io.IOException;
+import java.nio.file.Path;
+
 import org.junit.Test;
 
 public class TestUtilTest {
@@ -19,5 +22,12 @@ public class TestUtilTest {
     public void create_random_string_throws_illegal_argument_exception_when_negative_1_length() {
         TestUtil.createRAndomString(-1);
     }
+    
+    @Test
+    public void createTempDirectory() throws IOException {
+        Path created = TestUtil.createTempDirectoryInBuildFolder("test-create-tempdir");
+        
+        assertTrue("Not existing path:"+created,created.toFile().exists());
+    }
 
 }
['sechub-storage-sharedvolume-spring/src/main/java/com/daimler/sechub/storage/sharevolume/spring/AbstractSharedVolumePropertiesSetup.java', 'sechub-testframework/src/main/java/com/daimler/sechub/test/TestFileSupport.java', 'sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/WithSecHubClient.java', 'sechub-storage-sharedvolume-spring/src/test/java/com/daimler/sechub/storage/sharevolume/spring/SharedVolumeJobStorageTest.java', 'sechub-testframework/src/main/java/com/daimler/sechub/test/TestUtil.java', 'sechub-doc/src/test/java/com/daimler/sechub/docgen/util/TextFileWriterTest.java', 'sechub-testframework/src/test/java/com/daimler/sechub/test/TestUtilTest.java', 'sechub-adapter-checkmarx/src/test/java/com/daimler/sechub/adapter/checkmarx/CheckmarxAdapterTestApplication.java', 'sechub-pds/src/test/java/com/daimler/sechub/pds/util/PDSFileUnzipSupportTest.java', 'sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSFileUploadJobServiceTest.java', 'sechub-test/src/test/java/com/daimler/sechub/test/report/ThymeLeafHTMLReportingTest.java', 'sechub-storage-s3-aws-test/src/test/java/com/daimler/sechub/storage/s3/AwsS3JobStorageTest.java', 'sechub-scan/src/test/java/com/daimler/sechub/domain/scan/admin/FullScanDataToZipOutputSupportTest.java', 'sechub-pds/src/test/java/com/daimler/sechub/pds/job/PDSWorkspaceServiceTest.java', 'sechub-pds/src/test/java/com/daimler/sechub/pds/config/PDSPathExecutableValidatorTest.java', 'sechub-storage-sharedvolume-spring/build.gradle', 'sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/internal/SecHubClientExecutor.java', 'sechub-integrationtest/build.gradle', 'sechub-integrationtest/src/test/java/com/daimler/sechub/integrationtest/internal/PersistentScenarioTestDataProviderTest.java', 'sechub-integrationtest/src/main/java/com/daimler/sechub/integrationtest/api/AsUser.java']