diff --git a/package-lock.json b/package-lock.json
index c116ec695dab3d3df0c66bc547a687ea00fe8995..209c6c79a234adc35406c3e9fe6f85993682be1e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,6 +22,7 @@
         "filesize": "^10.0.6",
         "node-polyglot": "^2.5.0",
         "oidc-client": "^1.11.5",
+        "pinia": "^2.0.30",
         "vue": "^3.2.47",
         "vue-router": "^4.1.6",
         "vue-select": "^4.0.0-beta.6",
@@ -4397,6 +4398,56 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/pinia": {
+      "version": "2.0.30",
+      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.30.tgz",
+      "integrity": "sha512-q6DUmxWwe/mQgg+55QQjykpKC+aGeGdaJV3niminl19V08dE+LRTvSEuqi6/NLSGCKHI49KGL6tMNEOssFiMyA==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.4.5",
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.4.0",
+        "typescript": ">=4.4.4",
+        "vue": "^2.6.14 || ^3.2.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pinia/node_modules/vue-demi": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz",
+      "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/popper.js": {
       "version": "1.16.1",
       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
@@ -5505,7 +5556,7 @@
       "version": "4.9.5",
       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
       "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true,
+      "devOptional": true,
       "bin": {
         "tsc": "bin/tsc",
         "tsserver": "bin/tsserver"
@@ -9108,6 +9159,23 @@
       "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
       "dev": true
     },
+    "pinia": {
+      "version": "2.0.30",
+      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.30.tgz",
+      "integrity": "sha512-q6DUmxWwe/mQgg+55QQjykpKC+aGeGdaJV3niminl19V08dE+LRTvSEuqi6/NLSGCKHI49KGL6tMNEOssFiMyA==",
+      "requires": {
+        "@vue/devtools-api": "^6.4.5",
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.11",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz",
+          "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+          "requires": {}
+        }
+      }
+    },
     "popper.js": {
       "version": "1.16.1",
       "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
@@ -9846,7 +9914,7 @@
       "version": "4.9.5",
       "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
       "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
-      "dev": true
+      "devOptional": true
     },
     "unbox-primitive": {
       "version": "1.0.2",
diff --git a/package.json b/package.json
index d11265f318dc5bd7057cf685c7865e97f48fff7e..bc253dc657d92b1dd1d7af286585210ed192247c 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
     "filesize": "^10.0.6",
     "node-polyglot": "^2.5.0",
     "oidc-client": "^1.11.5",
+    "pinia": "^2.0.30",
     "vue": "^3.2.47",
     "vue-router": "^4.1.6",
     "vue-select": "^4.0.0-beta.6",
diff --git a/src/main.js b/src/main.js
index aa71553477563d0cb819a56cdc00d992490508b1..2e02d984107cb06aa85648f1e07af06280dfb2d0 100644
--- a/src/main.js
+++ b/src/main.js
@@ -1,4 +1,5 @@
 import BootstrapVue from 'bootstrap-vue'
+import { createPinia } from 'pinia'
 import { createApp } from 'vue'
 import VueToast from 'vue-toast-notification'
 import VueLogger from 'vuejs-logger'
@@ -15,6 +16,7 @@ import './assets/custom.scss'
 import './assets/styles/tailwind.css'
 import { shouldLog } from '@/utilities'
 
+const pinia = createPinia()
 const app = createApp(App)
 app.config.warnHandler = (message, instance, trace) => {
   if (shouldLog(message, instance, trace)) {
@@ -23,6 +25,7 @@ app.config.warnHandler = (message, instance, trace) => {
 }
 
 app.use(store)
+app.use(pinia)
 app.use(router)
 app.use(VueLogger, {
   isEnabled: true,