diff --git a/src/python/dm/common/objects/directoryUploadInfo.py b/src/python/dm/common/objects/directoryUploadInfo.py
index d256a1366a8a2af5fb9f617aee6a4a5282eb7f02..c45145bc2b3a92fa246c4724bb28ea511893e269 100755
--- a/src/python/dm/common/objects/directoryUploadInfo.py
+++ b/src/python/dm/common/objects/directoryUploadInfo.py
@@ -10,7 +10,7 @@ from dm.common.utility.timeUtility import TimeUtility
 
 class DirectoryUploadInfo(DmObject):
 
-    DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory', 'status', 'nFiles', 'startTime', 'endTime', 'runTime', 'startTimestamp', 'endTimestamp' ]
+    DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory', 'status', 'nFiles', 'startTime', 'endTime', 'runTime', 'startTimestamp', 'endTimestamp', 'errorMessage' ]
 
     def __init__(self, dict={}):
         DmObject.__init__(self, dict)
@@ -27,7 +27,7 @@ class DirectoryUploadInfo(DmObject):
 
         processingInfo = self.get('processingInfo')
         endTime = 0
-        uploadStatus = 'done'
+        uploadStatus = dmProcessingStatus.DM_PROCESSING_STATUS_DONE
         for processorName in processingInfo.keys():
             processingEndTime = processingInfo[processorName].get('processingEndTime')
             status = processingInfo[processorName].get('status')
diff --git a/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py b/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py
index 4c9d1db6432892a9e560e46ce84602e6b0ccbc68..9d32435f91b3dc88a69f7feabd1bbae9563caeaa 100755
--- a/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py
+++ b/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py
@@ -290,6 +290,19 @@ class ExperimentSessionControllerImpl(DmObjectManager):
         UploadTracker.getInstance().startUpload(uploadId, uploadInfo)
         uploadInfo['nFiles'] = 0
         uploadInfo['status'] = dmProcessingStatus.DM_PROCESSING_STATUS_PENDING
+
+        fileProcessingManager = FileProcessingManager.getInstance()
+        processingInfo = {}
+        uploadInfo['processingInfo'] = processingInfo
+        for processorKey in fileProcessingManager.fileProcessorKeyList:
+            processor = fileProcessingManager.fileProcessorDict.get(processorKey)
+            processorName = processor.name
+            if processorName in skipPlugins:
+                processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED}
+            else:
+                processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_PENDING}
+
+
         self.logger.debug('Starting upload directory %s timer for experiment %s' % (dataDirectory, experimentName))
         timer = threading.Timer(self.UPLOAD_DELAY_IN_SECONDS, self.prepareUploadDirectory, args=[uploadInfo, daqInfo, experiment])
         timer.start()
@@ -314,18 +327,13 @@ class ExperimentSessionControllerImpl(DmObjectManager):
             return
 
         fileProcessingManager = FileProcessingManager.getInstance()
-        processingInfo = {}
-        uploadInfo['processingInfo'] = processingInfo
         self.logger.debug('Preparing plugin timers for directory %s upload (experiment %s)' % (dataDirectory, experimentName))
         for processorKey in fileProcessingManager.fileProcessorKeyList:
             processor = fileProcessingManager.fileProcessorDict.get(processorKey)
             processorName = processor.name
-            if processorName in skipPlugins:
-                processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED}
-            else:
+            if not processorName in skipPlugins:
                 self.logger.debug('Starting %s processing timer for directory %s upload' % (processorName, dataDirectory))
                 timer = threading.Timer(self.UPLOAD_DELAY_IN_SECONDS, self.processUploadDirectory, args=[processor, uploadInfo, daqInfo, experiment, filePathsDict])
-                processingInfo[processorName] = {'status' : dmProcessingStatus.DM_PROCESSING_STATUS_PENDING}
                 timer.start()
 
         uploadInfo['nFiles'] = len(filePathsDict)
@@ -351,7 +359,10 @@ class ExperimentSessionControllerImpl(DmObjectManager):
                     canProcess = True
                 for depProcessorName in dependsOn:
                     depProcessorStatus = processingInfo.get(depProcessorName).get('status')
-                    if depProcessorStatus in ['skipped', 'aborted', 'failed']:
+                    if depProcessorStatus in [
+                            dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED,
+                            dmProcessingStatus.DM_PROCESSING_STATUS_ABORTED, 
+                            dmProcessingStatus.DM_PROCESSING_STATUS_FAILED]:
                         # We must skip processing
                         self.logger.debug('Skipping %s processing for upload %s due to %s status of %s' % (processorName, uploadId, depProcessorName, depProcessorStatus)) 
                         processingInfo[processorName]['status'] = dmProcessingStatus.DM_PROCESSING_STATUS_SKIPPED
@@ -359,7 +370,7 @@ class ExperimentSessionControllerImpl(DmObjectManager):
                     elif depProcessorStatus in [dmProcessingStatus.DM_PROCESSING_STATUS_PENDING, dmProcessingStatus.DM_PROCESSING_STATUS_RUNNING]:
                         # Do nothing
                         pass
-                    elif depProcessorStatus == 'done':
+                    elif depProcessorStatus == dmProcessingStatus.DM_PROCESSING_STATUS_DONE:
                         # We can proceed
                         canProcess = True
                     else: