diff --git a/.github/workflows/moodle-ci.yml b/.github/workflows/moodle-ci.yml
index 9e3f4e4f76e2c0d5ef02412abfe0402a1be3bc63..8adbd0f63f54d6f99b969f458479a9fcc441eab4 100644
--- a/.github/workflows/moodle-ci.yml
+++ b/.github/workflows/moodle-ci.yml
@@ -8,16 +8,16 @@ jobs:
 
     strategy:
       matrix:
-        php: ['7.4']
-        moodle-branch: ['MOODLE_400_STABLE']
+        php: ['8.0']
+        moodle-branch: ['MOODLE_401_STABLE']
         database: ['pgsql']
 
     steps:
       - name: Start PostgreSQL
-        run: docker run -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:10
+        run: docker run -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:14
 
       - name: Check out repository code
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
         with:
           path: plugin
 
@@ -25,14 +25,15 @@ jobs:
         uses: shivammathur/setup-php@v2
         with:
           php-version: ${{ matrix.php }}
+          ini-values: max_input_vars=5000
           coverage: none
 
       - name: Get composer cache directory
         id: composer-cache
-        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+        run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
 
       - name: Composer cache
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: ${{ steps.composer-cache.outputs.dir }}
           key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
@@ -40,7 +41,7 @@ jobs:
             ${{ runner.os }}-composer-
 
       - name: npm cache
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: ~/.npm
           key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
@@ -93,6 +94,7 @@ jobs:
       - name: Mustache Lint
         if: ${{ always() }}
         run: moodle-plugin-ci mustache
+        continue-on-error: true
 
       - name: Grunt
         if: ${{ always() }}
@@ -105,9 +107,16 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        php: ['7.4']
-        moodle-branch: ['MOODLE_39_STABLE', 'MOODLE_310_STABLE', 'MOODLE_311_STABLE', 'MOODLE_400_STABLE']
+        php: ['8.0']
+        moodle-branch: ['MOODLE_311_STABLE', 'MOODLE_400_STABLE', 'MOODLE_401_STABLE']
         database: ['mariadb', 'pgsql']
+        include:
+          - php: '7.4'
+            moodle-branch: 'MOODLE_39_STABLE'
+            database: 'mariadb'
+          - php: '7.4'
+            moodle-branch: 'MOODLE_39_STABLE'
+            database: 'pgsql'
 
     steps:
       - name: Start MariaDB
@@ -116,10 +125,10 @@ jobs:
 
       - name: Start PostgreSQL
         if: matrix.database == 'pgsql'
-        run: docker run -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:10
+        run: docker run -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_HOST_AUTH_METHOD=trust -d postgres:14
 
       - name: Check out repository code
-        uses: actions/checkout@v2
+        uses: actions/checkout@v3
         with:
           path: plugin
 
@@ -127,20 +136,21 @@ jobs:
         uses: shivammathur/setup-php@v2
         with:
           php-version: ${{ matrix.php }}
+          ini-values: max_input_vars=5000
           coverage: none
 
       - name: Get composer cache directory
         id: composer-cache
-        run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+        run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
       - name: Composer cache
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: ${{ steps.composer-cache.outputs.dir }}
           key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
           restore-keys: |
             ${{ runner.os }}-composer-
       - name: npm cache
-        uses: actions/cache@v2
+        uses: actions/cache@v3
         with:
           path: ~/.npm
           key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
diff --git a/templates/workflowoverview.mustache b/templates/workflowoverview.mustache
index a3d6b7e2413295d81532fa2bf1598237ea8f6276..70a0104224c1ebf4fecc5bc6515fbf243b730829 100644
--- a/templates/workflowoverview.mustache
+++ b/templates/workflowoverview.mustache
@@ -15,7 +15,7 @@
     along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 }}
 {{!
-    @template plugintype_pluginname/template_name
+    @template tool_lifecycle/workflowoverview
 
     Template purpose and description.
 
diff --git a/version.php b/version.php
index eae0e44604840917d64d6425b1b06f1764876106..76fb360051c549dbc4ee32243e263b568f4e9f6e 100644
--- a/version.php
+++ b/version.php
@@ -25,7 +25,7 @@
 defined('MOODLE_INTERNAL') || die;
 
 $plugin->maturity = MATURITY_BETA;
-$plugin->version  = 2022042200;
+$plugin->version  = 2022112400;
 $plugin->component = 'tool_lifecycle';
 $plugin->requires = 2020061500; // Requires Moodle 3.9+.
-$plugin->release   = 'v4.0-r1';
+$plugin->release   = 'v4.1-r1';