diff --git a/Jenkinsfile b/Jenkinsfile
index df2421a0e79..63577dad5e9 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -123,7 +123,7 @@ pipeline {
                             sh "docker-compose ${env.COMPOSE_PARAMS} up -d"
 
                             image.inside("--network ${env.COMPOSE_PROJECT}_default -e CI -e TZ --init") {
-                                sh 'sh test/cypress/cypressParallel.sh 3'
+                                sh 'sh test/cypress/cypressParallel.sh 2'
                             }
                         }
                     }
diff --git a/src/components/VnTable/VnTable.vue b/src/components/VnTable/VnTable.vue
index d0c657f8a1b..c60d072fea3 100644
--- a/src/components/VnTable/VnTable.vue
+++ b/src/components/VnTable/VnTable.vue
@@ -1136,9 +1136,13 @@ es:
 
 .grid-create {
     display: grid;
-    grid-template-columns: repeat(auto-fit, minmax(150px, max-content));
+    grid-template-columns: 1fr 1fr;
+    max-width: 100%;
     grid-gap: 20px;
     margin: 0 auto;
+    .col-span-2 {
+        grid-column: span 2;
+    }
 }
 
 .flex-one {
diff --git a/src/components/common/VnCard.vue b/src/components/common/VnCard.vue
index 44002c22aad..620dc2ad2cb 100644
--- a/src/components/common/VnCard.vue
+++ b/src/components/common/VnCard.vue
@@ -1,50 +1,56 @@
 <script setup>
-import { onBeforeMount, computed } from 'vue';
-import { useRoute, useRouter, onBeforeRouteUpdate } from 'vue-router';
+import { onBeforeMount } from 'vue';
+import { useRouter, onBeforeRouteUpdate, onBeforeRouteLeave } from 'vue-router';
 import { useArrayData } from 'src/composables/useArrayData';
 import { useStateStore } from 'stores/useStateStore';
 import useCardSize from 'src/composables/useCardSize';
 import VnSubToolbar from '../ui/VnSubToolbar.vue';
-import VnSearchbar from 'components/ui/VnSearchbar.vue';
-import LeftMenu from 'components/LeftMenu.vue';
-import RightMenu from 'components/common/RightMenu.vue';
+
 const props = defineProps({
     dataKey: { type: String, required: true },
     url: { type: String, default: undefined },
+    idInWhere: { type: Boolean, default: false },
     filter: { type: Object, default: () => {} },
     descriptor: { type: Object, required: true },
     filterPanel: { type: Object, default: undefined },
-    idInWhere: { type: Boolean, default: false },
     searchDataKey: { type: String, default: undefined },
     searchbarProps: { type: Object, default: undefined },
     redirectOnError: { type: Boolean, default: false },
 });
 
 const stateStore = useStateStore();
-const route = useRoute();
 const router = useRouter();
-const searchRightDataKey = computed(() => {
-    if (!props.searchDataKey) return route.name;
-    return props.searchDataKey;
-});
-
 const arrayData = useArrayData(props.dataKey, {
     url: props.url,
     userFilter: props.filter,
     oneRecord: true,
 });
 
+onBeforeRouteLeave(() => {
+    stateStore.cardDescriptorChangeValue(null);
+});
+
 onBeforeMount(async () => {
+    stateStore.cardDescriptorChangeValue(props.descriptor);
+
+    const route = router.currentRoute.value;
     try {
         await fetch(route.params.id);
     } catch {
-        const { matched: matches } = router.currentRoute.value;
+        const { matched: matches } = route;
         const { path } = matches.at(-1);
         router.push({ path: path.replace(/:id.*/, '') });
     }
 });
 
 onBeforeRouteUpdate(async (to, from) => {
+    if (hasRouteParam(to.params)) {
+        const { matched } = router.currentRoute.value;
+        const { name } = matched.at(-3);
+        if (name) {
+            router.push({ name, params: to.params });
+        }
+    }
     const id = to.params.id;
     if (id !== from.params.id) await fetch(id, true);
 });
@@ -56,34 +62,13 @@ async function fetch(id, append = false) {
     else arrayData.store.url = props.url.replace(regex, `/${id}`);
     await arrayData.fetch({ append, updateRouter: false });
 }
+function hasRouteParam(params, valueToCheck = ':addressId') {
+    return Object.values(params).includes(valueToCheck);
+}
 </script>
 <template>
-    <QDrawer
-        v-model="stateStore.leftDrawer"
-        show-if-above
-        :width="256"
-        v-if="stateStore.isHeaderMounted()"
-    >
-        <QScrollArea class="fit">
-            <component :is="descriptor" />
-            <QSeparator />
-            <LeftMenu source="card" />
-        </QScrollArea>
-    </QDrawer>
-    <slot name="searchbar" v-if="props.searchDataKey">
-        <VnSearchbar :data-key="props.searchDataKey" v-bind="props.searchbarProps" />
-    </slot>
-    <RightMenu>
-        <template #right-panel v-if="props.filterPanel">
-            <component :is="props.filterPanel" :data-key="searchRightDataKey" />
-        </template>
-    </RightMenu>
-    <QPageContainer>
-        <QPage>
-            <VnSubToolbar />
-            <div :class="[useCardSize(), $attrs.class]">
-                <RouterView :key="$route.path" />
-            </div>
-        </QPage>
-    </QPageContainer>
+    <VnSubToolbar />
+    <div :class="[useCardSize(), $attrs.class]">
+        <RouterView :key="$route.path" />
+    </div>
 </template>
diff --git a/src/components/common/VnCardBeta.vue b/src/components/common/VnCardBeta.vue
deleted file mode 100644
index 620dc2ad2cb..00000000000
--- a/src/components/common/VnCardBeta.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<script setup>
-import { onBeforeMount } from 'vue';
-import { useRouter, onBeforeRouteUpdate, onBeforeRouteLeave } from 'vue-router';
-import { useArrayData } from 'src/composables/useArrayData';
-import { useStateStore } from 'stores/useStateStore';
-import useCardSize from 'src/composables/useCardSize';
-import VnSubToolbar from '../ui/VnSubToolbar.vue';
-
-const props = defineProps({
-    dataKey: { type: String, required: true },
-    url: { type: String, default: undefined },
-    idInWhere: { type: Boolean, default: false },
-    filter: { type: Object, default: () => {} },
-    descriptor: { type: Object, required: true },
-    filterPanel: { type: Object, default: undefined },
-    searchDataKey: { type: String, default: undefined },
-    searchbarProps: { type: Object, default: undefined },
-    redirectOnError: { type: Boolean, default: false },
-});
-
-const stateStore = useStateStore();
-const router = useRouter();
-const arrayData = useArrayData(props.dataKey, {
-    url: props.url,
-    userFilter: props.filter,
-    oneRecord: true,
-});
-
-onBeforeRouteLeave(() => {
-    stateStore.cardDescriptorChangeValue(null);
-});
-
-onBeforeMount(async () => {
-    stateStore.cardDescriptorChangeValue(props.descriptor);
-
-    const route = router.currentRoute.value;
-    try {
-        await fetch(route.params.id);
-    } catch {
-        const { matched: matches } = route;
-        const { path } = matches.at(-1);
-        router.push({ path: path.replace(/:id.*/, '') });
-    }
-});
-
-onBeforeRouteUpdate(async (to, from) => {
-    if (hasRouteParam(to.params)) {
-        const { matched } = router.currentRoute.value;
-        const { name } = matched.at(-3);
-        if (name) {
-            router.push({ name, params: to.params });
-        }
-    }
-    const id = to.params.id;
-    if (id !== from.params.id) await fetch(id, true);
-});
-
-async function fetch(id, append = false) {
-    const regex = /\/(\d+)/;
-    if (props.idInWhere) arrayData.store.filter.where = { id };
-    else if (!regex.test(props.url)) arrayData.store.url = `${props.url}/${id}`;
-    else arrayData.store.url = props.url.replace(regex, `/${id}`);
-    await arrayData.fetch({ append, updateRouter: false });
-}
-function hasRouteParam(params, valueToCheck = ':addressId') {
-    return Object.values(params).includes(valueToCheck);
-}
-</script>
-<template>
-    <VnSubToolbar />
-    <div :class="[useCardSize(), $attrs.class]">
-        <RouterView :key="$route.path" />
-    </div>
-</template>
diff --git a/src/pages/Account/AccountList.vue b/src/pages/Account/AccountList.vue
index 976af1d19f9..4f3f544c10c 100644
--- a/src/pages/Account/AccountList.vue
+++ b/src/pages/Account/AccountList.vue
@@ -149,14 +149,12 @@ const columns = computed(() => [
                 :right-search="false"
             >
                 <template #more-create-dialog="{ data }">
-                    <QCardSection>
                         <VnInputPassword
                             :label="t('Password')"
                             v-model="data.password"
                             :required="true"
                             autocomplete="new-password"
                         />
-                    </QCardSection>
                 </template>
             </VnTable>
         </template>
diff --git a/src/pages/Account/Alias/Card/AliasCard.vue b/src/pages/Account/Alias/Card/AliasCard.vue
index f37bd7d0f4b..f3faa5beeaf 100644
--- a/src/pages/Account/Alias/Card/AliasCard.vue
+++ b/src/pages/Account/Alias/Card/AliasCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import AliasDescriptor from './AliasDescriptor.vue';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Alias"
         url="MailAliases"
         :descriptor="AliasDescriptor"
diff --git a/src/pages/Account/Card/AccountCard.vue b/src/pages/Account/Card/AccountCard.vue
index a5037e30136..e102415c7d3 100644
--- a/src/pages/Account/Card/AccountCard.vue
+++ b/src/pages/Account/Card/AccountCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import AccountDescriptor from './AccountDescriptor.vue';
 import filter from './AccountFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         url="VnUsers/preview"
         :id-in-where="true"
         data-key="Account"
diff --git a/src/pages/Account/Role/Card/RoleCard.vue b/src/pages/Account/Role/Card/RoleCard.vue
index ef5b9db0491..43ad22b9020 100644
--- a/src/pages/Account/Role/Card/RoleCard.vue
+++ b/src/pages/Account/Role/Card/RoleCard.vue
@@ -1,9 +1,9 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import RoleDescriptor from './RoleDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         url="VnRoles"
         data-key="Role"
         :id-in-where="true"
diff --git a/src/pages/Claim/Card/ClaimAction.vue b/src/pages/Claim/Card/ClaimAction.vue
index baa36710ca6..a499d8b5da0 100644
--- a/src/pages/Claim/Card/ClaimAction.vue
+++ b/src/pages/Claim/Card/ClaimAction.vue
@@ -328,7 +328,7 @@ async function post(query, params) {
                     <QTd>
                         <VnSelect
                             v-model="row.shelvingFk"
-                            :options="shelvings"
+                            url="Shelvings"
                             option-label="code"
                             option-value="id"
                             style="width: 100px"
diff --git a/src/pages/Claim/Card/ClaimCard.vue b/src/pages/Claim/Card/ClaimCard.vue
index 05f3b53a860..307a6df4042 100644
--- a/src/pages/Claim/Card/ClaimCard.vue
+++ b/src/pages/Claim/Card/ClaimCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ClaimDescriptor from './ClaimDescriptor.vue';
 import filter from './ClaimFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Claim"
         url="Claims"
         :descriptor="ClaimDescriptor"
diff --git a/src/pages/Customer/Card/CustomerCard.vue b/src/pages/Customer/Card/CustomerCard.vue
index 75fcb98fa19..8c70646c163 100644
--- a/src/pages/Customer/Card/CustomerCard.vue
+++ b/src/pages/Customer/Card/CustomerCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import CustomerDescriptor from './CustomerDescriptor.vue';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Customer"
         :url="`Clients/${$route.params.id}/getCard`"
         :descriptor="CustomerDescriptor"
diff --git a/src/pages/Customer/Card/CustomerMandates.vue b/src/pages/Customer/Card/CustomerMandates.vue
index 66cb44bc273..2511f5730e1 100644
--- a/src/pages/Customer/Card/CustomerMandates.vue
+++ b/src/pages/Customer/Card/CustomerMandates.vue
@@ -16,9 +16,7 @@ const filter = {
         { relation: 'mandateType', scope: { fields: ['id', 'code'] } },
         { relation: 'company', scope: { fields: ['id', 'code'] } },
     ],
-    where: { clientFk: route.params.id },
     order: ['created DESC'],
-    limit: 20,
 };
 
 const columns = computed(() => [
@@ -32,7 +30,7 @@ const columns = computed(() => [
     {
         align: 'left',
         cardVisible: true,
-        format: ({ company }) => company.code,
+        format: ({ company }) => company?.code,
         label: t('globals.company'),
         name: 'company',
     },
@@ -65,7 +63,8 @@ const columns = computed(() => [
         <VnTable
             data-key="Mandates"
             url="Mandates"
-            :filter="filter"
+            :user-filter="filter"
+            :filter="{ where: { clientFk: route.params.id } }"
             auto-load
             :columns="columns"
             class="full-width q-mt-md"
diff --git a/src/pages/Customer/components/CustomerNewPayment.vue b/src/pages/Customer/components/CustomerNewPayment.vue
index 6ecccc5447b..ac80fdaa4d2 100644
--- a/src/pages/Customer/components/CustomerNewPayment.vue
+++ b/src/pages/Customer/components/CustomerNewPayment.vue
@@ -5,7 +5,7 @@ import { useRoute } from 'vue-router';
 import axios from 'axios';
 import { getClientRisk } from '../composables/getClientRisk';
 import { useDialogPluginComponent } from 'quasar';
-
+import FormModelPopup from 'components/FormModelPopup.vue';
 import { usePrintService } from 'composables/usePrintService';
 import useNotify from 'src/composables/useNotify.js';
 import FetchData from 'components/FetchData.vue';
@@ -74,26 +74,24 @@ onBeforeMount(() => {
     urlCreate.value = `Clients/${route.params.id}/createReceipt`;
 });
 
-function setPaymentType(accounting) {
+function setPaymentType(data, accounting) {
+    data.bankFk = accounting.id;
     if (!accounting) return;
     accountingType.value = accounting.accountingType;
-    initialData.description = [];
-    initialData.payed = Date.vnNew();
+    data.description = [];
+    data.payed = Date.vnNew();
     isCash.value = accountingType.value.code == 'cash';
     viewReceipt.value = isCash.value;
     if (accountingType.value.daysInFuture)
-        initialData.payed.setDate(
-            initialData.payed.getDate() + accountingType.value.daysInFuture,
-        );
+        data.payed.setDate(data.payed.getDate() + accountingType.value.daysInFuture);
     maxAmount.value = accountingType.value && accountingType.value.maxAmount;
-    if (accountingType.value.code == 'compensation')
-        return (initialData.description = '');
+    if (accountingType.value.code == 'compensation') return (data.description = '');
 
     let descriptions = [];
     if (accountingType.value.receiptDescription)
         descriptions.push(accountingType.value.receiptDescription);
-    if (initialData.description) descriptions.push(initialData.description);
-    initialData.description = descriptions.join(', ');
+    if (data.description) descriptions.push(data.description);
+    data.description = descriptions.join(', ');
 }
 
 const calculateFromAmount = (event) => {
@@ -113,7 +111,6 @@ function onBeforeSave(data) {
     if (isCash.value && shouldSendEmail.value && !data.email)
         return notify(t('There is no assigned email for this client'), 'negative');
 
-    data.bankFk = data.bankFk?.id;
     return data;
 }
 
@@ -181,42 +178,19 @@ async function getAmountPaid() {
             auto-load
             url="Clients/findOne"
         />
-        <FormModel
+        <FormModelPopup
             ref="formModelRef"
             :form-initial-data="initialData"
-            :observe-form-changes="false"
             :url-create="urlCreate"
             :mapper="onBeforeSave"
             @on-data-saved="onDataSaved"
-            prevent-submit
+            :prevent-submit="true"
         >
-            <template #form="{ data, validate }">
-                <span ref="closeButton" class="row justify-end close-icon" v-close-popup>
-                    <QIcon name="close" size="sm" />
-                </span>
-
+            <template #form-inputs="{ data, validate }">
                 <h5 class="q-mt-none">{{ t('New payment') }}</h5>
-
-                <VnRow>
-                    <VnInputDate
-                        :label="t('Date')"
-                        :required="true"
-                        v-model="data.payed"
-                    />
-                    <VnSelect
-                        :label="t('Company')"
-                        :options="companyOptions"
-                        :required="true"
-                        :rules="validate('entry.companyFk')"
-                        hide-selected
-                        option-label="code"
-                        option-value="id"
-                        v-model="data.companyFk"
-                        @update:model-value="getAmountPaid()"
-                    />
-                </VnRow>
                 <VnRow>
                     <VnSelect
+                        autofocus
                         :label="t('Bank')"
                         v-model="data.bankFk"
                         url="Accountings"
@@ -225,9 +199,10 @@ async function getAmountPaid() {
                         sort-by="id"
                         :limit="0"
                         @update:model-value="
-                            (value, options) => setPaymentType(value, options)
+                            (value, options) => setPaymentType(data, value, options)
                         "
                         :emit-value="false"
+                        data-cy="paymentBank"
                     >
                         <template #option="scope">
                             <QItem v-bind="scope.itemProps">
@@ -245,8 +220,28 @@ async function getAmountPaid() {
                         @update:model-value="calculateFromAmount($event)"
                         clearable
                         v-model.number="data.amountPaid"
+                        data-cy="paymentAmount"
                     />
                 </VnRow>
+                <VnRow>
+                    <VnInputDate
+                        :label="t('Date')"
+                        v-model="data.payed"
+                        :required="true"
+                    />
+                    <VnSelect
+                        :label="t('Company')"
+                        :options="companyOptions"
+                        :required="true"
+                        :rules="validate('entry.companyFk')"
+                        hide-selected
+                        option-label="code"
+                        option-value="id"
+                        v-model="data.companyFk"
+                        @update:model-value="getAmountPaid()"
+                    />
+                </VnRow>
+
                 <div v-if="data.bankFk?.accountingType?.code == 'compensation'">
                     <div class="text-h6">
                         {{ t('Compensation') }}
@@ -287,27 +282,8 @@ async function getAmountPaid() {
                         <QCheckbox v-model="shouldSendEmail" :label="t('Send email')" />
                     </VnRow>
                 </div>
-                <div class="q-mt-lg row justify-end">
-                    <QBtn
-                        :disabled="formModelRef.isLoading"
-                        :label="t('globals.cancel')"
-                        :loading="formModelRef.isLoading"
-                        class="q-ml-sm"
-                        color="primary"
-                        flat
-                        type="reset"
-                        v-close-popup
-                    />
-                    <QBtn
-                        :disabled="formModelRef.isLoading"
-                        :label="t('globals.save')"
-                        :loading="formModelRef.isLoading"
-                        color="primary"
-                        @click="formModelRef.save()"
-                    />
-                </div>
             </template>
-        </FormModel>
+        </FormModelPopup>
     </QDialog>
 </template>
 
diff --git a/src/pages/Entry/Card/EntryCard.vue b/src/pages/Entry/Card/EntryCard.vue
index be82289f4a5..50f8b8e554a 100644
--- a/src/pages/Entry/Card/EntryCard.vue
+++ b/src/pages/Entry/Card/EntryCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import EntryDescriptor from './EntryDescriptor.vue';
 import filter from './EntryFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Entry"
         url="Entries"
         :descriptor="EntryDescriptor"
diff --git a/src/pages/Entry/Card/EntryDescriptor.vue b/src/pages/Entry/Card/EntryDescriptor.vue
index 69b300cb2a6..313ed3d728b 100644
--- a/src/pages/Entry/Card/EntryDescriptor.vue
+++ b/src/pages/Entry/Card/EntryDescriptor.vue
@@ -146,9 +146,8 @@ async function deleteEntry() {
 
 <template>
     <CardDescriptor
-        ref="entryDescriptorRef"
         :url="`Entries/${entityId}`"
-        :userFilter="entryFilter"
+        :filter="entryFilter"
         title="supplier.nickname"
         data-key="Entry"
         width="lg-width"
diff --git a/src/pages/Entry/EntryList.vue b/src/pages/Entry/EntryList.vue
index f66151cc96c..3b5434cb83c 100644
--- a/src/pages/Entry/EntryList.vue
+++ b/src/pages/Entry/EntryList.vue
@@ -283,7 +283,11 @@ onBeforeMount(async () => {
 </script>
 
 <template>
-    <VnSection :data-key="dataKey" prefix="entry">
+    <VnSection
+        :data-key="dataKey"
+        prefix="entry"
+        :array-data-props="{ url: 'Entries/filter' }"
+    >
         <template #advanced-menu>
             <EntryFilter :data-key="dataKey" />
         </template>
diff --git a/src/pages/InvoiceIn/Card/InvoiceInCard.vue b/src/pages/InvoiceIn/Card/InvoiceInCard.vue
index 34cc26437a5..a1bae87a683 100644
--- a/src/pages/InvoiceIn/Card/InvoiceInCard.vue
+++ b/src/pages/InvoiceIn/Card/InvoiceInCard.vue
@@ -1,5 +1,5 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import InvoiceInDescriptor from './InvoiceInDescriptor.vue';
 import { onBeforeRouteUpdate } from 'vue-router';
 import { setRectificative } from '../composables/setRectificative';
@@ -9,7 +9,7 @@ onBeforeRouteUpdate(async (to) => await setRectificative(to));
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="InvoiceIn"
         url="InvoiceIns"
         :descriptor="InvoiceInDescriptor"
diff --git a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
index a50c9d24732..cdb7365555b 100644
--- a/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
+++ b/src/pages/InvoiceOut/Card/InvoiceOutCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import InvoiceOutDescriptor from './InvoiceOutDescriptor.vue';
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import filter from './InvoiceOutFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="InvoiceOut"
         url="InvoiceOuts"
         :filter="filter"
diff --git a/src/pages/InvoiceOut/InvoiceOutList.vue b/src/pages/InvoiceOut/InvoiceOutList.vue
index 8038b1284fe..034f416ed8c 100644
--- a/src/pages/InvoiceOut/InvoiceOutList.vue
+++ b/src/pages/InvoiceOut/InvoiceOutList.vue
@@ -230,7 +230,7 @@ watchEffect(selectedRows);
                     </span>
                 </template>
                 <template #more-create-dialog="{ data }">
-                    <div class="row q-col-gutter-xs">
+                    <div class="row q-col-gutter-xs col-span-2">
                         <div class="col-12">
                             <div class="q-col-gutter-xs">
                                 <VnRow fixed>
diff --git a/src/pages/Item/Card/ItemCard.vue b/src/pages/Item/Card/ItemCard.vue
index 610b77a02ae..ddd21fe368d 100644
--- a/src/pages/Item/Card/ItemCard.vue
+++ b/src/pages/Item/Card/ItemCard.vue
@@ -1,9 +1,9 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ItemDescriptor from './ItemDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Item"
         :url="`Items/${$route.params.id}/getCard`"
         :descriptor="ItemDescriptor"
diff --git a/src/pages/Item/ItemType/Card/ItemTypeCard.vue b/src/pages/Item/ItemType/Card/ItemTypeCard.vue
index 84e810de513..bd41b1be2ea 100644
--- a/src/pages/Item/ItemType/Card/ItemTypeCard.vue
+++ b/src/pages/Item/ItemType/Card/ItemTypeCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ItemTypeDescriptor from 'src/pages/Item/ItemType/Card/ItemTypeDescriptor.vue';
 import filter from './ItemTypeFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="ItemType"
         url="ItemTypes"
         :filter="filter"
diff --git a/src/pages/Order/Card/OrderCard.vue b/src/pages/Order/Card/OrderCard.vue
index ad5c73a878c..7dab307a0e8 100644
--- a/src/pages/Order/Card/OrderCard.vue
+++ b/src/pages/Order/Card/OrderCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import OrderDescriptor from 'pages/Order/Card/OrderDescriptor.vue';
 import filter from './OrderFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Order"
         url="Orders"
         :filter="filter"
diff --git a/src/pages/Order/OrderList.vue b/src/pages/Order/OrderList.vue
index 091275e32ea..2a1997f2101 100644
--- a/src/pages/Order/OrderList.vue
+++ b/src/pages/Order/OrderList.vue
@@ -156,9 +156,7 @@ const columns = computed(() => [
 onMounted(async () => {
     if (!route.query) return;
     if (route.query?.createForm) {
-        const query = JSON.parse(route.query?.createForm);
-        formInitialData.value = query;
-        await onClientSelected({ ...formInitialData.value, clientFk: query?.clientFk });
+        await onClientSelected(JSON.parse(route.query?.createForm));
     } else if (route.query?.table) {
         const query = JSON.parse(route.query?.table);
         const clientFk = query?.clientFk;
@@ -177,7 +175,6 @@ watch(
                 tableRef.value.create.formInitialData = formInitialData.value;
         }
     },
-    { immediate: true },
 );
 
 async function onClientSelected({ clientFk }, formData = {}) {
@@ -191,13 +188,17 @@ async function onClientSelected({ clientFk }, formData = {}) {
     addressOptions.value = data;
     formData.defaultAddressFk = data[0].client.defaultAddressFk;
     formData.addressId = formData.defaultAddressFk;
-
-    formInitialData.value = { addressId: formData.addressId, clientFk };
+    formInitialData.value = { ...formData, clientFk };
     await fetchAgencies(formData);
 }
 
-async function fetchAgencies({ landed, addressId }) {
-    if (!landed || !addressId) return (agencyList.value = []);
+async function fetchAgencies(formData) {
+    const { landed, addressId } = formData;
+    if (!landed || !addressId) {
+        formData.defaultAddressFk = formInitialData.value.defaultAddressFk;
+
+        return (agencyList.value = []);
+    }
 
     const { data } = await axios.get('Agencies/landsThatDay', {
         params: {
@@ -220,6 +221,11 @@ const getDateColor = (date) => {
     if (difference == 0) return 'bg-warning';
     if (difference < 0) return 'bg-success';
 };
+
+const isDefaultAddress = (opt, data) => {
+    const addressId = data.defaultAddressFk ?? data.addressId;
+    return addressId === opt.id && opt.isActive;
+};
 </script>
 
 <template>
@@ -310,10 +316,7 @@ const getDateColor = (date) => {
                             >
                                 <QItemSection style="min-width: min-content" avatar>
                                     <QIcon
-                                        v-if="
-                                            scope.opt.isActive &&
-                                            data.defaultAddressFk === scope.opt.id
-                                        "
+                                        v-if="isDefaultAddress(scope.opt, data)"
                                         size="sm"
                                         color="grey"
                                         name="star"
diff --git a/src/pages/Route/Agency/Card/AgencyCard.vue b/src/pages/Route/Agency/Card/AgencyCard.vue
index 7dc31f8ba35..c2129847091 100644
--- a/src/pages/Route/Agency/Card/AgencyCard.vue
+++ b/src/pages/Route/Agency/Card/AgencyCard.vue
@@ -1,7 +1,7 @@
 <script setup>
 import AgencyDescriptor from 'pages/Route/Agency/Card/AgencyDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Agency" url="Agencies" :descriptor="AgencyDescriptor" />
+    <VnCard data-key="Agency" url="Agencies" :descriptor="AgencyDescriptor" />
 </template>
diff --git a/src/pages/Route/Card/RouteCard.vue b/src/pages/Route/Card/RouteCard.vue
index c178dc6bf34..b71f7d0881f 100644
--- a/src/pages/Route/Card/RouteCard.vue
+++ b/src/pages/Route/Card/RouteCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import RouteDescriptor from 'pages/Route/Card/RouteDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import filter from './RouteFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Route"
         url="Routes"
         :filter="filter"
diff --git a/src/pages/Route/Roadmap/RoadmapCard.vue b/src/pages/Route/Roadmap/RoadmapCard.vue
index 48ba516a114..af08bc9d4e5 100644
--- a/src/pages/Route/Roadmap/RoadmapCard.vue
+++ b/src/pages/Route/Roadmap/RoadmapCard.vue
@@ -1,7 +1,7 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import RoadmapDescriptor from 'pages/Route/Roadmap/RoadmapDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Roadmap" url="Roadmaps" :descriptor="RoadmapDescriptor" />
+    <VnCard data-key="Roadmap" url="Roadmaps" :descriptor="RoadmapDescriptor" />
 </template>
diff --git a/src/pages/Route/Vehicle/Card/VehicleCard.vue b/src/pages/Route/Vehicle/Card/VehicleCard.vue
index f59420aa24b..b6038c24c15 100644
--- a/src/pages/Route/Vehicle/Card/VehicleCard.vue
+++ b/src/pages/Route/Vehicle/Card/VehicleCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import VehicleDescriptor from './VehicleDescriptor.vue';
 import VehicleFilter from '../VehicleFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Vehicle"
         url="Vehicles"
         :filter="VehicleFilter"
diff --git a/src/pages/Shelving/Card/ShelvingCard.vue b/src/pages/Shelving/Card/ShelvingCard.vue
index 9e0ac8ad2ce..e2fb79fb0c7 100644
--- a/src/pages/Shelving/Card/ShelvingCard.vue
+++ b/src/pages/Shelving/Card/ShelvingCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ShelvingDescriptor from 'pages/Shelving/Card/ShelvingDescriptor.vue';
 import filter from './ShelvingFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Shelving"
         url="Shelvings"
         :filter="filter"
diff --git a/src/pages/Shelving/Parking/Card/ParkingCard.vue b/src/pages/Shelving/Parking/Card/ParkingCard.vue
index b32c1b7d335..c8b3c60d7ae 100644
--- a/src/pages/Shelving/Parking/Card/ParkingCard.vue
+++ b/src/pages/Shelving/Parking/Card/ParkingCard.vue
@@ -1,11 +1,11 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import ParkingDescriptor from 'pages/Shelving/Parking/Card/ParkingDescriptor.vue';
 import filter from './ParkingFilter.js';
 </script>
 
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Parking"
         url="Parkings"
         :filter="filter"
diff --git a/src/pages/Supplier/Card/SupplierCard.vue b/src/pages/Supplier/Card/SupplierCard.vue
index e30f79f962b..74b3520bf9d 100644
--- a/src/pages/Supplier/Card/SupplierCard.vue
+++ b/src/pages/Supplier/Card/SupplierCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import SupplierDescriptor from './SupplierDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import filter from './SupplierFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Supplier"
         url="Suppliers"
         :descriptor="SupplierDescriptor"
diff --git a/src/pages/Supplier/SupplierList.vue b/src/pages/Supplier/SupplierList.vue
index d1d437a19a4..ec89d77e0da 100644
--- a/src/pages/Supplier/SupplierList.vue
+++ b/src/pages/Supplier/SupplierList.vue
@@ -172,6 +172,7 @@ const filterColumns = computed(() => {
             >
                 <template #more-create-dialog="{ data }">
                     <VnInput
+                        class="col-span-2"
                         :label="t('globals.name')"
                         v-model="data.socialName"
                         :uppercase="true"
diff --git a/src/pages/Ticket/Card/TicketCard.vue b/src/pages/Ticket/Card/TicketCard.vue
index e22d5799ab1..19dbd608c6b 100644
--- a/src/pages/Ticket/Card/TicketCard.vue
+++ b/src/pages/Ticket/Card/TicketCard.vue
@@ -1,10 +1,10 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import TicketDescriptor from './TicketDescriptor.vue';
 import filter from './TicketFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Ticket"
         url="Tickets"
         :descriptor="TicketDescriptor"
diff --git a/src/pages/Ticket/TicketList.vue b/src/pages/Ticket/TicketList.vue
index b2e13fcb60c..dfaabc84840 100644
--- a/src/pages/Ticket/TicketList.vue
+++ b/src/pages/Ticket/TicketList.vue
@@ -54,8 +54,7 @@ onBeforeMount(() => {
 onMounted(async () => {
     if (!route.query) return;
     if (route.query?.createForm) {
-        formInitialData.value = JSON.parse(route.query?.createForm);
-        await onClientSelected(formInitialData.value);
+        await onClientSelected(JSON.parse(route.query?.createForm));
     } else if (route.query?.table) {
         const query = route.query?.table;
         const clientId = +JSON.parse(query)?.clientFk;
@@ -273,12 +272,18 @@ const fetchAddresses = async (formData) => {
         return;
     }
     const { data } = await getAddresses(formData.clientId);
-    formInitialData.value = { clientId: formData.clientId };
-    if (!data) return;
+
+    if (!data) {
+        formInitialData.value = { clientId: formData.clientId };
+        return;
+    }
     addressesOptions.value = data;
     selectedClient.value = data[0].client;
     formData.addressId = selectedClient.value.defaultAddressFk;
-    formInitialData.value.addressId = formData.addressId;
+    formInitialData.value = {
+        clientId: formData.clientId,
+        addressId: formData.addressId,
+    };
 };
 watch(
     () => route.query.table,
diff --git a/src/pages/Travel/Card/TravelCard.vue b/src/pages/Travel/Card/TravelCard.vue
index cb09eafd680..479b47fb9fe 100644
--- a/src/pages/Travel/Card/TravelCard.vue
+++ b/src/pages/Travel/Card/TravelCard.vue
@@ -1,10 +1,10 @@
 <script setup>
 import TravelDescriptor from './TravelDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import filter from './TravelFilter.js';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Travel"
         url="Travels"
         :descriptor="TravelDescriptor"
diff --git a/src/pages/Wagon/Card/WagonCard.vue b/src/pages/Wagon/Card/WagonCard.vue
index 1694dad7ba3..19f0a682a8b 100644
--- a/src/pages/Wagon/Card/WagonCard.vue
+++ b/src/pages/Wagon/Card/WagonCard.vue
@@ -1,6 +1,6 @@
 <script setup>
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Wagon" url="Wagons" :descriptor="{}" />
+    <VnCard data-key="Wagon" url="Wagons" :descriptor="{}" />
 </template>
diff --git a/src/pages/Worker/Card/WorkerBasicData.vue b/src/pages/Worker/Card/WorkerBasicData.vue
index a78983e5c93..b8c1c54dfcb 100644
--- a/src/pages/Worker/Card/WorkerBasicData.vue
+++ b/src/pages/Worker/Card/WorkerBasicData.vue
@@ -96,6 +96,7 @@ async function setAdvancedSummary(data) {
                     option-label="name"
                     option-value="code"
                     v-model="data.maritalStatus"
+                    data-cy="MaritalStatus"
                 />
             </VnRow>
 
@@ -107,6 +108,7 @@ async function setAdvancedSummary(data) {
                     option-label="name"
                     option-value="id"
                     v-model="data.originCountryFk"
+                    data-cy="country"
                 />
                 <VnSelect
                     :label="t('Education level')"
@@ -132,7 +134,7 @@ async function setAdvancedSummary(data) {
                 <VnInputDate :label="t('seniority')" v-model="data.seniority" />
             </VnRow>
             <VnRow>
-                <VnInput v-model="data.fi" :label="t('fi')" />
+                <VnInput v-model="data.fi" :label="t('fi')" data-cy="fi" />
                 <VnInputDate :label="t('birth')" v-model="data.birth" />
             </VnRow>
             <VnRow wrap>
diff --git a/src/pages/Worker/Card/WorkerCard.vue b/src/pages/Worker/Card/WorkerCard.vue
index 3b7a62025ae..591dadcd217 100644
--- a/src/pages/Worker/Card/WorkerCard.vue
+++ b/src/pages/Worker/Card/WorkerCard.vue
@@ -1,9 +1,9 @@
 <script setup>
 import WorkerDescriptor from './WorkerDescriptor.vue';
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         data-key="Worker"
         url="Workers/summary"
         :id-in-where="true"
diff --git a/src/pages/Worker/Card/WorkerOperator.vue b/src/pages/Worker/Card/WorkerOperator.vue
index 8ab802b9f29..34d9ba0201c 100644
--- a/src/pages/Worker/Card/WorkerOperator.vue
+++ b/src/pages/Worker/Card/WorkerOperator.vue
@@ -98,12 +98,14 @@ watch(
                             <VnInput
                                 :label="t('worker.operator.numberOfWagons')"
                                 v-model="row.numberOfWagons"
+                                data-cy="numberOfWagons"
                             />
                             <VnSelect
                                 :label="t('worker.operator.train')"
                                 :options="trainsData"
                                 hide-selected
                                 v-model="row.trainFk"
+                                data-cy="train"
                                 :required="true"
                             />
                         </VnRow>
@@ -116,6 +118,7 @@ watch(
                                 option-value="code"
                                 v-model="row.itemPackingTypeFk"
                                 :required="true"
+                                data-cy="itemPackingType"
                             />
                             <VnSelect
                                 :label="t('worker.operator.warehouse')"
@@ -123,6 +126,7 @@ watch(
                                 hide-selected
                                 v-model="row.warehouseFk"
                                 :required="true"
+                                data-cy="warehouse"
                             />
                         </VnRow>
                         <VnRow>
@@ -132,6 +136,7 @@ watch(
                                 hide-selected
                                 option-label="description"
                                 v-model="row.sectorFk"
+                                data-cy="sector"
                             />
                             <VnSelect
                                 :label="t('worker.operator.labeler')"
@@ -139,6 +144,7 @@ watch(
                                 hide-selected
                                 option-label="name"
                                 v-model="row.labelerFk"
+                                data-cy="labeler"
                             >
                                 <template #option="scope">
                                     <QItem v-bind="scope.itemProps">
@@ -160,11 +166,13 @@ watch(
                                 :label="t('worker.operator.linesLimit')"
                                 v-model="row.linesLimit"
                                 lazy-rules
+                                data-cy="linesLimit"
                             />
                             <VnInput
                                 :label="t('worker.operator.volumeLimit')"
                                 v-model="row.volumeLimit"
                                 lazy-rules
+                                data-cy="volumeLimit"
                             />
                         </VnRow>
                         <VnRow>
@@ -172,6 +180,7 @@ watch(
                                 :label="t('worker.operator.sizeLimit')"
                                 v-model="row.sizeLimit"
                                 lazy-rules
+                                data-cy="sizeLimit"
                             />
                             <VnInput
                                 :label="t('worker.operator.isOnReservationMode')"
diff --git a/src/pages/Worker/Card/WorkerPit.vue b/src/pages/Worker/Card/WorkerPit.vue
index 3de60d6a0f7..cb07c1f1d13 100644
--- a/src/pages/Worker/Card/WorkerPit.vue
+++ b/src/pages/Worker/Card/WorkerPit.vue
@@ -68,8 +68,14 @@ const deleteRelative = async (id) => {
                         :label="t('familySituation')"
                         clearable
                         v-model="data.familySituation"
+                        data-cy="familySituation"
+                    />
+                    <VnInput
+                        :label="t('spouseNif')"
+                        clearable
+                        v-model="data.spouseNif"
+                        data-cy="spouseNif"
                     />
-                    <VnInput :label="t('spouseNif')" clearable v-model="data.spouseNif" />
                 </VnRow>
                 <VnRow>
                     <VnSelect
@@ -93,11 +99,13 @@ const deleteRelative = async (id) => {
                         clearable
                         v-model="data.childPension"
                         :label="t(`childPension`)"
+                        data-cy="childPension"
                     />
                     <VnInput
                         clearable
                         v-model="data.spousePension"
                         :label="t(`spousePension`)"
+                        data-cy="spousePension"
                     />
                 </VnRow>
                 <VnRow wrap>
@@ -190,12 +198,14 @@ const deleteRelative = async (id) => {
                                 type="number"
                                 v-model="row.birthed"
                                 :label="t(`birthed`)"
+                                data-cy="birthed"
                             />
 
                             <VnInput
                                 type="number"
                                 v-model="row.adoptionYear"
                                 :label="t(`adoptionYear`)"
+                                data-cy="adoptionYear"
                             />
                             <QCheckbox
                                 v-model="row.isDependend"
diff --git a/src/pages/Worker/Card/WorkerTimeForm.vue b/src/pages/Worker/Card/WorkerTimeForm.vue
index 3250e318074..ea9d891449f 100644
--- a/src/pages/Worker/Card/WorkerTimeForm.vue
+++ b/src/pages/Worker/Card/WorkerTimeForm.vue
@@ -53,7 +53,7 @@ const title = computed(() => (isEditMode.value ? t('Edit entry') : t('Add time')
 const urlCreate = computed(() =>
     isEditMode.value
         ? `WorkerTimeControls/${$props.entryId}/updateTimeEntry`
-        : `WorkerTimeControls/${route.params.id}/addTimeEntry`
+        : `WorkerTimeControls/${route.params.id}/addTimeEntry`,
 );
 
 onBeforeMount(() => {
@@ -83,6 +83,7 @@ onBeforeMount(() => {
                 autofocus
                 :required="true"
                 :is-clearable="false"
+                data-cy="entryHour"
             />
             <VnSelect
                 :label="t('Type')"
@@ -91,6 +92,7 @@ onBeforeMount(() => {
                 option-value="code"
                 option-label="description"
                 hide-selected
+                data-cy="entryType"
             />
         </template>
     </FormModelPopup>
diff --git a/src/pages/Worker/Department/Card/DepartmentCard.vue b/src/pages/Worker/Department/Card/DepartmentCard.vue
index 2e3f1152148..0fbc903327c 100644
--- a/src/pages/Worker/Department/Card/DepartmentCard.vue
+++ b/src/pages/Worker/Department/Card/DepartmentCard.vue
@@ -1,9 +1,9 @@
 <script setup>
-import VnCardBeta from 'components/common/VnCardBeta.vue';
+import VnCard from 'components/common/VnCard.vue';
 import DepartmentDescriptor from 'pages/Worker/Department/Card/DepartmentDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta
+    <VnCard
         class="q-pa-md column items-center"
         v-bind="{ ...$attrs }"
         data-key="Department"
diff --git a/src/pages/Worker/WorkerList.vue b/src/pages/Worker/WorkerList.vue
index 79eb2688170..b767900752e 100644
--- a/src/pages/Worker/WorkerList.vue
+++ b/src/pages/Worker/WorkerList.vue
@@ -223,7 +223,7 @@ async function autofillBic(worker) {
                 :right-search="false"
             >
                 <template #more-create-dialog="{ data }">
-                    <div class="q-pa-lg full-width">
+                    <div class="col-span-2">
                         <VnRadio
                             v-model="data.isFreelance"
                             :val="false"
diff --git a/src/pages/Zone/Card/ZoneCard.vue b/src/pages/Zone/Card/ZoneCard.vue
index 205ed074bc3..2ce4193a00c 100644
--- a/src/pages/Zone/Card/ZoneCard.vue
+++ b/src/pages/Zone/Card/ZoneCard.vue
@@ -1,7 +1,7 @@
 <script setup>
-import VnCardBeta from 'src/components/common/VnCardBeta.vue';
+import VnCard from 'src/components/common/VnCard.vue';
 import ZoneDescriptor from './ZoneDescriptor.vue';
 </script>
 <template>
-    <VnCardBeta data-key="Zone" url="Zones" :descriptor="ZoneDescriptor" />
+    <VnCard data-key="Zone" url="Zones" :descriptor="ZoneDescriptor" />
 </template>
diff --git a/test/cypress/integration/client/clientBalance.spec.js b/test/cypress/integration/client/clientBalance.spec.js
index abfa74cec6a..8f8296264c4 100644
--- a/test/cypress/integration/client/clientBalance.spec.js
+++ b/test/cypress/integration/client/clientBalance.spec.js
@@ -8,4 +8,10 @@ describe('Client balance', () => {
     it('Should load layout', () => {
         cy.get('.q-page').should('be.visible');
     });
+    it('Should create a mandate', () => {
+        cy.get('.q-page-sticky > div > .q-btn').click();
+        cy.dataCy('paymentBank').type({ arroyDown });
+        cy.dataCy('paymentAmount').type('100');
+        cy.saveCard();
+    });
 });
diff --git a/test/cypress/integration/order/orderList.spec.js b/test/cypress/integration/order/orderList.spec.js
index 8b8852a0208..c48b317a8ea 100644
--- a/test/cypress/integration/order/orderList.spec.js
+++ b/test/cypress/integration/order/orderList.spec.js
@@ -34,8 +34,8 @@ describe('OrderList', () => {
         cy.dataCy('Customer ID_input').type('1101{enter}');
         cy.dataCy('vnTableCreateBtn').click();
         cy.dataCy('landedDate').find('input').type('06/01/2001');
-        cy.get(agencyCreateSelect).click();
-        cy.get('.q-menu > div> .q-item:nth-child(1)').click();
+        cy.selectOption(agencyCreateSelect, 1);
+
         cy.intercept('GET', /\/api\/Orders\/\d/).as('orderSale');
         cy.get('[data-cy="FormModelPopup_save"] > .q-btn__content > .block').click();
         cy.wait('@orderSale');
@@ -60,8 +60,8 @@ describe('OrderList', () => {
         cy.get(clientCreateSelect).should('have.value', 'Bruce Wayne');
         cy.get(addressCreateSelect).should('have.value', 'Bruce Wayne');
         cy.dataCy('landedDate').find('input').type('06/01/2001');
-        cy.get(agencyCreateSelect).click();
-        cy.get('.q-menu > div> .q-item:nth-child(1)').click();
+        cy.selectOption(agencyCreateSelect, 1);
+
         cy.intercept('GET', /\/api\/Orders\/\d/).as('orderSale');
         cy.get('[data-cy="FormModelPopup_save"] > .q-btn__content > .block').click();
         cy.wait('@orderSale');
diff --git a/test/cypress/integration/ticket/negative/TicketLackDetail.spec.js b/test/cypress/integration/ticket/negative/TicketLackDetail.spec.js
index 19f4dc3b261..7b1932b11bc 100644
--- a/test/cypress/integration/ticket/negative/TicketLackDetail.spec.js
+++ b/test/cypress/integration/ticket/negative/TicketLackDetail.spec.js
@@ -139,7 +139,7 @@ describe.skip('Ticket Lack detail', () => {
             cy.wait('@getItemGetSimilar');
         });
         describe('Replace item if', () => {
-            it('Quantity is less than available', () => {
+            it.skip('Quantity is less than available', () => {
                 cy.get(':nth-child(1) > .text-right  > .q-btn').click();
             });
         });
diff --git a/test/cypress/integration/ticket/ticketList.spec.js b/test/cypress/integration/ticket/ticketList.spec.js
index 25ee05033a3..2409dd14911 100644
--- a/test/cypress/integration/ticket/ticketList.spec.js
+++ b/test/cypress/integration/ticket/ticketList.spec.js
@@ -38,8 +38,8 @@ describe('TicketList', () => {
     it('filter client and create ticket', () => {
         cy.intercept('GET', /\/api\/Tickets\/filter/).as('ticketSearchbar');
         searchResults();
+        cy.wait('@ticketSearchbar');
 
-        cy.intercept('GET', /\/api\/Tickets\/filter/).as('ticketFilter');
         cy.dataCy('Customer ID_input').clear('1');
         cy.dataCy('Customer ID_input').type('1101{enter}');
 
diff --git a/test/cypress/integration/worker/workerBasicData.spec.js b/test/cypress/integration/worker/workerBasicData.spec.js
new file mode 100644
index 00000000000..cf452a0448a
--- /dev/null
+++ b/test/cypress/integration/worker/workerBasicData.spec.js
@@ -0,0 +1,15 @@
+describe('WorkerBasicData', () => {
+    beforeEach(() => {
+        cy.viewport(1280, 720);
+        cy.login('developer');
+        cy.visit('/#/worker/1107/basic-data');
+    });
+
+    it('should modify worker summary', () => {
+        cy.dataCy('MaritalStatus').type('Married');
+        cy.dataCy('fi').type('42572374H');
+        cy.dataCy('country').type('Alemania');
+        cy.saveCard();
+        cy.checkNotification('Data saved');
+    });
+});
diff --git a/test/cypress/integration/worker/workerBusiness.spec.js b/test/cypress/integration/worker/workerBusiness.spec.js
new file mode 100644
index 00000000000..1650b66c724
--- /dev/null
+++ b/test/cypress/integration/worker/workerBusiness.spec.js
@@ -0,0 +1,34 @@
+describe('WorkerBusiness', () => {
+    const saveBtn = '.q-mt-lg > .q-btn--standard';
+    const contributionCode = `Representantes de comercio`;
+    const contractType = `INDEFINIDO A TIEMPO COMPLETO`;
+
+    const Business = {
+        'Start Date': { val: '26-12-2002', type: 'date' },
+        Company: { val: `VNL`, type: 'select' },
+        Department: { val: `RECICLAJE`, type: 'select' },
+        'Professional Category': { val: `employee`, type: 'select' },
+        'Work Calendar': { val: `General schedule`, type: 'select' },
+        'Work Center': { val: `Silla`, type: 'select' },
+        'Contract Category': { val: `INFORMATICA`, type: 'select' },
+        'Contribution Code': { val: contributionCode, type: 'select' },
+        Rate: { val: `5` },
+        'Contract Type': { val: contractType, type: 'select' },
+        'Transport Workers Salary': { val: `1000` },
+    };
+
+    beforeEach(() => {
+        cy.viewport(1280, 720);
+        cy.login('hr');
+        cy.visit('/#/worker/1107/business');
+        cy.addCard();
+    });
+
+    it('should create a business', () => {
+        cy.fillInForm({
+            ...Business,
+        });
+        cy.get(saveBtn).click();
+        cy.checkNotification('Data created');
+    });
+});
diff --git a/test/cypress/integration/worker/workerMutual.spec.js b/test/cypress/integration/worker/workerMutual.spec.js
new file mode 100644
index 00000000000..a6d2c5f4f69
--- /dev/null
+++ b/test/cypress/integration/worker/workerMutual.spec.js
@@ -0,0 +1,23 @@
+/// <reference types="cypress" />
+describe('WorkerMutual', () => {
+    const userId = 1106;
+    const saveBtn = '.q-mt-lg > .q-btn--standard';
+    const medicalReview = {
+        Date: { val: '01-01-2001', type: 'date' },
+        'Formation Center': { val: '1', type: 'select' },
+        Invoice: { val: '24532' },
+        Amount: { val: '540' },
+    };
+    beforeEach(() => {
+        cy.viewport(1280, 720);
+        cy.login('developer');
+        cy.visit(`/#/worker/${userId}/medical`);
+        cy.addCard();
+    });
+
+    it('should create a medical Review', () => {
+        cy.fillInForm(medicalReview);
+        cy.get(saveBtn).click();
+        cy.checkNotification('Data created');
+    });
+});
diff --git a/test/cypress/integration/worker/workerNotes.spec.js b/test/cypress/integration/worker/workerNotes.spec.js
new file mode 100644
index 00000000000..661314ac9f1
--- /dev/null
+++ b/test/cypress/integration/worker/workerNotes.spec.js
@@ -0,0 +1,13 @@
+/// <reference types="cypress" />
+describe('WorkerNotes', () => {
+    const userId = 1106;
+    beforeEach(() => {
+        cy.viewport(1280, 720);
+        cy.login('developer');
+        cy.visit(`/#/worker/${userId}/notes`);
+    });
+
+    it('Should load layout', () => {
+        cy.get('.q-card').should('be.visible');
+    });
+});
diff --git a/test/cypress/integration/worker/workerOperator.spec.js b/test/cypress/integration/worker/workerOperator.spec.js
new file mode 100644
index 00000000000..95839aeba9a
--- /dev/null
+++ b/test/cypress/integration/worker/workerOperator.spec.js
@@ -0,0 +1,19 @@
+/// <reference types="cypress" />
+describe('WorkerOperator', () => {
+    const userId = 1106;
+    beforeEach(() => {
+        cy.viewport(1280, 720);
+        cy.login('hr');
+        cy.visit(`/#/worker/${userId}/operator`);
+    });
+
+    it('should fill the operator form', () => {
+        cy.dataCy('numberOfWagons').type('4');
+        cy.dataCy('linesLimit').type('6');
+        cy.dataCy('volumeLimit').type('3');
+        cy.dataCy('sizeLimit').type('3');
+        cy.saveCard();
+
+        cy.checkNotification('Data saved');
+    });
+});
diff --git a/test/cypress/integration/worker/workerPit.spec.js b/test/cypress/integration/worker/workerPit.spec.js
index 19cbebc204f..04f23264865 100644
--- a/test/cypress/integration/worker/workerPit.spec.js
+++ b/test/cypress/integration/worker/workerPit.spec.js
@@ -1,19 +1,5 @@
 describe('WorkerPit', () => {
-    const familySituationInput = '[data-cy="Family Situation_input"]';
-    const familySituation = '1';
-    const childPensionInput = '[data-cy="Child Pension_input"]';
-    const childPension = '120';
-    const spouseNifInput = '[data-cy="Spouse Pension_input"]';
-    const spouseNif = '65117125P';
-    const spousePensionInput = '[data-cy="Spouse Pension_input"]';
-    const spousePension = '120';
     const addRelative = '[data-cy="addRelative"]';
-    const isDescendantSelect = '[data-cy="Descendant/Ascendant"]';
-    const Descendant = 'Descendiente';
-    const birthedInput = '[data-cy="Birth Year_input"]';
-    const birthed = '2002';
-    const adoptionYearInput = '[data-cy="Adoption Year_input"]';
-    const adoptionYear = '2004';
     const saveRelative = '[data-cy="workerPitRelativeSaveBtn"]';
     const savePIT = '#st-actions > .q-btn-group > .q-btn--standard';
 
@@ -24,15 +10,15 @@ describe('WorkerPit', () => {
     });
 
     it('complete PIT', () => {
-        cy.get(familySituationInput).type(familySituation);
-        cy.get(childPensionInput).type(childPension);
-        cy.get(spouseNifInput).type(spouseNif);
-        cy.get(spousePensionInput).type(spousePension);
+        cy.dataCy('familySituation').type('1');
+        cy.dataCy('childPension').type('120');
+        cy.dataCy('spouseNif').type('65117125P');
+        cy.dataCy('spousePension').type('120');
         cy.get(savePIT).click();
         cy.get(addRelative).click();
-        cy.get(isDescendantSelect).type(Descendant);
-        cy.get(birthedInput).type(birthed);
-        cy.get(adoptionYearInput).type(adoptionYear);
+        cy.dataCy('Descendant/Ascendant').type('Descendiente');
+        cy.dataCy('birthed').type('2002');
+        cy.dataCy('adoptionYear').type('2004');
         cy.get(saveRelative).click();
     });
 });
diff --git a/test/cypress/integration/worker/workerSummary.spec.js b/test/cypress/integration/worker/workerSummary.spec.js
index 3d70fdf967d..c50b2c9431e 100644
--- a/test/cypress/integration/worker/workerSummary.spec.js
+++ b/test/cypress/integration/worker/workerSummary.spec.js
@@ -1,4 +1,6 @@
 describe('WorkerSummary', () => {
+    const departmentDescriptor = ':nth-child(1) > :nth-child(3) > .value > .link';
+    const roleDescriptor = ':nth-child(3) > :nth-child(4) > .value > .link';
     beforeEach(() => {
         cy.viewport(1280, 720);
         cy.login('developer');
@@ -10,7 +12,17 @@ describe('WorkerSummary', () => {
         cy.get('.summaryHeader > div').should('have.text', '19 - salesboss salesboss');
         cy.get(':nth-child(1) > :nth-child(2) > .value > span').should(
             'have.text',
-            'salesBossNick'
+            'salesBossNick',
         );
     });
+
+    it('should try descriptors', () => {
+        cy.waitForElement('.summaryHeader');
+        cy.get(departmentDescriptor).click();
+        cy.get('.descriptor').should('be.visible');
+        cy.get('.q-item > .q-item__label').should('include.text', '43');
+        cy.get(roleDescriptor).click();
+        cy.get('.descriptor').should('be.visible');
+        cy.get('.q-item > .q-item__label').should('include.text', '19');
+    });
 });