diff --git a/Script/CastorScript.py b/Script/CastorScript.py
index a6410669669c6db37612f25530acf655e9d62ab5..324eb9ccd3a648b29ee693d026b415b5f89ae984 100644
--- a/Script/CastorScript.py
+++ b/Script/CastorScript.py
@@ -64,7 +64,10 @@ DdmMonitoringQueue = Queue(config.DdmMonitoringQueueMaxSize)  # created even if
 manager = ManagerThread(config, event, CopyQueue, DeleteQueue, ClearQueue)
 copy = CopyThread(config, event, dbLock, CopyQueue, DeleteQueue, ClearQueue,
                   DdmMonitoringQueue)
-delete = DeleteThread(config, event, dbLock, DeleteQueue, ClearQueue)
+
+delete = None
+if config.DeleteEnabled:
+    delete = DeleteThread(config, event, dbLock, DeleteQueue, ClearQueue)
 
 ddm_publisher = None
 if config.DdmMonitoringEnabled:
@@ -207,7 +210,8 @@ def main(conf):
     ##### Start the threads #####
     manager.start()
     copy.start()
-    delete.start()
+    if delete is not None:
+        delete.start()
     if conf.ERSenabled:
         check.start()
     logger.info('Manager, Copy, Delete and Check Threads started')
@@ -248,7 +252,7 @@ def main(conf):
 
 
         #Check worker states
-        if not (manager.isAlive() and copy.isAlive() and delete.isAlive()):
+        if not (manager.isAlive() and copy.isAlive() and (delete is None or delete.isAlive())):
             logger.warning('Inconsistent worker states. Manager-->%s Copy-->%s '\
                            'Delete-->%s. Exiting!', manager.isAlive(),
                            copy.isAlive(), delete.isAlive())
@@ -260,7 +264,8 @@ def main(conf):
     logger.info('Exit signal (12) received: exit in clean way')
     manager.managerExit()
     copy.copyExit()
-    delete.deleteExit()
+    if delete:
+        delete.deleteExit()
 
     if conf.ERSenabled:
         check.checkExit()
@@ -271,7 +276,8 @@ def main(conf):
     ##### Wait for the threads to finish and then stop #####
     manager.join()
     copy.join()
-    delete.join()
+    if delete:
+        delete.join()
     if conf.ERSenabled:
         check.join()
     logger.info('Manager,Copy, Delete and Check Threads joined the main thread')
@@ -290,7 +296,7 @@ def Exit(signal_number, stackframe):
 
 
 def checkDB(db, logger, dblogger, parser, conf):
-    dbFlag = copy.getDBFlag() and delete.getDBFlag()
+    dbFlag = copy.getDBFlag() and (delete is None or delete.getDBFlag())
     if not dbFlag:
         db = None
     if not db and conf.connection:
@@ -305,7 +311,8 @@ def checkDB(db, logger, dblogger, parser, conf):
 
             # end try, except
         copy.setDB(db)
-        delete.setDB(db)
+        if delete:
+            delete.setDB(db)
     # end if not
     return db
 
diff --git a/Script/CheckThread.py b/Script/CheckThread.py
index 2804d794098acc9ea730526e9d6e4f9ee52a851a..babb39f54e8855a574ce070dda7f398f5532e706 100644
--- a/Script/CheckThread.py
+++ b/Script/CheckThread.py
@@ -100,14 +100,16 @@ class CheckThread(threading.Thread):
             self.check_logger.addHandler(self.check_ERS_handler)
             self.copy.AddRemoveERS(True)
             self.manager.AddRemoveERS(True)
-            self.delete.AddRemoveERS(True)
+            if self.delete:
+                self.delete.AddRemoveERS(True)
         else:
             ##### Remove ERS from all loggers #####
             self.logger.removeHandler(self.ERS_handler)
             self.check_logger.removeHandler(self.check_ERS_handler)
             self.copy.AddRemoveERS(False)
             self.manager.AddRemoveERS(False)
-            self.delete.AddRemoveERS(False)
+            if self.delete:
+                self.delete.AddRemoveERS(False)
         # end if,else
     # end def change_state_ers()
 
diff --git a/Script/Conf.cfg b/Script/Conf.cfg
index 1cf8acff5de944f280166217c16351e6fe16af98..536dc7ddad2b5ddf64b9788ee48323a19a72a17b 100644
--- a/Script/Conf.cfg
+++ b/Script/Conf.cfg
@@ -192,6 +192,8 @@ bwDevice: None
 
 #[Delete]
 ########## DELETE THREAD ##########
+# Disable to completely disable the feature (thread not started)
+DeleteEnabled: True
 
 # Is simultaneous writing and deleting allowed?
 ignoreLock: True
diff --git a/Script/Conf.py b/Script/Conf.py
index 39e0807a6f091a6e7b33ca2104dc8166c880b077..8d0af732e311247d562233b767fe0ed0b014be13 100644
--- a/Script/Conf.py
+++ b/Script/Conf.py
@@ -303,6 +303,10 @@ class Conf:
 
 
         ########## DELETE THREAD ##########
+        try:
+            self.DeleteEnabled = cfg.DeleteEnabled
+        except AttributeError:
+            self.DeleteEnabled = True
 
         # Is simultaneous writing and deleting allowed?
         self.ignoreLock = cfg.ignoreLock
diff --git a/Script/CopyThread.py b/Script/CopyThread.py
index 6ecd39bc68fcfc660f3be68d0c07c9ad680495cc..958ebde6dfc4655be196ae4c90c766af3d3f583a 100644
--- a/Script/CopyThread.py
+++ b/Script/CopyThread.py
@@ -378,7 +378,8 @@ class CopyThread(threading.Thread):
                             )
 
                 ##### Copy successfull: put .COPIED file in DeleteQueue for deletion #####
-                self.DeleteQueue.put([DataFile,pool,copyDir,stagehost])
+                if self.conf.DeleteEnabled:
+                    self.DeleteQueue.put([DataFile,pool,copyDir,stagehost])
                 # block until room is available in the queue ?????
 
                 ##### Remove the copy process from CopyList #####
diff --git a/Script/ManagerThread.py b/Script/ManagerThread.py
index a405ef2888b55fc2e7c44007fa0d500851d12f53..f7bc1fe762c487f2c19c933c538dd57cf0c42a21 100644
--- a/Script/ManagerThread.py
+++ b/Script/ManagerThread.py
@@ -99,7 +99,8 @@ class ManagerThread(threading.Thread):
                 StageHost = CastorInfo[2]
 
                 self.CopyFileList.append(DataFile)
-                self.DeleteQueue.put([DataFile,CastorPool,CastorDir,StageHost])
+                if self.conf.DeleteEnabled:
+                    self.DeleteQueue.put([DataFile,CastorPool,CastorDir,StageHost])
                 self.logger.debug('File: %s in DeleteQueue', DataFile)
 
         self.logger.info('Size of DeleteQueue: %d', self.DeleteQueue.qsize())