diff --git a/.github/workflows/mirror.yml b/.github/workflows/mirror.yml
new file mode 100644
index 000000000..66ded4f41
--- /dev/null
+++ b/.github/workflows/mirror.yml
@@ -0,0 +1,119 @@
+name: Mirror from SVN
+
+on:
+  push:
+
+  # Allows you to run this workflow manually from the Actions tab
+  workflow_dispatch:
+
+  schedule:
+  - cron: '21 * * * *' # every hour to keep cache up to date
+
+jobs:
+  # This workflow contains a single job called "build"
+  mirror:
+    # The type of runner that the job will run on
+    runs-on: ubuntu-latest
+    continue-on-error: true
+
+    env:
+      TRAVIS_REPO_SLUG: ${{ github.repository }} 
+    steps:
+
+      - name: install git-svn package
+        run: |
+          sudo apt-get update
+          sudo apt-get install git-svn --no-install-recommends
+
+      - name: checkout mirror config branch
+        uses: actions/checkout@master
+
+      - name: Get current date as seconds
+        id: get-date
+        run: |
+          echo "::set-output name=seconds::$(/bin/date -u "+%s")"
+        shell: bash
+
+      # - name: Get latest svn revision from remote server
+      #   id: svnRemote
+      #   run: echo "::set-output name=LAST_SVN_REVISION::$( svn info --show-item revision https://svn.fhem.de/fhem/trunk )"
+
+      - name: generate merged authors file
+        run: |
+          cd /tmp
+          svn log https://svn.fhem.de/fhem --xml --quiet | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = $1 <>/' > ${GITHUB_WORKSPACE}/authors_svn.txt;
+          cat ${GITHUB_WORKSPACE}/authors.txt ${GITHUB_WORKSPACE}/authors_svn.txt | sort -u -k1,1 > ${GITHUB_WORKSPACE}/authors_merged.txt;
+          ls -la ${GITHUB_WORKSPACE}/authors_merged.txt;
+
+      - name: Cache runners svn-2-git-fhem mirror directory  
+        id: cache-fhem
+        uses: actions/cache@v2
+        with:
+          path: ./src/fhem-mirror
+          key: ${{ runner.os }}-fhemsvnmirror-${{ steps.get-date.outputs.seconds }}
+          restore-keys: |
+            ${{ runner.os }}-fhemsvnmirror-
+
+
+      - name: init mirror repository if it is not already a mirror
+        run: |
+          if [[ ! -d "${GITHUB_WORKSPACE}/src/fhem-mirror/.git" ]]; then
+            git init "${GITHUB_WORKSPACE}/src/fhem-mirror" ;
+            cd "${GITHUB_WORKSPACE}/src/fhem-mirror";
+            git svn init --trunk=trunk --prefix=svn/ --no-metadata https://svn.fhem.de/fhem ;
+            git config --add svn-remote.svn.preserve-empty-dirs "true" ;
+            git config --add svn-remote.svn.placeholder-filename ".gitkeep" ;
+            git config --add svn.authorsfile "${GITHUB_WORKSPACE}/authors_merged.txt" ;
+          else
+            echo "Current .git/config file content:";
+            cat ${GITHUB_WORKSPACE}/src/fhem-mirror/.git/config;
+          fi
+
+
+      # - name: Update or checkout fhem from svn
+      #   if: steps.cache-fhem.outputs.cache-hit != 'true'
+      #   run: svn update ./src/fhem/trunk/  || svn co https://svn.fhem.de/fhem/trunk ./src/fhem/trunk;
+
+      # - name: get svn vars
+      #   id: svnVars
+      #   run: |
+      #     echo "::set-output name=FHEM_REVISION_LATEST::$( cd ./src/fhem/trunk; svn info --show-item last-changed-revision)"
+      #     echo "::set-output name=FHEM_VERSION::$( cd ./src/fhem/trunk; svn ls "^/tags" https://svn.fhem.de/fhem/ | grep "FHEM_" | sort | tail -n 1 | cut -d / -f 1 | cut -d " " -f 1 |cut -d _ -f 2- | sed s/_/./g )"
+
+      - name: fetch svn to git master branch
+        id: fetchsvn
+        timeout-minutes: 1800
+        run: |
+          echo "::set-output name=SVN_FETCH_STATUS::incomplete"
+          cd "${GITHUB_WORKSPACE}/src/fhem-mirror";
+          RET=0
+          timeout 630 git svn -q fetch || RET=$?;
+          if [[ $RET == 0 ]]; then
+            git checkout -f "master"
+            git rebase "remotes/svn/trunk"
+            echo "::set-output name=SVN_FETCH_STATUS::complete"
+          elif [[ $RET != 124 ]]; then
+            echo "::set-output name=SVN_FETCH_STATUS::error"
+          fi
+
+      - name: Verify no fetch error state
+        if: ${{ steps.fetchsvn.outputs.SVN_FETCH_STATUS == 'error' }}
+        run: |
+          echo "A permanent error occured"
+          exit 1
+
+      # - name: Commit fetched files
+      #   run: |
+      #     cd "${GITHUB_WORKSPACE}/src/fhem-mirror";
+      #     echo "Will now prepare push following directory structure to remote repo:";
+      #     ls -la ;
+      #     git config --add remote.origin.push 'refs/remotes/svn/trunk:refs/heads/master';
+
+      - name: Push force changes to master branch in same repo
+        if: ${{ steps.fetchsvn.outputs.SVN_FETCH_STATUS == 'complete' }}
+        uses: ad-m/github-push-action@master
+        with:
+          github_token: ${{ secrets.GITHUB_TOKEN }}
+          branch: master
+          directory: ./src/fhem-mirror
+          force: true