diff --git a/web/pgadmin/browser/server_groups/servers/__init__.py b/web/pgadmin/browser/server_groups/servers/__init__.py
index ca6cb8bb6..6b80874cc 100644
--- a/web/pgadmin/browser/server_groups/servers/__init__.py
+++ b/web/pgadmin/browser/server_groups/servers/__init__.py
@@ -295,24 +295,25 @@ class ServerNode(PGChildNodeView):
             required_ssl_fields_server_mode = ['sslcert', 'sslkey']
 
             for field in ssl_fields:
-                if field not in data:
+                if field in data:
+                    continue
+                elif config.SERVER_MODE and \
+                        field in required_ssl_fields_server_mode:
                     # In Server mode,
                     # we will set dummy SSL certificate file path which will
                     # prevent using default SSL certificates from web servers
 
-                    if config.SERVER_MODE and \
-                            field in required_ssl_fields_server_mode:
-                        # Set file manager directory from preference
-                        import os
-                        file_extn = '.key' if field.endswith('key') else '.crt'
-                        dummy_ssl_file = os.path.join(
-                            '<STORAGE_DIR>', '.postgresql',
-                            'postgresql' + file_extn
-                        )
-                        data[field] = dummy_ssl_file
+                    # Set file manager directory from preference
+                    import os
+                    file_extn = '.key' if field.endswith('key') else '.crt'
+                    dummy_ssl_file = os.path.join(
+                        '<STORAGE_DIR>', '.postgresql',
+                        'postgresql' + file_extn
+                    )
+                    data[field] = dummy_ssl_file
                     # For Desktop mode, we will allow to default
-                    else:
-                        data[field] = None
+                else:
+                    data[field] = None
 
         return flag, data
 
@@ -534,28 +535,10 @@ class ServerNode(PGChildNodeView):
         conn = manager.connection()
         connected = conn.connected()
 
-        if connected:
-            for arg in (
-                    'hostaddr', 'db', 'sslmode',
-                    'role', 'service'
-            ):
-                if arg in data:
-                    return forbidden(
-                        errmsg=gettext(
-                            "'{0}' is not allowed to modify, "
-                            "when server is connected."
-                        ).format(disp_lbl[arg])
-                    )
+        self._server_modify_disallowed_when_connected(
+            connected, data, disp_lbl)
 
-        for arg in config_param_map:
-            if arg in data:
-                value = data[arg]
-                # sqlite3 do not have boolean type so we need to convert
-                # it manually to integer
-                if arg == 'sslcompression':
-                    value = 1 if value else 0
-                setattr(server, config_param_map[arg], value)
-                idx += 1
+        idx = self._set_valid_attr_value(data, config_param_map, server)
 
         if idx == 0:
             return make_json_response(
@@ -591,6 +574,37 @@ class ServerNode(PGChildNodeView):
             )
         )
 
+    def _set_valid_attr_value(self, data, config_param_map, server):
+
+        idx = 0
+        for arg in config_param_map:
+            if arg in data:
+                value = data[arg]
+                # sqlite3 do not have boolean type so we need to convert
+                # it manually to integer
+                if arg == 'sslcompression':
+                    value = 1 if value else 0
+                setattr(server, config_param_map[arg], value)
+                idx += 1
+
+        return idx
+
+    def _server_modify_disallowed_when_connected(
+            self, connected, data, disp_lbl):
+
+        if connected:
+            for arg in (
+                    'hostaddr', 'db', 'sslmode',
+                    'role', 'service'
+            ):
+                if arg in data:
+                    return forbidden(
+                        errmsg=gettext(
+                            "'{0}' is not allowed to modify, "
+                            "when server is connected."
+                        ).format(disp_lbl[arg])
+                    )
+
     @login_required
     def list(self, gid):
         """
