diff --git a/model/wapi/cntl.py b/model/wapi/cntl.py
index f5f50ec2dba5e8addd9503774e76943b8d3c4c6a..68599a35c82a07484a8ea8f3d3b836c6fa8b78df 100644
--- a/model/wapi/cntl.py
+++ b/model/wapi/cntl.py
@@ -97,27 +97,28 @@ class Mgr(BaseModel):
         return bcd in [v.name for v in self.get_bcds(conn)]
 
     def get_permissions(self, conn):
+        if self.permission_list is not None:
+            return self.permission_list
+
         result = execute_wapi_function(conn, [
             {'name': 'cntl.mgr.list', 'old': {'is_self': True}},
-            {'name': 'cntl.role.list', 'old': {
+            {'name': 'cntl.role.list', 'idx': 'direct_role_list', 'old': {
                 'is_directly_assigned': True,
                 'is_role': True,
+            }},
+            {'name': 'cntl.role.list', 'old': {'is_role': True}, 'idx': 'role_list', 'inner_join_ref': {
+                'direct_role_list': 'api_func_cntl_role_hierarchy_gfk_list_is_superset'
+            }},
+            {'name': 'cntl.role.list', 'old': {'is_role': False}, 'idx': 'permission_list', 'inner_join_ref': {
+                'role_list': 'api_func_cntl_role_hierarchy_gfk_list_is_superset'
             }}
         ], user=self.login_name)
 
-        if 'cntl_role_list' not in result.keys() or len(result['cntl_role_list']) == 0:
+        if 'permission_list' not in result.keys() or len(result['permission_list']) == 0:
             self.permission_list = []
             return self.permission_list
 
-        perms = []
-
-        roles = result['cntl_role_list']
-
-        for role in roles:
-            for permission in role['contained_permissions'].keys():
-                perms.append(permission)
-
-        self.permission_list = perms
+        self.permission_list = list(map(lambda x: x['fq_name'], result['permission_list']))
         return self.permission_list
 
     def has_permission(self, conn, permission: str):
diff --git a/util/wapi_util.py b/util/wapi_util.py
index 823dbad443cc084764832ec71055b3d790a1397c..a0c6f493ee36388ef234a5995d02e0aea4471fc1 100644
--- a/util/wapi_util.py
+++ b/util/wapi_util.py
@@ -30,7 +30,7 @@ def execute_wapi_function(conn, request: list[dict[str, str | dict]], user: str
         user = settings.wapi_netvs_superuser
 
     query = """
-               select * from wapi_4_0.ta_handler(
+               select * from wapi_4_1.ta_handler(
                  in_login_name => %(login_name)s,
                  in_http_rq_mthd => 'POST',
                  in_http_rq_body => %(rq)s,