diff --git a/action.yml b/action.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d2ca9fb407c1215f6894a4c1f5df0619936fb740
--- /dev/null
+++ b/action.yml
@@ -0,0 +1,30 @@
+name: 'Java CI Build'
+description: 'Build a Java CI project with maven and Docker' 
+runs:
+  using: "composite"
+  steps:
+      # build the project in a docker container with a specific maven settings.xml
+      # it uses env variables from github secrets for the credentials
+      # to github, dockerhub and sonar.
+      - name: Build and test with Maven in docker
+        run: ./mvn.sh clean verify
+      - name: Deploy Maven Artifacts
+        run: ./mvn.sh deploy
+      - name: Notify dedicated teams channel of Success
+        uses: dragos-cojocari/ms-teams-notification@v1.0.0
+        if: ${{ success() }}
+        with:
+          github-token: ${{ github.token }} # this will use the runner's token.
+          ms-teams-webhook-uri: ${{ secrets.MSTEAMS_WEBHOOK }}
+          notification-summary: Build and Deploy success.
+          notification-color: 28a745
+          timezone: Europe/Paris
+      - name: Notify dedicated teams channel of Failure
+        uses: dragos-cojocari/ms-teams-notification@v1.0.0
+        if: ${{ failure() }}
+        with:
+          github-token: ${{ github.token }} # this will use the runner's token.
+          ms-teams-webhook-uri: ${{ secrets.MSTEAMS_WEBHOOK }}
+          notification-summary: Build and Deploy failure.
+          notification-color: dc3545
+          timezone: Europe/Paris
diff --git a/checkVersions.sh b/checkVersions.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e7c0feadfe065e3d7b43adac2af2537cbaac0071
--- /dev/null
+++ b/checkVersions.sh
@@ -0,0 +1,3 @@
+mvn versions:display-dependency-updates
+mvn versions:display-plugin-updates
+mvn versions:display-property-updates
diff --git a/ci-settings.xml b/ci-settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3ccf09a14008f187fe8d4da3d6c1e40e79cffee5
--- /dev/null
+++ b/ci-settings.xml
@@ -0,0 +1,37 @@
+<!-- A MAVEN SETTINGS FILE TO BE USED IN CI -->
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
+
+    <servers>
+        <server>
+            <id>github</id>
+            <username>${env.GITHUBLOGIN}</username>
+            <password>${env.GITHUBPASSWORD}</password>
+        </server>
+        <server>
+            <id>dockerhub</id>
+            <username>${env.DOCKER_USERNAME}</username>
+            <password>${env.DOCKER_PASSWORD}</password>
+        </server>
+        <server>
+            <id>github.pages</id>
+            <username>git</username>
+            <configuration>
+                <scmVersionType>branch</scmVersionType>
+                <scmVersion>gh-pages</scmVersion>
+            </configuration>
+        </server>
+    </servers>
+
+    <profiles>
+        <profile>
+            <id>sonar</id>
+            <properties>
+                <sonar.host.url>${env.SONAR_URL}</sonar.host.url>
+                <sonar.login>${env.SONAR_TOKEN}</sonar.login>
+            </properties>
+        </profile>
+    </profiles>
+
+</settings>
diff --git a/mvn.sh b/mvn.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ef07a41d42aca1b8115c885ce8ea86ffd400d1ef
--- /dev/null
+++ b/mvn.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+export MAVEN_IMAGE=brunoe/maven:3.8.6-eclipse-temurin-17
+docker run \
+          --env GITHUBLOGIN=$GITHUBLOGIN \
+          --env GITHUBPASSWORD=$GITHUBPASSWORD \
+          --mount type=bind,source=${HOME}/.m2,target=/var/maven/.m2 \
+          --mount type=bind,source=${HOME}/.ssh,target=/home/user/.ssh \
+          --mount type=bind,source=${HOME}/.gitconfig,target=/home/user/.gitconfig,readonly \
+          --mount type=bind,source="$(pwd)",target=/usr/src/mymaven \
+          --workdir /usr/src/mymaven \
+          --rm \
+          --env PUID=`id -u` -e PGID=`id -g` \
+          --env MAVEN_CONFIG=/var/maven/.m2 \
+          $MAVEN_IMAGE \
+          runuser --user user --group user -- mvn -B -e -T 1C -Duser.home=/var/maven --settings /usr/src/mymaven/CI_Java/ci-settings.xml "$@"
diff --git a/sonar.sh b/sonar.sh
new file mode 100755
index 0000000000000000000000000000000000000000..59f54c6ff1b4569d2c11115d1a356bd9f5348ee2
--- /dev/null
+++ b/sonar.sh
@@ -0,0 +1,7 @@
+./mvn.sh sonar:sonar \
+  -D sonar.branch.name=$(git rev-parse --abbrev-ref HEAD|tr / _ ) \
+  -DskipTests=true \
+  -Dsonar.language=java \
+  -Dsonar.report.export.path=sonar-report.json \
+  -Dsonar.host.url=http://localhost:9000 \
+  --activate-profiles sonar