diff --git a/.github/actions/publish-docker-image/action.yml b/.github/actions/publish-docker-image/action.yml
index 206e13d4c..2f8a8c522 100644
--- a/.github/actions/publish-docker-image/action.yml
+++ b/.github/actions/publish-docker-image/action.yml
@@ -41,8 +41,7 @@ inputs:
 runs:
   using: "composite"
   steps:
-    - name: Checkout
-      uses: actions/checkout@v3
+    - uses: actions/checkout@v3.3.0
 
     #####################
     # Login to DockerHub
@@ -56,12 +55,7 @@ runs:
     #####################
     # Build JAR file
     #####################
-    - name: Set up JDK 11
-      uses: actions/setup-java@v3.11.0
-      with:
-        java-version: '17'
-        distribution: 'temurin'
-        cache: 'gradle'
+    - uses: ./.github/actions/setup-java
     - name: Build Controlplane
       shell: bash
       run: |-
diff --git a/.github/actions/run-deployment-test/action.yml b/.github/actions/run-deployment-test/action.yml
index ed720b4be..9f4b40d58 100644
--- a/.github/actions/run-deployment-test/action.yml
+++ b/.github/actions/run-deployment-test/action.yml
@@ -42,8 +42,7 @@ inputs:
 runs:
   using: "composite"
   steps:
-    - name: Checkout
-      uses: actions/checkout@v3.3.0
+    - uses: actions/checkout@v3.3.0
 
     - name: Cache ContainerD Image Layers
       uses: actions/cache@v3
@@ -51,12 +50,7 @@ runs:
         path: /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs
         key: ${{ runner.os }}-io.containerd.snapshotter.v1.overlayfs
 
-    - name: Set up JDK 11
-      uses: actions/setup-java@v3.11.0
-      with:
-        java-version: '11'
-        distribution: 'temurin'
-        cache: 'gradle'
+    - uses: ./.github/actions/setup-java
 
     - name: Build docker images
       shell: bash
diff --git a/.github/actions/setup-java/action.yml b/.github/actions/setup-java/action.yml
new file mode 100644
index 000000000..ed03fafb3
--- /dev/null
+++ b/.github/actions/setup-java/action.yml
@@ -0,0 +1,32 @@
+#
+#  Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
+#  Copyright (c) 2023 Contributors to the Eclipse Foundation
+#
+#  See the NOTICE file(s) distributed with this work for additional
+#  information regarding copyright ownership.
+#
+#  This program and the accompanying materials are made available under the
+#  terms of the Apache License, Version 2.0 which is available at
+#  https://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#  License for the specific language governing permissions and limitations
+#  under the License.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#
+
+---
+name: "Setup JDK 17"
+description: "Setup JDK 17"
+runs:
+  using: "composite"
+  steps:
+    - name: Setup JDK 17
+      uses: actions/setup-java@v3.11.0
+      with:
+        java-version: '17'
+        distribution: 'temurin'
+        cache: 'gradle'
\ No newline at end of file
diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index a701ae362..0713b0857 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -71,14 +71,8 @@ jobs:
     needs: [ secret-presence ]
     steps:
       # Set-Up
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: actions/checkout@v3.3.0
+      - uses: ./.github/actions/setup-java
       # Build
       - name: Build Extensions
         run: |-
@@ -104,8 +98,7 @@ jobs:
     permissions:
       contents: write
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3
+      - uses: actions/checkout@v3.3.0
       - uses: ./.github/actions/publish-docker-image
         with:
           rootDir: edc-controlplane/${{ matrix.name }}
@@ -128,8 +121,7 @@ jobs:
     permissions:
       contents: write
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3
+      - uses: actions/checkout@v3.3.0
       - uses: ./.github/actions/publish-docker-image
         with:
           rootDir: edc-dataplane/${{ matrix.name }}
@@ -149,15 +141,9 @@ jobs:
       needs.secret-presence.outputs.GPG_PASSPHRASE && needs.secret-presence.outputs.GPG_PRIVATE_KEY && github.event_name != 'pull_request' && github.ref != 'refs/heads/releases'
     steps:
       # Set-Up
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
       - name: Import GPG Key
         uses: crazy-max/ghaction-import-gpg@v5
         with:
diff --git a/.github/workflows/business-tests.yaml b/.github/workflows/business-tests.yaml
index 39caaadb1..a4726a443 100644
--- a/.github/workflows/business-tests.yaml
+++ b/.github/workflows/business-tests.yaml
@@ -50,15 +50,9 @@ jobs:
       ### Set-Up ###
       ##############
       -
-        name: Checkout
         uses: actions/checkout@v3.3.0
       -
-        name: Set-Up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+        uses: ./.github/actions/setup-java
       -
         name: Cache ContainerD Image Layers
         uses: actions/cache@v3
diff --git a/.github/workflows/deployment-test.yaml b/.github/workflows/deployment-test.yaml
index 7d38b24ac..8e75ae31e 100644
--- a/.github/workflows/deployment-test.yaml
+++ b/.github/workflows/deployment-test.yaml
@@ -47,8 +47,7 @@ jobs:
   deployment-test-memory:
     runs-on: ubuntu-latest
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
       - uses: ./.github/actions/run-deployment-test
         name: "Run deployment test using KinD and Helm"
         with:
diff --git a/.github/workflows/draft-new-release.yaml b/.github/workflows/draft-new-release.yaml
index 22222ba8a..98e3c956a 100644
--- a/.github/workflows/draft-new-release.yaml
+++ b/.github/workflows/draft-new-release.yaml
@@ -33,12 +33,7 @@ jobs:
           git config user.name "GitHub actions"
           git config user.email noreply@github.com
       -
-        name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+        uses: ./.github/actions/setup-java
       -
         name: Bump version in gradle.properties
         run: |-
diff --git a/.github/workflows/helm-chart-release.yaml b/.github/workflows/helm-chart-release.yaml
index bd5e55302..f19c841b9 100644
--- a/.github/workflows/helm-chart-release.yaml
+++ b/.github/workflows/helm-chart-release.yaml
@@ -38,8 +38,7 @@ jobs:
 
     steps:
       # fetch-depth: 0 is required to determine differences in chart(s)
-      - name: Checkout
-        uses: actions/checkout@v3
+      - uses: actions/checkout@v3.3.0
         with:
           fetch-depth: 0
 
diff --git a/.github/workflows/helm-lint.yaml b/.github/workflows/helm-lint.yaml
index 7640d0a38..0b5a70f1f 100644
--- a/.github/workflows/helm-lint.yaml
+++ b/.github/workflows/helm-lint.yaml
@@ -26,7 +26,6 @@ jobs:
     ### Set-Up ###
     ##############
     -
-      name: Checkout
       uses: actions/checkout@v3.3.0
       with:
         fetch-depth: 0
diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml
index 794d15061..24aaf2ff4 100644
--- a/.github/workflows/publish-docker.yaml
+++ b/.github/workflows/publish-docker.yaml
@@ -50,8 +50,7 @@ jobs:
       contents: write
       packages: write
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3
+      - uses: actions/checkout@v3.3.0
       - uses: ./.github/actions/publish-docker-image
         with:
           rootDir: edc-controlplane/${{ matrix.name }}
@@ -74,8 +73,7 @@ jobs:
       contents: write
       packages: write
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3
+      - uses: actions/checkout@v3.3.0
       - uses: ./.github/actions/publish-docker-image
         with:
           rootDir: edc-dataplane/${{ matrix.name }}
diff --git a/.github/workflows/publish-new-release.yml b/.github/workflows/publish-new-release.yml
index 06ee58b61..b7de21257 100644
--- a/.github/workflows/publish-new-release.yml
+++ b/.github/workflows/publish-new-release.yml
@@ -54,15 +54,9 @@ jobs:
         run: |
           echo "RELEASE_VERSION=${{ needs.release-version.outputs.RELEASE_VERSION }}" >> $GITHUB_ENV
       -
-        name: Checkout
         uses: actions/checkout@v3.3.0
       -
-        name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+        uses: ./.github/actions/setup-java
 
       - name: Import GPG Key
         uses: crazy-max/ghaction-import-gpg@v5
@@ -96,7 +90,6 @@ jobs:
         run: |
           echo "RELEASE_VERSION=${{ needs.release-version.outputs.RELEASE_VERSION }}" >> $GITHUB_ENV
       -
-        name: Checkout
         uses: actions/checkout@v3.3.0
         with:
           fetch-depth: 0
@@ -144,7 +137,6 @@ jobs:
         run: |
           echo "RELEASE_VERSION=${{ needs.release-version.outputs.RELEASE_VERSION }}" >> $GITHUB_ENV
       -
-        name: Checkout
         uses: actions/checkout@v3.3.0
         with:
           # 0 to fetch the full history due to upcoming merge of releases into main branch
@@ -177,12 +169,7 @@ jobs:
           draft: false
           prerelease: false
       -
-        name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+        uses: ./.github/actions/setup-java
       -
         name: Merge releases back into main and set new snapshot version
         if: github.event.pull_request.base.ref == 'releases'
diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml
index 67ab0fb12..2fe44c399 100644
--- a/.github/workflows/trivy.yml
+++ b/.github/workflows/trivy.yml
@@ -36,8 +36,7 @@ jobs:
       contents: read
       security-events: write
     steps:
-      - name: Checkout repository
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
       - name: Run Trivy vulnerability scanner in repo mode
         uses: aquasecurity/trivy-action@master
         with:
@@ -72,8 +71,7 @@ jobs:
           - edc-dataplane-azure-vault
           - edc-dataplane-hashicorp-vault
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
         ## This step will fail if the docker images is not found
       - name: "Check if image exists"
diff --git a/.github/workflows/veracode.yaml b/.github/workflows/veracode.yaml
index c3e7cb7a1..486c53096 100644
--- a/.github/workflows/veracode.yaml
+++ b/.github/workflows/veracode.yaml
@@ -23,16 +23,10 @@ jobs:
   verify-formatting:
     runs-on: ubuntu-latest
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
         with:
           fetch-depth: 0
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
       - name: Verify proper formatting
         run: ./gradlew spotlessCheck
 
@@ -51,14 +45,8 @@ jobs:
           - edc-controlplane-postgresql-hashicorp-vault
     steps:
       # Set-Up
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: actions/checkout@v3.3.0
+      - uses: ./.github/actions/setup-java
       # Build
       - name: Build Controlplane
         run: |-
@@ -95,14 +83,8 @@ jobs:
           - edc-dataplane-hashicorp-vault
     steps:
       # Set-Up
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: actions/checkout@v3.3.0
+      - uses: ./.github/actions/setup-java
       # Build
       - name: Build Dataplane
         run: |-
diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml
index a16da4681..2cd0432f8 100644
--- a/.github/workflows/verify.yaml
+++ b/.github/workflows/verify.yaml
@@ -58,15 +58,9 @@ jobs:
   verify-formatting:
     runs-on: ubuntu-latest
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
       - name: Verify proper formatting
         run: ./gradlew spotlessCheck
 
@@ -78,7 +72,7 @@ jobs:
   markdown-lint:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v3.3.0
 
       - name: Install mardkdownlint
         run: npm install -g markdownlint-cli2
@@ -91,15 +85,9 @@ jobs:
     runs-on: ubuntu-latest
     needs: [ verify-formatting ]
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
 
       - name: Run Unit tests
         run: ./gradlew test
@@ -108,15 +96,9 @@ jobs:
     runs-on: ubuntu-latest
     needs: [ verify-formatting ]
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
 
       - name: Run Integration tests
         run: ./gradlew test -DincludeTags="ComponentTest"
@@ -125,15 +107,9 @@ jobs:
     runs-on: ubuntu-latest
     needs: [ verify-formatting ]
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
 
       - name: Run API tests
         run: ./gradlew test -DincludeTags="ApiTest"
@@ -142,15 +118,9 @@ jobs:
     runs-on: ubuntu-latest
     needs: [ verify-formatting ]
     steps:
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
 
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
 
       - name: Run E2E tests
         run: ./gradlew :edc-tests:runtime:build test -DincludeTags="EndToEndTest"
@@ -162,16 +132,10 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       # Set-Up
-      - name: Checkout
-        uses: actions/checkout@v3.3.0
+      - uses: actions/checkout@v3.3.0
         with:
           fetch-depth: 0
-      - name: Set up JDK 11
-        uses: actions/setup-java@v3.11.0
-        with:
-          java-version: '17'
-          distribution: 'temurin'
-          cache: 'gradle'
+      - uses: ./.github/actions/setup-java
       - name: Cache SonarCloud packages
         uses: actions/cache@v3
         with: