diff --git a/home/doctype/company_control/company_control.py b/home/doctype/company_control/company_control.py
index cab8e7c..246b07e 100644
--- a/home/doctype/company_control/company_control.py
+++ b/home/doctype/company_control/company_control.py
@@ -53,6 +53,15 @@
 			pr.role = r
 			pr.parentfield = 'userroles'
 			pr.save(1)
+		
+		# Update Membership Type at Gateway
+		if cint(webnotes.conn.get_value('Control Panel', None, 'sync_with_gateway')):
+			if 'System Manager' in role_list : membership_type = 'Administrator'
+			else : membership_type = 'Member'
+
+			import server_tools.gateway_utils
+			server_tools.gateway_utils.update_membership_type(cstr(arg['usr']), membership_type)
+
 		sql("delete from __SessionCache where user=%s", cstr(arg['usr']))
 
 	# Save profile
diff --git a/home/page/my_company/my_company.js b/home/page/my_company/my_company.js
index 9da7e9b..40bf155 100644
--- a/home/page/my_company/my_company.js
+++ b/home/page/my_company/my_company.js
@@ -322,7 +322,7 @@
 	
 	// show securty settings
 	this.set_security = function() {
-		var d = new wn.widgets.Dialog({
+		var sd = new wn.widgets.Dialog({
 			title: 'Set User Security',
 			width: 500,
 			fields: [
@@ -362,30 +362,72 @@
 				}
 			]
 		});
-		d.onshow = function() {
-			d.set_values({
+
+		me.sec_dialog = sd
+
+		sd.onshow = function() {
+			me.sec_dialog.set_values({
 				restrict_ip: me.profile.restrict_ip || '',
 				login_before: me.profile.login_before || '',
 				login_after: me.profile.login_after || '',
 				new_password: ''
-			})
-		}
-		d.fields_dict.update.input.onclick = function() {
+			});
+		};
+		sd.fields_dict.update.input.onclick = function() {
 			var btn = this;
 			this.set_working();
-			var args = d.get_values();
+			var args = me.sec_dialog.get_values();
 			args.user = me.profile.name;
-			$c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
-				if(r.exc) {
-					msgprint(r.exc);
+
+			if (args.new_password) {
+				var pass_d = new wn.widgets.Dialog({
+					title: 'Your Password',
+					width: 300,
+					fields: [
+						{
+							label: 'Please Enter Your Password',
+							description: "Your password is required to update the concerned user's password",
+							fieldtype: 'Password',
+							fieldname: 'sys_admin_pwd',
+							reqd: 1		
+						},
+
+						{
+							label: 'Continue',
+							fieldtype: 'Button',
+							fieldname: 'continue'
+						}
+					]
+				});
+
+				pass_d.fields_dict.continue.input.onclick = function() {
+					btn.pwd_dialog.hide();					
+					args.sys_admin_pwd = btn.pwd_dialog.get_values().sys_admin_pwd;					
+					btn.set_working();					
+					me.update_security(args);
 					btn.done_working();
-					return;
 				}
-				$.extend(me.profile, d.get_values());
-				d.hide();
-			});
-		}
-		d.show();
+
+				pass_d.show();
+				btn.pwd_dialog = pass_d;
+				btn.done_working();
+			} else {
+				btn.done_working();
+				me.update_security(args);
+			}			
+		};
+		sd.show();		
+	}
+
+	this.update_security = function(args) {
+		$c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
+			if(r.exc) {
+				msgprint(r.exc);				
+				return;
+			}
+			me.sec_dialog.hide();
+			$.extend(me.profile, me.sec_dialog.get_values());
+		});
 	}
 	
 	// delete user
diff --git a/home/page/my_company/my_company.py b/home/page/my_company/my_company.py
index 5d5ed80..3ff1482 100644
--- a/home/page/my_company/my_company.py
+++ b/home/page/my_company/my_company.py
@@ -140,8 +140,7 @@
 	if 'new_password' in args:
 		if cint(webnotes.conn.get_value('Control Panel',None,'sync_with_gateway')):
 			import server_tools.gateway_utils
-			webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'])['message'])
+			webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])['message'])
 		else:
 			webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", (args['new_password'], args['user']))
-
-	webnotes.msgprint('Settings Updated')
\ No newline at end of file
+	else: webnotes.msgprint('Settings Updated')
\ No newline at end of file
