diff --git a/src/fts3rest/fts3rest/lib/JobBuilder.py b/src/fts3rest/fts3rest/lib/JobBuilder.py
index 706c9e5a5a3dc6aebea820a2c14273d362f00d78..b195a1aa3f54694ae1a372bb94969301450882f9 100644
--- a/src/fts3rest/fts3rest/lib/JobBuilder.py
+++ b/src/fts3rest/fts3rest/lib/JobBuilder.py
@@ -294,6 +294,8 @@ def _seconds_from_value(value):
             return int(value) * 60
         elif suffix == 'h':
             return int(value) * 3600
+        elif suffix == 'd':
+            return int(value) * 3600 * 24
         else:
             return None
     except:
@@ -492,6 +494,15 @@ class JobBuilder(object):
         if max_time_in_queue is not None:
             expiration_time = time.time() + max_time_in_queue
 
+        if max_time_in_queue is not None and self.params['bring_online'] > 0:
+            # Ensure that the bringonline and expiration delta is respected
+            timeout_delta = _seconds_from_value(
+                pylons.config.get('fts3.BringOnlineAndExpirationDelta', None))
+            if timeout_delta is not None:
+                log.debug("Will enforce BringOnlineAndExpirationDelta=" + str(timeout_delta) + "s")
+                if max_time_in_queue - self.params['bring_online'] < timeout_delta:
+                    raise HTTPBadRequest('Bringonline and Expiration timeout must be at least ' + str(timeout_delta) + ' seconds apart')
+
         if self.params['overwrite']:
             overwrite_flag = 'Y'
         elif self.params['overwrite_on_retry']: