diff --git a/README.md b/README.md
index b4b923f6ca0191e37316b706efc1e30c5e07b100..15f2a4cb2aa0a7e2a86aa6362e7e5be35e07b52a 100644
--- a/README.md
+++ b/README.md
@@ -49,9 +49,9 @@ Note that images are generally created in the Openstack `$PROJECT_VIRTUAL` proje
 
 ### RedHat testing particularities
 
-Due to how RedHat machines require bootstrapping, we only test virtual managed machines for the time being.
+Due to how RedHat machines require bootstrapping, we only test virtual machines for the time being.
 
-This means that `TEST_UNMANAGED` or `TEST_PHYSICAL` will have no effect for this use case.
+This means that `TEST_PHYSICAL` will have no effect for this use case.
 
 ## Tests
 
diff --git a/ci/common.yml b/ci/common.yml
index a50641ee8897d63111c176cc29a7ae6a3139711d..3105c8a1281c2097a102ee77fe5a96b5d7b30612 100644
--- a/ci/common.yml
+++ b/ci/common.yml
@@ -42,7 +42,7 @@
         exit 1
       fi
     else
-      OS_DISTRO=$(openstack image show ${IMAGE} -c properties -f json | jq '.properties.os_distro')
+      OS_DISTRO=$(openstack image show ${IMAGE} -c properties -f json | jq '.properties.os_distro' | tr -d \")
     fi
 
 .test_unmanaged_physical:
diff --git a/ci/rh7.yml b/ci/rh7.yml
index 30fe03e8dbba160f13feccd0e8ff4f2142f3a8fe..9bcb589c3bf35e738d534f99fb1fe7d0297eb5c8 100644
--- a/ci/rh7.yml
+++ b/ci/rh7.yml
@@ -6,3 +6,13 @@ rh7_puppet_virtual:
   only:
     variables:
       - $TEST_OSRH7 == 'True' && $TEST_VIRTUAL == 'True' && $TEST_PUPPET == 'True'
+
+rh7_unman_virtual:
+  extends: .test_unmanaged_virtual
+  variables:
+    OS: RH7
+    ARCH: x86_64
+    DELETE_FAILURES: "False"
+  only:
+    variables:
+      - $TEST_OSRH7 == 'True' && $TEST_VIRTUAL == 'True' && $TEST_UNMANAGED == 'True'
diff --git a/ci/rh8.yml b/ci/rh8.yml
index 46509d0d241606f5f7c80a94462db421cddb3123..15e250b74f9fd457146b37c77cd3893ef3474979 100644
--- a/ci/rh8.yml
+++ b/ci/rh8.yml
@@ -6,3 +6,13 @@ rh8_puppet_virtual:
   only:
     variables:
       - $TEST_OSRH8 == 'True' && $TEST_VIRTUAL == 'True' && $TEST_PUPPET == 'True'
+
+rh8_unman_virtual:
+  extends: .test_unmanaged_virtual
+  variables:
+    OS: RH8
+    ARCH: x86_64
+    DELETE_FAILURES: "False"
+  only:
+    variables:
+      - $TEST_OSRH8 == 'True' && $TEST_VIRTUAL == 'True' && $TEST_UNMANAGED == 'True'
diff --git a/common.sh b/common.sh
index 1b07bdeacefcb34be8e8e08998c26f52a8fec6cb..0e65342e9c5a561a9107a19958ae75fed88c160e 100644
--- a/common.sh
+++ b/common.sh
@@ -81,7 +81,7 @@ function runOnServer() {
 }
 
 function isServerUp() {
-  runOnServer "$1" "uname -a; uptime; lsb_release -a" 2> /dev/null
+  runOnServer "$1" "uname -a; uptime; cat /etc/redhat-release" 2> /dev/null
   [ $? -eq 0 ] && return 0
 
   return 4
diff --git a/testallthethings.sh b/testallthethings.sh
index b66e481cdd86ba73722b8af578e6ff90293cf5d8..dcd44db387d1523a6557c76ea4f4596816197519 100755
--- a/testallthethings.sh
+++ b/testallthethings.sh
@@ -331,6 +331,10 @@ while [[ ${#TOBETESTED[@]} -gt 0 ]]; do
       deleteServer "${p_name}" "${TESTTYPE}-${flavor}" "puppet_tests"
     else
       t_Log "We're in! Running upstream tests"
+      if [[ $OS_DISTRO == 'RHEL' ]]; then
+        t_Log "Host is RHEL, setting up dependencies"
+        runOnServer "${p_name}" "yum -y install redhat-lsb-core"
+      fi
       # Find the OS we're running, and the commit hash of the latest passing test. Tested machines may not have external connectivity.
       centos_ver=$(runOnServer "${p_name}" "lsb_release -rs | cut -f 1 -d '.'")
       PASSING=$(curl -s https://ci.centos.org/job/CentOS-Core-QA-t_functional-c${centos_ver}-64/lastSuccessfulBuild/api/json | jq -r '.actions[] | select(.lastBuiltRevision) | .lastBuiltRevision.SHA1')
@@ -345,17 +349,21 @@ while [[ ${#TOBETESTED[@]} -gt 0 ]]; do
       else
         testEnd "${TESTTYPE}-${flavor}" "upstream_centos_tests" $TEST_PASS
       fi
-
       t_Log "Now run our own tests"
       testStart "${TESTTYPE}-${flavor}" "cern_centos_tests"
-      runOnServer "${p_name}" "IMAGECI_USER='$IMAGECI_USER' IMAGECI_PWD='$IMAGECI_PWD' bash -s" < ./cerncentostests.sh
-      g=$?
-      t_CheckExitStatus $g
-      if [[ $g -ne 0 ]]; then
-        testEnd "${TESTTYPE}-${flavor}" "cern_centos_tests" $TEST_FAIL
-        testAddComments "${TESTTYPE}-${flavor}" "cern_centos_tests" "CERN tests failed"
-      else
+      if [[ $OS_DISTRO == 'RHEL' ]]; then
+        testAddComments "${TESTTYPE}-${flavor}" "cern_centos_tests" "CERN tests skipped as image is upstream RHEL"
         testEnd "${TESTTYPE}-${flavor}" "cern_centos_tests" $TEST_PASS
+      else
+        runOnServer "${p_name}" "IMAGECI_USER='$IMAGECI_USER' IMAGECI_PWD='$IMAGECI_PWD' bash -s" < ./cerncentostests.sh
+        g=$?
+        t_CheckExitStatus $g
+        if [[ $g -ne 0 ]]; then
+          testEnd "${TESTTYPE}-${flavor}" "cern_centos_tests" $TEST_FAIL
+          testAddComments "${TESTTYPE}-${flavor}" "cern_centos_tests" "CERN tests failed"
+        else
+          testEnd "${TESTTYPE}-${flavor}" "cern_centos_tests" $TEST_PASS
+        fi
       fi
 
       deleteServer "${p_name}" "${TESTTYPE}-${flavor}" "cern_centos_tests"
diff --git a/upstreamcentostests.sh b/upstreamcentostests.sh
index 4c5aa8208eb4136d34a36a59a3df7fcdaa4b9d8c..9d6b0ca914ec7602323b6147d9841612a2d80170 100644
--- a/upstreamcentostests.sh
+++ b/upstreamcentostests.sh
@@ -75,6 +75,28 @@ if [ "$LSB_DISTRO_ID" != "CentOS" ]; then
   # Uses /etc/centos-release as an input file
   echo "8|tests/r_pdf/01_pdf-test*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
 fi
+# Most CentOS tests work for RHEL as well, with a few exceptions ...
+if [ "$LSB_DISTRO_ID" == "RedHatEnterpriseServer" ]; then
+  # random failures, ignoring
+  echo "7|tests/p_abrt/abrt_gpg_keys*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_anaconda/anaconda_centos_patch*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_centos-release/*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_lsb/lsb_release_brand_test*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_kernel/*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_httpd/*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_java-openjdk/*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_shim/01_shim_secureboot_signed*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_yum/yum_bugtracker*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/p_yum/yum_distroverpkg*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "7|tests/r_pdf/01_pdf-test*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+fi
+if [ "$LSB_DISTRO_ID" == "RedHatEnterprise" ]; then
+  echo "8|tests/p_lftp/10_lftp_http_test*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "8|tests/p_mtr/mtr_test*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "8|tests/p_wget/wget_test*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "8|tests/r_lamp/40_basic_lamp*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+  echo "8|tests/r_pdf/*|Not applicable on $LSB_DISTRO_ID" >> ./skipped-tests.list
+fi
 
 # Tweaks for test suite to work on CERN CentOS
 # Need to tweak Pam so passwd tests do not fail due to test user being taken under Kerberos auth