diff --git a/src/store/modules/AccessControl/SslCertificatesStore.js b/src/store/modules/SecurityAndAccess/CertificatesStore.js
similarity index 88%
rename from src/store/modules/AccessControl/SslCertificatesStore.js
rename to src/store/modules/SecurityAndAccess/CertificatesStore.js
index 752c212..97241f3 100644
--- a/src/store/modules/AccessControl/SslCertificatesStore.js
+++ b/src/store/modules/SecurityAndAccess/CertificatesStore.js
@@ -5,12 +5,12 @@
   {
     type: 'HTTPS Certificate',
     location: '/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/',
-    label: i18n.t('pageSslCertificates.httpsCertificate'),
+    label: i18n.t('pageCertificates.httpsCertificate'),
   },
   {
     type: 'LDAP Certificate',
     location: '/redfish/v1/AccountService/LDAP/Certificates/',
-    label: i18n.t('pageSslCertificates.ldapCertificate'),
+    label: i18n.t('pageCertificates.ldapCertificate'),
   },
   {
     type: 'TrustStore Certificate',
@@ -18,7 +18,7 @@
     // Web UI will show 'CA Certificate' instead of
     // 'TrustStore Certificate' after user testing revealed
     // the term 'TrustStore Certificate' wasn't recognized/was unfamilar
-    label: i18n.t('pageSslCertificates.caCertificate'),
+    label: i18n.t('pageCertificates.caCertificate'),
   },
 ];
 
@@ -29,7 +29,7 @@
   return certificate ? certificate[prop] : null;
 };
 
-const SslCertificatesStore = {
+const CertificatesStore = {
   namespaced: true,
   state: {
     allCertificates: [],
@@ -98,15 +98,13 @@
         })
         .then(() => dispatch('getCertificates'))
         .then(() =>
-          i18n.t('pageSslCertificates.toast.successAddCertificate', {
+          i18n.t('pageCertificates.toast.successAddCertificate', {
             certificate: getCertificateProp(type, 'label'),
           })
         )
         .catch((error) => {
           console.log(error);
-          throw new Error(
-            i18n.t('pageSslCertificates.toast.errorAddCertificate')
-          );
+          throw new Error(i18n.t('pageCertificates.toast.errorAddCertificate'));
         });
     },
     async replaceCertificate(
@@ -125,14 +123,14 @@
         )
         .then(() => dispatch('getCertificates'))
         .then(() =>
-          i18n.t('pageSslCertificates.toast.successReplaceCertificate', {
+          i18n.t('pageCertificates.toast.successReplaceCertificate', {
             certificate: getCertificateProp(type, 'label'),
           })
         )
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.t('pageSslCertificates.toast.errorReplaceCertificate')
+            i18n.t('pageCertificates.toast.errorReplaceCertificate')
           );
         });
     },
@@ -141,14 +139,14 @@
         .delete(location)
         .then(() => dispatch('getCertificates'))
         .then(() =>
-          i18n.t('pageSslCertificates.toast.successDeleteCertificate', {
+          i18n.t('pageCertificates.toast.successDeleteCertificate', {
             certificate: getCertificateProp(type, 'label'),
           })
         )
         .catch((error) => {
           console.log(error);
           throw new Error(
-            i18n.t('pageSslCertificates.toast.errorDeleteCertificate')
+            i18n.t('pageCertificates.toast.errorDeleteCertificate')
           );
         });
     },
@@ -201,4 +199,4 @@
   },
 };
 
-export default SslCertificatesStore;
+export default CertificatesStore;
diff --git a/src/store/modules/AccessControl/LdapStore.js b/src/store/modules/SecurityAndAccess/LdapStore.js
similarity index 100%
rename from src/store/modules/AccessControl/LdapStore.js
rename to src/store/modules/SecurityAndAccess/LdapStore.js
diff --git a/src/store/modules/Settings/SecuritySettingsStore.js b/src/store/modules/SecurityAndAccess/PoliciesStore.js
similarity index 72%
rename from src/store/modules/Settings/SecuritySettingsStore.js
rename to src/store/modules/SecurityAndAccess/PoliciesStore.js
index 5a88542..1e19552 100644
--- a/src/store/modules/Settings/SecuritySettingsStore.js
+++ b/src/store/modules/SecurityAndAccess/PoliciesStore.js
@@ -1,7 +1,7 @@
 import api from '@/store/api';
 import i18n from '@/i18n';
 
-const SecuritySettingsStore = {
+const PoliciesStore = {
   namespaced: true,
   state: {
     sshProtocolEnabled: false,
@@ -40,22 +40,18 @@
         .patch('/redfish/v1/Managers/bmc/NetworkProtocol', ipmi)
         .then(() => {
           if (protocolEnabled) {
-            return i18n.t('pageSecuritySettings.toast.successIpmiEnabled');
+            return i18n.t('pagePolicies.toast.successIpmiEnabled');
           } else {
-            return i18n.t('pageSecuritySettings.toast.successIpmiDisabled');
+            return i18n.t('pagePolicies.toast.successIpmiDisabled');
           }
         })
         .catch((error) => {
           console.log(error);
           commit('setIpmiProtocolEnabled', !protocolEnabled);
           if (protocolEnabled) {
-            throw new Error(
-              i18n.t('pageSecuritySettings.toast.errorIpmiEnabled')
-            );
+            throw new Error(i18n.t('pagePolicies.toast.errorIpmiEnabled'));
           } else {
-            throw new Error(
-              i18n.t('pageSecuritySettings.toast.errorIpmiDisabled')
-            );
+            throw new Error(i18n.t('pagePolicies.toast.errorIpmiDisabled'));
           }
         });
     },
@@ -70,26 +66,22 @@
         .patch('/redfish/v1/Managers/bmc/NetworkProtocol', ssh)
         .then(() => {
           if (protocolEnabled) {
-            return i18n.t('pageSecuritySettings.toast.successSshEnabled');
+            return i18n.t('pagePolicies.toast.successSshEnabled');
           } else {
-            return i18n.t('pageSecuritySettings.toast.successSshDisabled');
+            return i18n.t('pagePolicies.toast.successSshDisabled');
           }
         })
         .catch((error) => {
           console.log(error);
           commit('setSshProtocolEnabled', !protocolEnabled);
           if (protocolEnabled) {
-            throw new Error(
-              i18n.t('pageSecuritySettings.toast.errorSshEnabled')
-            );
+            throw new Error(i18n.t('pagePolicies.toast.errorSshEnabled'));
           } else {
-            throw new Error(
-              i18n.t('pageSecuritySettings.toast.errorSshDisabled')
-            );
+            throw new Error(i18n.t('pagePolicies.toast.errorSshDisabled'));
           }
         });
     },
   },
 };
 
-export default SecuritySettingsStore;
+export default PoliciesStore;
diff --git a/src/store/modules/AccessControl/ClientSessionsStore.js b/src/store/modules/SecurityAndAccess/SessionsStore.js
similarity index 88%
rename from src/store/modules/AccessControl/ClientSessionsStore.js
rename to src/store/modules/SecurityAndAccess/SessionsStore.js
index 4295d57..54607ab 100644
--- a/src/store/modules/AccessControl/ClientSessionsStore.js
+++ b/src/store/modules/SecurityAndAccess/SessionsStore.js
@@ -1,7 +1,7 @@
 import api, { getResponseCount } from '@/store/api';
 import i18n from '@/i18n';
 
-const ClientSessionsStore = {
+const SessionsStore = {
   namespaced: true,
   state: {
     allConnections: [],
@@ -14,7 +14,7 @@
       (state.allConnections = allConnections),
   },
   actions: {
-    async getClientSessionsData({ commit }) {
+    async getSessionsData({ commit }) {
       return await api
         .get('/redfish/v1/SessionService/Sessions')
         .then((response) =>
@@ -48,7 +48,7 @@
       return await api
         .all(promises)
         .then((response) => {
-          dispatch('getClientSessionsData');
+          dispatch('getSessionsData');
           return response;
         })
         .then(
@@ -58,7 +58,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageClientSessions.toast.successDelete',
+                'pageSessions.toast.successDelete',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -66,7 +66,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageClientSessions.toast.errorDelete',
+                'pageSessions.toast.errorDelete',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
@@ -77,4 +77,4 @@
     },
   },
 };
-export default ClientSessionsStore;
+export default SessionsStore;
diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/SecurityAndAccess/UserManagementStore.js
similarity index 84%
rename from src/store/modules/AccessControl/LocalUserMangementStore.js
rename to src/store/modules/SecurityAndAccess/UserManagementStore.js
index 6bc6ec5..362f3f6 100644
--- a/src/store/modules/AccessControl/LocalUserMangementStore.js
+++ b/src/store/modules/SecurityAndAccess/UserManagementStore.js
@@ -1,7 +1,7 @@
 import api, { getResponseCount } from '@/store/api';
 import i18n from '@/i18n';
 
-const LocalUserManagementStore = {
+const UserManagementStore = {
   namespaced: true,
   state: {
     allUsers: [],
@@ -65,9 +65,7 @@
         })
         .catch((error) => {
           console.log(error);
-          const message = i18n.t(
-            'pageLocalUserManagement.toast.errorLoadUsers'
-          );
+          const message = i18n.t('pageUserManagement.toast.errorLoadUsers');
           throw new Error(message);
         });
     },
@@ -83,7 +81,7 @@
         .catch((error) => {
           console.log(error);
           const message = i18n.t(
-            'pageLocalUserManagement.toast.errorLoadAccountSettings'
+            'pageUserManagement.toast.errorLoadAccountSettings'
           );
           throw new Error(message);
         });
@@ -110,16 +108,15 @@
         .post('/redfish/v1/AccountService/Accounts', data)
         .then(() => dispatch('getUsers'))
         .then(() =>
-          i18n.t('pageLocalUserManagement.toast.successCreateUser', {
+          i18n.t('pageUserManagement.toast.successCreateUser', {
             username,
           })
         )
         .catch((error) => {
           console.log(error);
-          const message = i18n.t(
-            'pageLocalUserManagement.toast.errorCreateUser',
-            { username }
-          );
+          const message = i18n.t('pageUserManagement.toast.errorCreateUser', {
+            username,
+          });
           throw new Error(message);
         });
     },
@@ -137,16 +134,15 @@
         .patch(`/redfish/v1/AccountService/Accounts/${originalUsername}`, data)
         .then(() => dispatch('getUsers'))
         .then(() =>
-          i18n.t('pageLocalUserManagement.toast.successUpdateUser', {
+          i18n.t('pageUserManagement.toast.successUpdateUser', {
             username: originalUsername,
           })
         )
         .catch((error) => {
           console.log(error);
-          const message = i18n.t(
-            'pageLocalUserManagement.toast.errorUpdateUser',
-            { username: originalUsername }
-          );
+          const message = i18n.t('pageUserManagement.toast.errorUpdateUser', {
+            username: originalUsername,
+          });
           throw new Error(message);
         });
     },
@@ -155,16 +151,15 @@
         .delete(`/redfish/v1/AccountService/Accounts/${username}`)
         .then(() => dispatch('getUsers'))
         .then(() =>
-          i18n.t('pageLocalUserManagement.toast.successDeleteUser', {
+          i18n.t('pageUserManagement.toast.successDeleteUser', {
             username,
           })
         )
         .catch((error) => {
           console.log(error);
-          const message = i18n.t(
-            'pageLocalUserManagement.toast.errorDeleteUser',
-            { username }
-          );
+          const message = i18n.t('pageUserManagement.toast.errorDeleteUser', {
+            username,
+          });
           throw new Error(message);
         });
     },
@@ -190,7 +185,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.successBatchDelete',
+                'pageUserManagement.toast.successBatchDelete',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -198,7 +193,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.errorBatchDelete',
+                'pageUserManagement.toast.errorBatchDelete',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
@@ -233,7 +228,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.successBatchEnable',
+                'pageUserManagement.toast.successBatchEnable',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -241,7 +236,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.errorBatchEnable',
+                'pageUserManagement.toast.errorBatchEnable',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
@@ -276,7 +271,7 @@
 
             if (successCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.successBatchDisable',
+                'pageUserManagement.toast.successBatchDisable',
                 successCount
               );
               toastMessages.push({ type: 'success', message });
@@ -284,7 +279,7 @@
 
             if (errorCount) {
               const message = i18n.tc(
-                'pageLocalUserManagement.toast.errorBatchDisable',
+                'pageUserManagement.toast.errorBatchDisable',
                 errorCount
               );
               toastMessages.push({ type: 'error', message });
@@ -310,16 +305,14 @@
         .patch('/redfish/v1/AccountService', data)
         //GET new settings to update view
         .then(() => dispatch('getAccountSettings'))
-        .then(() => i18n.t('pageLocalUserManagement.toast.successSaveSettings'))
+        .then(() => i18n.t('pageUserManagement.toast.successSaveSettings'))
         .catch((error) => {
           console.log(error);
-          const message = i18n.t(
-            'pageLocalUserManagement.toast.errorSaveSettings'
-          );
+          const message = i18n.t('pageUserManagement.toast.errorSaveSettings');
           throw new Error(message);
         });
     },
   },
 };
 
-export default LocalUserManagementStore;
+export default UserManagementStore;
