diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index d0aab930882c2bd9ac60fee2637e1a7e533a2180..482a8444bfddf68c6797b608bdf680a5ebd8b83e 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -1136,7 +1136,7 @@ class installer_base {
 
 		//* If there are RBL's defined, format the list and add them to smtp_recipient_restrictions to prevent removal after an update
 		$rbl_list = '';
-		if (@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') {
+		if(@isset($server_ini_array['mail']['realtime_blackhole_list']) && $server_ini_array['mail']['realtime_blackhole_list'] != '') {
 			$rbl_hosts = explode(",", str_replace(" ", "", $server_ini_array['mail']['realtime_blackhole_list']));
 			foreach ($rbl_hosts as $key => $value) {
 				$rbl_list .= ", reject_rbl_client ". $value;
@@ -1146,13 +1146,13 @@ class installer_base {
 
 		//* If Postgrey is installed, configure it
 		$greylisting = '';
-		if($conf['postgrey']['installed'] == true) {
+		if(isset($conf['postgrey']['installed']) && ($conf['postgrey']['installed'] == true)) {
 			$greylisting = ', check_recipient_access mysql:/etc/postfix/mysql-virtual_policy_greylist.cf';
 		}
 
 		$reject_sender_login_mismatch = '';
 		$reject_authenticated_sender_login_mismatch = '';
-		if (isset($server_ini_array['mail']['reject_sender_login_mismatch']) && ($server_ini_array['mail']['reject_sender_login_mismatch'] == 'y')) {
+		if(isset($server_ini_array['mail']['reject_sender_login_mismatch']) && ($server_ini_array['mail']['reject_sender_login_mismatch'] == 'y')) {
 			$reject_sender_login_mismatch = ',reject_sender_login_mismatch,';
 			$reject_authenticated_sender_login_mismatch = 'reject_authenticated_sender_login_mismatch, ';
 		}
@@ -1162,11 +1162,11 @@ class installer_base {
 		$stress_adaptive = (isset($server_ini_array['mail']['stress_adaptive']) && ($server_ini_array['mail']['stress_adaptive'] == 'y')) ? '' : $stress_adaptive_placeholder;
 
 		$reject_unknown_client_hostname='';
-		if (isset($server_ini_array['mail']['reject_unknown']) && ($server_ini_array['mail']['reject_unknown'] == 'client' || $server_ini_array['mail']['reject_unknown'] == 'client_helo')) {
+		if(isset($server_ini_array['mail']['reject_unknown']) && ($server_ini_array['mail']['reject_unknown'] == 'client' || $server_ini_array['mail']['reject_unknown'] == 'client_helo')) {
 			$reject_unknown_client_hostname=',reject_unknown_client_hostname';
 		}
 		$reject_unknown_helo_hostname='';
-		if ((!isset($server_ini_array['mail']['reject_unknown'])) || $server_ini_array['mail']['reject_unknown'] == 'helo' || $server_ini_array['mail']['reject_unknown'] == 'client_helo') {
+		if((!isset($server_ini_array['mail']['reject_unknown'])) || $server_ini_array['mail']['reject_unknown'] == 'helo' || $server_ini_array['mail']['reject_unknown'] == 'client_helo') {
 			$reject_unknown_helo_hostname=',reject_unknown_helo_hostname';
 		}
 
diff --git a/install/update.php b/install/update.php
index d0b63d8605fbdb97bf815753ae9af6c4a6e36bba..6047b7b9302f9841b181c6b7b5c2ec5f71153866 100644
--- a/install/update.php
+++ b/install/update.php
@@ -366,15 +366,47 @@ $inst->find_installed_apps();
 //** Check for current service config state and compare to our results
 if ($conf['mysql']['master_slave_setup'] == 'y') $current_svc_config = $inst->dbmaster->queryOneRecord("SELECT mail_server,web_server,dns_server,xmpp_server,firewall_server,vserver_server,db_server FROM ?? WHERE server_id=?", $conf['mysql']['master_database'] . '.server', $conf['server_id']);
 else $current_svc_config = $inst->db->queryOneRecord("SELECT mail_server,web_server,dns_server,xmpp_server,firewall_server,vserver_server,db_server FROM ?? WHERE server_id=?", $conf["mysql"]["database"] . '.server', $conf['server_id']);
-$conf['services']['mail'] = check_service_config_state('mail_server', $conf['postfix']['installed']);
-$conf['services']['dns'] = check_service_config_state('dns_server', ($conf['powerdns']['installed'] || $conf['bind']['installed'] || $conf['mydns']['installed']));
-$conf['services']['web'] = check_service_config_state('web_server', ($conf['apache']['installed'] || $conf['nginx']['installed']));
-$conf['services']['xmpp'] = check_service_config_state('xmpp_server', $conf['xmpp']['installed']);
-$conf['services']['firewall'] = check_service_config_state('firewall_server', ($conf['ufw']['installed'] || $conf['firewall']['installed']));
-$conf['services']['vserver'] = check_service_config_state('vserver_server', $conf['services']['vserver']);
+
+if(isset($conf['postfix']['installed']) && $conf['postfix']['installed'] == true) {
+	$conf['services']['mail'] = check_service_config_state('mail_server', true);
+} else {
+	$conf['services']['mail'] = check_service_config_state('mail_server', false);
+}
+
+if(isset($conf['powerdns']['installed']) && $conf['powerdns']['installed'] == true || isset($conf['bind']['installed']) && $conf['bind']['installed'] == true || isset($conf['mydns']['installed']) && $conf['mydns']['installed'] == true) {
+	$conf['services']['dns'] = check_service_config_state('dns_server', true);
+} else {
+	$conf['services']['dns'] = check_service_config_state('dns_server', false);
+}
+
+if(isset($conf['apache']['installed']) && $conf['apache']['installed'] == true || isset($conf['nginx']['installed']) && $conf['nginx']['installed'] == true) {
+	$conf['services']['web'] = check_service_config_state('web_server', true);
+} else { 
+	$conf['services']['web'] = check_service_config_state('web_server', false);
+}
+
+if(isset($conf['xmpp']['installed']) && $conf['xmpp']['installed'] == true) {
+	$conf['services']['xmpp'] = check_service_config_state('xmpp_server', true);
+} else { 
+	$conf['services']['xmpp'] = check_service_config_state('xmpp_server', false);
+}
+
+if(isset($conf['ufw']['installed']) && $conf['ufw']['installed'] == true || isset($conf['firewall']['installed']) && $conf['firewall']['installed'] == true) {
+	$conf['services']['firewall'] = check_service_config_state('firewall_server', true);
+} else { 
+	$conf['services']['firewall'] = check_service_config_state('firewall_server', false);
+}
+
+if(isset($conf['vserver']['installed']) && $conf['vserver']['installed'] == true) {
+	$conf['services']['vserver'] = check_service_config_state('vserver_server', true);
+} else { 
+	$conf['services']['vserver'] = check_service_config_state('vserver_server', false);
+}
+
 $conf['services']['db'] = check_service_config_state('db_server', true); /* Will always offer as MySQL is of course installed on this host as it's a requirement for ISPC to work... */
 unset($current_svc_config);
 
+
 //** Write new decisions into DB
 $sql = "UPDATE ?? SET mail_server = '{$conf['services']['mail']}', web_server = '{$conf['services']['web']}', dns_server = '{$conf['services']['dns']}', file_server = '{$conf['services']['file']}', db_server = '{$conf['services']['db']}', vserver_server = '{$conf['services']['vserver']}', proxy_server = '{$conf['services']['proxy']}', firewall_server = '{$conf['services']['firewall']}', xmpp_server = '{$conf['services']['xmpp']}' WHERE server_id = ?";
 $inst->db->query($sql, $conf['mysql']['database'].'.server', $conf['server_id']);
diff --git a/server/plugins-available/firewall_plugin.inc.php b/server/plugins-available/firewall_plugin.inc.php
index b924f43a2620a35813aebee9a3bb5a082f99daab..c81cfd6d0364e5f5871b62c143f84bacf707c9c0 100644
--- a/server/plugins-available/firewall_plugin.inc.php
+++ b/server/plugins-available/firewall_plugin.inc.php
@@ -38,7 +38,7 @@ class firewall_plugin {
 	public function onInstall() {
 		global $conf;
 
-		if(($conf['bastille']['installed'] == true || $conf['ufw']['installed'] == true || $conf['firewall']['installed'] == true) && $conf['services']['firewall'] == true) {
+	if((isset($conf['bastille']['installed']) && $conf['bastille']['installed'] == true) || (isset($conf['ufw']['installed']) && $conf['ufw']['installed'] == true) || (isset($conf['firewall']['installed']) && $conf['firewall']['installed'] == true) || (isset($conf['services']['firewall']) && $conf['services']['firewall'] == true)) {
 			return true;
 		} else {
 			return false;