Make sure time format is fullmatch
diff --git a/staffeln/common/time.py b/staffeln/common/time.py
index 3c0b57b..103096a 100644
--- a/staffeln/common/time.py
+++ b/staffeln/common/time.py
@@ -17,7 +17,7 @@
 def parse_timedelta_string(time_str):
     empty_flag = True
     try:
-        parts = regex.match(time_str)
+        parts = regex.fullmatch(time_str)
         if not parts:
             return None
         parts = parts.groupdict()
diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index aae3432..19659c2 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -9,6 +9,7 @@
 from oslo_utils import timeutils
 from staffeln import objects
 from staffeln.common import constants, context, openstack
+from staffeln.common import time as xtime
 from staffeln.conductor import result
 from staffeln.i18n import _
 
@@ -498,9 +499,21 @@
 
         for server in servers:
             if CONF.conductor.retention_metadata_key in server.metadata:
-                retention_map[server.id] = server.metadata[
+                server_retention_time = server.metadata[
                     CONF.conductor.retention_metadata_key
                 ].lower()
+                if xtime.regex.fullmatch(server_retention_time):
+                    LOG.debug(
+                        f"Found retention time ({server_retention_time}) defined for "
+                        f"server {server.id}, Adding it retention reference map."
+                    )
+                    retention_map[server.id] = server_retention_time
+                else:
+                    LOG.info(
+                        f"Server retention time for instance {server.id} is incorrect. "
+                        "Please follow '<YEARS>y<MONTHS>m<WEEKS>w<DAYS>d<HOURS>"
+                        "h<MINUTES>min<SECONDS>s' format."
+                    )
         return retention_map
 
     def _volume_queue(self, task):