diff --git a/.github/workflows/cmd.yml b/.github/workflows/cmd.yml
index dac46cf435a670942e7d54eff0cb6e8b1170e8a8..7a742751005d9c8ce324c1220366403764b6082b 100644
--- a/.github/workflows/cmd.yml
+++ b/.github/workflows/cmd.yml
@@ -237,8 +237,48 @@ jobs:
               echo "RUNNER=ubuntu-latest" >> $GITHUB_OUTPUT
           fi
 
-  cmd:
+  # Get PR branch name, because the issue_comment event does not contain the PR branch name
+  get-pr-branch:
     needs: [ set-image ]
+    runs-on: ubuntu-latest
+    outputs:
+      pr-branch: ${{ steps.get-pr.outputs.pr_branch }}
+      repo: ${{ steps.get-pr.outputs.repo }}
+    steps:
+      - name: Check if the issue is a PR
+        id: check-pr
+        run: |
+          if [ -n "${{ github.event.issue.pull_request.url }}" ]; then
+            echo "This is a pull request comment"
+          else
+            echo "This is not a pull request comment"
+            exit 1
+          fi
+
+      - name: Get PR Branch Name and Repo
+        if: steps.check-pr.outcome == 'success'
+        id: get-pr
+        uses: actions/github-script@v7
+        with:
+          script: |
+            const pr = await github.rest.pulls.get({
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              pull_number: context.issue.number,
+            });
+            const prBranch = pr.data.head.ref;
+            const repo = pr.data.head.repo.full_name;
+            console.log(prBranch, repo)
+            core.setOutput('pr_branch', prBranch);
+            core.setOutput('repo', repo);
+
+      - name: Use PR Branch Name and Repo
+        run: |
+          echo "The PR branch is ${{ steps.get-pr.outputs.pr_branch }}"
+          echo "The repository is ${{ steps.get-pr.outputs.repo }}"
+
+  cmd:
+    needs: [ set-image, get-pr-branch ]
     env:
       JOB_NAME: 'cmd'
     runs-on: ${{ needs.set-image.outputs.RUNNER }}
@@ -291,7 +331,8 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
         with:
-          ref: ${{ github.head_ref }}
+          repository: ${{ needs.get-pr-branch.outputs.repo }}
+          ref: ${{ needs.get-pr-branch.outputs.pr-branch }}
 
       - name: Install dependencies for bench
         if: startsWith(steps.get-pr-comment.outputs.group2, 'bench')
@@ -317,11 +358,11 @@ jobs:
             git config --local user.email "action@github.com"
             git config --local user.name "GitHub Action"
           
-            git pull origin ${{ github.head_ref }}
+            git pull origin ${{ needs.get-pr-branch.outputs.pr-branch }}
             git add .
             git restore --staged Cargo.lock # ignore changes in Cargo.lock
             git commit -m "Update from ${{ github.actor }} running command '${{ steps.get-pr-comment.outputs.group2 }}'" || true
-            git push origin ${{ github.head_ref }}
+            git push origin ${{ needs.get-pr-branch.outputs.pr-branch }}
           else
             echo "Nothing to commit";
           fi
diff --git a/.github/workflows/command-inform.yml b/.github/workflows/command-inform.yml
new file mode 100644
index 0000000000000000000000000000000000000000..97346395319362b0455bcbcfbb490fa23e6b3b07
--- /dev/null
+++ b/.github/workflows/command-inform.yml
@@ -0,0 +1,22 @@
+name: Inform of new command action
+
+on:
+  issue_comment:
+    types: [ created ]
+
+jobs:
+  comment:
+    runs-on: ubuntu-latest
+    # Temporary disable the bot until the new command bot works properly
+    if: github.event.issue.pull_request && startsWith(github.event.comment.body, 'bot ') && false # disabled for now, until tested
+    steps:
+      - name: Inform that the new command exist
+        uses: actions/github-script@v7
+        with:
+          script: |
+            github.rest.issues.createComment({
+              issue_number: context.issue.number,
+              owner: context.repo.owner,
+              repo: context.repo.repo,
+              body: 'We have migrated the command bot to GHA<br/><br/>Please, see the new usage instructions <a href="https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/commands-readme.md">here</a>. Soon the old commands will be disabled.'
+            })
\ No newline at end of file
diff --git a/scripts/update-ui-tests.sh b/scripts/update-ui-tests.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a1f380c4712d3e9819fd4544cd7a450db1f32b7a
--- /dev/null
+++ b/scripts/update-ui-tests.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+# Script for updating the UI tests for a new rust stable version.
+# Exit on error
+set -e
+
+# by default current rust stable will be used
+RUSTUP_RUN=""
+# check if we have a parameter
+# ./scripts/update-ui-tests.sh 1.70
+if [ ! -z "$1" ]; then
+ echo "RUST_VERSION: $1"
+  # This will run all UI tests with the rust stable 1.70.
+  # The script requires that rustup is installed.
+  RUST_VERSION=$1
+  RUSTUP_RUN="rustup run $RUST_VERSION"
+
+
+  echo "installing rustup $RUST_VERSION"
+  if ! command -v rustup &> /dev/null
+  then
+    echo "rustup needs to be installed"
+    exit
+  fi
+
+  rustup install $RUST_VERSION
+  rustup component add rust-src --toolchain $RUST_VERSION
+fi
+
+# Ensure we run the ui tests
+export RUN_UI_TESTS=1
+# We don't need any wasm files for ui tests
+export SKIP_WASM_BUILD=1
+# Let trybuild overwrite the .stderr files
+export TRYBUILD=overwrite
+
+# ./substrate
+$RUSTUP_RUN cargo test --manifest-path substrate/primitives/runtime-interface/Cargo.toml ui
+$RUSTUP_RUN cargo test -p sp-api-test ui
+$RUSTUP_RUN cargo test -p frame-election-provider-solution-type ui
+$RUSTUP_RUN cargo test -p frame-support-test --features=no-metadata-docs,try-runtime,experimental ui
+$RUSTUP_RUN cargo test -p xcm-procedural ui
\ No newline at end of file