diff --git a/layouts/v7/modules/Settings/Roles/EditView.tpl b/layouts/v7/modules/Settings/Roles/EditView.tpl
index a0a1bba286641a776bb885c598fb94d996a873a4..917115bcb08a73015d162f03ef9dbb845792bee7 100644
--- a/layouts/v7/modules/Settings/Roles/EditView.tpl
+++ b/layouts/v7/modules/Settings/Roles/EditView.tpl
@@ -32,7 +32,7 @@
                     {assign var=RECORD_ID value=$RECORD_MODEL->getId()}
                     <input type="hidden" name="record" value="{$RECORD_ID}" />
                     <input type="hidden" name="mode" value="{$MODE}">
-                    <input type="hidden" name="profile_directly_related_to_role_id" value="{$PROFILE_ID}" />
+                    <input type="hidden" name="profile_directly_related_to_role_id" value="{(isset($PROFILE_ID)) ? $PROFILE_ID: ''}" />
                     {assign var=HAS_PARENT value="{if $RECORD_MODEL->getParent()}true{/if}"}
                     {if $HAS_PARENT}
                         <input type="hidden" name="parent_roleid" value="{$RECORD_MODEL->getParent()->getId()}">
diff --git a/modules/Settings/Profiles/models/Record.php b/modules/Settings/Profiles/models/Record.php
index b6ed8c1c44981ac511b40ecfccbcd9e0c224201c..9ddda530e5af40136eb4f3a79b59da316e05ead6 100644
--- a/modules/Settings/Profiles/models/Record.php
+++ b/modules/Settings/Profiles/models/Record.php
@@ -85,7 +85,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 	public function getGlobalPermissions() {
 		$db = PearDatabase::getInstance();
 
-		if(!$this->global_permissions) {
+		if(!isset($this->global_permissions)) {
 			$globalPermissions = array();
 			$globalPermissions[Settings_Profiles_Module_Model::GLOBAL_ACTION_VIEW] =
 				$globalPermissions[Settings_Profiles_Module_Model::GLOBAL_ACTION_EDIT] =
@@ -231,7 +231,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 			$field = Vtiger_Field_Model::getInstance($field, $profileTabModel);
 			$fieldId = $field->getId();
 		}
-		if(!$fieldId) {
+		if(!isset($fieldId)) {
 			return false;
 		}
 		$moduleFields = $profileTabModel->getFields();
@@ -242,7 +242,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 	public function getProfileTabPermissions() {
 		$db = PearDatabase::getInstance();
 
-		if(!$this->profile_tab_permissions) {
+		if(!isset($this->profile_tab_permissions)) {
 			$profile2TabPermissions = array();
 			if($this->getId()) {
 				$sql = 'SELECT * FROM vtiger_profile2tab WHERE profileid=?';
@@ -263,7 +263,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 	public function getProfileTabFieldPermissions($tabId) {
 		$db = PearDatabase::getInstance();
 
-		if(!$this->profile_tab_field_permissions[$tabId]) {
+		if(!isset($this->profile_tab_field_permissions[$tabId])) {
 			$profile2TabFieldPermissions = array();
 			if($this->getId()) {
 				$sql = 'SELECT * FROM vtiger_profile2field WHERE profileid=? AND tabid=?';
@@ -286,7 +286,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 	public function getProfileActionPermissions() {
 		$db = PearDatabase::getInstance();
 
-		if(!$this->profile_action_permissions) {
+		if(!isset($this->profile_action_permissions)) {
 			$profile2ActionPermissions = array();
 			if($this->getId()) {
 				$sql = 'SELECT * FROM vtiger_profile2standardpermissions WHERE profileid=?';
@@ -308,7 +308,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 	public function getProfileUtilityPermissions() {
 		$db = PearDatabase::getInstance();
 
-		if(!$this->profile_utility_permissions) {
+		if(!isset($this->profile_utility_permissions)) {
 			$profile2UtilityPermissions = array();
 			if($this->getId()) {
 				$sql = 'SELECT * FROM vtiger_profile2utility WHERE profileid=?';
@@ -328,7 +328,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 	}
 
 	public function getModulePermissions() {
-		if(!$this->module_permissions) {
+		if(!isset($this->module_permissions)) {
 			$allModules = Vtiger_Module_Model::getAll(array(0), Settings_Profiles_Module_Model::getNonVisibleModulesList());
 			$eventModule = Vtiger_Module_Model::getInstance('Events');
 			$allModules[$eventModule->getId()] = $eventModule;
@@ -495,12 +495,12 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 		$profileId = $this->getId();
 		$tabId = $moduleModel->getId();
 		$profileActionPermissions = $this->getProfileActionPermissions();
-		$profileActionPermissions = $profileActionPermissions[$tabId];
+		$profileActionPermissions = isset($profileActionPermissions[$tabId]) ? $profileActionPermissions[$tabId] : '';
 
 		$db->pquery('DELETE FROM vtiger_profile2tab WHERE profileid=? AND tabid=?', array($profileId, $tabId));
 
 		$actionPermissions = array();
-		$actionPermissions = $permissions['actions'];
+		$actionPermissions = isset($permissions['actions']) ? $permissions['actions'] : '';
 		$actionEnabled = false;
 		if($moduleModel->isEntityModule() || $moduleModel->isUtilityActionEnabled()) {
 			if($actionPermissions || $moduleModel->isUtilityActionEnabled()) {
@@ -509,11 +509,11 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 				$availableActionIds = array_keys($actionIdsList);
 
 				foreach ($availableActionIds as $actionId) {
-					if ($actionId === 0) {
+					if ($actionId === 0 && isset($actionPermissions[1]) && isset($actionPermissions[7])) {
 						//Save action permissions = Permissions of Create/Editview action
 						$actionPermissions[$actionId] = $actionPermissions[1] || $actionPermissions[7];
 					} else {
-						$actionPermissions[$actionId] = $actionPermissions[$actionId];
+						$actionPermissions[$actionId] = isset($actionPermissions[$actionId]) ? $actionPermissions[$actionId] : '';
 					}
 				}
                 
@@ -614,7 +614,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 
 		// Enable module permission in profile2tab table only if either its an extension module or the entity module has atleast 1 action enabled
 		if($actionEnabled) {
-			$isModulePermitted = $this->tranformInputPermissionValue($permissions['is_permitted']);
+			$isModulePermitted = isset($permissions['is_permitted']) ? $this->tranformInputPermissionValue($permissions['is_permitted']) :null;
 		} else {
 			$isModulePermitted = Settings_Profiles_Module_Model::NOT_PERMITTED_VALUE;
 		}
@@ -622,7 +622,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 		$params = array($profileId, $tabId, $isModulePermitted);
 		$db->pquery($sql, $params);
 
-		$fieldPermissions = $permissions['fields'];
+		$fieldPermissions = isset($permissions['fields']) ? $permissions['fields'] : '';
 		if(is_array($fieldPermissions)) {
 			foreach($fieldPermissions as $fieldId => $stateValue) {
 				$db->pquery('DELETE FROM vtiger_profile2field WHERE profileid=? AND tabid=? AND fieldid=?',
@@ -857,7 +857,7 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model {
 			$allowedFields = array("roleid","currency_id","reports_to_id");
 			foreach ($moduleFields as $fieldName => $fieldModel) {
 				if(in_array($fieldName,$allowedFields) || $fieldModel->getFieldDataType() == 'string' || $fieldModel->getFieldDataType() == 'email' || $fieldModel->getFieldDataType() == 'phone') {
-					if(!in_array($fieldModel->get('uitype'), $skipFields) && $fieldName != 'asterisk_extension'){
+					if(isset($userAccessbleFields[$fieldModel->get('id')]) && !in_array($fieldModel->get('uitype'), $skipFields) && $fieldName != 'asterisk_extension'){
 						$userAccessbleFields[$fieldModel->get('id')] .= $fieldName;
 					}
 				}
diff --git a/modules/Settings/Roles/models/Record.php b/modules/Settings/Roles/models/Record.php
index 8686106bc31fc2ef0aa5e821481e9adbf890be66..213b45f99cb01946de63d7a9b69a9e6016f10a7d 100644
--- a/modules/Settings/Roles/models/Record.php
+++ b/modules/Settings/Roles/models/Record.php
@@ -17,6 +17,9 @@ class Settings_Roles_Record_Model extends Settings_Vtiger_Record_Model {
 	 * Function to get the Id
 	 * @return <Number> Role Id
 	 */
+
+	public $children;
+
 	public function getId() {
 		return $this->get('roleid');
 	}
@@ -228,7 +231,7 @@ class Settings_Roles_Record_Model extends Settings_Vtiger_Record_Model {
 	 * @return <Array> Settings_Profiles_Record_Model instances
 	 */
 	public function getProfiles() {
-		if(!$this->profiles) {
+		if(!isset($this->profiles)) {
 			$this->profiles = Settings_Profiles_Record_Model::getAllByRole($this->getId());
 		}
 		return $this->profiles;
diff --git a/modules/Vtiger/models/Field.php b/modules/Vtiger/models/Field.php
index 05e49e664fd823c044dd860db1aeeb8c46deedc4..863bc0cc88e84a2a40b9d442b63ec262a8cadaa1 100644
--- a/modules/Vtiger/models/Field.php
+++ b/modules/Vtiger/models/Field.php
@@ -404,6 +404,7 @@ class Vtiger_Field_Model extends Vtiger_Field {
 	 * @return <Boolean> - true/false
 	 */
 	public function isMandatory() {
+		if(substr_count($this->get('typeofdata'),'~') == 0)  $this->set('typeofdata', $this->get('typeofdata') . '~');
 		list($type,$mandatory)= explode('~',$this->get('typeofdata'));
 		return $mandatory=='M' ? true:false;
 	}