diff --git a/src/python/dm/ds_web_service/service/impl/storageManager.py b/src/python/dm/ds_web_service/service/impl/storageManager.py
index e12565f33385d633042f6d02d1ad01583c917917..ce22e750f8bbf4eaf6910604c54cbfd2d13d489a 100755
--- a/src/python/dm/ds_web_service/service/impl/storageManager.py
+++ b/src/python/dm/ds_web_service/service/impl/storageManager.py
@@ -2,10 +2,12 @@
 
 import threading
 import time
+import os
 
 from dm.common.utility.loggingManager import LoggingManager
 from dm.common.utility.configurationManager import ConfigurationManager
 from dm.common.utility.singleton import Singleton
+from dm.common.utility.osUtility import OsUtility
 
 
 class StorageManager(Singleton):
@@ -38,15 +40,35 @@ class StorageManager(Singleton):
         self.logger.debug('Got config items: %s' % configItems)
         self.storageDirectory = cm.getConfigOption(StorageManager.CONFIG_SECTION_NAME, StorageManager.STORAGE_DIRECTORY_KEY)
 
+    def __getExperimentStorageDataDirectory(self, experiment):
+        experimentTypeName = experiment.get('experimentType').get('rootDataPath')
+        experimentName = experiment.get('name')
+        storageDirectory = '%s/%s/%s' % (self.storageDirectory, experimentTypeName, experimentName)
+        storageDirectory = storageDirectory.replace('//', '/')
+        return storageDirectory
+
+    def updateExperimentWithStorageDataDirectory(self, experiment):
+        self.lock.acquire()
+        try:
+            storageDirectory = self.__getExperimentStorageDataDirectory(experiment)
+            if os.path.exists(storageDirectory):
+                experiment['storageDirectory'] = storageDirectory
+                experiment['storageHost'] = ConfigurationManager.getInstance().getHost()
+            return storageDirectory
+        finally:
+            self.lock.release()
+
     def createExperimentDataDirectory(self, experiment):
         self.lock.acquire()
         try:
-            experimentTypeName = experiment.get('experimentType').get('rootDataPath')
             experimentName = experiment.get('name')
-            dataDirectory = '%s/%s/%s' % (self.storageDirectory, experimentTypeName, experimentName)
-            dataDirectory = dataDirectory.replace('//', '/')
-            self.logger.debug('Creating data directory for experiment %s: %s' % (experimentName, dataDirectory))
-            experiment['dataDirectory'] = dataDirectory
+            storageDirectory = self.__getExperimentStorageDataDirectory(experiment)
+            if os.path.exists(storageDirectory):
+                self.logger.debug('Data directory %s for experiment %s already exists' % (storageDirectory, experimentName))
+            else:
+                self.logger.debug('Creating data directory for experiment %s: %s' % (experimentName, storageDirectory))
+                OsUtility.createDir(storageDirectory)
+            experiment['storageDirectory'] = storageDirectory
         finally:
             self.lock.release()