diff --git a/cron/SendReminder.service b/cron/SendReminder.service
index 46d6f8758e0ecd7c6ac11c720038753d5659da13..c922f898de085d61c3b4c145a94a188a222f7fc3 100644
--- a/cron/SendReminder.service
+++ b/cron/SendReminder.service
@@ -40,6 +40,7 @@ if(empty($from)) {
 
 global $adb;
 global $log;
+global $site_URL;
 $log =& LoggerManager::getLogger('SendReminder');
 $log->debug(" invoked SendReminder ");
 
@@ -49,7 +50,7 @@ if(empty($current_language))
 $app_strings = return_application_language($current_language);
 
 //modified query for recurring events -Jag
-$query="SELECT vtiger_crmentity.crmid, vtiger_crmentity.smownerid, vtiger_seactivityrel.crmid AS setype,vtiger_activity.*,vtiger_activity_reminder.reminder_time,
+$query="SELECT vtiger_crmentity.crmid, vtiger_crmentity.description, vtiger_crmentity.smownerid, vtiger_seactivityrel.crmid AS setype,vtiger_activity.*,vtiger_activity_reminder.reminder_time,
 		vtiger_activity_reminder.reminder_sent,vtiger_activity_reminder.recurringid FROM vtiger_activity 
 		INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_activity.activityid 
 		INNER JOIN vtiger_activity_reminder ON vtiger_activity.activityid=vtiger_activity_reminder.activity_id 
@@ -68,11 +69,16 @@ if($adb->num_rows($result) >= 1)
 	$reminderResult = $adb->pquery($reminderFrequencyQuery, array());
 	$reminderFrequency = $adb->query_result($reminderResult,0,'frequency');
 
+	// Retriving the reminder email content from emailtemplates table
+	$templateQuery='SELECT body FROM vtiger_emailtemplates WHERE subject=? AND systemtemplate=?';
+	$templateResult = $adb->pquery($templateQuery, array('Reminder', '1'));
+	$eventReminderBody=decode_html($adb->query_result($templateResult,0,'body'));
+
 	// Retriving the reminder email content from emailtemplates table
 	$templateQuery='SELECT body FROM vtiger_emailtemplates WHERE subject=? AND systemtemplate=?';
 	$templateResult = $adb->pquery($templateQuery, array('Activity Reminder', '1'));
 	$todoReminderBody=decode_html($adb->query_result($templateResult,0,'body'));
-	
+
 	while($result_set = $adb->fetch_array($result))
 	{
 		$date_start = $result_set['date_start'];
@@ -113,9 +119,9 @@ if($adb->num_rows($result) >= 1)
 		$differenceOfActivityTimeAndCurrentTime = ($activity_time - $curr_time);
 		if (($differenceOfActivityTimeAndCurrentTime > 0) && (($differenceOfActivityTimeAndCurrentTime <= $reminder_time) || ($differenceOfActivityTimeAndCurrentTime <= $reminderFrequency)))
 		{
-			$log->debug(" InSide  REMINDER");
-			$query_user="SELECT vtiger_users.email1,vtiger_salesmanactivityrel.smid FROM vtiger_salesmanactivityrel inner join vtiger_users on vtiger_users.id=vtiger_salesmanactivityrel.smid where vtiger_salesmanactivityrel.activityid =? and vtiger_users.deleted=0";
-			$user_result = $adb->pquery($query_user, array($activity_id));
+			$log->debug(" InSide REMINDER");
+			$query_user="SELECT vtiger_users.email1,vtiger_salesmanactivityrel.smid FROM vtiger_salesmanactivityrel inner join vtiger_users on vtiger_users.id=vtiger_salesmanactivityrel.smid WHERE vtiger_salesmanactivityrel.activityid =? AND vtiger_users.deleted=? AND vtiger_users.status=?";
+			$user_result = $adb->pquery($query_user, array($activity_id, 0, 'Active'));
 			$invitedUsersList = array();
 			if($adb->num_rows($user_result)>=1)
 			{
@@ -123,7 +129,7 @@ if($adb->num_rows($result) >= 1)
 				{
 					if($user_result_row['email1']!='' || $user_result_row['email1'] !=NULL)
 					{
-						$to_addr[] = $user_result_row['email1'];
+						$to_addr[$user_result_row['smid']] = $user_result_row['email1'];
 					}
 					$invitedUsersList[] = $user_result_row['smid'];
 				}
@@ -140,42 +146,55 @@ if($adb->num_rows($result) >= 1)
 			$dateTime = new DateTimeField($result_set['date_start'] .' '. $result_set['time_start']);
 			$dateTimeInOwnerFormat = $dateTime->getDisplayDateTimeValue($ownerFocus);
 
-			// Retriving the Subject and message from reminder table
-			$sql = "select active,notificationsubject,notificationbody from vtiger_notificationscheduler where schedulednotificationid=8";
-			$result_main = $adb->pquery($sql, array());
-
-			$subject = $app_strings['Reminder']. $result_set['activitytype'] . " @ $dateTimeInOwnerFormat ] ($ownerTimeZone)".
-						$adb->query_result($result_main,0,'notificationsubject');
-
-			//Set the mail body/contents here
-			$contents = nl2br($adb->query_result($result_main,0,'notificationbody')) ."\n\n ".
-							$app_strings['Subject']." : ".$activity_sub."\n ". $parent_content ." ".
-							$app_strings['Date & Time']." : $dateTimeInOwnerFormat ($ownerTimeZone)\n\n ".
-							$app_strings['Visit_Link']." <a href='".$site_URL."/index.php?view=Detail&module=Calendar&record=".$activity_id."'>".$app_strings['Click here']."</a>";
-
+			$enddateTime = new DateTimeField($result_set['due_date'] .' '. $result_set['time_end']);
+			$enddateTimeInOwnerFormat = $enddateTime->getDisplayDateTimeValue($ownerFocus);
+
+			//get related contact names
+			$cont_qry = "SELECT * FROM vtiger_cntactivityrel WHERE activityid=?";
+			$cont_res = $adb->pquery($cont_qry, array($activity_id));
+			$noofrows = $adb->num_rows($cont_res);
+			$cont_id = array();
+			if($noofrows > 0) {
+				for($i=0; $i<$noofrows; $i++) {
+					$cont_id[] = $adb->query_result($cont_res,$i,"contactid");
+				}
+			}
+			$cont_name = '';
+			foreach($cont_id as $key=>$id) {
+				if($id != '') {
+					$contact_name = Vtiger_Util_Helper::getRecordName($id);
+					$cont_name .= $contact_name .', ';
+				}
+			}
+			$cont_name = trim($cont_name,', ');
+			$result_set['subject'] = decode_html($result_set['subject']);
 			if($result_set['activitytype'] == "Task") {
 				$enddateInOwnerFormat = $enddateTime->getDisplayDate($ownerFocus);
-				$list = $todoReminderBody;
+				$list = $todoReminderBody;				
+				$list = str_replace('$calendar-subject$',$result_set['subject'],$list);
+				$list = str_replace('$calendar-description$',$result_set['description'],$list);
 				$list = str_replace('$calendar-date_start$', $dateTimeInOwnerFormat.' '.$ownerTimeZone, $list);
 				$list = str_replace('$calendar-due_date$', $enddateInOwnerFormat.' '.$ownerTimeZone, $list);
 
-				$contents = getMergedDescription($list, $activity_id, 'Calendar');
+				$contents = getMergedDescription($list, $activity_id, 'Calendar',true);
 				$subject = vtranslate('Activity Reminder', 'Calendar').': '.$result_set['subject'] . " @ $dateTimeInOwnerFormat";
 			} else {
 				$list = $eventReminderBody;
+				$list = str_replace('$events-subject$',decode_html($result_set['subject']),$list);
+				$list = str_replace('$events-description$',decode_html($result_set['description']),$list);
 				$list = str_replace('$events-date_start$', $dateTimeInOwnerFormat.' '.$ownerTimeZone, $list);
 				$list = str_replace('$events-due_date$', $enddateTimeInOwnerFormat.' '.$ownerTimeZone, $list);
 				$list = str_replace('$events-contactid$', $cont_name, $list);
 
-				$contents = getMergedDescription($list, $activity_id, 'Events');
+				$contents = getMergedDescription($list, $activity_id, 'Events',true);
 				$subject = vtranslate('Reminder', 'Calendar').': '.$result_set['subject'] . " @ $dateTimeInOwnerFormat";
 			}
-			
+			$contents = $contents."<br/> ".vtranslate('LBL_CLICK_HERE_TO_VIEW', 'Calendar')."&nbsp;<a href=$site_URL/$recordDetailViewLink>".vtranslate('LBL_RECORD', 'Calendar')."</a>";
 			if(count($to_addr) >=1)
 			{
 				send_email($to_addr,$from,$subject,$contents,$mail_server,$mail_server_username,$mail_server_password);
-				$upd_query = "UPDATE vtiger_activity_reminder SET reminder_sent=1 where activity_id=?";
-				$upd_params = array($activity_id);
+				$upd_query = "UPDATE vtiger_activity_reminder SET reminder_sent = ?";
+				$upd_params = array(1);
 
 				if($recur_id!=0)
 				{
@@ -212,8 +231,8 @@ function send_email($to,$from,$subject,$contents,$mail_server,$mail_server_usern
 	$mail = new PHPMailer();
 
 
-	$mail->Subject = $subject;
-	$mail->Body    = nl2br($contents);//"This is the HTML message body <b>in bold!</b>";
+	$mail->Subject	= $subject;
+	$mail->Body		= nl2br($contents);//"This is the HTML message body <b>in bold!</b>";
 
 	$mail->IsSMTP();// set mailer to use SMTP
 	$mailserverresult=$adb->pquery("select * from vtiger_systems where server_type='email'", array());
@@ -267,7 +286,7 @@ function send_email($to,$from,$subject,$contents,$mail_server,$mail_server_usern
 function getParentInfo($value)
 {
 	global $adb;
- 	$parent_module = getSalesEntityType($value);
+	$parent_module = getSalesEntityType($value);
 	if($parent_module == "Leads")
 	{
 		$sql = "select * from vtiger_leaddetails where leadid=?";
@@ -279,7 +298,7 @@ function getParentInfo($value)
 	}
 	elseif($parent_module == "Accounts")
 	{
-		$sql = "select * from  vtiger_account where accountid=?";
+		$sql = "select * from vtiger_account where accountid=?";
 		$result = $adb->pquery($sql, array($value));
 		$account_name = $adb->query_result($result,0,"accountname");
 
@@ -287,12 +306,12 @@ function getParentInfo($value)
 	}
 	elseif($parent_module == "Potentials")
 	{
-		$sql = "select * from  vtiger_potential where potentialid=?";
+		$sql = "select * from vtiger_potential where potentialid=?";
 		$result = $adb->pquery($sql, array($value));
 		$potentialname = $adb->query_result($result,0,"potentialname");
 
 		$parent_name =$potentialname;
 	}
-	  return $parent_module ." : ".$parent_name;
+	return $parent_module ." : ".$parent_name;
 }
-?>
\ No newline at end of file
+?>
diff --git a/languages/en_us/Campaigns.php b/languages/en_us/Campaigns.php
index 83304adc1d6b7d522265f1b10c1587e953aa0138..ecd531f357d336479ec9e6c53f1583084e8afba2 100644
--- a/languages/en_us/Campaigns.php
+++ b/languages/en_us/Campaigns.php
@@ -64,4 +64,8 @@ $languageStrings = array(
 	'Contacted - Successful' => 'Contacted - Successful',
 	'Contacted - Unsuccessful' => 'Contacted - Unsuccessful',
 	'Contacted - Never Contact Again' => 'Contacted - Never Contact Again',
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s from the selected list will be appended with the existing list.',
 );
\ No newline at end of file
diff --git a/layouts/v7/modules/Campaigns/resources/RelatedList.js b/layouts/v7/modules/Campaigns/resources/RelatedList.js
index c282c62ca68c3032e1f2f888cb5830078829e241..677ef9307055691b9b833611d75d2bf51b13496f 100644
--- a/layouts/v7/modules/Campaigns/resources/RelatedList.js
+++ b/layouts/v7/modules/Campaigns/resources/RelatedList.js
@@ -8,311 +8,367 @@
  *************************************************************************************/
 
 Vtiger_RelatedList_Js("Campaigns_RelatedList_Js",{
-    
-    triggerSendEmail : function(massActionUrl, module){
-        var detailInstance = Vtiger_Detail_Js.getInstance();
-        var searchParams = JSON.stringify(detailInstance.getRelatedListSearchParams());
-        var data = app.convertUrlToDataParams(massActionUrl);
-        var selectedIds = jQuery('#selectedIds').data('selected-ids');
-        var excludedIds = jQuery('#excludedIds').data('excluded-ids');
-        if(selectedIds == "") {
-            app.helper.showAlertBox({message:app.vtranslate('JS_PLEASE_SELECT_ONE_RECORD')});
-            return false;
-        }
-        var params = {
-            'search_params' : searchParams,
-            'nolistcache' : (jQuery('#noFilterCache').val() == 1) ? 1 : 0,
-            'selected_ids' : selectedIds,
-            'excluded_ids' : excludedIds,
-            'sourceModule' : app.getModuleName(),
-            'sourceRecord' : jQuery('#recordId').val()
-        };
-        jQuery.extend(params, data);
-        Vtiger_Index_Js.showComposeEmailPopup(params);
-    }
-    
+
+	triggerSendEmail : function(massActionUrl, module){
+		var detailInstance = Vtiger_Detail_Js.getInstance();
+		var searchParams = JSON.stringify(detailInstance.getRelatedListSearchParams());
+		var data = app.convertUrlToDataParams(massActionUrl);
+		var selectedIds = jQuery('#selectedIds').data('selected-ids');
+		var excludedIds = jQuery('#excludedIds').data('excluded-ids');
+		if(selectedIds == "") {
+			app.helper.showAlertBox({message:app.vtranslate('JS_PLEASE_SELECT_ONE_RECORD')});
+			return false;
+		}
+		var params = {
+			'search_params' : searchParams,
+			'nolistcache' : (jQuery('#noFilterCache').val() == 1) ? 1 : 0,
+			'selected_ids' : selectedIds,
+			'excluded_ids' : excludedIds,
+			'sourceModule' : app.getModuleName(),
+			'sourceRecord' : jQuery('#recordId').val()
+		};
+		jQuery.extend(params, data);
+		Vtiger_Index_Js.showComposeEmailPopup(params);
+	}
+
 },{
-    
-    loadRelatedList : function(params) {
-        var aDeferred = jQuery.Deferred();
-        var self = this;
-        self._super(params).then(function(data) {
-            self.registerEvents();
-            aDeferred.resolve(data);
-        });
-        return aDeferred.promise();
-    },
-    
-    changeCustomFilterElementView : function() {
-        var self = this;
-        var filterSelectElement = self.relatedContentContainer.find('#recordsFilter');
-        if(filterSelectElement.length > 0){
-            vtUtils.showSelect2ElementView(filterSelectElement);
-        }
-    },
-    
-    registerChangeCustomFilterEvent : function() {
-        var self = this;
-        var filterSelectElement = this.relatedContentContainer.find('#recordsFilter');
-        filterSelectElement.change(function(e){
-            var element = jQuery(e.currentTarget);
-            var cvId = element.find('option:selected').data('id');
-            var params = {
-                'sourceRecord' : self.parentRecordId,
-                'relatedModule' :self.relatedModulename,
-                'viewId' : cvId,
-                'module' : app.getModuleName(),
-                'action': "RelationAjax",
-                'mode' : 'addRelationsFromRelatedModuleViewId'
-            };
-            app.helper.showProgress();
-            app.request.post({"data" : params}).then(
-                function(responseData) {
-                    app.helper.hideProgress();
-                    if(responseData != null){
-                        app.helper.showErrorNotification({"message":  app.vtranslate('JS_NO_RECORDS_RELATED_TO_THIS_FILTER')});
-                    } else {
-                        self.loadRelatedList().then(function() {
-                            self.triggerRelationAdditionalActions();
-                        });
-                    }
-                },
-                function(textStatus, errorThrown){}
-            );
-        });
-    },
+	selectedRecordIds : false,
+	excludedRecordIds : false,
+
+	loadRelatedList : function(params) {
+		var aDeferred = jQuery.Deferred();
+		var self = this;
+		self._super(params).then(function(data) {
+			self.registerEvents();
+			aDeferred.resolve(data);
+		});
+		return aDeferred.promise();
+	},
+
+	changeCustomFilterElementView : function() {
+		var self = this;
+		var filterSelectElement = self.relatedContentContainer.find('#recordsFilter');
+		if(filterSelectElement.length > 0){
+			vtUtils.showSelect2ElementView(filterSelectElement);
+		}
+	},
+
+	registerChangeCustomFilterEvent : function() {
+		var self = this;
+		var filterSelectElement = this.relatedContentContainer.find('#recordsFilter');
+		filterSelectElement.change(function(e){
+			var element = jQuery(e.currentTarget);
+			if (jQuery('.bootbox-confirm .in').length == 0) {
+				var message = app.vtranslate('JS_APPENDED_TO_EXISTING_LIST',self.relatedModulename)+'<br><br>'+app.vtranslate('JS_WISH_TO_PROCEED');
+				app.helper.showConfirmationBox({'message':message}).then(function(e){
+					var cvId = element.find('option:selected').data('id');
+					var params = {
+						'sourceRecord' : self.parentRecordId,
+						'relatedModule' :self.relatedModulename,
+						'viewId' : cvId,
+						'module' : app.getModuleName(),
+						'action': "RelationAjax",
+						'mode' : 'addRelationsFromRelatedModuleViewId'
+					};
+					app.helper.showProgress();
+					app.request.post({"data" : params}).then(
+						function(responseData) {
+							app.helper.hideProgress();
+							if(responseData != null){
+								app.helper.showErrorNotification({"message": app.vtranslate('JS_NO_RECORDS_RELATED_TO_THIS_FILTER')});
+							} else {
+								self.loadRelatedList().then(function() {
+									self.triggerRelationAdditionalActions();
+								});
+							}
+						},
+						function(textStatus, errorThrown){}
+					);
+				});
+			}
+		});
+	},
+
+	registerEventToEditRelatedStatus : function() {
+		var self = this;
+		var statusElement = self.relatedContentContainer.find('.currentStatus');
+		statusElement.on('click',function(e) {
+			e.stopImmediatePropagation();
+			var element = jQuery(e.currentTarget);
+			element.addClass('open');
+		});
+		var statusDropdown = statusElement.find('.dropdown-menu');
+		statusDropdown.on('click','a',function(e) {
+			e.stopImmediatePropagation();
+			var element = jQuery(e.currentTarget);
+			var liContainer = element.closest('li');
+			var currentStatus = element.closest('.currentStatus');
+			var selectedStatusId = liContainer.attr('id');
+			var selectedStatusValue = liContainer.data('status');
+			var relatedRecordId = element.closest('tr').data('id');
+			var params = {
+				'relatedModule' : self.relatedModulename,
+				'relatedRecord' : relatedRecordId,
+				'status' : selectedStatusId,
+				'module' : app.getModuleName(),
+				'action' : 'RelationAjax',
+				'sourceRecord' : self.parentRecordId,
+				'mode' : 'updateStatus'
+			}
+			app.helper.showProgress();
+			app.request.post({"data" : params}).then(function(error, responseData) {
+				if(responseData) {
+					app.helper.hideProgress();
+					currentStatus.find('.statusValue').text(selectedStatusValue);
+					currentStatus.removeClass('open');
+				}
+			},
+			function(textStatus, errorThrown) {}
+			);
+		});
+	},
+
+	writeSelectedIds : function(selectedIds) {
+		var self = this;
+		var element = self.relatedContentContainer.find('#selectedIds');
+		element.data('selected-ids', selectedIds);
+		self.selectedRecordIds = selectedIds;
+	},
+
+	writeExcludedIds : function(excludedIds) {
+		var self = this;
+		var element = self.relatedContentContainer.find('#excludedIds');
+		element.data('excluded-ids', excludedIds);
+		self.excludedRecordIds = excludedIds;
+	},
+
+	readSelectedIds : function(decode) {
+		var self = this;
+		var element = self.relatedContentContainer.find('#selectedIds');
+		var selectedIds = element.data('selected-ids');
+		if(selectedIds == "") {
+			selectedIds = new Array();
+			self.writeSelectedIds(selectedIds);
+		}
+		if(decode && typeof selectedIds == "object") {
+			selectedIds = JSON.stringify(selectedIds);
+		}
+		return selectedIds;
+	},
+
+	reladExcludedIds : function(decode) {
+		var self = this;
+		var element = self.relatedContentContainer.find('#excludedIds');
+		var excludedIds = element.data('excluded-ids');
+		if(excludedIds == "") {
+			excludedIds = new Array();
+			self.writeExcludedIds(excludedIds);
+		}
+		if(decode && typeof excludedIds == "object") {
+			excludedIds = JSON.stringify(excludedIds);
+		}
+		return excludedIds;
+	},
+	registerPostSelectionRelatedListActions : function(){
+		var selectedIds = this.readSelectedIds(false);
+		var sendEmailButton = this.relatedContentContainer.find('.relatedHeader').find('.sendEmail');
+		if(selectedIds.length > 0){
+			sendEmailButton.removeAttr('disabled');
+		}else if(selectedIds.length == 0){
+			sendEmailButton.attr('disabled', "disabled");
+		}
+	},
+
+	markSelectedIdsCheckboxes: function (params) {
+		var self = this;
+		var selectedIds = params.selected;
+		var excludedIds = params.excluded;
+		var relatedListContainer = self.relatedContentContainer;
+		relatedListContainer.find('#selectedIds').data('selected-ids', selectedIds);
+		relatedListContainer.find('#excludedIds').data('excluded-ids', excludedIds);
+		if ((selectedIds == '' && excludedIds == '')) {
+			return;
+		}
+		relatedListContainer.find('.listViewEntriesCheckBox').each(function (i, ele) {
+			var currentRow = jQuery(ele).closest('tr');
+			var recordId = currentRow.data('id').toString();
+			if (jQuery.inArray(recordId, excludedIds) == '-1' && (jQuery.inArray(recordId, selectedIds) != '-1' || selectedIds == 'all')) {
+				jQuery(ele).prop('checked', true);
+				currentRow.addClass('listviewhovercolor');
+			}
+		});
+		self.selectMainCheck();
+	},
+
+	selectMainCheck: function () {
+		var self = this;
+		var relatedListContainer = self.relatedContentContainer;
+		var mainCheckBox = relatedListContainer.find('#listViewEntriesMainCheckBox');
+		if (relatedListContainer.find('.listViewEntriesCheckBox').not(":checked").length == 0) {
+			mainCheckBox.prop("checked", true);
+		} else {
+			mainCheckBox.prop("checked", false);
+		}
+	},
+
+	registerCheckboxClickEvent : function() {
+		var self = this;
+		self.relatedContentContainer.off('click','.listViewEntriesCheckBox').on('click','.listViewEntriesCheckBox',function(e) {
+			var element = jQuery(e.currentTarget);
+			var recordId = element.val();
+			var selectedIds = self.readSelectedIds(false);
+			var excludedIds = self.reladExcludedIds(false);
+			if(element.is(":checked")) {
+				if(selectedIds != "all") {
+					selectedIds.push(recordId);
+				} else {
+					excludedIds.splice($.inArray(recordId, excludedIds), 1);
+				}
+				element.closest('tr').addClass('listviewhovercolor');
+				self.registerPostSelectionRelatedListActions();
+			} else {
+				if(selectedIds != "all") {
+					selectedIds.splice($.inArray(recordId, selectedIds), 1);
+				} else {
+					excludedIds.push(recordId);
+				}
+				element.closest('tr').removeClass('listviewhovercolor');
+				self.registerPostSelectionRelatedListActions();
+			}
+			self.writeSelectedIds(selectedIds);
+			self.writeExcludedIds(excludedIds);
+			self.selectMainCheck();
+		});
+	},
+
+	registerMainCheckboxClickEvent : function() {
+		var self = this;
+		self.relatedContentContainer.off('click', '#listViewEntriesMainCheckBox').on('click', '#listViewEntriesMainCheckBox', function (e) {
+			var element = jQuery(e.currentTarget);
+			if(element.is(":checked")) {
+				var selectedIds = self.readSelectedIds(false);
+				var excludedIds = self.reladExcludedIds(false);
+				self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
+					var recordId = jQuery(ele).val();
+					if(selectedIds != "all") {
+						selectedIds.push(recordId);
+					} else {
+						excludedIds.splice($.inArray(recordId, excludedIds), 1);
+					}
+					jQuery(ele).prop('checked', true).closest('tr').addClass('listviewhovercolor');;
+				});
+				self.writeSelectedIds(selectedIds);
+				self.writeExcludedIds(excludedIds);
+				self.getRecordsCount().then(function(count){
+					self.relatedContentContainer.find('#totalRecordsCount').text(count);
+					self.relatedContentContainer.find('#selectAllMsgDiv').closest('div.messageContainer').removeClass('hide');
+				});
+				self.registerPostSelectionRelatedListActions();
+			} else {
+				var selectedIds = self.readSelectedIds(false);
+				var excludedIds = self.reladExcludedIds(false);
+				self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
+					var recordId = jQuery(ele).val();
+					if(selectedIds != "all") {
+						selectedIds.splice($.inArray(recordId, selectedIds), 1);
+					} else {
+						excludedIds.push(recordId);
+					}
+					jQuery(ele).prop('checked', false).closest('tr').removeClass('listviewhovercolor');;
+				});
+				self.writeSelectedIds(selectedIds);
+				self.writeExcludedIds(excludedIds);
+				self.relatedContentContainer.find('#selectAllMsgDiv').closest('div.messageContainer').addClass('hide');
+				self.registerPostSelectionRelatedListActions();
+			}
+		});
+	},
+
+	getRecordsCount : function() {
+		var aDeferred = jQuery.Deferred();
+		var self = this;
+		var recordCountEle = self.relatedContentContainer.find('#recordsCount');
+		var recordsCount = recordCountEle.val();
+		if(recordsCount != "") {
+			aDeferred.resolve(recordsCount);
+		} else {
+			var params = {
+				'module' : app.getModuleName(),
+				'action' : 'DetailAjax',
+				'mode' : 'getRecordsCount',
+				'relatedModule' : self.relatedModulename,
+				'record' : self.parentRecordId,
+				'tab_label' : self.relatedContentContainer.find('#tab_label').val()
+			};
+			app.helper.showProgress();
+			app.request.post({"data" : params}).then(function(error, responseData) {
+				app.helper.hideProgress();
+				var count = responseData.count;
+				recordCountEle.val(count);
+				aDeferred.resolve(count);
+			});
+		}
+		return aDeferred.promise();
+	},
+
+	registerSelectAllClickEvent : function() {
+		var self = this;
+		var selectAllContainer = self.relatedContentContainer.find('#selectAllMsgDiv');
+		selectAllContainer.click(function(){
+			self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
+				jQuery(ele).attr('checked', true);
+			});
+			self.relatedContentContainer.find('#listViewEntriesMainCheckBox').attr('checked', true);
+			self.writeSelectedIds("all");
+			selectAllContainer.closest('div.messageContainer').addClass('hide');
+			self.relatedContentContainer.find('#deSelectAllMsgDiv').closest('div.messageContainer').removeClass('hide');
+		});
+	},
 
-    registerEventToEditRelatedStatus : function() {
-        var self = this;
-        var statusElement = self.relatedContentContainer.find('.currentStatus');
-        statusElement.on('click',function(e) {
-            e.stopImmediatePropagation();
-            var element = jQuery(e.currentTarget);
-            element.addClass('open');
-        });
-        var statusDropdown = statusElement.find('.dropdown-menu');
-        statusDropdown.on('click','a',function(e) {
-            e.stopImmediatePropagation();
-            var element = jQuery(e.currentTarget);
-            var liContainer = element.closest('li');
-            var currentStatus = element.closest('.currentStatus');
-            var selectedStatusId = liContainer.attr('id');
-            var selectedStatusValue = liContainer.data('status');
-            var relatedRecordId = element.closest('tr').data('id');
-            var params = {
-                'relatedModule' : self.relatedModulename,
-                'relatedRecord' : relatedRecordId,
-                'status' : selectedStatusId,
-                'module' : app.getModuleName(),
-                'action' : 'RelationAjax',
-                'sourceRecord' : self.parentRecordId,
-                'mode' : 'updateStatus'
-            }
-            app.helper.showProgress();
-            app.request.post({"data" : params}).then(function(error, responseData) {
-                if(responseData) {
-                    app.helper.hideProgress();
-                    currentStatus.find('.statusValue').text(selectedStatusValue);
-                    currentStatus.removeClass('open');
-                }
-            },
-            function(textStatus, errorThrown) {}
-            );
-        });
-    },
-    
-    writeSelectedIds : function(selectedIds) {
-        var self = this;
-        var element = self.relatedContentContainer.find('#selectedIds');
-        element.data('selected-ids', selectedIds);
-    },
-    
-    writeExcludedIds : function(excludedIds) {
-        var self = this;
-        var element = self.relatedContentContainer.find('#excludedIds');
-        element.data('excluded-ids', excludedIds);
-    },
-    
-    readSelectedIds : function(decode) {
-        var self = this;
-        var element = self.relatedContentContainer.find('#selectedIds');
-        var selectedIds = element.data('selected-ids');
-        if(selectedIds == "") {
-            selectedIds = new Array();
-            self.writeSelectedIds(selectedIds);
-        }
-        if(decode && typeof selectedIds == "object") {
-            selectedIds = JSON.stringify(selectedIds);
-        }
-        return selectedIds;
-    },
-    
-    reladExcludedIds : function(decode) {
-        var self = this;
-        var element = self.relatedContentContainer.find('#excludedIds');
-        var excludedIds = element.data('excluded-ids');
-        if(excludedIds == "") {
-            excludedIds = new Array();
-            self.writeExcludedIds(excludedIds);
-        }
-        if(decode && typeof excludedIds == "object") {
-            excludedIds = JSON.stringify(excludedIds);
-        }
-        return excludedIds;
-    },
-    registerPostSelectionRelatedListActions : function(){
-        var selectedIds = this.readSelectedIds(false);
-        var sendEmailButton = this.relatedContentContainer.find('.relatedHeader').find('.sendEmail');
-        if(selectedIds.length > 0){
-            sendEmailButton.removeAttr('disabled');
-        }else if(selectedIds.length == 0){
-            sendEmailButton.attr('disabled', "disabled");
-        }
-    },
-    
-    registerCheckboxClickEvent : function() {
-        var self = this;
-        self.relatedContentContainer.find('.listViewEntriesCheckBox').click(function(e) {
-            var element = jQuery(e.currentTarget);
-            var recordId = element.val();
-            var selectedIds = self.readSelectedIds(false);
-            var excludedIds = self.reladExcludedIds(false);
-            if(element.is(":checked")) {
-                if(selectedIds != "all") {
-                    selectedIds.push(recordId);
-                } else {
-                    excludedIds.splice($.inArray(recordId, excludedIds), 1);
-                }
-                self.registerPostSelectionRelatedListActions();
-            } else {
-                if(selectedIds != "all") {
-                    selectedIds.splice($.inArray(recordId, selectedIds), 1);
-                } else {
-                    excludedIds.push(recordId);
-                }
-                self.registerPostSelectionRelatedListActions();
-            }
-            self.writeSelectedIds(selectedIds);
-            self.writeExcludedIds(excludedIds);
-        });
-    },
-    
-    registerMainCheckboxClickEvent : function() {
-        var self = this;
-        self.relatedContentContainer.on('click', '#listViewEntriesMainCheckBox', function(e){
-            var element = jQuery(e.currentTarget);
-            if(element.is(":checked")) {
-                var selectedIds = self.readSelectedIds(false);
-                var excludedIds = self.reladExcludedIds(false);
-                self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
-                    var recordId = jQuery(ele).val();
-                    if(selectedIds != "all") {
-                        selectedIds.push(recordId);
-                    } else {
-                        excludedIds.splice($.inArray(recordId, excludedIds), 1);
-                    }
-                    jQuery(ele).prop('checked', true);
-                });
-                self.writeSelectedIds(selectedIds);
-                self.writeExcludedIds(excludedIds);
-                self.getRecordsCount().then(function(count){
-                    self.relatedContentContainer.find('#totalRecordsCount').text(count);
-                    self.relatedContentContainer.find('#selectAllMsgDiv').closest('div.messageContainer').removeClass('hide');
-                });
-                self.registerPostSelectionRelatedListActions();
-            } else {
-                var selectedIds = self.readSelectedIds(false);
-                var excludedIds = self.reladExcludedIds(false);
-                self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
-                    var recordId = jQuery(ele).val();
-                    if(selectedIds != "all") {
-                        selectedIds.splice($.inArray(recordId, selectedIds), 1);
-                    } else {
-                        excludedIds.push(recordId);
-                    }
-                    jQuery(ele).prop('checked', false);
-                });
-                self.writeSelectedIds(selectedIds);
-                self.writeExcludedIds(excludedIds);
-                self.relatedContentContainer.find('#selectAllMsgDiv').closest('div.messageContainer').addClass('hide');
-                self.registerPostSelectionRelatedListActions();
-            }
-        });
-    },
-    
-    getRecordsCount : function() {
-        var aDeferred = jQuery.Deferred();
-        var self = this;
-        var recordCountEle = self.relatedContentContainer.find('#recordsCount');
-        var recordsCount = recordCountEle.val();
-        if(recordsCount != "") {
-            aDeferred.resolve(recordsCount);
-        } else {
-            var params = {
-                'module' : app.getModuleName(),
-                'action' : 'DetailAjax',
-                'mode' : 'getRecordsCount',
-                'relatedModule' : self.relatedModulename,
-                'record' : self.parentRecordId,
-                'tab_label' : self.relatedContentContainer.find('#tab_label').val()
-            };
-            app.helper.showProgress();
-            app.request.post({"data" : params}).then(function(error, responseData) {
-                app.helper.hideProgress();
-                var count = responseData.count;
-                recordCountEle.val(count);
-                aDeferred.resolve(count);
-            });
-        }
-        return aDeferred.promise();
-    },
-    
-    registerSelectAllClickEvent : function() {
-        var self = this;
-        var selectAllContainer = self.relatedContentContainer.find('#selectAllMsgDiv');
-        selectAllContainer.click(function(){
-            self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
-                jQuery(ele).attr('checked', true);
-            });
-            self.relatedContentContainer.find('#listViewEntriesMainCheckBox').attr('checked', true);
-            self.writeSelectedIds("all");
-            selectAllContainer.closest('div.messageContainer').addClass('hide');
-            self.relatedContentContainer.find('#deSelectAllMsgDiv').closest('div.messageContainer').removeClass('hide');
-        });
-    },
-    
-    registerDeselectAllClickEvent : function() {
-        var self = this;
-        var deselectAllContainer = self.relatedContentContainer.find('#deSelectAllMsgDiv');
-        deselectAllContainer.click(function(){
-            self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
-                jQuery(ele).attr('checked', false);
-            });
-            self.relatedContentContainer.find('#listViewEntriesMainCheckBox').attr('checked', false);
-            self.writeSelectedIds('');
-            self.writeExcludedIds('');
-            deselectAllContainer.closest('div.messageContainer').addClass('hide');
-        });
-    },
-    
-    registerEvents : function() {
-		this.registerEditLink();
-        this.changeCustomFilterElementView();
-        this.registerEventToEditRelatedStatus();
-        this.registerChangeCustomFilterEvent();
-        this.registerCheckboxClickEvent();
-        this.registerMainCheckboxClickEvent();
-        this.registerSelectAllClickEvent();
-        this.registerDeselectAllClickEvent();
+	registerDeselectAllClickEvent : function() {
+		var self = this;
+		var deselectAllContainer = self.relatedContentContainer.find('#deSelectAllMsgDiv');
+		deselectAllContainer.click(function(){
+			self.relatedContentContainer.find('.listViewEntriesCheckBox').each(function(i, ele){
+				jQuery(ele).attr('checked', false);
+			});
+			self.relatedContentContainer.find('#listViewEntriesMainCheckBox').attr('checked', false);
+			self.writeSelectedIds('');
+			self.writeExcludedIds('');
+			deselectAllContainer.closest('div.messageContainer').addClass('hide');
+		});
+	},
+
+	postLoadRelatedListViewRecords : function(){
+		var thisInstance = this;
+		app.event.off('Vtiger.RelatedList.PostLoad.Event');
+		app.event.on('Vtiger.RelatedList.PostLoad.Event', function(e) {
+			var listParams = {
+				"selected" : thisInstance.selectedRecordIds,
+				"excluded" : thisInstance.excludedRecordIds
+			};
+			thisInstance.markSelectedIdsCheckboxes(listParams);
+		});
+	},
+
+	registerEvents : function() {
+		this.changeCustomFilterElementView();
+		this.registerEventToEditRelatedStatus();
+		this.registerChangeCustomFilterEvent();
+		this.registerCheckboxClickEvent();
+		this.registerMainCheckboxClickEvent();
+		this.registerSelectAllClickEvent();
+		this.registerDeselectAllClickEvent();
+		this.postLoadRelatedListViewRecords();
 		if(typeof jQuery.fn.sadropdown === 'function') {
 			jQuery('.currentStatus').find('.dropdown-toggle').sadropdown({
 				relativeTo: '.listview-table'
 			});
 		}
-    },
-    
-    init : function(parentId, parentModule, selectedRelatedTabElement, relatedModuleName) {
-        this._super(parentId, parentModule, selectedRelatedTabElement, relatedModuleName);
-        this.registerEvents();
-    }
+	},
+
+	init : function(parentId, parentModule, selectedRelatedTabElement, relatedModuleName) {
+		this._super(parentId, parentModule, selectedRelatedTabElement, relatedModuleName);
+		this.registerEvents();
+	}
 });
\ No newline at end of file
diff --git a/layouts/v7/modules/Vtiger/resources/DashBoard.js b/layouts/v7/modules/Vtiger/resources/DashBoard.js
index 4faf9754fe17b892f5b90b19feb64fb17e31ca6d..1f2ce3446c8c3b042810cb8a0adde8c7e2e19ee0 100644
--- a/layouts/v7/modules/Vtiger/resources/DashBoard.js
+++ b/layouts/v7/modules/Vtiger/resources/DashBoard.js
@@ -829,6 +829,8 @@ Vtiger.Class("Vtiger_DashBoard_Js",{
 		dashBoardContainer.on("shown.bs.tab",".dashboardTab",function(e){
 			var currentTarget = jQuery(e.currentTarget);
 			var tabid = currentTarget.data('tabid');
+			app.changeURL("index.php?module=Home&view=DashBoard&tabid="+tabid);
+
 			// If tab is already loaded earlier then we shouldn't reload tab and register gridster
 			if(typeof jQuery("#tab_"+tabid).find(".dashBoardTabContainer").val() !== 'undefined'){
 				// We should overwrite gridster with current tab which is clicked
diff --git a/layouts/v7/resources/application.js b/layouts/v7/resources/application.js
index 72a479369a7e734269925682cdc4f9e5e2755478..760e09f6e635af4e4c6e5631b480762d3576c381 100644
--- a/layouts/v7/resources/application.js
+++ b/layouts/v7/resources/application.js
@@ -311,6 +311,13 @@ window.app = (function () {
 				return '';
 			}
 		},
+        changeURL : function(url){
+            if (typeof history.pushState !== "undefined") {
+                history.pushState({}, "", url);
+            } else {
+                console.log("Browser does not support HTML5.");
+            }
+        },
 		/**
 		 * Function returns translated string
 		 */
diff --git a/layouts/v7/skins/images/usersetupbg.png b/layouts/v7/skins/images/usersetupbg.png
index 72535fade8da8fa40f888cbc2e3a74195fc92ae3..589d3434bea3f222c974a0b70bf60f87c88e4312 100644
Binary files a/layouts/v7/skins/images/usersetupbg.png and b/layouts/v7/skins/images/usersetupbg.png differ
diff --git a/modules/Migration/schema/660_to_700.php b/modules/Migration/schema/660_to_700.php
index cd7888329d3261417fa8a53d61bc9bdc8bacbc5e..2bf469cc24b0f8b105474033b9ef46c6bbf8668b 100644
--- a/modules/Migration/schema/660_to_700.php
+++ b/modules/Migration/schema/660_to_700.php
@@ -26,6 +26,22 @@ if(defined('VTIGER_UPGRADE')) {
 		$db->pquery('ALTER TABLE vtiger_crmentity ADD COLUMN smgroupid INT(19)', array());
 	}
 
+	$moduleName = 'Calendar';
+	$reminderTemplateResult = $db->pquery('SELECT 1 FROM vtiger_emailtemplates WHERE subject=? AND systemtemplate=?', array('Reminder', '1'));
+	if (!$db->num_rows($reminderTemplateResult)) {
+		$body = '<p>'.vtranslate('LBL_REMINDER_NOTIFICATION', $moduleName).'<br/>' .
+				vtranslate('LBL_DETAILS_STRING', $moduleName).' :<br/> 
+							&nbsp; '.vtranslate('Subject', $moduleName).' : $events-subject$<br/> 
+							&nbsp; '.vtranslate('Start Date & Time', $moduleName).' : $events-date_start$<br/>  
+							&nbsp; '.vtranslate('End Date & Time', $moduleName).' : $events-due_date$<br/> 
+							&nbsp; '.vtranslate('LBL_STATUS', $moduleName).' : $events-eventstatus$<br/> 
+							&nbsp; '.vtranslate('Location', $moduleName).' : $events-location$<br/> 
+							&nbsp; '.vtranslate('LBL_APP_DESCRIPTION', $moduleName).' : $events-description$<br/><br/> 
+							<p/>';
+		$db->pquery('INSERT INTO vtiger_emailtemplates(foldername,templatename,subject,description,body,systemtemplate,templateid) values(?,?,?,?,?,?,?)', array('Public', 'Activity Reminder', 'Reminder', 'Reminder', $body, '1', $db->getUniqueID('vtiger_emailtemplates')));
+	}
+
+	$db->pquery('UPDATE vtiger_field SET presence=0 WHERE columnname=? AND fieldname=?', array('emailoptout', 'emailoptout'));
 	$db->pquery('UPDATE vtiger_settings_field SET name=? WHERE name=?', array('Configuration Editor', 'LBL_CONFIG_EDITOR'));
 	$db->pquery('UPDATE vtiger_links SET linktype=? WHERE linklabel=?', array('DETAILVIEW', 'LBL_SHOW_ACCOUNT_HIERARCHY'));
 	$db->pquery('UPDATE vtiger_field SET defaultvalue=? WHERE fieldname=?', array('1', 'discontinued'));
diff --git a/packages/vtiger/optional/Arabic_ar_ae.zip b/packages/vtiger/optional/Arabic_ar_ae.zip
index ec6c67f8c2478b7bd24a56b1204858cf5583a2f4..8375b723de485b3ce8bdfb750ad58abe844b895e 100644
Binary files a/packages/vtiger/optional/Arabic_ar_ae.zip and b/packages/vtiger/optional/Arabic_ar_ae.zip differ
diff --git a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip
index ea4227fdbae0c5288cee34e66dea7a8d225c38fb..d227e3e7dcc4d1abe18b16ea126137be53aaa678 100644
Binary files a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip and b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip differ
diff --git a/packages/vtiger/optional/BritishLanguagePack_br_br.zip b/packages/vtiger/optional/BritishLanguagePack_br_br.zip
index 96476cae88eb1e4248afad24db65f6e6e7fd00be..f761dd097372b3c8c73fa0ad4d678d51e912423a 100644
Binary files a/packages/vtiger/optional/BritishLanguagePack_br_br.zip and b/packages/vtiger/optional/BritishLanguagePack_br_br.zip differ
diff --git a/packages/vtiger/optional/Deutsch.zip b/packages/vtiger/optional/Deutsch.zip
index 5acf53ffc892b699534d71f967958affdba96d5d..c5c3369c439c65aee64c1e50d0a548921c234180 100644
Binary files a/packages/vtiger/optional/Deutsch.zip and b/packages/vtiger/optional/Deutsch.zip differ
diff --git a/packages/vtiger/optional/Dutch.zip b/packages/vtiger/optional/Dutch.zip
index d2e9e4541c2e5520472757de3fb33a9f93e9331b..24a7accda397e9b0533c388bf33fa86b68575e05 100644
Binary files a/packages/vtiger/optional/Dutch.zip and b/packages/vtiger/optional/Dutch.zip differ
diff --git a/packages/vtiger/optional/French.zip b/packages/vtiger/optional/French.zip
index b5f667ca3dac86cc560a19b9f6a9dc3d4a767c66..83a6b92528e5145c24ea62565a8b95a7f8b443d1 100644
Binary files a/packages/vtiger/optional/French.zip and b/packages/vtiger/optional/French.zip differ
diff --git a/packages/vtiger/optional/Hungarian.zip b/packages/vtiger/optional/Hungarian.zip
index 8f0f1fec47a7ecdea8a374133fce024161e14388..163e8681a9744287455908e2a3153670cb041649 100644
Binary files a/packages/vtiger/optional/Hungarian.zip and b/packages/vtiger/optional/Hungarian.zip differ
diff --git a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip
index c169484486467d56c3f8126bd606c04302476e82..03d1c89676226fea3efdad1403cf2338f58de589 100644
Binary files a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip and b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip differ
diff --git a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip
index 07ca2ba7ff9d77d0f8e219a69fa841a20efeda04..d87d8ad1b350e0bcc48d55cb78cf626187ade737 100644
Binary files a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip and b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip differ
diff --git a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip
index ef158e37ffc5c0bf973072218ed1bb78fbdbe300..39c7777a46a4ae5c64ce884634b8a23570f9795e 100644
Binary files a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip and b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip differ
diff --git a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip
index 4da10c45b90c3f3e90646e01b9c0a6e5f9fe63b4..07d6ae7afd7145d1fc9fe64d1a3d8ac0fa52ef72 100644
Binary files a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip and b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip differ
diff --git a/packages/vtiger/optional/Russian.zip b/packages/vtiger/optional/Russian.zip
index e908cb2505a0bd6c0d1788b137073058ad691d89..5600fea1b21b49f4e82aa43b046de6ca4eec610c 100644
Binary files a/packages/vtiger/optional/Russian.zip and b/packages/vtiger/optional/Russian.zip differ
diff --git a/packages/vtiger/optional/Spanish.zip b/packages/vtiger/optional/Spanish.zip
index d713cea7d9cf683132cd26487f9d66207c54cfcd..ad256541f62dddc009b9212601b5afa33fb7e8e9 100644
Binary files a/packages/vtiger/optional/Spanish.zip and b/packages/vtiger/optional/Spanish.zip differ
diff --git a/packages/vtiger/optional/Sweden_sv_se.zip b/packages/vtiger/optional/Sweden_sv_se.zip
index 02bb19881039ab33350db3b10bed1714698cf130..222797f8506c89ce543ec7bce46d5c6f846ee405 100644
Binary files a/packages/vtiger/optional/Sweden_sv_se.zip and b/packages/vtiger/optional/Sweden_sv_se.zip differ
diff --git a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip
index cfdfd0535f3266f409fcb2611b0fbc55a1fa98b6..a253c436d88738613f08930498700ad2f5d50822 100644
Binary files a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip and b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip differ
diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Campaigns.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Campaigns.php
index 0e794c2ad2781d90ab23167bcbc67fb58c67068b..334681990fe8b0b16743df79dd8e944d03eb3ad4 100644
--- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Campaigns.php
@@ -64,4 +64,8 @@ $languageStrings = array(
 	'Contacted - Successful' => 'الاتصال ‫-‬ ناجح',
 	'Contacted - Unsuccessful' => 'الاتصال ‫-‬ غير ناجح',
 	'Contacted - Never Contact Again' => 'الاتصال ‫-‬ عدم الاتصال مرة اخرى',
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '٪ s من القائمة المحددة سيتم إلحاق مع القائمة الحالية.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php
index a72ace587e7e155e3b869512828609803e3a2d0f..67de9944da8bd5fdc81784512d376f9d9706b265 100644
--- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php
+++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contactado - Sucesso'        , 
 	'Contacted - Unsuccessful'     => 'Contactado - Insucesso'      , 
 	'Contacted - Never Contact Again' => 'Contactado - Nunca Contactar Novamente', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s da lista selecionado será anexado com a lista existente.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Campaigns.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Campaigns.php
index 491aae868929f02cea4bdaac3d14031ee6a01289..6421e015d25743df016caa5eba9e3f780006246f 100644
--- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Campaigns.php
+++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contacted - Successful'      , 
 	'Contacted - Unsuccessful'     => 'Contacted - Unsuccessful'    , 
 	'Contacted - Never Contact Again' => 'Contacted - Never Contact Again', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s from the selected list will be appended with the existing list.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/Deutsch/modules/Campaigns.php b/pkg/vtiger/translations/Deutsch/modules/Campaigns.php
index 1fba2d968aae62887d2903a7654e0d7b7df411bf..e296fba9fbf5047ddc55c1dc5a5d23825f9a393e 100644
--- a/pkg/vtiger/translations/Deutsch/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Deutsch/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'erfolgreich kontaktiert'     , 
 	'Contacted - Unsuccessful'     => 'ohne Erfolg kontaktiert'     , 
 	'Contacted - Never Contact Again' => 'Kontaktiert - nie wiederholen', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s aus der Liste werden mit der bestehenden Liste angehängt.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/Dutch/modules/Campaigns.php b/pkg/vtiger/translations/Dutch/modules/Campaigns.php
index fa59f20eee201627808f9a396e64ebaa0942278d..efb513d3d84b19914f7f9813e1fa69786d12f7a4 100644
--- a/pkg/vtiger/translations/Dutch/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Dutch/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contact gehad - Success'     , 
 	'Contacted - Unsuccessful'     => 'Contact gehad - Geen success', 
 	'Contacted - Never Contact Again' => 'Contact gehad - Nooit meer contacten', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s uit de geselecteerde lijst zal worden toegevoegd aan de bestaande lijst.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/French/modules/Campaigns.php b/pkg/vtiger/translations/French/modules/Campaigns.php
index 269048a24d751d435ae0a0dd6f42eac147dc0f4d..81750402c14aa300c6ceac5eeed9b09eb0e4874d 100644
--- a/pkg/vtiger/translations/French/modules/Campaigns.php
+++ b/pkg/vtiger/translations/French/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contacté - avec succès'    , 
 	'Contacted - Unsuccessful'     => 'Contacté - sans succès'    , 
 	'Contacted - Never Contact Again' => 'Contacté - Ne pas recontacter', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s de la liste sélectionnée sera ajouté à la liste existante.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/Hungarian/modules/Campaigns.php b/pkg/vtiger/translations/Hungarian/modules/Campaigns.php
index 30909492c48c6b857dc74c8df8179a81a1af0734..d34dcfa8dd7a8671389bb28bbdfda29e5f3e708d 100644
--- a/pkg/vtiger/translations/Hungarian/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Hungarian/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Kapcsolatfelvétel - Sikeres', 
 	'Contacted - Unsuccessful'     => 'Kapcsolatfelvétel - Sikertelen', 
 	'Contacted - Never Contact Again' => 'Kapcsolatfelvétel - Felejtős örökre', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s A kiválasztott lista lesz hozzáfűzve a meglévő listát.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Campaigns.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Campaigns.php
index 5c6e06962181f3d156a02b4ef2db62502e0f1d04..639226a90fb487a220dc45ca0a9d5c030e086926 100644
--- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Campaigns.php
+++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contacted - Successful'      , 
 	'Contacted - Unsuccessful'     => 'Contacted - Unsuccessful'    , 
 	'Contacted - Never Contact Again' => 'Contacted - Never Contact Again', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => "%s dalla lista selezionata verrà allegato con l'elenco esistente.",
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Campaigns.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Campaigns.php
index 108e82c403da6c1b28676fcd9a0be2c3d850f9eb..f4439af652a43f7233cd1026a0637102d2d40acd 100644
--- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Campaigns.php
+++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contactado - Éxito'         , 
 	'Contacted - Unsuccessful'     => 'Contactado - Fracaso'        , 
 	'Contacted - Never Contact Again' => 'Contactado - No volver a contactar', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s de la lista seleccionada se anexará a la lista existente.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Campaigns.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Campaigns.php
index 30bc3d52a197b8a5a7a433166e666473a7e60c62..fd83d48c7dc4923a5bb83f5d36b936e17c8abf1c 100644
--- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Campaigns.php
+++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Campaigns.php
@@ -65,4 +65,8 @@ $languageStrings = array(
 	'Contacted - Successful' => 'Kontakt zakończony powodzeniem',
 	'Contacted - Unsuccessful' => 'Kontakt zakończony niepowodzeniem',
 	'Contacted - Never Contact Again' => 'Kontakt nie życzy sobie kontaktu w przyszłości',
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s z wybranej listy zostaną dołączone do istniejącej listy.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Campaigns.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Campaigns.php
index 38e45c54f9e5d8cbf568f9cbbcca0b5660e465f3..c1c77d90eb6ce0effd640e1d98160e3c2c4cd6b5 100644
--- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Campaigns.php
+++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contacted - Successful'      , 
 	'Contacted - Unsuccessful'     => 'Contacted - Unsuccessful'    , 
 	'Contacted - Never Contact Again' => 'Contacted - Never Contact Again', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s din lista selectată va fi anexată cu lista existentă.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/Russian/modules/Campaigns.php b/pkg/vtiger/translations/Russian/modules/Campaigns.php
index 3b9595b876f44e8fec45c323ff20d59eb1ee34a9..41e044ff1ae9fa3f454a8d7bbfd7ef8cb4e2cf77 100644
--- a/pkg/vtiger/translations/Russian/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Russian/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Успешный Контакт', 
 	'Contacted - Unsuccessful'     => 'Неудачный Контакт', 
 	'Contacted - Never Contact Again' => 'Никогда не Контактировать', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s из выбранного списка будут добавлены с существующим списком.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/Spanish/modules/Campaigns.php b/pkg/vtiger/translations/Spanish/modules/Campaigns.php
index 82f15dc61e831dc7d0038251b75076dcb0672fad..45d70e34492445d8242d92e4d8aa0643351d3d44 100644
--- a/pkg/vtiger/translations/Spanish/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Spanish/modules/Campaigns.php
@@ -60,4 +60,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Respuesta - Satisfactoria' ,
 	'Contacted - Unsuccessful'     => 'Respuesta - Insatisfactoria',
 	'Contacted - Never Contact Again' => 'Respuesta - No volver a contactar',
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s de la lista seleccionada se anexará a la lista existente.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Campaigns.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Campaigns.php
index 6ee8898f14af0c95104e9052cfbfcc8929c8f9f2..bffe7d5d706b09e3264f7aa391fe3f75d2121634 100755
--- a/pkg/vtiger/translations/Sweden_sv_se/modules/Campaigns.php
+++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Campaigns.php
@@ -67,4 +67,8 @@ $languageStrings = array(
 
   'Contacted - Never Contact Again' => 'Kontaktade Aldrig Kontakt Igen',
 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s från den valda listan kommer att läggas med den befintliga listan.',
 );
\ No newline at end of file
diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Campaigns.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Campaigns.php
index e76396057c1d8aaa5b007d359af7f4af25300d2b..f07fbf3ef0cf21fa736c8e0b83d9d8f46329cdaa 100644
--- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Campaigns.php
+++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Campaigns.php
@@ -52,4 +52,8 @@ $languageStrings = array(
 	'Contacted - Successful'       => 'Contacted - Successful'      , 
 	'Contacted - Unsuccessful'     => 'Contacted - Unsuccessful'    , 
 	'Contacted - Never Contact Again' => 'Contacted - Never Contact Again', 
+);
+
+$jsLanguageStrings = array(
+	'JS_APPENDED_TO_EXISTING_LIST' => '%s seçili listeden mevcut liste ile eklenir.',
 );
\ No newline at end of file