diff --git a/include/QueryGenerator/QueryGenerator.php b/include/QueryGenerator/QueryGenerator.php
index 2e102314dbcb4192a96665d244ff913774df9f73..649312e74e04fbbced76bd544c26342447fd0885 100644
--- a/include/QueryGenerator/QueryGenerator.php
+++ b/include/QueryGenerator/QueryGenerator.php
@@ -19,6 +19,7 @@ require_once 'include/Webservices/RelatedModuleMeta.php';
  *
  * @author MAK
  */
+#[\AllowDynamicProperties]
 class QueryGenerator {
 	protected $module;
 	protected $customViewColumnList;
diff --git a/include/Webservices/WebserviceField.php b/include/Webservices/WebserviceField.php
index d1ca206d49111f80ab09e110d8fff6165b36e770..d7c4dc921a39d5521aac1129cd87f70fedf06e59 100644
--- a/include/Webservices/WebserviceField.php
+++ b/include/Webservices/WebserviceField.php
@@ -11,6 +11,7 @@
 require_once 'includes/runtime/Cache.php';
 require_once 'vtlib/Vtiger/Runtime.php';
 
+#[\AllowDynamicProperties]
 class WebserviceField{
 	private $fieldId;
 	private $uitype;
diff --git a/include/utils/VTCacheUtils.php b/include/utils/VTCacheUtils.php
index 7974ec1a85f311b1dce02ddba61e041a8da78525..579ee771d1e491789dc6ce2dc899dc5dfa0bfe12 100644
--- a/include/utils/VTCacheUtils.php
+++ b/include/utils/VTCacheUtils.php
@@ -129,6 +129,7 @@ class VTCacheUtils {
 
         // If modulefields are already loaded then no need of this again
         if(!$modulefields){
+            $modulefields = array();
             $fieldInfo = Vtiger_Cache::get('ModuleFields',$tabid);
             if($fieldInfo){
                 foreach($fieldInfo as $block => $blockFields){
@@ -461,4 +462,4 @@ class VTCacheUtils {
 	}
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/includes/runtime/BaseModel.php b/includes/runtime/BaseModel.php
index b4ba0845116e59da46b99de67e4b3f656710aeff..08f7b2e93407ed717aa82414df6293426cdba84a 100644
--- a/includes/runtime/BaseModel.php
+++ b/includes/runtime/BaseModel.php
@@ -85,7 +85,7 @@ class Vtiger_Base_Model {
 	 * @param String $key
 	 */
 	public function has($key) {
-		return array_key_exists($key, $this->valueMap);
+		return array_key_exists($key, (array)$this->valueMap); // valueMap can be array or TrackableObject
 	}
 
 	/**
diff --git a/includes/runtime/Controller.php b/includes/runtime/Controller.php
index a1cccd704e8bebee2792f5f0e5a2e43318b1c098..760ca75ff24ac9f0638d6beb8d92502c5c8625c2 100644
--- a/includes/runtime/Controller.php
+++ b/includes/runtime/Controller.php
@@ -11,6 +11,7 @@
 /**
  * Abstract Controller Class
  */
+#[\AllowDynamicProperties]
 abstract class Vtiger_Controller {
 
 	function __construct() { }
diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php
index da85eff7f38f6ce405b2d9598b47d145812776e4..0fc173362e6ff8ffaf96872de62d10c34920f6ff 100644
--- a/modules/CustomView/CustomView.php
+++ b/modules/CustomView/CustomView.php
@@ -433,6 +433,7 @@ class CustomView extends CRMEntity {
 			$sSQL .= " inner join vtiger_customview on vtiger_customview.cvid = vtiger_cvcolumnlist.cvid";
 			$sSQL .= " where vtiger_customview.cvid =? order by vtiger_cvcolumnlist.columnindex";
 			$result = $adb->pquery($sSQL, array($cvid));
+			$columnlist = array();
 			while ($columnrow = $adb->fetch_array($result)) {
 				$columnlist[$columnrow['columnindex']] = $columnrow['columnname'];
 			}