diff --git a/AutoTx/AutoTx.cs b/AutoTx/AutoTx.cs
index 6ab83e794da65e286c605f26e559871b959f1bd3..fee6fea3204001b685c6fa2829888e0d58af3389 100644
--- a/AutoTx/AutoTx.cs
+++ b/AutoTx/AutoTx.cs
@@ -144,18 +144,23 @@ namespace AutoTx
                              @" and a backslash, e.g. 'D:\'!");
                     configInvalid = true;
                 }
-                // IncomingDirectory
+
+                // spooling directories: IncomingDirectory + ManagedDirectory
                 if (_config.IncomingDirectory.StartsWith(@"\")) {
                     writeLog("ERROR: IncomingDirectory must not start with a backslash!");
                     configInvalid = true;
                 }
-                _incomingPath = Path.Combine(_config.SourceDrive, _config.IncomingDirectory);
-                // ManagedDirectory
                 if (_config.ManagedDirectory.StartsWith(@"\")) {
                     writeLog("ERROR: ManagedDirectory must not start with a backslash!");
                     configInvalid = true;
                 }
+                _incomingPath = Path.Combine(_config.SourceDrive, _config.IncomingDirectory);
                 _managedPath = Path.Combine(_config.SourceDrive, _config.ManagedDirectory);
+                if (CheckSpoolingDirectories() == false) {
+                    writeLog("ERROR checking spooling directories (incoming / managed)!");
+                    configInvalid = true;
+                }
+
                 if (_config.ServiceTimer < 1000) {
                     writeLog("ERROR: ServiceTimer must not be smaller than 1000 ms!");
                     configInvalid = true;
@@ -833,6 +838,19 @@ namespace AutoTx
             return CreateNewDirectory(path, false) == path;
         }
 
+        /// <summary>
+        /// Ensure the required spooling directories (managed/incoming) exist.
+        /// </summary>
+        /// <returns>True if all dirs exist or were created successfully.</returns>
+        private bool CheckSpoolingDirectories() {
+            var retval = CheckForDirectory(_incomingPath);
+            retval &= CheckForDirectory(_managedPath);
+            retval &= CheckForDirectory(Path.Combine(_managedPath, "PROCESSING"));
+            retval &= CheckForDirectory(Path.Combine(_managedPath, "DONE"));
+            retval &= CheckForDirectory(Path.Combine(_managedPath, "UNMATCHED"));
+            return retval;
+        }
+
         #endregion
 
     }
diff --git a/AutoTx/Resources/Install-Service.ps1 b/AutoTx/Resources/Install-Service.ps1
index c22c5b419014b16635a0690aa4ccc56a4b40b303..daf047001e0f09f7341804662b696f8449880e41 100644
--- a/AutoTx/Resources/Install-Service.ps1
+++ b/AutoTx/Resources/Install-Service.ps1
@@ -112,13 +112,6 @@ function Uninstall-FileCopyService {
 }
 
 
-function Create-Directories {
-    $foo = New-Item -ItemType Container -Force -Path "$IncomingDir"
-    $foo = New-Item -ItemType Container -Force -Path "$($ManagedDir)\DONE"
-    $foo = New-Item -ItemType Container -Force -Path "$($ManagedDir)\PROCESSING"
-    $foo = New-Item -ItemType Container -Force -Path "$($ManagedDir)\UNMATCHED"
-}
-
 
 $LocalConfiguration = ".\ScriptsConfig.ps1"
 if (Test-Path $LocalConfiguration) {
@@ -136,12 +129,10 @@ try {
     Write-Host "Service $($ServiceName) already installed, updating."
     Stop-MyService
     Copy-ServiceFiles
-    Create-Directories
 }
 catch {
     Copy-ServiceFiles
     Install-Service
-    Create-Directories
 }
 
 Start-MyService