diff --git a/src/store/modules/Logs/DumpsStore.js b/src/store/modules/Logs/DumpsStore.js
index 328e316..9391e57 100644
--- a/src/store/modules/Logs/DumpsStore.js
+++ b/src/store/modules/Logs/DumpsStore.js
@@ -24,9 +24,7 @@
   actions: {
     async getBmcDumpEntries() {
       return api
-        .get('/redfish/v1/')
-        .then((response) => api.get(response.data.Managers['@odata.id']))
-        .then((response) => api.get(`${response.data['@odata.id']}/bmc`))
+        .get(`${await this.dispatch('global/getBmcPath')}`)
         .then((response) => api.get(response.data.LogServices['@odata.id']))
         .then((response) => api.get(`${response.data['@odata.id']}/Dump`))
         .then((response) => api.get(response.data.Entries['@odata.id']))
@@ -34,9 +32,7 @@
     },
     async getSystemDumpEntries() {
       return api
-        .get('/redfish/v1/')
-        .then((response) => api.get(response.data.Systems['@odata.id']))
-        .then((response) => api.get(`${response.data['@odata.id']}/system`))
+        .get(`${await this.dispatch('global/getSystemPath')}`)
         .then((response) => api.get(response.data.LogServices['@odata.id']))
         .then((response) => api.get(`${response.data['@odata.id']}/Dump`))
         .then((response) => api.get(response.data.Entries['@odata.id']))
@@ -56,7 +52,7 @@
     async createBmcDump() {
       return await api
         .post(
-          '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.CollectDiagnosticData',
+          `${await this.dispatch('global/getBmcPath')}/LogServices/Dump/Actions/LogService.CollectDiagnosticData`,
           {
             DiagnosticDataType: 'Manager',
             OEMDiagnosticDataType: '',
@@ -70,7 +66,7 @@
     async createSystemDump() {
       return await api
         .post(
-          '/redfish/v1/Systems/system/LogServices/Dump/Actions/LogService.CollectDiagnosticData',
+          `${await this.dispatch('global/getSystemPath')}/LogServices/Dump/Actions/LogService.CollectDiagnosticData`,
           {
             DiagnosticDataType: 'OEM',
             OEMDiagnosticDataType: 'System',
@@ -123,7 +119,7 @@
       const totalDumpCount = state.allDumps.length;
       return await api
         .post(
-          '/redfish/v1/Managers/bmc/LogServices/Dump/Actions/LogService.ClearLog',
+          `${await this.dispatch('global/getBmcPath')}/LogServices/Dump/Actions/LogService.ClearLog`,
         )
         .then(() => {
           commit('setAllDumps', []);
diff --git a/src/store/modules/Logs/EventLogStore.js b/src/store/modules/Logs/EventLogStore.js
index f7b2ead..e67da39 100644
--- a/src/store/modules/Logs/EventLogStore.js
+++ b/src/store/modules/Logs/EventLogStore.js
@@ -42,7 +42,9 @@
   actions: {
     async getEventLogData({ commit }) {
       return await api
-        .get('/redfish/v1/Systems/system/LogServices/EventLog/Entries')
+        .get(
+          `${await this.dispatch('global/getSystemPath')}/LogServices/EventLog/Entries`,
+        )
         .then(({ data: { Members = [] } = {} }) => {
           const eventLogs = Members.map((log) => {
             const {
@@ -79,7 +81,7 @@
     async deleteAllEventLogs({ dispatch }, data) {
       return await api
         .post(
-          '/redfish/v1/Systems/system/LogServices/EventLog/Actions/LogService.ClearLog',
+          `${await this.dispatch('global/getSystemPath')}/LogServices/EventLog/Actions/LogService.ClearLog`,
         )
         .then(() => dispatch('getEventLogData'))
         .then(() => i18n.tc('pageEventLogs.toast.successDelete', data.length))
diff --git a/src/store/modules/Logs/PostCodeLogsStore.js b/src/store/modules/Logs/PostCodeLogsStore.js
index 7648b13..7bd1410 100644
--- a/src/store/modules/Logs/PostCodeLogsStore.js
+++ b/src/store/modules/Logs/PostCodeLogsStore.js
@@ -16,7 +16,9 @@
   actions: {
     async getPostCodesLogData({ commit }) {
       return await api
-        .get('/redfish/v1/Systems/system/LogServices/PostCodes/Entries')
+        .get(
+          `${await this.dispatch('global/getSystemPath')}/LogServices/PostCodes/Entries`,
+        )
         .then(({ data: { Members = [] } = {} }) => {
           const postCodeLogs = Members.map((log) => {
             const { Created, MessageArgs, AdditionalDataURI } = log;
@@ -37,7 +39,7 @@
     async deleteAllPostCodeLogs({ dispatch }, data) {
       return await api
         .post(
-          '/redfish/v1/Systems/system/LogServices/PostCodes/Actions/LogService.ClearLog',
+          `${await this.dispatch('global/getSystemPath')}/LogServices/PostCodes/Actions/LogService.ClearLog`,
         )
         .then(() => dispatch('getPostCodesLogData'))
         .then(() =>
