diff --git a/modules/Calendar/actions/ActivityReminder.php b/modules/Calendar/actions/ActivityReminder.php
index 073aaa0efca070ee7379811c7a0a86f0c8fa64cd..3d51ed4dceaaae4f77892aa85edb56e8917c4be4 100644
--- a/modules/Calendar/actions/ActivityReminder.php
+++ b/modules/Calendar/actions/ActivityReminder.php
@@ -34,10 +34,6 @@ class Calendar_ActivityReminder_Action extends Vtiger_Action_Controller{
 		}
 		return $permissions;
 	}
-	
-	public function checkPermission(Vtiger_Request $request) {
-		return parent::checkPermission($request);
-	}
 
 	public function process(Vtiger_Request $request) {
 		$mode = $request->getMode();
diff --git a/modules/Calendar/actions/CalendarActions.php b/modules/Calendar/actions/CalendarActions.php
index 71a0bc953bffd57ece3e90277894801bb6819bfb..243759ce5c5a187dac56515483936ca4199bd4e0 100644
--- a/modules/Calendar/actions/CalendarActions.php
+++ b/modules/Calendar/actions/CalendarActions.php
@@ -28,11 +28,7 @@ class Calendar_CalendarActions_Action extends Vtiger_BasicAjax_Action {
 		}
 		return $permissions;
 	}
-	
-	public function checkPermission(Vtiger_Request $request) {
-		return parent::checkPermission($request);
-	}
-	
+    
 	public function process(Vtiger_Request $request) {
 		$mode = $request->getMode();
 		if (!empty($mode) && $this->isMethodExposed($mode)) {
diff --git a/modules/Calendar/actions/CalendarUserActions.php b/modules/Calendar/actions/CalendarUserActions.php
index 274692da74d227f2ec65124fc383f9475e62b921..b4b377bc8a3b9f7f04d037a99c789a8fe05cd4c2 100755
--- a/modules/Calendar/actions/CalendarUserActions.php
+++ b/modules/Calendar/actions/CalendarUserActions.php
@@ -20,32 +20,10 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 	
 	public function requiresPermission(Vtiger_Request $request){
 		$permissions = parent::requiresPermission($request);
-		$mode = $request->getMode();
-		if(!empty($mode)) {
-			switch ($mode) {
-				case 'deleteUserCalendar':
-					$permissions[] = array('module_parameter' => 'module', 'action' => 'EditView');
-					break;
-				case 'deleteCalendarView':
-					$permissions[] = array('module_parameter' => 'module', 'action' => 'EditView');
-					$permissions[] = array('module_parameter' => 'module', 'action' => 'Delete');
-					break;
-				case 'addUserCalendar':
-				case 'addCalendarView':
-					$permissions[] = array('module_parameter' => 'module', 'action' => 'EditView');
-					$permissions[] = array('module_parameter' => 'module', 'action' => 'CreateView');
-					break;
-				default:
-					break;
-			}
-		}
+        $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView');
 		return $permissions;
 	}
 	
-	public function checkPermission(Vtiger_Request $request) {
-		return parent::checkPermission($request);
-	}
-	
 	public function process(Vtiger_Request $request) {
 		$mode = $request->getMode();
 		if(!empty($mode) && $this->isMethodExposed($mode)) {
diff --git a/modules/Calendar/actions/SaveFollowupAjax.php b/modules/Calendar/actions/SaveFollowupAjax.php
index 59d321a794824bc05a5cba30c96e8f45fd231607..3e50747462c13c94e05ee7631519d40f5cba55c7 100755
--- a/modules/Calendar/actions/SaveFollowupAjax.php
+++ b/modules/Calendar/actions/SaveFollowupAjax.php
@@ -9,19 +9,12 @@
  *************************************************************************************/
 
 class Calendar_SaveFollowupAjax_Action extends Calendar_SaveAjax_Action {
-
+    
 	public function checkPermission(Vtiger_Request $request) {
 		$moduleName = $request->getModule();
 		$record = $request->get('record');
 
-		$actionName = ($record && $request->getMode() != 'createFollowupEvent') ? 'EditView' : 'CreateView';
-		if(!Users_Privileges_Model::isPermitted($moduleName, $actionName, $record)) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
-		}
-
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'Save', $record)) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
-		}
+		parent::checkPermission($request);
 
 		if ($record) {
 			$activityModulesList = array('Calendar', 'Events');
diff --git a/modules/CustomView/actions/Save.php b/modules/CustomView/actions/Save.php
index a28abced87c34c7cdc2228a7ba21d9051a658f99..6900d392f7f100c9aa9f3d40b5f5c5f7da12d17a 100644
--- a/modules/CustomView/actions/Save.php
+++ b/modules/CustomView/actions/Save.php
@@ -14,10 +14,6 @@ class CustomView_Save_Action extends Vtiger_Action_Controller {
 		$permissions[] = array('module_parameter' => 'source_module', 'action' => 'DetailView');
 		return $permissions;
 	}
-	
-	public function checkPermission(Vtiger_Request $request) {
-		return parent::checkPermission($request);
-	}
 
 	public function process(Vtiger_Request $request) {
         $sourceModuleName = $request->get('source_module');
diff --git a/modules/CustomView/models/Record.php b/modules/CustomView/models/Record.php
index c2964abdd6c923dd46704d802394c9850d4a86e6..2c2cf5b13acc608ccce9025a8e26763337a0b504 100644
--- a/modules/CustomView/models/Record.php
+++ b/modules/CustomView/models/Record.php
@@ -747,7 +747,7 @@ class CustomView_Record_Model extends Vtiger_Base_Model {
 	}
 
 	public function getToggleDefaultUrl() {
-		return 'index.php?module=CustomView&action=SaveAjax&record='.$this->getId();
+		return 'index.php?module=CustomView&source_module='.$this->getModule()->get('name').'&action=SaveAjax&record='.$this->getId();
 	}
 
 	/**
diff --git a/modules/CustomView/views/EditAjax.php b/modules/CustomView/views/EditAjax.php
index 0fb95813e114ff59414416936c227dba16b881cc..aac78c7be35d39719009444d3d0c14305248d466 100644
--- a/modules/CustomView/views/EditAjax.php
+++ b/modules/CustomView/views/EditAjax.php
@@ -15,9 +15,6 @@ Class CustomView_EditAjax_View extends Vtiger_IndexAjax_View {
 		$permissions[] = array('module_parameter' => 'source_module', 'action' => 'DetailView');
 		return $permissions;
 	}
-	public function checkPermission(Vtiger_Request $request) {
-		return parent::checkPermission($request);
-	}
 	
 	public function process(Vtiger_Request $request) {
 		$viewer = $this->getViewer ($request);
diff --git a/modules/Vtiger/actions/BasicAjax.php b/modules/Vtiger/actions/BasicAjax.php
index cdb63b727b605ac0558156fc2cbf44065028a057..7abf09a1455eb2b5fca0744f4dffbf10f29b3aee 100644
--- a/modules/Vtiger/actions/BasicAjax.php
+++ b/modules/Vtiger/actions/BasicAjax.php
@@ -10,39 +10,42 @@
 
 class Vtiger_BasicAjax_Action extends Vtiger_Action_Controller {
 
-	public function requiresPermission(\Vtiger_Request $request) {
-		$permissions = parent::requiresPermission($request);
-		$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView');
-		$permissions[] = array('module_parameter' => 'search_module', 'action' => 'DetailView');
-		if(!empty($request->get('parent_module'))){
-			$permissions[] = array('module_parameter' => 'parent_module', 'action' => 'DetailView');
-		}
-		return $permissions;
-	}
-	
-	public function process(Vtiger_Request $request) {
-		$searchValue = $request->get('search_value');
-		$searchModule = $request->get('search_module');
-
-		$parentRecordId = $request->get('parent_id');
-		$parentModuleName = $request->get('parent_module');
-		$relatedModule = $request->get('module');
-
-		$searchModuleModel = Vtiger_Module_Model::getInstance($searchModule);
-		$records = $searchModuleModel->searchRecord($searchValue, $parentRecordId, $parentModuleName, $relatedModule);
-
-		$baseRecordId = $request->get('base_record');
-		$result = array();
-		foreach($records as $moduleName=>$recordModels) {
-			foreach($recordModels as $recordModel) {
-				if ($recordModel->getId() != $baseRecordId) {
-					$result[] = array('label'=>decode_html($recordModel->getName()), 'value'=>decode_html($recordModel->getName()), 'id'=>$recordModel->getId());
-				}
-			}
-		}
-
-		$response = new Vtiger_Response();
-		$response->setResult($result);
-		$response->emit();
-	}
+    public function requiresPermission(\Vtiger_Request $request) {
+        $permissions = parent::requiresPermission($request);
+        $permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView');
+         if (!empty($request->get('search_module'))) {
+            $permissions[] = array('module_parameter' => 'search_module', 'action' => 'DetailView');
+         }
+        if (!empty($request->get('parent_module'))) {
+            $permissions[] = array('module_parameter' => 'parent_module', 'action' => 'DetailView');
+        }
+        return $permissions;
+    }
+
+    public function process(Vtiger_Request $request) {
+        $searchValue = $request->get('search_value');
+        $searchModule = $request->get('search_module');
+
+        $parentRecordId = $request->get('parent_id');
+        $parentModuleName = $request->get('parent_module');
+        $relatedModule = $request->get('module');
+
+        $searchModuleModel = Vtiger_Module_Model::getInstance($searchModule);
+        $records = $searchModuleModel->searchRecord($searchValue, $parentRecordId, $parentModuleName, $relatedModule);
+
+        $baseRecordId = $request->get('base_record');
+        $result = array();
+        foreach ($records as $moduleName => $recordModels) {
+            foreach ($recordModels as $recordModel) {
+                if ($recordModel->getId() != $baseRecordId) {
+                    $result[] = array('label' => decode_html($recordModel->getName()), 'value' => decode_html($recordModel->getName()), 'id' => $recordModel->getId());
+                }
+            }
+        }
+
+        $response = new Vtiger_Response();
+        $response->setResult($result);
+        $response->emit();
+    }
+
 }
diff --git a/modules/Vtiger/actions/ExportData.php b/modules/Vtiger/actions/ExportData.php
index 8bbea58fe471c0c00d8392f996b7956ad624cc40..2a8b3d6510a2f068e2ed2f64f977939ac4dc9cfd 100644
--- a/modules/Vtiger/actions/ExportData.php
+++ b/modules/Vtiger/actions/ExportData.php
@@ -14,7 +14,9 @@ class Vtiger_ExportData_Action extends Vtiger_Mass_Action {
 	public function requiresPermission(\Vtiger_Request $request) {
 		$permissions = parent::requiresPermission($request);
 		$permissions[] = array('module_parameter' => 'module', 'action' => 'Export');
-		$permissions[] = array('module_parameter' => 'source_module', 'action' => 'Export');
+        if (!empty($request->get('source_module'))) {
+            $permissions[] = array('module_parameter' => 'source_module', 'action' => 'Export');
+        }
 		return $permissions;
 	}
 
diff --git a/modules/Vtiger/actions/Save.php b/modules/Vtiger/actions/Save.php
index 36cf4c2fd320fdd851631b9deae67fc049cca0cd..e848585c3e135725c7fd9609ce75aea53cdc943a 100644
--- a/modules/Vtiger/actions/Save.php
+++ b/modules/Vtiger/actions/Save.php
@@ -27,6 +27,7 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller {
 			$recordParameter = 'record';
 		}
 		$actionName = ($record || $recordId) ? 'EditView' : 'CreateView';
+        $permissions[] = array('module_parameter' => $moduleParameter, 'action' => 'DetailView', 'record_parameter' => $recordParameter);
 		$permissions[] = array('module_parameter' => $moduleParameter, 'action' => $actionName, 'record_parameter' => $recordParameter);
 		return $permissions;
 	}
diff --git a/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php b/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php
index 3d5a429a48b04e7e79baab2670655f988a561849..f6d9f63a4b16854506820ae68a31f7143d6f4a1f 100644
--- a/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php
+++ b/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php
@@ -19,7 +19,7 @@ class RecycleBin_RecycleBinAjax_Action extends Vtiger_Mass_Action {
 	
 	function checkPermission(Vtiger_Request $request) {
         if($request->get('mode') == 'emptyRecycleBin') {
-            //Only admin user can empty the recycle bin, so this check is mabdatory
+            //Only admin user can empty the recycle bin, so this check is mandatory
             $currentUserModel = Users_Record_Model::getCurrentUserModel();
             if(!$currentUserModel->isAdminUser()) {
                 throw new AppException(vtranslate('LBL_PERMISSION_DENIED', 'Vtiger'));