diff --git a/src/components/FormModelPopup.vue b/src/components/FormModelPopup.vue
index 25213a8b7..06aa1d891 100644
--- a/src/components/FormModelPopup.vue
+++ b/src/components/FormModelPopup.vue
@@ -65,6 +65,7 @@ defineExpose({
         :observe-form-changes="false"
         :default-actions="false"
         :url-create="urlCreate"
+        :url="url"
         :model="model"
         @on-data-saved="onDataSaved"
     >
diff --git a/src/pages/Account/AccountAcls.vue b/src/pages/Account/AccountAcls.vue
index ac21861a7..5be6be1d4 100644
--- a/src/pages/Account/AccountAcls.vue
+++ b/src/pages/Account/AccountAcls.vue
@@ -13,6 +13,7 @@ import { useVnConfirm } from 'composables/useVnConfirm';
 import { useStateStore } from 'stores/useStateStore';
 import axios from 'axios';
 import useNotify from 'src/composables/useNotify.js';
+import AclFormView from './Acls/AclFormView.vue';
 
 defineProps({
     id: {
@@ -28,6 +29,7 @@ const stateStore = useStateStore();
 const { openConfirmationModal } = useVnConfirm();
 
 const paginateRef = ref(null);
+const formDialog = ref(false);
 
 const exprBuilder = (param, value) => {
     switch (param) {
@@ -48,8 +50,16 @@ const deleteAcl = async (id) => {
     }
 };
 
-const redirectToAclsForm = (id = undefined) =>
-    router.push({ name: 'AccountAclForm', query: { id } });
+function showFormDialog(id = null) {
+    formDialog.value = {
+        show: true,
+        id,
+        ur: `ACLs/${id}`,
+    };
+}
+
+const redirectToAclsForm = (id = undefined) => showFormDialog(id);
+// router.push({ name: 'AccountAclForm', query: { id } });
 </script>
 
 <template>
@@ -69,6 +79,7 @@ const redirectToAclsForm = (id = undefined) =>
             <AclFilter data-key="AccountAcls" />
         </QScrollArea>
     </QDrawer>
+
     <QPage class="flex justify-center q-pa-md">
         <div class="vn-card-list">
             <VnPaginate
@@ -112,8 +123,15 @@ const redirectToAclsForm = (id = undefined) =>
                 </template>
             </VnPaginate>
         </div>
+        <QDialog
+            v-model="formDialog.show"
+            transition-show="scale"
+            transition-hide="scale"
+        >
+            <AclFormView :id="formDialog.id" />
+        </QDialog>
         <QPageSticky position="bottom-right" :offset="[18, 18]">
-            <QBtn fab icon="add" color="primary" @click="redirectToAclsForm()">
+            <QBtn fab icon="add" color="primary" @click="showFormDialog()">
                 <QTooltip class="text-no-wrap">{{ t('New ACL') }}</QTooltip>
             </QBtn>
         </QPageSticky>
diff --git a/src/pages/Account/Acls/AclFormView.vue b/src/pages/Account/Acls/AclFormView.vue
index 2e3c28b71..e14744564 100644
--- a/src/pages/Account/Acls/AclFormView.vue
+++ b/src/pages/Account/Acls/AclFormView.vue
@@ -1,6 +1,6 @@
 <script setup>
 import { useI18n } from 'vue-i18n';
-import { ref, onBeforeMount, onMounted, computed } from 'vue';
+import { ref, onBeforeMount, onMounted, toRefs } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 
 import FetchData from 'components/FetchData.vue';
@@ -10,6 +10,7 @@ import VnInput from 'src/components/common/VnInput.vue';
 import FormModel from 'components/FormModel.vue';
 import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
 import VnSearchbar from 'components/ui/VnSearchbar.vue';
+import FormModelPopup from 'components/FormModelPopup.vue';
 
 import { useValidator } from 'src/composables/useValidator';
 import { useArrayData } from 'src/composables/useArrayData';
@@ -31,11 +32,17 @@ const accessTypes = [{ name: '*' }, { name: 'READ' }, { name: 'WRITE' }];
 const permissions = [{ name: 'ALLOW' }, { name: 'DENY' }];
 const validations = ref([]);
 
-const id = computed(() => route.query.id || null);
 const url = ref(null);
 const urlCreate = ref(null);
 const urlUpdate = ref(null);
-
+const action = ref('New');
+const $props = defineProps({
+    id: {
+        type: Object,
+        default: null,
+    },
+});
+const { id } = toRefs($props);
 const redirectToAclList = () => router.push({ name: 'AccountAcls' });
 
 const onDataSaved = () => {
@@ -50,8 +57,11 @@ onBeforeMount(() => {
 onMounted(() => {
     url.value = id.value ? `ACLs/${id.value}` : null;
 
-    if (url.value) urlUpdate.value = 'ACLs';
-    else {
+    if (url.value) {
+        urlUpdate.value = 'ACLs';
+        action.value = 'Edit';
+    } else {
+        url.value = null;
         defaultFormData.value = {
             property: '*',
             principalType: 'ROLE',
@@ -70,89 +80,73 @@ onMounted(() => {
         @on-fetch="(data) => (rolesOptions = data)"
         auto-load
     />
-    <template v-if="stateStore.isHeaderMounted()">
-        <Teleport to="#searchbar">
-            <VnSearchbar
-                data-key="AccountAcls"
-                url="ACLs"
-                :expr-builder="exprBuilder"
-                :label="t('acls.search')"
-                :info="t('acls.searchInfo')"
-                custom-route-redirect-name="AccountAcls"
-            />
-        </Teleport>
-    </template>
-    <QPage class="column items-center full-width">
-        <VnSubToolbar />
-        <FormModel
-            v-if="urlCreate || urlUpdate"
-            :url="url"
-            :url-update="urlUpdate"
-            :url-create="urlCreate"
-            :form-initial-data="defaultFormData"
-            auto-load
-            model="aclCreate"
-            @on-data-saved="onDataSaved()"
-        >
-            <template #form="{ data }">
-                <VnRow class="row q-gutter-md q-mb-md">
-                    <VnSelect
-                        :label="t('acls.aclFilter.principalId')"
-                        v-model="data.principalId"
-                        :options="rolesOptions"
-                        option-value="name"
-                        option-label="name"
-                        use-input
-                        rounded
-                    />
-                </VnRow>
-                <VnRow class="row q-gutter-md q-mb-md">
-                    <VnSelect
-                        :label="t('acls.aclFilter.model')"
-                        v-model="data.model"
-                        :options="validations"
-                        option-value="name"
-                        option-label="name"
-                        use-input
-                        rounded
-                    />
-                </VnRow>
-                <VnRow class="row q-gutter-md q-mb-md">
-                    <VnInput
-                        :label="t('acls.aclFilter.property')"
-                        v-model="data.property"
-                        lazy-rules
-                    >
-                        <template #append>
-                            <QIcon name="info" class="cursor-pointer">
-                                <QTooltip>{{ t('acls.tooltip') }}</QTooltip>
-                            </QIcon>
-                        </template></VnInput
-                    >
-                </VnRow>
-                <VnRow class="row q-gutter-md q-mb-md">
-                    <VnSelect
-                        :label="t('acls.aclFilter.accessType')"
-                        v-model="data.accessType"
-                        :options="accessTypes"
-                        option-value="name"
-                        option-label="name"
-                        use-input
-                        rounded
-                    />
-                </VnRow>
-                <VnRow class="row q-gutter-md q-mb-md">
-                    <VnSelect
-                        :label="t('acls.aclFilter.permission')"
-                        v-model="data.permission"
-                        :options="permissions"
-                        option-value="name"
-                        option-label="name"
-                        use-input
-                        rounded
-                    />
-                </VnRow>
-            </template>
-        </FormModel>
-    </QPage>
+    <FormModelPopup
+        :title="t(`${action} ACL`)"
+        :url="url"
+        :url-update="urlUpdate"
+        :url-create="urlCreate"
+        auto-load
+        model="aclCreate"
+        @on-data-saved="onDataSaved()"
+    >
+        <template #form-inputs="{ data }">
+            <VnRow class="row q-gutter-md q-mb-md">
+                <VnSelect
+                    :label="t('acls.aclFilter.principalId')"
+                    v-model="data.principalId"
+                    :options="rolesOptions"
+                    option-value="name"
+                    option-label="name"
+                    use-input
+                    rounded
+                />
+            </VnRow>
+            <VnRow class="row q-gutter-md q-mb-md">
+                <VnSelect
+                    :label="t('acls.aclFilter.model')"
+                    v-model="data.model"
+                    :options="validations"
+                    option-value="name"
+                    option-label="name"
+                    use-input
+                    rounded
+                />
+            </VnRow>
+            <VnRow class="row q-gutter-md q-mb-md">
+                <VnInput
+                    :label="t('acls.aclFilter.property')"
+                    v-model="data.property"
+                    lazy-rules
+                >
+                    <template #append>
+                        <QIcon name="info" class="cursor-pointer">
+                            <QTooltip>{{ t('acls.tooltip') }}</QTooltip>
+                        </QIcon>
+                    </template></VnInput
+                >
+            </VnRow>
+            <VnRow class="row q-gutter-md q-mb-md">
+                <VnSelect
+                    :label="t('acls.aclFilter.accessType')"
+                    v-model="data.accessType"
+                    :options="accessTypes"
+                    option-value="name"
+                    option-label="name"
+                    use-input
+                    rounded
+                />
+            </VnRow>
+            <VnRow class="row q-gutter-md q-mb-md">
+                <VnSelect
+                    :label="t('acls.aclFilter.permission')"
+                    v-model="data.permission"
+                    :options="permissions"
+                    option-value="name"
+                    option-label="name"
+                    use-input
+                    rounded
+                />
+            </VnRow>
+        </template>
+    </FormModelPopup>
 </template>