diff --git a/modules/Accounts/actions/CheckDuplicate.php b/modules/Accounts/actions/CheckDuplicate.php
deleted file mode 100644
index e236a78753495f3515094d7c21051dd5b6c5fe34..0000000000000000000000000000000000000000
--- a/modules/Accounts/actions/CheckDuplicate.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-/*+***********************************************************************************
- * The contents of this file are subject to the vtiger CRM Public License Version 1.0
- * ("License"); You may not use this file except in compliance with the License
- * The Original Code is:  vtiger CRM Open Source
- * The Initial Developer of the Original Code is vtiger.
- * Portions created by vtiger are Copyright (C) vtiger.
- * All Rights Reserved.
- *************************************************************************************/
-
-class Accounts_CheckDuplicate_Action extends Vtiger_Action_Controller {
-
-	function checkPermission(Vtiger_Request $request) {
-		return;
-	}
-
-	public function process(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-		$accountName = $request->get('accountname');
-		$record = $request->get('record');
-
-		if ($record) {
-			$recordModel = Vtiger_Record_Model::getInstanceById($record, $moduleName);
-		} else {
-			$recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
-		}
-
-		$recordModel->set('label', $accountName);
-
-		if ($accountName == $recordModel->get('accountname')) {
-			$status = false;
-		} else {
-            if($record) {
-                $recordModel->set('accountname', $accountName);
-            }
-			$status = $recordModel->checkDuplicate();
-		}
-		if (!$status) {
-			$result = array('success'=>false);
-		} else {
-			$result = array('success'=>true, 'message'=>vtranslate('LBL_DUPLICATES_EXIST', $moduleName));
-		}
-		$response = new Vtiger_Response();
-		$response->setResult($result);
-		$response->emit();
-	}
-}
diff --git a/modules/Accounts/actions/TransferOwnership.php b/modules/Accounts/actions/TransferOwnership.php
index 689877ac7072b3c21acdc09c16b0fc757838a6d5..cf959e1f51c2e47daddd04fcaac11df50d1dccd4 100644
--- a/modules/Accounts/actions/TransferOwnership.php
+++ b/modules/Accounts/actions/TransferOwnership.php
@@ -10,13 +10,25 @@
 
 class Accounts_TransferOwnership_Action extends Vtiger_Action_Controller {
 	
-	function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-		$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
-		$currentUserPriviligesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
-
-		if(!$currentUserPriviligesModel->hasModuleActionPermission($moduleModel->getId(), 'Save')) {
-			throw new AppException(vtranslate($moduleName, $moduleName).' '.vtranslate('LBL_NOT_ACCESSIBLE'));
+	public function requiredPermission(Vtiger_Request $request){
+		$permission = array();
+		//Basic permission for this action performed
+		array_push($permission, 'EditView');
+		return $permission;
+	}
+	  
+	public function checkPermission(Vtiger_Request $request) {
+		$requiredPermission = $this->requiredPermission($request);
+		$recordIds = $this->getRecordIds($request);
+		foreach ($requiredPermission as $key => $checkPermission) {
+			foreach ($recordIds as $key => $recordId) {
+				$moduleName = getSalesEntityType($recordId);
+				$permission  = Users_Privileges_Model::isPermitted($moduleName, $checkPermission);
+				if(!$permission){
+					$exceptionMessage = vtranslate($moduleName).' '. vtranslate('LBL_PERMISSION_DENIED');
+					throw new AppException($exceptionMessage);
+				}
+			}
 		}
 	}
 
@@ -24,25 +36,33 @@ class Accounts_TransferOwnership_Action extends Vtiger_Action_Controller {
 		$module = $request->getModule();
 		$moduleModel = Vtiger_Module_Model::getInstance($module);
 		$transferOwnerId = $request->get('transferOwnerId');
+		$recordIds = $this->getRecordIds($request);
+
+		$result = $moduleModel->transferRecordsOwnership($transferOwnerId, $recordIds);
+		$response = new Vtiger_Response();
+		if ($result === true) {
+			$response->setResult(true);
+		} else {
+			$response->setError($result);
+		}
+		$response->emit();
+	}
+	
+	public function getRecordIds(Vtiger_Request $request) {
+		$module = $request->getModule();
+		$moduleModel = Vtiger_Module_Model::getInstance($module);
 		$record = $request->get('record');
 		if(empty($record))
 			$recordIds = $this->getBaseModuleRecordIds($request);
 		else
 			$recordIds[] = $record;
+		
 		$relatedModuleRecordIds = $moduleModel->getRelatedModuleRecordIds($request, $recordIds);
 		foreach ($recordIds as $key => $recordId) {
 			array_push($relatedModuleRecordIds, $recordId);
 		}
 		array_merge($relatedModuleRecordIds, $recordIds);
-
-		$result = $moduleModel->transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds);
-		$response = new Vtiger_Response();
-		if ($result === true) {
-			$response->setResult(true);
-		} else {
-			$response->setError($result);
-		}
-		$response->emit();
+		return $relatedModuleRecordIds;
 	}
 	
 	protected function getBaseModuleRecordIds(Vtiger_Request $request) {
diff --git a/modules/Vtiger/models/Module.php b/modules/Vtiger/models/Module.php
index 529209f690557deb2ab5a8c5b0f3268f5c3d8e99..c4e5e2909bab1b754d29872a5110a373c3b557a2 100644
--- a/modules/Vtiger/models/Module.php
+++ b/modules/Vtiger/models/Module.php
@@ -1715,19 +1715,18 @@ class Vtiger_Module_Model extends Vtiger_Module {
 	public function transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds){
 		$moduleName = $this->getName();
 		foreach($relatedModuleRecordIds as $recordId) {
-			if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) {
-				try {
-					$recordModel = Vtiger_Record_Model::getInstanceById($recordId);
-					$recordModel->set('assigned_user_id', $transferOwnerId);
-					$recordModel->set('mode', 'edit');
-					// Transferring ownership with related module as Inventory modules, removes line item details.
-					// So setting $_REQUEST['ajxaction'] to DETAILVIEW
-					$_REQUEST['ajxaction'] = 'DETAILVIEW';
-					$recordModel->save();
-				} catch (DuplicateException $e) {
-					return $e->getDuplicationMessage();
-				} catch (Exception $e) {
-				}
+			$moduleName = getSalesEntityType($recordId);
+			try {
+				$recordModel = Vtiger_Record_Model::getInstanceById($recordId);
+				$recordModel->set('assigned_user_id', $transferOwnerId);
+				$recordModel->set('mode', 'edit');
+				// Transferring ownership with related module as Inventory modules, removes line item details.
+				// So setting $_REQUEST['ajxaction'] to DETAILVIEW
+				$_REQUEST['ajxaction'] = 'DETAILVIEW';
+				$recordModel->save();
+			} catch (DuplicateException $e) {
+				return $e->getDuplicationMessage();
+			} catch (Exception $e) {
 			}
 		}
 	}