diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py
index cdbec51e431e6f2d26f92de7ec46edb891090da8..390343d49b2e931127dd574c727eafd939503d65 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py
+++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/radb.py
@@ -45,8 +45,10 @@ class RADatabase:
         self.conn = None
         self.cursor = None
         self.log_queries = log_queries
-        self._taskStatusCache = {}
-        self._taskTypeCache = {}
+        self._taskStatusName2IdCache = {}
+        self._taskTypeName2IdCache = {}
+        self._claimStatusName2IdCache = {}
+        self._claimStatusId2NameCache = {}
 
     def _connect(self):
         self.conn = None
@@ -119,16 +121,16 @@ class RADatabase:
     def getTaskStatusNames(self):
         return [x['name'] for x in self.getTaskStatuses()]
 
-    def getTaskStatusId(self, status_name, from_cache=False):
-        if from_cache and status_name in self._taskStatusCache:
-            return self._taskStatusCache[status_name]
+    def getTaskStatusId(self, status_name, from_cache=True):
+        if from_cache and status_name in self._taskStatusName2IdCache:
+            return self._taskStatusName2IdCache[status_name]
 
         query = '''SELECT id from resource_allocation.task_status
                    WHERE name = %s;'''
         result = self._executeQuery(query, [status_name], fetch=_FETCH_ONE)
 
         if result:
-            self._taskStatusCache[status_name] = result['id']
+            self._taskStatusName2IdCache[status_name] = result['id']
             return result['id']
 
         raise KeyError('No such status: %s Valid values are: %s' % (status_name, ', '.join(self.getTaskStatusNames())))
@@ -141,16 +143,16 @@ class RADatabase:
     def getTaskTypeNames(self):
         return [x['name'] for x in self.getTaskTypes()]
 
-    def getTaskTypeId(self, type_name, from_cache=False):
-        if from_cache and type_name in self._taskStatusCache:
-            return self._taskTypeCache[type_name]
+    def getTaskTypeId(self, type_name, from_cache=True):
+        if from_cache and type_name in self._taskTypeName2IdCache:
+            return self._taskTypeName2IdCache[type_name]
 
         query = '''SELECT id from resource_allocation.task_type
                    WHERE name = %s;'''
         result = self._executeQuery(query, [type_name], fetch=_FETCH_ONE)
 
         if result:
-            self._taskTypeCache[type_name] = result['id']
+            self._taskTypeName2IdCache[type_name] = result['id']
             return result['id']
 
         raise KeyError('No such type: %s Valid values are: %s' % (type_name, ', '.join(self.getTaskTypeNames())))
@@ -163,22 +165,32 @@ class RADatabase:
     def getResourceClaimStatusNames(self):
         return [x['name'] for x in self.getResourceClaimStatuses()]
 
-    def getResourceClaimStatusId(self, status_name):
+    def getResourceClaimStatusId(self, status_name, from_cache=True):
+        if from_cache and status_name in self._claimStatusName2IdCache:
+            return self._claimStatusName2IdCache[status_name]
+
         query = '''SELECT id from resource_allocation.resource_claim_status
                    WHERE name = %s;'''
         result = self._executeQuery(query, [status_name], fetch=_FETCH_ONE)
 
         if result:
+            self._claimStatusName2IdCache[status_name] = result['id']
+            self._claimStatusId2NameCache[result['id']] = status_name
             return result['id']
 
         raise KeyError('No such status: %s. Valid values are: %s' % (status_name, ', '.join(self.getResourceClaimStatusNames())))
 
-    def getResourceClaimStatusName(self, status_id):
+    def getResourceClaimStatusName(self, status_id, from_cache=True):
+        if from_cache and status_id in self._claimStatusId2NameCache:
+            return self._claimStatusId2NameCache[status_id]
+
         query = '''SELECT name from resource_allocation.resource_claim_status
                    WHERE id = %s;'''
         result = self._executeQuery(query, [status_id], fetch=_FETCH_ONE)
 
         if result:
+            self._claimStatusId2NameCache[status_id] = result['name']
+            self._claimStatusName2IdCache[result['name']] = status_id
             return result['name']
 
         raise KeyError('No such status_id: %s. Valid values are: %s' % (status_id, ', '.join([x['id'] for x in self.getResourceClaimStatuses()])))