diff --git a/config_override.php b/config_override.php
index 458b5a665acf429939cdda39151f40f01aa5d613..d8588616789ed1d591f0789806f7f741689678b8 100644
--- a/config_override.php
+++ b/config_override.php
@@ -17,4 +17,7 @@ $max_mailboxes = 3;
  *     This can be customized using runtime connector hook and avoid core file modifications.
  *     array('session' => 'Vtiger_CustomSession_Handler')
  */
-$runtime_connectors = array();
\ No newline at end of file
+$runtime_connectors = array();
+
+//Password Regex for validation
+$password_regex = '^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})';
\ No newline at end of file
diff --git a/include/Webservices/Custom/ChangePassword.php b/include/Webservices/Custom/ChangePassword.php
index eba0cb9c8e41cc5efcfff29abf2d600b2eece87e..2d37e9b01a349a90b1de011939798baac06115ff 100644
--- a/include/Webservices/Custom/ChangePassword.php
+++ b/include/Webservices/Custom/ChangePassword.php
@@ -75,7 +75,9 @@ function vtws_changePassword($id, $oldPassword, $newPassword, $confirmPassword,
 }
 
 function isPasswordStrong($new_password){
-    if (preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})/i', $new_password) == 1) {
+    $runtime_configs = Vtiger_Runtime_Configs::getInstance();
+    $password_regex = $runtime_configs->get('password_regex');
+    if (preg_match('/'.$password_regex.'/i', $new_password) == 1) {
             return true;
     }
     return false;
diff --git a/includes/runtime/Configs.php b/includes/runtime/Configs.php
index 6c7e446131315260c457ab3ad5021a092a602365..4ab97f2090392ad3e76c20c2bf6f4e0346916d86 100644
--- a/includes/runtime/Configs.php
+++ b/includes/runtime/Configs.php
@@ -41,4 +41,19 @@
 
         return $connector;
     }
+    
+    /**
+     * Function to fetch the value for given key
+     */
+    public function get($key, $default = '') {
+        $value = '';
+        if(isset($GLOBALS[$key])) {
+            $value = $GLOBALS[$key];
+        }
+
+        if(empty($value) && !empty($default)) {
+            $value = $default;
+        }
+        return $value;
+    }
  }
\ No newline at end of file
diff --git a/layouts/v7/modules/Install/Step4.tpl b/layouts/v7/modules/Install/Step4.tpl
index f358877d786088e4ab182ef530e6bc1e71a7c5e0..63a659f15fad0bf95bf832efeddb4cf85f47f0f7 100644
--- a/layouts/v7/modules/Install/Step4.tpl
+++ b/layouts/v7/modules/Install/Step4.tpl
@@ -28,6 +28,7 @@
 			<div class="row hide" id="errorMessage"></div>
 			<div class="row">
 				<div class="col-sm-6">
+                                    <input type='hidden' name='pwd_regex' value= {ZEND_json::encode($PWD_REGEX)} />
 					<table class="config-table input-table">
 						<thead>
 							<tr><th colspan="2">{vtranslate('LBL_DATABASE_INFORMATION', 'Install')}</th></tr>
diff --git a/layouts/v7/modules/Users/DetailViewBlockView.tpl b/layouts/v7/modules/Users/DetailViewBlockView.tpl
index 33ba6ff0023b9b68204654283e635585ab0e7bab..18f2528e965f31245df4260364218a0e7b773286 100644
--- a/layouts/v7/modules/Users/DetailViewBlockView.tpl
+++ b/layouts/v7/modules/Users/DetailViewBlockView.tpl
@@ -9,6 +9,7 @@
 
 {strip}
 	<input type=hidden name="timeFormatOptions" data-value='{$DAY_STARTS}' />
+        <input type='hidden' name='pwd_regex' value= {ZEND_json::encode($PWD_REGEX)} />
 	{foreach key=BLOCK_LABEL_KEY item=FIELD_MODEL_LIST from=$RECORD_STRUCTURE}
 		{if $BLOCK_LABEL_KEY neq 'LBL_CALENDAR_SETTINGS'}
 			{assign var=BLOCK value=$BLOCK_LIST[$BLOCK_LABEL_KEY]}
diff --git a/layouts/v7/modules/Users/EditView.tpl b/layouts/v7/modules/Users/EditView.tpl
index 244ea2a65d2f6c76151c48200dead5d30f46fad9..a8126d8eaf03ad3b2c63efc9a2688ecffa518419 100644
--- a/layouts/v7/modules/Users/EditView.tpl
+++ b/layouts/v7/modules/Users/EditView.tpl
@@ -40,6 +40,7 @@
                     <input type="hidden" name="defaultCallDuration" value="{$USER_MODEL->get('callduration')}" />
                     <input type="hidden" name="defaultOtherEventDuration" value="{$USER_MODEL->get('othereventduration')}" />
                     <input type="hidden" name="isPreference" value="{$IS_PREFERENCE}" />
+                    <input type='hidden' name='pwd_regex' value= {ZEND_json::encode($PWD_REGEX)} />
                     {if $IS_RELATION_OPERATION }
                         <input type="hidden" name="sourceModule" value="{$SOURCE_MODULE}" />
                         <input type="hidden" name="sourceRecord" value="{$SOURCE_RECORD}" />
diff --git a/layouts/v7/modules/Users/ListViewHeader.tpl b/layouts/v7/modules/Users/ListViewHeader.tpl
index 0bf4e1c24174521b7deeb62ff31147bd99098b9f..719ec63c4e30667e77b01de068838abc75c7beb4 100644
--- a/layouts/v7/modules/Users/ListViewHeader.tpl
+++ b/layouts/v7/modules/Users/ListViewHeader.tpl
@@ -10,6 +10,7 @@
 {strip}
 	<div class="listViewPageDiv" id="listViewContent">
 		<div class="col-sm-12 col-xs-12 full-height">
+                    <input type='hidden' name='pwd_regex' value= {ZEND_json::encode($PWD_REGEX)} />
 			<div id="listview-actions" class="listview-actions-container">
 				<div class = "row">
 					<div class="btn-group col-md-2"></div>
diff --git a/layouts/v7/modules/Vtiger/resources/Utils.js b/layouts/v7/modules/Vtiger/resources/Utils.js
index 4dc32a3cf81f39eeeac612e2bd0e0a315897ed9b..26cae5e2d7a57232cbb14991d3e3cdb59c9af20f 100644
--- a/layouts/v7/modules/Vtiger/resources/Utils.js
+++ b/layouts/v7/modules/Vtiger/resources/Utils.js
@@ -401,8 +401,12 @@ var vtUtils = {
             * (?=.*[!@#\$%\^&\*])	The string must contain at least one special character, but we are escaping reserved RegEx characters to avoid conflict
             * (?=.{8,})			The string must be eight characters or longer
             */
-            var strongPasswordRegex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
-            var isStrong = strongPasswordRegex.test(password)? true : false; 
-            return isStrong;
+           var password_regex = jQuery('[name="pwd_regex"]').val();
+           if((typeof password_regex != 'undefined') && (password_regex != '')){
+                var strongPasswordRegex = new RegExp(password_regex);
+                var isStrong = strongPasswordRegex.test(password)? true : false; 
+                return isStrong;
+           }
+           return false;
     },
 }
diff --git a/modules/Install/views/Index.php b/modules/Install/views/Index.php
index 54a29e5f49bfd76b83e7b3f86111cdbd0e6a9003..59276d24b4c3a7716d16535d5757fdfed3011658 100644
--- a/modules/Install/views/Index.php
+++ b/modules/Install/views/Index.php
@@ -111,6 +111,10 @@ class Install_Index_view extends Vtiger_View_Controller {
 		$viewer->assign('ADMIN_LASTNAME', $defaultParameters['admin_lastname']);
 		$viewer->assign('ADMIN_PASSWORD', $defaultParameters['admin_password']);
 		$viewer->assign('ADMIN_EMAIL', $defaultParameters['admin_email']);
+                
+                $runtime_configs = Vtiger_Runtime_Configs::getInstance();
+                $password_regex = $runtime_configs->get('password_regex');
+                $viewer->assign('PWD_REGEX', $password_regex);
 
 		$viewer->view('Step4.tpl', $moduleName);
 	}
diff --git a/modules/Users/views/List.php b/modules/Users/views/List.php
index 40bff8e2273cee67f5e593119a6e496017bf78ff..122a8ea86c9f36a5750f1223fe1b3d8a9a0d74a9 100644
--- a/modules/Users/views/List.php
+++ b/modules/Users/views/List.php
@@ -167,6 +167,10 @@ class Users_List_View extends Settings_Vtiger_List_View {
 		$viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
 		$viewer->assign('SEARCH_VALUE', $searchValue);
 		$viewer->assign('SEARCH_DETAILS', $searchParams);
+                
+                $runtime_configs = Vtiger_Runtime_Configs::getInstance();
+                $password_regex = $runtime_configs->get('password_regex');
+                $viewer->assign('PWD_REGEX', $password_regex);
 	}
 
 	/**
diff --git a/modules/Users/views/PreferenceDetail.php b/modules/Users/views/PreferenceDetail.php
index 154544d3f55115a62d547cbab687e136a8e53bb2..49e6be3cfd76e96231b028ef57d5c64e2b5028d7 100644
--- a/modules/Users/views/PreferenceDetail.php
+++ b/modules/Users/views/PreferenceDetail.php
@@ -172,6 +172,9 @@ class Users_PreferenceDetail_View extends Vtiger_Detail_View {
 		$viewer->assign("DAY_STARTS", Zend_Json::encode($dayStartPicklistValues));
 		$viewer->assign('IMAGE_DETAILS', $recordModel->getImageDetails());
 
+                $runtime_configs = Vtiger_Runtime_Configs::getInstance();
+                $password_regex = $runtime_configs->get('password_regex');
+                $viewer->assign('PWD_REGEX', $password_regex);
 		return parent::process($request);
 	}
 
diff --git a/modules/Users/views/PreferenceEdit.php b/modules/Users/views/PreferenceEdit.php
index cc1e4032604a127e3d2082fc649dbc9cd3460027..1ad9ebbba1eb4084f49e7782ec59330912666ec4 100644
--- a/modules/Users/views/PreferenceEdit.php
+++ b/modules/Users/views/PreferenceEdit.php
@@ -121,7 +121,7 @@ Class Users_PreferenceEdit_View extends Vtiger_Edit_View {
 				$fieldsInfo[$fieldName] = $fieldModel->getFieldInfo();
 			}
 			$viewer->assign('FIELDS_INFO', json_encode($fieldsInfo));
-
+                        
 			if($display) {
 				$this->preProcessDisplay($request);
 			}
@@ -150,6 +150,10 @@ Class Users_PreferenceEdit_View extends Vtiger_Edit_View {
 		$viewer->assign("DAY_STARTS", Zend_Json::encode($dayStartPicklistValues));
 		$viewer->assign('TAG_CLOUD', $recordModel->getTagCloudStatus());
 		$viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
+                
+                $runtime_configs = Vtiger_Runtime_Configs::getInstance();
+                $password_regex = $runtime_configs->get('password_regex');
+                $viewer->assign('PWD_REGEX', $password_regex);
 
 		parent::process($request);
 	}