diff --git a/modules/Campaigns/actions/DetailAjax.php b/modules/Campaigns/actions/DetailAjax.php
index 1edbfea49aa770aa128313282d433dfd5ba78295..31f8f17344c18577391db906d1ad804eaf9c908d 100644
--- a/modules/Campaigns/actions/DetailAjax.php
+++ b/modules/Campaigns/actions/DetailAjax.php
@@ -15,6 +15,23 @@ class Campaigns_DetailAjax_Action extends Vtiger_BasicAjax_Action {
 		$this->exposeMethod('getRecordsCount');
 	}
 
+	public function requiresPermission(Vtiger_Request $request){
+		$mode = $request->getMode();
+		if(!empty($mode)) {
+			switch ($mode) {
+				case 'getRecordsCount':
+					$permission[] = array('module_parameter' => 'relatedModule', 'action' => 'DetailView');
+					break;
+				default:
+					break;
+			}
+		}
+		return $permission;
+	}
+	
+	public function checkPermission(Vtiger_Request $request) {
+		parent::checkPermission($request);
+	}
 	public function process(Vtiger_Request $request) {
 		$mode = $request->get('mode');
 		if(!empty($mode)) {
diff --git a/modules/Campaigns/actions/RelationAjax.php b/modules/Campaigns/actions/RelationAjax.php
index f01f986b3e11765273d7e3ab801e2ba7de974f5b..3cfd4fa8d4ba54c066341dbe647562b70fa28703 100644
--- a/modules/Campaigns/actions/RelationAjax.php
+++ b/modules/Campaigns/actions/RelationAjax.php
@@ -16,6 +16,28 @@ class Campaigns_RelationAjax_Action extends Vtiger_RelationAjax_Action {
 		$this->exposeMethod('updateStatus');
 	}
 
+	public function requiresPermission(Vtiger_Request $request){
+		$mode = $request->getMode();
+		if(!empty($mode)) {
+			switch ($mode) {
+				case 'addRelationsFromRelatedModuleViewId':
+					$permission[] = array('module_parameter' => 'relatedModule', 'action' => 'DetailView');
+					break;
+				case 'updateStatus':
+					$permission[] = array('module_parameter' => 'relatedModule', 'action' => 'DetailView');
+					$permission[] = array('module_parameter' => 'module', 'action' => 'EditView');
+					break;
+				default:
+					break;
+			}
+		}
+		return $permission;
+	}
+	
+	public function checkPermission(Vtiger_Request $request) {
+		parent::checkPermission($request);
+	}
+	
 	/**
 	 * Function to add relations using related module viewid
 	 * @param Vtiger_Request $request
diff --git a/modules/Vtiger/actions/BasicAjax.php b/modules/Vtiger/actions/BasicAjax.php
index 6a51d2cf784d602a08e2d3a68db0e3d90812eaf0..f2de60fc37dbe3ebe77cc1a00c92c5d8ecb1e6f9 100644
--- a/modules/Vtiger/actions/BasicAjax.php
+++ b/modules/Vtiger/actions/BasicAjax.php
@@ -10,10 +10,6 @@
 
 class Vtiger_BasicAjax_Action extends Vtiger_Action_Controller {
 
-	function checkPermission(Vtiger_Request $request) {
-		return;
-	}
-
 	public function process(Vtiger_Request $request) {
 		$searchValue = $request->get('search_value');
 		$searchModule = $request->get('search_module');
diff --git a/modules/Vtiger/views/RelatedList.php b/modules/Vtiger/views/RelatedList.php
index 0e62c383f39743b645fbbb77f60c7eb436d0e3a2..a5a7552ec465994a691df913aecd102c57a316da 100644
--- a/modules/Vtiger/views/RelatedList.php
+++ b/modules/Vtiger/views/RelatedList.php
@@ -10,14 +10,14 @@
 
 class Vtiger_RelatedList_View extends Vtiger_Index_View {
 	
-	function checkPermission(Vtiger_Request $request) {
-		$relatedModuleName = $request->get('relatedModule');
-
-		$relatedModulePermission = Users_Privileges_Model::isPermitted($relatedModuleName, 'DetailView');
-		if(!$relatedModulePermission) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
-		}
-		return true;
+	public function requiresPermission(Vtiger_Request $request){
+		$permission[] = array('module_parameter' => 'relatedModule', 'action' => 'DetailView');
+		
+		return $permission;
+	}
+	
+	public function checkPermission(Vtiger_Request $request) {
+		parent::checkPermission($request);
 	}
 	
 	function process(Vtiger_Request $request) {