diff --git a/extension/Classes/Core/AbstractBuildForm.php b/extension/Classes/Core/AbstractBuildForm.php
index 6582f7670b54e5e3bd5c1fdb70937b734d16e344..6b07e41eb5070832deabdc7948421234f7c90687 100644
--- a/extension/Classes/Core/AbstractBuildForm.php
+++ b/extension/Classes/Core/AbstractBuildForm.php
@@ -1104,7 +1104,7 @@ abstract class AbstractBuildForm {
     }
 
     /**
-     * Create an array with standard elements for 'mode' (hidden, disabled, required)
+     * Create an array with standard elements for 'mode' (hidden, disabled, required, readonly)
      * and add 'form-element', 'value'.
      * 'Generic Element Update': add via API_ELEMENT_UPDATE 'label' and 'note'.
      * All collected data as array - will be later converted to JSON.
@@ -1113,11 +1113,13 @@ abstract class AbstractBuildForm {
      * @param string|array $value
      * @param array $formElement
      *
+     * @param int $optionIdx
+     * @param string $class
      * @return array
      * @throws \CodeException
      * @throws \UserFormException
      */
-    private function getFormElementForJson($htmlFormElementName, $value, array $formElement) {
+    private function getFormElementForJson($htmlFormElementName, $value, array $formElement, $optionIdx = 0, $optionClass = '') {
         $addClassRequired = array();
 
         $json = $this->getJsonFeMode($formElement[FE_MODE]); // disabled, required
@@ -1149,11 +1151,13 @@ abstract class AbstractBuildForm {
             $addClassRequired = HelperFormElement::getRequiredPositionClass($formElement[F_FE_REQUIRED_POSITION]);
         }
 
+        // Label
         if (isset($formElement[FE_LABEL])) {
             $key = $formElement[FE_HTML_ID] . HTML_ID_EXTENSION_LABEL;
             $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_CONTENT] = $this->buildLabel($htmlFormElementName, $formElement[FE_LABEL], $addClassRequired[FE_LABEL] ?? '');
         }
 
+        // Note
         if (isset($formElement[FE_NOTE])) {
             $key = $formElement[FE_HTML_ID] . HTML_ID_EXTENSION_NOTE;
             if (!empty($addClassRequired[FE_NOTE])) {
@@ -1162,6 +1166,7 @@ abstract class AbstractBuildForm {
             $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_CONTENT] = $formElement[FE_NOTE];
         }
 
+        // Input
         if (isset($formElement[FE_TYPE])) {
             $key = $formElement[FE_HTML_ID] . HTML_ID_EXTENSION_INPUT;
 
@@ -1174,15 +1179,26 @@ abstract class AbstractBuildForm {
             if (!empty($formElement[FE_MODE_SQL])) {
                 $class = is_numeric($formElement[FE_BS_INPUT_COLUMNS]) ? ('col-md-' . $formElement[FE_BS_INPUT_COLUMNS]) : $formElement[FE_BS_INPUT_COLUMNS];
 //                $class = 'col-md-' . $formElement[FE_BS_INPUT_COLUMNS] . ' ';
-                $class .= ($formElement[FE_MODE] == FE_MODE_HIDDEN) ? ' hidden' : '';
-                $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE]['class'] = $class;
                 $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE]['required'] = ($formElement[FE_MODE] == 'required');
                 $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE]['hidden'] = $statusHidden;
                 $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE]['readonly'] = $json['disabled'] ? 'readonly' : 'false';
 
+                // Checkbox: Copy attributes to every checkbox:
+                // #7974 - nicht klar ob das hier wirklich sinnvoll ist: checkboxen gehen nicht auf readonly bei dynamic update - auch mit diesem IF nicht.
+                if ($formElement[FE_TYPE] == FE_TYPE_CHECKBOX) {
+                    $optionsKey = $formElement[FE_HTML_ID] . '-' . $optionIdx;
+                    $json[API_ELEMENT_UPDATE][$optionsKey][API_ELEMENT_ATTRIBUTE] = $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE];
+                    $json[API_ELEMENT_UPDATE][$optionsKey][API_ELEMENT_ATTRIBUTE]['data-disabled'] = $json['disabled'] ? 'yes' : 'no';
+                    $json[API_ELEMENT_UPDATE][$optionsKey][API_ELEMENT_ATTRIBUTE]['class'] = $optionClass;
+                }
+
+                $class .= ($formElement[FE_MODE] == FE_MODE_HIDDEN) ? ' hidden' : '';
+                $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE]['class'] = $class;
+
                 if ($pattern !== null) {
                     $json[API_ELEMENT_UPDATE][$key][API_ELEMENT_ATTRIBUTE]['pattern'] = $pattern;
                 }
+
             }
 
             // #3647
@@ -2309,7 +2325,7 @@ abstract class AbstractBuildForm {
             }
 
             $html .= $htmlElement . $br;
-            $json[] = $this->getFormElementForJson($htmlFormElementNameUniq, $jsonValue, $formElement);
+            $json[] = $this->getFormElementForJson($htmlFormElementNameUniq, $jsonValue, $formElement, $ii, $checkboxClass);
 
         }