diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml
index 0eae23a60fb878224d3ece6acc5a6ca40cfaa42a..5b98eeefd5a2f408a94f0ad2abdb672f2f95eddf 100644
--- a/.github/workflows/backend.yml
+++ b/.github/workflows/backend.yml
@@ -15,7 +15,7 @@ concurrency:
 jobs:
   files-changed:
     name: Check which files changed
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 3
     outputs:
       backend_all: ${{ steps.changes.outputs.backend_all }}
@@ -31,7 +31,7 @@ jobs:
   be-linter-cloverage:
     needs: files-changed
     if: github.event.pull_request.draft == false && needs.files-changed.outputs.backend_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 60
     steps:
     - uses: actions/checkout@v3
@@ -52,7 +52,7 @@ jobs:
   be-linter-clj-kondo:
     needs: files-changed
     if: needs.files-changed.outputs.backend_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 10
     steps:
     - uses: actions/checkout@v3
@@ -101,7 +101,7 @@ jobs:
   be-linter-eastwood:
     needs: files-changed
     if: github.event.pull_request.draft == false && needs.files-changed.outputs.backend_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 20
     steps:
     - uses: actions/checkout@v3
@@ -118,7 +118,7 @@ jobs:
   be-tests-java-11-ee-pre-check:
     needs: files-changed
     if: github.event.pull_request.draft == true && needs.files-changed.outputs.backend_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     name: be-tests-java-11-ee-pre-check
     timeout-minutes: 25
     steps:
@@ -150,7 +150,7 @@ jobs:
   be-tests:
     needs: files-changed
     if: github.event.pull_request.draft == false && needs.files-changed.outputs.backend_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     name: be-tests-java-${{ matrix.java-version }}-${{ matrix.edition }}
     timeout-minutes: 25
     strategy:
@@ -190,7 +190,7 @@ jobs:
       always() &&
       github.event.pull_request.draft == false &&
       needs.files-changed.outputs.backend_all == 'false'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     name: be-tests-java-${{ matrix.java-version }}-${{ matrix.edition }}
     timeout-minutes: 5
     strategy:
@@ -207,7 +207,7 @@ jobs:
   be-check:
     needs: files-changed
     if: github.event.pull_request.draft == false && needs.files-changed.outputs.backend_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     name: be-check-java-${{ matrix.java-version }}
     timeout-minutes: 10
     strategy:
@@ -228,7 +228,7 @@ jobs:
       always() &&
       github.event.pull_request.draft == false &&
       needs.files-changed.outputs.backend_all == 'false'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     name: be-check-java-${{ matrix.java-version }}
     timeout-minutes: 10
     strategy:
diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml
index 36056c71ad142ec1ead39e709d1d28cea7c685d2..27d24898df1acf2eacab267f8de5027adc5a633b 100644
--- a/.github/workflows/e2e-tests.yml
+++ b/.github/workflows/e2e-tests.yml
@@ -15,7 +15,7 @@ concurrency:
 jobs:
   files-changed:
     name: Check which files changed
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 3
     outputs:
       e2e_all: ${{ steps.changes.outputs.e2e_all }}
@@ -31,7 +31,7 @@ jobs:
   build:
     needs: files-changed
     if: github.event.pull_request.draft == false && needs.files-changed.outputs.e2e_all == 'true'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 25
     strategy:
       matrix:
@@ -60,7 +60,7 @@ jobs:
       always() &&
       needs.files-changed.outputs.e2e_all == 'true' &&
       needs.build.result == 'success'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 60
     name: e2e-tests-${{ matrix.folder }}${{ matrix.context }}-${{ matrix.edition }}
     env:
@@ -198,7 +198,7 @@ jobs:
       always() &&
       needs.files-changed.outputs.e2e_all == 'false' &&
       needs.build.result == 'skipped'
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 5
     name: e2e-tests-${{ matrix.folder }}${{ matrix.context }}-${{ matrix.edition }}
     strategy:
@@ -235,7 +235,7 @@ jobs:
           echo "Didn't run due to conditional filtering"
 
   visual-regression-tests:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     timeout-minutes: 45
     needs: build
     name: percy-visual-regression-tests