diff --git a/jams-react-client/src/components/IdentityManagement/AdStorageForm.js b/jams-react-client/src/components/IdentityManagement/AdStorageForm.js
index cc26125d8d2823490c71f57847dff5c6a09c9334..c5a6824709a561b7d346fea7d5f44f3838212d3f 100644
--- a/jams-react-client/src/components/IdentityManagement/AdStorageForm.js
+++ b/jams-react-client/src/components/IdentityManagement/AdStorageForm.js
@@ -1,108 +1,140 @@
-import React from 'react';
-import FormControlLabel from '@material-ui/core/FormControlLabel';
-import Typography from '@material-ui/core/Typography';
-import Grid from '@material-ui/core/Grid';
+import React from "react";
+import FormControlLabel from "@material-ui/core/FormControlLabel";
+import Typography from "@material-ui/core/Typography";
+import Grid from "@material-ui/core/Grid";
 
-import TextField from '@material-ui/core/TextField';
-import Radio from '@material-ui/core/Radio';
-import RadioGroup from '@material-ui/core/RadioGroup';
+import TextField from "@material-ui/core/TextField";
+import Radio from "@material-ui/core/Radio";
+import RadioGroup from "@material-ui/core/RadioGroup";
 
 export default function AdStorageForm(props) {
-
-    return (
-        <Grid container spacing={3}>
-            <Grid item xs={12}>
-                <Typography variant="subtitle1" gutterBottom color="primary">Active directory server informations</Typography>
-            </Grid>
-            <Grid item xs={6}>
-                <TextField
-                    variant="outlined"
-                    margin="normal"
-                    required
-                    fullWidth
-                    id="port"
-                    label="Port"
-                    name="port"
-                    autoComplete="port"
-                    value={props.values.port}
-                    onChange={props.handleChange}
-                    onBlur={props.handleBlur}
-                    helperText={(props.errors.port && props.touched.port) && props.errors.port}
-
-                />
-            </Grid>
-            <Grid item xs={6}>
-                <TextField
-                    variant="outlined"
-                    margin="normal"
-                    required
-                    fullWidth
-                    id="host"
-                    label="Host"
-                    name="host"
-                    autoComplete="host"
-                    value={props.values.host}
-                    onChange={props.handleChange}
-                    onBlur={props.handleBlur}
-                    helperText={(props.errors.host && props.touched.host) && props.errors.host}
-                />
-            </Grid>
-            <Grid item xs={6}>
-                <TextField
-                    variant="outlined"
-                    margin="normal"
-                    required
-                    fullWidth
-                    id="adminusername"
-                    label="Admin username"
-                    name="adadminusername"
-                    autoComplete="adminusername"
-                    value={props.values.adadminusername}
-                    onChange={props.handleChange}
-                    onBlur={props.handleBlur}
-                    helperText={(props.errors.adadminusername && props.touched.adadminusername) && props.errors.adadminusername}
-                />
-            </Grid>
-            <Grid item xs={6}>
-                <TextField
-                    variant="outlined"
-                    margin="normal"
-                    required
-                    fullWidth
-                    id="password"
-                    label="Password"
-                    name="password"
-                    autoComplete="password"
-                    type="password"
-                    value={props.values.adpassword}
-                    onChange={props.handleChange}
-                    onBlur={props.handleBlur}
-                    helperText={(props.errors.adpassword && props.touched.adpassword) && props.errors.adpassword}
-                />
-            </Grid>
-            <Grid item xs={12}>
-                <TextField
-                    variant="outlined"
-                    margin="normal"
-                    required
-                    fullWidth
-                    id="domainname"
-                    label="Domain Name"
-                    name="domainname"
-                    autoComplete="domainname"
-                    value={props.values.domainname}
-                    onChange={props.handleChange}
-                    onBlur={props.handleBlur}
-                    helperText={(props.errors.domainname && props.touched.domainname) && props.errors.domainname}
-                />
-            </Grid>
-            <Grid item xs={12}>
-                <Typography variant="subtitle1" gutterBottom color="primary">Use SSL</Typography>
-                <RadioGroup row aria-label="isSSL" name="isSSL" value={props.isSSL} onChange={props.handleIsSSLChange} >
-                    <FormControlLabel value="true" control={<Radio color="primary"/>} label="Yes" />
-                    <FormControlLabel value="false" control={<Radio color="default"/>} label="No" />
-                </RadioGroup>
-            </Grid>
-        </Grid>
-    );
-}
\ No newline at end of file
+  return (
+    <Grid container spacing={3}>
+      <Grid item xs={12}>
+        <Typography variant="subtitle1" gutterBottom color="primary">
+          Active directory server informations
+        </Typography>
+      </Grid>
+      <Grid item xs={6}>
+        <TextField
+          variant="outlined"
+          margin="normal"
+          required
+          fullWidth
+          id="port"
+          label="Port"
+          name="port"
+          autoComplete="port"
+          value={props.values.port}
+          onChange={props.handleChange}
+          onBlur={props.handleBlur}
+          helperText={
+            props.errors.port && props.touched.port && props.errors.port
+          }
+        />
+      </Grid>
+      <Grid item xs={6}>
+        <TextField
+          variant="outlined"
+          margin="normal"
+          required
+          fullWidth
+          id="host"
+          label="Host"
+          name="host"
+          autoComplete="host"
+          value={props.values.host}
+          onChange={props.handleChange}
+          onBlur={props.handleBlur}
+          helperText={
+            props.errors.host && props.touched.host && props.errors.host
+          }
+        />
+      </Grid>
+      <Grid item xs={6}>
+        <TextField
+          variant="outlined"
+          margin="normal"
+          required
+          fullWidth
+          id="adminusername"
+          label="Admin username"
+          name="adadminusername"
+          autoComplete="adminusername"
+          value={props.values.adadminusername}
+          onChange={props.handleChange}
+          onBlur={props.handleBlur}
+          helperText={
+            props.errors.adadminusername &&
+            props.touched.adadminusername &&
+            props.errors.adadminusername
+          }
+        />
+      </Grid>
+      <Grid item xs={6}>
+        <TextField
+          variant="outlined"
+          margin="normal"
+          required
+          fullWidth
+          id="password"
+          label="Password"
+          name="adpassword"
+          autoComplete="password"
+          type="password"
+          value={props.values.adpassword}
+          onChange={props.handleChange}
+          onBlur={props.handleBlur}
+          helperText={
+            props.errors.adpassword &&
+            props.touched.adpassword &&
+            props.errors.adpassword
+          }
+        />
+      </Grid>
+      <Grid item xs={12}>
+        <TextField
+          variant="outlined"
+          margin="normal"
+          required
+          fullWidth
+          id="domainname"
+          label="Domain Name"
+          name="domainname"
+          autoComplete="domainname"
+          value={props.values.domainname}
+          onChange={props.handleChange}
+          onBlur={props.handleBlur}
+          helperText={
+            props.errors.domainname &&
+            props.touched.domainname &&
+            props.errors.domainname
+          }
+        />
+      </Grid>
+      <Grid item xs={12}>
+        <Typography variant="subtitle1" gutterBottom color="primary">
+          Use SSL
+        </Typography>
+        <RadioGroup
+          row
+          aria-label="isSSL"
+          name="isSSL"
+          value={props.isSSL}
+          onChange={props.handleIsSSLChange}
+        >
+          <FormControlLabel
+            value="true"
+            control={<Radio color="primary" />}
+            label="Yes"
+          />
+          <FormControlLabel
+            value="false"
+            control={<Radio color="default" />}
+            label="No"
+          />
+        </RadioGroup>
+      </Grid>
+    </Grid>
+  );
+}
diff --git a/jams-react-client/src/components/IdentityManagement/IdentityManagement.js b/jams-react-client/src/components/IdentityManagement/IdentityManagement.js
index 6815ba92a4375f05415d325350044c5ac91ca4b3..b9fdb09ad6a7b6b916bc3131c2b679e344bb1ad1 100644
--- a/jams-react-client/src/components/IdentityManagement/IdentityManagement.js
+++ b/jams-react-client/src/components/IdentityManagement/IdentityManagement.js
@@ -1,409 +1,423 @@
-import React from 'react';
-import { useHistory } from 'react-router-dom';
-import {Formik} from 'formik';
-import Button from '@material-ui/core/Button';
-import Typography from '@material-ui/core/Typography';
-import Grid from '@material-ui/core/Grid';
-import { makeStyles } from '@material-ui/core/styles';
-import Select from '@material-ui/core/Select';
-
-import {buildSelectMenuItems} from '../../tools'
-
-import axios from 'axios';
-import configApiCall from '../../api'
-import { api_path_post_install_auth } from '../../globalUrls'
-
-import LocalStorageForm from './LocalStorageForm'
-import LdapForm from './LdapStorageForm'
-import AdStorageForm from './AdStorageForm'
-
-import auth from '../../auth'
+import React from "react";
+import { useHistory } from "react-router-dom";
+import { Formik } from "formik";
+import Button from "@material-ui/core/Button";
+import Typography from "@material-ui/core/Typography";
+import Grid from "@material-ui/core/Grid";
+import { makeStyles } from "@material-ui/core/styles";
+import Select from "@material-ui/core/Select";
+
+import { buildSelectMenuItems } from "../../tools";
+
+import axios from "axios";
+import configApiCall from "../../api";
+import { api_path_post_install_auth } from "../../globalUrls";
+
+import LocalStorageForm from "./LocalStorageForm";
+import LdapForm from "./LdapStorageForm";
+import AdStorageForm from "./AdStorageForm";
+
+import auth from "../../auth";
 import * as Yup from "yup";
 
-
 const useStyles = makeStyles((theme) => ({
-    paper: {
-        marginTop: theme.spacing(8),
-        display: 'flex',
-        flexDirection: 'column',
-        alignItems: 'center',
-    },
-    avatar: {
-        margin: theme.spacing(1),
-        backgroundColor: theme.palette.secondary.main,
-    },
-    form: {
-        width: '100%', // Fix IE 11 issue.
-        marginTop: theme.spacing(1),
-    },
-    submit: {
-        margin: theme.spacing(3, 0, 2),
-    },
+  paper: {
+    marginTop: theme.spacing(8),
+    display: "flex",
+    flexDirection: "column",
+    alignItems: "center",
+  },
+  avatar: {
+    margin: theme.spacing(1),
+    backgroundColor: theme.palette.secondary.main,
+  },
+  form: {
+    width: "100%", // Fix IE 11 issue.
+    marginTop: theme.spacing(1),
+  },
+  submit: {
+    margin: theme.spacing(3, 0, 2),
+  },
 }));
 
 export default function IdentityManagement(props) {
-
-    /**
-     * Formik Validation Fields
-     */
-
-    const initialValuesLDAPform = {servername: "", ldapadminusername:"", ldappassword:"", basedn:""};
-
-    const initialValuesADform = {port: "", host:"", adadminusername:"", adpassword:"",domainname:""};
-
-    const validationSchemaLDAPform = Yup.object().shape({
-        servername: Yup.string()
-            .required("Server name is required."),
-        ldapadminusername: Yup.string()
-            .required("Username is required."),
-        ldappassword: Yup.string()
-            .required("Password is required."),
-        basedn: Yup.string()
-            .required("Domain name is required."),
-    });
-
-    const validationSchemaADform = Yup.object().shape({
-        port: Yup.number()
-            .required("Port number is required."),
-        host: Yup.string()
-            .required("Host is required."),
-        adadminusername: Yup.string()
-            .required("Username is required."),
-        domainname: Yup.string()
-            .required("Domain name is required."),
-        adpassword: Yup.string()
-            .required("Password is required."),
-    });
-
-
-    const directoryTypes = [
-        {value: 0, label: "Local Database"},
-        {value: 1, label: "LDAP Server"},
-        {value: 2, label: "Active Directory"},
-    ];
-
-    const directoryTypesItems = buildSelectMenuItems(directoryTypes);
-
-    const classes = useStyles();
-    const history = useHistory();
-    const [directory, setDirectory] = React.useState(directoryTypes[0]);
-
-
-    /**
-     * Local storage Config
-     */
-
-    const [nameServerChecked, setNameServerChecked] = React.useState(false);
-
-    /**
-     * LDAP storage Config
-     *
-     */
-    const ldapFiltersTypes = [
-        {value: 0, label: "UID"},
-    ];
-
-    const ldapFiltersTypesItems = buildSelectMenuItems(ldapFiltersTypes);
-    const [useStartTLS, setUseStartTLS] = React.useState("false")
-    const [ldapFilter, setLdapFilter] = React.useState(ldapFiltersTypes[0]);
-
-    const handleFilterIdChange = (event) => {
-        setLdapFilter(ldapFiltersTypes[event.target.value]);
-    }
-    const handleUseStartTLSChange = (event) => {
-        setUseStartTLS(event.target.value)
-    }
-
-    const handleNameServerChange = (event) => {
-        setNameServerChecked(event.target.checked)
-    }
-
-    /**
-     * Active Directory Storage Config
-     */
-
-    const [isSSL, setIsSSL] = React.useState("false")
-
-    const handleIsSSLChange = (event) => {
-        setIsSSL(event.target.value)
-    }
-
-    /**
-     * Form handle submit and server call
-     */
-
-    function setLocalStorageData(){
-        const authSource = {};
-        const settings = {
-            "publicNameServer": "http://ns.jami.net",
-            "publicNames": nameServerChecked
-        };
-
-        authSource['type'] = 'LOCAL';
-        authSource['localAuthSettings'] = settings;
-        return authSource;
-    }
-
-    function setLdapStorageData(values){
-        const authSource = {};
-        const settings = {};
-
-        settings['useStartTLS'] = (useStartTLS === 'true')
-        settings['host'] = values.servername
-        settings['username'] = values.ldapadminusername
-        settings['password'] = values.ldappassword
-        settings['baseDN'] = values.basedn
-        settings['usernameField'] = ldapFilter.label
-
-        settings['fieldMappings'] = {};
-        settings['fieldMappings']['givenName'] = "FirstName";
-        settings['fieldMappings']['sn'] = "LastName";
-        settings['fieldMappings']['jpegPhoto'] = "ProfilePicture";
-        settings['fieldMappings']['mail'] = "Email";
-        settings['fieldMappings']['telephoneNumber'] = "PhoneNumber";
-        settings['fieldMappings']['mobile'] = "MobileNumber";
-        settings['fieldMappings']['facsimileTelephoneNumber'] = "FaxNumber";
-        settings['fieldMappings']['extensionName'] = "PhoneNumberExtension";
-        settings['fieldMappings']['o'] = "Organization";
-        settings['fieldMappings']['uid'] = "Username";
-
-        authSource['type'] = 'LDAP';
-        authSource['ldapSettings'] = settings;
-        return authSource;
-    }
-
-    function setAdStorageData(values){
-        const authSource = {};
-        const settings = {};
-
-        settings['isSSL'] = (isSSL === 'true')
-        settings['host'] = values.host
-        settings['port'] = parseInt(values.port, 10)
-        settings['realm'] = values.domainname
-        settings['username'] = values.adadminusername
-        settings['password'] = values.adpassword
-
-        settings['fieldMappings'] = {};
-        settings['fieldMappings']['sAMAccountName'] = "Username"
-        settings['fieldMappings']['givenName'] = "FirstName";
-        settings['fieldMappings']['sn'] = "LastName";
-        settings['fieldMappings']['jpegPhoto'] = "ProfilePicture";
-        settings['fieldMappings']['mail'] = "Email";
-        settings['fieldMappings']['telephoneNumber'] = "PhoneNumber";
-        settings['fieldMappings']['mobile'] = "MobileNumber";
-        settings['fieldMappings']['facsimileTelephoneNumber'] = "FaxNumber";
-        settings['fieldMappings']['extensionName'] = "PhoneNumberExtension";
-        settings['fieldMappings']['o'] = "Organization";
-        settings['fieldMappings']['uid'] = "Username";
-
-        authSource['type'] = 'AD';
-        authSource['activeDirectorySettings'] = settings;
-        return authSource;
-    }
-
-    function callbackIdentityManagement(){
-        auth.uri = '/api/install/settings'
-        history.push('/');
-    }
-
-    function handleSubmit(values) {
-        let data = {}
-        if(directory.value === 1){
-            data = setLdapStorageData(values)
-        }else{
-            data = setAdStorageData(values)
-        }
-        axios(configApiCall(api_path_post_install_auth,'POST',data,null)).then((response)=>{
-            callbackIdentityManagement()
-        }).catch(()=>{
-            props.setErrorMessage('The information provided appears to be incorrect, the connection to the directory has failed. Please check the information and credentials provided and try again.')
-            props.setError(true)
-        })
-
-    }
-
-    function handleLocalSubmit(e) {
-        e.preventDefault();
-        let data = {}
-        data = setLocalStorageData()
-        axios(configApiCall(api_path_post_install_auth,'POST',data,null)).then((response)=>{
-            callbackIdentityManagement()
-        }).catch(()=>{
-            props.setErrorMessage('The information provided appears to be incorrect, the connection to the directory has failed. Please check the information and credentials provided and try again.')
-            props.setError(true)
-        })
-
-    }
-
-    const handleChangeDirectoryType = (event) => {
-        props.setError(false);
-        setDirectory(directoryTypes[event.target.value]);
+  /**
+   * Formik Validation Fields
+   */
+
+  const initialValuesLDAPform = {
+    servername: "",
+    ldapadminusername: "",
+    ldappassword: "",
+    basedn: "",
+  };
+
+  const initialValuesADform = {
+    port: "",
+    host: "",
+    adadminusername: "",
+    adpassword: "",
+    domainname: "",
+  };
+
+  const validationSchemaLDAPform = Yup.object().shape({
+    servername: Yup.string().required("Server name is required."),
+    ldapadminusername: Yup.string().required("Username is required."),
+    ldappassword: Yup.string().required("Password is required."),
+    basedn: Yup.string().required("Domain name is required."),
+  });
+
+  const validationSchemaADform = Yup.object().shape({
+    port: Yup.number()
+      .typeError("Port must be a number.")
+      .positive("Port must be positive.")
+      .integer("Port must be an integer.")
+      .required("Port number is required."),
+    host: Yup.string().required("Host is required."),
+    adadminusername: Yup.string().required("Username is required."),
+    domainname: Yup.string().required("Domain name is required."),
+    adpassword: Yup.string().required("Password is required."),
+  });
+
+  const directoryTypes = [
+    { value: 0, label: "Local Database" },
+    { value: 1, label: "LDAP Server" },
+    { value: 2, label: "Active Directory" },
+  ];
+
+  const directoryTypesItems = buildSelectMenuItems(directoryTypes);
+
+  const classes = useStyles();
+  const history = useHistory();
+  const [directory, setDirectory] = React.useState(directoryTypes[0]);
+
+  /**
+   * Local storage Config
+   */
+
+  const [nameServerChecked, setNameServerChecked] = React.useState(false);
+
+  /**
+   * LDAP storage Config
+   *
+   */
+  const ldapFiltersTypes = [{ value: 0, label: "UID" }];
+
+  const ldapFiltersTypesItems = buildSelectMenuItems(ldapFiltersTypes);
+  const [useStartTLS, setUseStartTLS] = React.useState("false");
+  const [ldapFilter, setLdapFilter] = React.useState(ldapFiltersTypes[0]);
+
+  const handleFilterIdChange = (event) => {
+    setLdapFilter(ldapFiltersTypes[event.target.value]);
+  };
+  const handleUseStartTLSChange = (event) => {
+    setUseStartTLS(event.target.value);
+  };
+
+  const handleNameServerChange = (event) => {
+    setNameServerChecked(event.target.checked);
+  };
+
+  /**
+   * Active Directory Storage Config
+   */
+
+  const [isSSL, setIsSSL] = React.useState("false");
+
+  const handleIsSSLChange = (event) => {
+    setIsSSL(event.target.value);
+  };
+
+  /**
+   * Form handle submit and server call
+   */
+
+  function setLocalStorageData() {
+    const authSource = {};
+    const settings = {
+      publicNameServer: "http://ns.jami.net",
+      publicNames: nameServerChecked,
     };
 
-    function returnForm(values, touched, errors, handleChange, handleBlur){
-        if (directory.value === 1){
-            return (
-                <LdapForm
-                    useStartTLS={useStartTLS}
-                    handleUseStartTLSChange={handleUseStartTLSChange}
-                    ldapFilter={ldapFilter}
-                    ldapFiltersTypesItems={ldapFiltersTypesItems}
-                    handleFilterIdChange={handleFilterIdChange}
-                    values={values}
-                    touched={touched}
-                    errors={errors}
-                    handleChange={handleChange}
-                    handleBlur={handleBlur}
-                />
-            );
-        }else{
-            return (
-                <AdStorageForm
-                    isSSL={isSSL}
-                    handleIsSSLChange={handleIsSSLChange}
-                    values={values}
-                    touched={touched}
-                    errors={errors}
-                    handleChange={handleChange}
-                    handleBlur={handleBlur}
-                />
-            );
-        }
-    }
-
-    if(directory.value === 0){
-        return(
-            <form className={classes.form} noValidate onSubmit={handleLocalSubmit}>
-                <Typography variant="h5" gutterBottom color="primary">Identity Management</Typography>
-                <Grid container spacing={3}>
-                    <Grid item xs={12}>
-                        <Typography variant="body1" gutterBottom >Select the type of user directory to be integrated with JAMS</Typography>
-                        <Select
-                            labelId="demo-simple-select-label"
-                            fullWidth
-                            value={directory.value}
-                            onChange={handleChangeDirectoryType}
-                            variant="outlined"
-                            children={directoryTypesItems}
-                        />
-                    </Grid>
-                </Grid>
-                <LocalStorageForm
-                    nameServerChecked={nameServerChecked}
-                    handleNameServerChange={handleNameServerChange}
-                />
-                <Button
-                    type="submit"
-                    fullWidth
-                    variant="contained"
-                    color="primary"
-                    className={classes.submit}
-                >
-                    Set identity parameters
-                </Button>
-            </form>
-        );
+    authSource["type"] = "LOCAL";
+    authSource["localAuthSettings"] = settings;
+    return authSource;
+  }
+
+  function setLdapStorageData(values) {
+    const authSource = {};
+    const settings = {};
+
+    settings["useStartTLS"] = useStartTLS === "true";
+    settings["host"] = values.servername;
+    settings["username"] = values.ldapadminusername;
+    settings["password"] = values.ldappassword;
+    settings["baseDN"] = values.basedn;
+    settings["usernameField"] = ldapFilter.label;
+
+    settings["fieldMappings"] = {};
+    settings["fieldMappings"]["givenName"] = "FirstName";
+    settings["fieldMappings"]["sn"] = "LastName";
+    settings["fieldMappings"]["jpegPhoto"] = "ProfilePicture";
+    settings["fieldMappings"]["mail"] = "Email";
+    settings["fieldMappings"]["telephoneNumber"] = "PhoneNumber";
+    settings["fieldMappings"]["mobile"] = "MobileNumber";
+    settings["fieldMappings"]["facsimileTelephoneNumber"] = "FaxNumber";
+    settings["fieldMappings"]["extensionName"] = "PhoneNumberExtension";
+    settings["fieldMappings"]["o"] = "Organization";
+    settings["fieldMappings"]["uid"] = "Username";
+
+    authSource["type"] = "LDAP";
+    authSource["ldapSettings"] = settings;
+    return authSource;
+  }
+
+  function setAdStorageData(values) {
+    const authSource = {};
+    const settings = {};
+
+    settings["isSSL"] = isSSL === "true";
+    settings["host"] = values.host;
+    settings["port"] = parseInt(values.port, 10);
+    settings["realm"] = values.domainname;
+    settings["username"] = values.adadminusername;
+    settings["password"] = values.adpassword;
+
+    settings["fieldMappings"] = {};
+    settings["fieldMappings"]["sAMAccountName"] = "Username";
+    settings["fieldMappings"]["givenName"] = "FirstName";
+    settings["fieldMappings"]["sn"] = "LastName";
+    settings["fieldMappings"]["jpegPhoto"] = "ProfilePicture";
+    settings["fieldMappings"]["mail"] = "Email";
+    settings["fieldMappings"]["telephoneNumber"] = "PhoneNumber";
+    settings["fieldMappings"]["mobile"] = "MobileNumber";
+    settings["fieldMappings"]["facsimileTelephoneNumber"] = "FaxNumber";
+    settings["fieldMappings"]["extensionName"] = "PhoneNumberExtension";
+    settings["fieldMappings"]["o"] = "Organization";
+    settings["fieldMappings"]["uid"] = "Username";
+
+    authSource["type"] = "AD";
+    authSource["activeDirectorySettings"] = settings;
+    return authSource;
+  }
+
+  function callbackIdentityManagement() {
+    auth.uri = "/api/install/settings";
+    history.push("/");
+  }
+
+  function handleSubmit(values) {
+    let data = {};
+    if (directory.value === 1) {
+      data = setLdapStorageData(values);
+    } else {
+      data = setAdStorageData(values);
     }
-    else if(directory.value === 1){
-        return(
-            <Formik validationSchema={validationSchemaLDAPform}
-                    initialValues={initialValuesLDAPform}
-                    onSubmit={values => {
-                        handleSubmit(values);
-                    }}
-            >
-                {(props) => {
-                    const {
-                        values,
-                        touched,
-                        errors,
-                        handleSubmit,
-                        handleChange,
-                        handleBlur,
-                    } = props;
-                    return(
-                        <form className={classes.form} noValidate onSubmit={handleSubmit}>
-                            <Typography variant="h5" gutterBottom color="primary">Identity Management</Typography>
-                            <Grid container spacing={3}>
-                                <Grid item xs={12}>
-                                    <Typography variant="body1" gutterBottom >Select the type of user directory to be integrated with JAMS</Typography>
-                                    <Select
-                                        labelId="demo-simple-select-label"
-                                        fullWidth
-                                        value={directory.value}
-                                        onChange={handleChangeDirectoryType}
-                                        variant="outlined"
-                                        children={directoryTypesItems}
-                                    />
-                                </Grid>
-                            </Grid>
-                            {returnForm(values, touched, errors, handleChange, handleBlur)}
-                            <Button
-                                type="submit"
-                                fullWidth
-                                variant="contained"
-                                color="primary"
-                                className={classes.submit}
-                            >
-                                Set identity parameters
-                            </Button>
-                        </form>
-                    );
-                }
-                }
-
-            </Formik>
+    axios(configApiCall(api_path_post_install_auth, "POST", data, null))
+      .then((response) => {
+        callbackIdentityManagement();
+      })
+      .catch(() => {
+        props.setErrorMessage(
+          "The information provided appears to be incorrect, the connection to the directory has failed. Please check the information and credentials provided and try again."
         );
-    }
-    else {
-        return(
-            <Formik validationSchema={validationSchemaADform}
-                    initialValues={initialValuesADform}
-                    onSubmit={values => {
-                        handleSubmit(values);
-                    }}
-            >
-                {(props) => {
-                    const {
-                        values,
-                        touched,
-                        errors,
-                        handleSubmit,
-                        handleChange,
-                        handleBlur,
-                    } = props;
-                    return(
-                        <form className={classes.form} noValidate onSubmit={handleSubmit}>
-                            <Typography variant="h5" gutterBottom color="primary">Identity Management</Typography>
-                            <Grid container spacing={3}>
-                                <Grid item xs={12}>
-                                    <Typography variant="body1" gutterBottom >Select the type of user directory to be integrated with JAMS</Typography>
-                                    <Select
-                                        labelId="demo-simple-select-label"
-                                        fullWidth
-                                        value={directory.value}
-                                        onChange={handleChangeDirectoryType}
-                                        variant="outlined"
-                                        children={directoryTypesItems}
-                                    />
-                                </Grid>
-                            </Grid>
-                            {returnForm(values, touched, errors, handleChange, handleBlur)}
-                            <Button
-                                type="submit"
-                                fullWidth
-                                variant="contained"
-                                color="primary"
-                                className={classes.submit}
-                            >
-                                Set identity parameters
-                            </Button>
-                        </form>
-                    );
-                }
-                }
-            </Formik>
+        props.setError(true);
+      });
+  }
+
+  function handleLocalSubmit(e) {
+    e.preventDefault();
+    let data = {};
+    data = setLocalStorageData();
+    axios(configApiCall(api_path_post_install_auth, "POST", data, null))
+      .then((response) => {
+        callbackIdentityManagement();
+      })
+      .catch(() => {
+        props.setErrorMessage(
+          "The information provided appears to be incorrect, the connection to the directory has failed. Please check the information and credentials provided and try again."
         );
+        props.setError(true);
+      });
+  }
+
+  const handleChangeDirectoryType = (event) => {
+    props.setError(false);
+    setDirectory(directoryTypes[event.target.value]);
+  };
+
+  function returnForm(values, touched, errors, handleChange, handleBlur) {
+    if (directory.value === 1) {
+      return (
+        <LdapForm
+          useStartTLS={useStartTLS}
+          handleUseStartTLSChange={handleUseStartTLSChange}
+          ldapFilter={ldapFilter}
+          ldapFiltersTypesItems={ldapFiltersTypesItems}
+          handleFilterIdChange={handleFilterIdChange}
+          values={values}
+          touched={touched}
+          errors={errors}
+          handleChange={handleChange}
+          handleBlur={handleBlur}
+        />
+      );
+    } else {
+      return (
+        <AdStorageForm
+          isSSL={isSSL}
+          handleIsSSLChange={handleIsSSLChange}
+          values={values}
+          touched={touched}
+          errors={errors}
+          handleChange={handleChange}
+          handleBlur={handleBlur}
+        />
+      );
     }
-
-}
\ No newline at end of file
+  }
+
+  if (directory.value === 0) {
+    return (
+      <form className={classes.form} noValidate onSubmit={handleLocalSubmit}>
+        <Typography variant="h5" gutterBottom color="primary">
+          Identity Management
+        </Typography>
+        <Grid container spacing={3}>
+          <Grid item xs={12}>
+            <Typography variant="body1" gutterBottom>
+              Select the type of user directory to be integrated with JAMS
+            </Typography>
+            <Select
+              labelId="demo-simple-select-label"
+              fullWidth
+              value={directory.value}
+              onChange={handleChangeDirectoryType}
+              variant="outlined"
+              children={directoryTypesItems}
+            />
+          </Grid>
+        </Grid>
+        <LocalStorageForm
+          nameServerChecked={nameServerChecked}
+          handleNameServerChange={handleNameServerChange}
+        />
+        <Button
+          type="submit"
+          fullWidth
+          variant="contained"
+          color="primary"
+          className={classes.submit}
+        >
+          Set identity parameters
+        </Button>
+      </form>
+    );
+  } else if (directory.value === 1) {
+    return (
+      <Formik
+        validationSchema={validationSchemaLDAPform}
+        initialValues={initialValuesLDAPform}
+        onSubmit={(values) => {
+          handleSubmit(values);
+        }}
+      >
+        {(props) => {
+          const {
+            values,
+            touched,
+            errors,
+            handleSubmit,
+            handleChange,
+            handleBlur,
+          } = props;
+          return (
+            <form className={classes.form} noValidate onSubmit={handleSubmit}>
+              <Typography variant="h5" gutterBottom color="primary">
+                Identity Management
+              </Typography>
+              <Grid container spacing={3}>
+                <Grid item xs={12}>
+                  <Typography variant="body1" gutterBottom>
+                    Select the type of user directory to be integrated with JAMS
+                  </Typography>
+                  <Select
+                    labelId="demo-simple-select-label"
+                    fullWidth
+                    value={directory.value}
+                    onChange={handleChangeDirectoryType}
+                    variant="outlined"
+                    children={directoryTypesItems}
+                  />
+                </Grid>
+              </Grid>
+              {returnForm(values, touched, errors, handleChange, handleBlur)}
+              <Button
+                type="submit"
+                fullWidth
+                variant="contained"
+                color="primary"
+                className={classes.submit}
+              >
+                Set identity parameters
+              </Button>
+            </form>
+          );
+        }}
+      </Formik>
+    );
+  } else {
+    return (
+      <Formik
+        validationSchema={validationSchemaADform}
+        initialValues={initialValuesADform}
+        onSubmit={(values) => {
+          handleSubmit(values);
+        }}
+      >
+        {(props) => {
+          const {
+            values,
+            touched,
+            errors,
+            handleSubmit,
+            handleChange,
+            handleBlur,
+          } = props;
+          return (
+            <form className={classes.form} noValidate onSubmit={handleSubmit}>
+              <Typography variant="h5" gutterBottom color="primary">
+                Identity Management
+              </Typography>
+              <Grid container spacing={3}>
+                <Grid item xs={12}>
+                  <Typography variant="body1" gutterBottom>
+                    Select the type of user directory to be integrated with JAMS
+                  </Typography>
+                  <Select
+                    labelId="demo-simple-select-label"
+                    fullWidth
+                    value={directory.value}
+                    onChange={handleChangeDirectoryType}
+                    variant="outlined"
+                    children={directoryTypesItems}
+                  />
+                </Grid>
+              </Grid>
+              {returnForm(values, touched, errors, handleChange, handleBlur)}
+              <Button
+                type="submit"
+                fullWidth
+                variant="contained"
+                color="primary"
+                className={classes.submit}
+              >
+                Set identity parameters
+              </Button>
+            </form>
+          );
+        }}
+      </Formik>
+    );
+  }
+}
diff --git a/jams-react-client/src/components/ServerParameters/ServerParameters.js b/jams-react-client/src/components/ServerParameters/ServerParameters.js
index 209b7d5343a5830053b01b5100f06a6d391f7b0d..c21f25b813173ecb55b68e7189f633787378f232 100644
--- a/jams-react-client/src/components/ServerParameters/ServerParameters.js
+++ b/jams-react-client/src/components/ServerParameters/ServerParameters.js
@@ -1,238 +1,274 @@
-import React from 'react';
-import { useHistory } from 'react-router-dom';
-import Button from '@material-ui/core/Button';
-import TextField from '@material-ui/core/TextField';
-import Typography from '@material-ui/core/Typography';
-import { makeStyles } from '@material-ui/core/styles';
-import {Formik, Field} from 'formik';
-
-import CustomPopupState from '../CustomPopupState/CustomPopupState';
-import Select from '@material-ui/core/Select';
-import Input from '@material-ui/core/Input';
+import React from "react";
+import { useHistory } from "react-router-dom";
+import Button from "@material-ui/core/Button";
+import TextField from "@material-ui/core/TextField";
+import Typography from "@material-ui/core/Typography";
+import { makeStyles } from "@material-ui/core/styles";
+import { Formik, Field } from "formik";
+
+import CustomPopupState from "../CustomPopupState/CustomPopupState";
+import Select from "@material-ui/core/Select";
+import Input from "@material-ui/core/Input";
 
 import * as tool from "../../tools";
 
-import axios from 'axios';
-import configApiCall from '../../api'
-import {api_path_post_install_server} from '../../globalUrls'
-import auth from 'auth';
+import axios from "axios";
+import configApiCall from "../../api";
+import { api_path_post_install_server } from "../../globalUrls";
+import auth from "auth";
 import * as Yup from "yup";
 
 const useStyles = makeStyles((theme) => ({
-    paper: {
-        marginTop: theme.spacing(8),
-        display: 'flex',
-        flexDirection: 'column',
-        alignItems: 'center',
-    },
-    avatar: {
-        margin: theme.spacing(1),
-        backgroundColor: theme.palette.secondary.main,
-    },
-    form: {
-        width: '100%', // Fix IE 11 issue.
-        marginTop: theme.spacing(1),
-    },
-    submit: {
-        margin: theme.spacing(3, 0, 2),
-    },
+  paper: {
+    marginTop: theme.spacing(8),
+    display: "flex",
+    flexDirection: "column",
+    alignItems: "center",
+  },
+  avatar: {
+    margin: theme.spacing(1),
+    backgroundColor: theme.palette.secondary.main,
+  },
+  form: {
+    width: "100%", // Fix IE 11 issue.
+    marginTop: theme.spacing(1),
+  },
+  submit: {
+    margin: theme.spacing(3, 0, 2),
+  },
 }));
 
 export default function ServerParameters(props) {
+  // Formik validation fields
+  const initialValues = { domain: window.location.origin };
+  const validationSchema = Yup.object().shape({
+    domain: Yup.string().required("Domain is required."),
+  });
 
-    // Formik validation fields
-    const initialValues = {domain: window.location.origin };
-    const validationSchema = Yup.object().shape({
-        domain: Yup.string()
-            .required("Domain is required."),
-    });
+  const certificateRevocationTypes = [
+    { value: 300000, label: "5 minutes" },
+    { value: 600000, label: "10 minutes" },
+    { value: 900000, label: "15 minutes" },
+    { value: 1800000, label: "30 minutes" },
+    { value: 3600000, label: "60 minutes" },
+  ];
 
-    const certificateRevocationTypes = [
-        {value: 300000, label: "5 minutes"},
-        {value: 600000, label: "10 minutes"},
-        {value: 900000, label: "15 minutes"},
-        {value: 1800000, label: "30 minutes"},
-        {value: 3600000, label: "60 minutes"},
-    ];
-
-    const deviceLifetimeTypes = [
-        {value: 2629746000, label: "1 Month"},
-        {value: 7889238000, label: "3 Months"},
-        {value: 15778476000, label: "6 Months"},
-        {value: 31556952000, label: "1 Year"},
-        {value: 157784760000, label: "5 Years"},
-    ]
-
-    const userAccountLifetimeTypes = [
-        {value: 31556952000, label: "1 Year"},
-        {value: 157784760000, label: "5 Years"},
-        {value: 315569520000, label: "10 Years"},
-    ]
-
-    const certificateRevocationTypesItems = tool.buildSelectMenuItems(certificateRevocationTypes);
-    const deviceLifetimeTypesItems = tool.buildSelectMenuItems(deviceLifetimeTypes);
-    const userAccountLifetimeTypesItems = tool.buildSelectMenuItems(userAccountLifetimeTypes);
-
-    const classes = useStyles();
-    const history = useHistory();
-    const [certificateRevocation, setCertificateRevocation] = React.useState(certificateRevocationTypes[0])
-    const [deviceLifetime, setDeviceLifetime] = React.useState(deviceLifetimeTypes[0])
-    const [userAccountLifetime, setUserAccountLifetime] = React.useState(userAccountLifetimeTypes[0])
-    const [sipConfigurationTemplate, setSIPCertificateTemplate] = React.useState(null);
-    const [userlifeDisabled, setUserlifeDisabled] = React.useState(false);
-
-    React.useEffect(() => {
-        if(deviceLifetime.value <= userAccountLifetime.value){
-            setUserlifeDisabled(false);
-        }
-        else{
-            setUserlifeDisabled(true);
-        }
-    }, [deviceLifetime, userAccountLifetime]);
-
-    function callBackServerParameters(){
-        auth.installed = true
-        auth.authenticated = true
-        auth.admin = true
-        auth.checkDirectoryType(() => {
-            history.push('/admin/users');
-        })
-    }
+  const deviceLifetimeTypes = [
+    { value: 2629746000, label: "1 Month" },
+    { value: 7889238000, label: "3 Months" },
+    { value: 15778476000, label: "6 Months" },
+    { value: 31556952000, label: "1 Year" },
+    { value: 157784760000, label: "5 Years" },
+  ];
 
-    function handleSubmit(values) {
-        let jsonData = {};
-        let re = new RegExp(/^http[s]?:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$/);
-        if(values.domain.match(re)){
-            jsonData = {
-                'serverDomain': values.domain,
-                'crlLifetime': certificateRevocation.value,
-                'deviceLifetime': deviceLifetime.value,
-                'userLifetime': userAccountLifetime.value,
-                'sipConfig': sipConfigurationTemplate,
-                'signingAlgorithm': "SHA512WITHRSA"
-            }
-            axios(configApiCall(api_path_post_install_server, "POST", jsonData, null)).then((response)=>{
-                callBackServerParameters()
-            }).catch((error)=>{
-                console.log('Error installing server parameters: ' + error );
-            })
-        }
-        else{
-            props.setError(true)
-            props.setErrorMessage("Please enter a valid CORS domain URL.");
-        }
-        // Check https://www.geeksforgeeks.org/file-uploading-in-react-js/ for the file upload
-    }
+  const userAccountLifetimeTypes = [
+    { value: 31556952000, label: "1 Year" },
+    { value: 157784760000, label: "5 Years" },
+    { value: 315569520000, label: "10 Years" },
+  ];
 
-    const handleCertificateRevocationChange = (event) => {
-        setCertificateRevocation(tool.retrieveArrayElement(event.target.value,certificateRevocationTypes))
-    }
+  const certificateRevocationTypesItems = tool.buildSelectMenuItems(
+    certificateRevocationTypes
+  );
+  const deviceLifetimeTypesItems = tool.buildSelectMenuItems(
+    deviceLifetimeTypes
+  );
+  const userAccountLifetimeTypesItems = tool.buildSelectMenuItems(
+    userAccountLifetimeTypes
+  );
 
-    const handleDeviceLifetimeChange = (event) => {
-        setDeviceLifetime(tool.retrieveArrayElement(event.target.value, deviceLifetimeTypes));
-    }
+  const classes = useStyles();
+  const history = useHistory();
+  const [certificateRevocation, setCertificateRevocation] = React.useState(
+    certificateRevocationTypes[0]
+  );
+  const [deviceLifetime, setDeviceLifetime] = React.useState(
+    deviceLifetimeTypes[0]
+  );
+  const [userAccountLifetime, setUserAccountLifetime] = React.useState(
+    userAccountLifetimeTypes[0]
+  );
+  const [sipConfigurationTemplate, setSIPCertificateTemplate] = React.useState(
+    null
+  );
+  const [userlifeDisabled, setUserlifeDisabled] = React.useState(false);
 
-    const handleUserAccountLifetimeChange = (event) => {
-        setUserAccountLifetime(tool.retrieveArrayElement(event.target.value, userAccountLifetimeTypes));
+  React.useEffect(() => {
+    if (deviceLifetime.value <= userAccountLifetime.value) {
+      setUserlifeDisabled(false);
+    } else {
+      setUserlifeDisabled(true);
     }
+  }, [deviceLifetime, userAccountLifetime]);
+
+  function callBackServerParameters() {
+    auth.installed = true;
+    auth.authenticated = true;
+    auth.admin = true;
+    auth.checkDirectoryType(() => {
+      history.push("/admin/users");
+    });
+  }
 
-    const handleSipConfigurationTemplateChange = (event) => {
-        setSIPCertificateTemplate(event.target.files[0])
+  function handleSubmit(values) {
+    let jsonData = {};
+    let re = new RegExp(/^http[s]?:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$/);
+    if (values.domain.match(re)) {
+      jsonData = {
+        serverDomain: values.domain,
+        crlLifetime: certificateRevocation.value,
+        deviceLifetime: deviceLifetime.value,
+        userLifetime: userAccountLifetime.value,
+        sipConfig: sipConfigurationTemplate,
+        signingAlgorithm: "SHA512WITHRSA",
+      };
+      axios(configApiCall(api_path_post_install_server, "POST", jsonData, null))
+        .then((response) => {
+          callBackServerParameters();
+        })
+        .catch((error) => {
+          console.log("Error installing server parameters: " + error);
+        });
+    } else {
+      props.setError(true);
+      props.setErrorMessage("Please enter a valid CORS domain URL.");
     }
+    // Check https://www.geeksforgeeks.org/file-uploading-in-react-js/ for the file upload
+  }
+
+  const handleCertificateRevocationChange = (event) => {
+    setCertificateRevocation(
+      tool.retrieveArrayElement(event.target.value, certificateRevocationTypes)
+    );
+  };
 
+  const handleDeviceLifetimeChange = (event) => {
+    setDeviceLifetime(
+      tool.retrieveArrayElement(event.target.value, deviceLifetimeTypes)
+    );
+  };
 
-    return (
-        <Formik validationSchema={validationSchema}
-                initialValues={initialValues}
-                onSubmit={values => {
-                    handleSubmit(values);
-                }}
-        >
-            {(props) => {
-                const {
-                    values,
-                    touched,
-                    errors,
-                    handleSubmit,
-                    handleChange,
-                    handleBlur,
-                } = props;
-                return (
-                    <form className={classes.form} noValidate onSubmit={handleSubmit}>
-                        <Typography variant="h5" gutterBottom color="primary">Server Parameters</Typography>
-                        <Typography variant="body1" gutterBottom>The global parameters cover the general configuration
-                            of the server's engine.</Typography>
-                        <Typography variant="subtitle1" gutterBottom>CORS Domain Name<CustomPopupState
-                            message="Set the domain of the web client server to connect to the JAMS admin dashboard and Jami accounts. It is also used to define where the clients should download CRLs and submit OCSP queries. In case you are running a proxied instance (i.e. JAMS behind IIS), please make sure to set this field correctly, otherwise devices will not be able to download CRLs or validate certificates."/></Typography>
-                        <Typography variant="body1" gutterBottom>The domain name of your web client server. Requires
-                            http:// or https://</Typography>
-                        <TextField
-                            variant="outlined"
-                            margin="normal"
-                            required
-                            fullWidth
-                            id="domain"
-                            label="Domain"
-                            name="domain"
-                            autoComplete="domain"
-                            autoFocus
-                            value={values.domain}
-                            onChange={handleChange}
-                            onBlur={handleBlur}
-                            helperText={(errors.domain && touched.domain) && errors.domain}
-                        />
-                        <Typography variant="subtitle1" gutterBottom>Certificate Revocation List
-                            Lifetime<CustomPopupState
-                                message="Set the domain of the web client server to connect to the JAMS admin dashboard and Jami accounts. It is also used to define where the clients should download CRLs and submit OCSP queries. In case you are running a proxied instance (i.e. JAMS behind IIS), please make sure to set this field correctly, otherwise devices will not be able to download CRLs or validate certificates."/></Typography>
-                        <Select
-                            labelId="certificate-revocation-select-label"
-                            fullWidth
-                            value={certificateRevocation.value}
-                            onChange={handleCertificateRevocationChange}
-                            variant="outlined"
-                            children={certificateRevocationTypesItems}
-                        />
-                        <Typography variant="subtitle1" gutterBottom>Device Lifetime</Typography>
-                        <Select
-                            labelId="device-lifetime-select-label"
-                            fullWidth
-                            value={deviceLifetime.value}
-                            onChange={handleDeviceLifetimeChange}
-                            variant="outlined"
-                            children={deviceLifetimeTypesItems}
-                        />
-                        <Typography variant="subtitle1" gutterBottom>User Account Lifetime</Typography>
-                        <Select
-                            labelId="user-account-lifetime-select-label"
-                            fullWidth
-                            value={userAccountLifetime.value}
-                            onChange={handleUserAccountLifetimeChange}
-                            isDisabled={userlifeDisabled}
-                            variant="outlined"
-                            children={userAccountLifetimeTypesItems}
-                        />
-                        {userlifeDisabled ? <span class="spanError"> Account lifetime should be > to device lifetime.</span> : null}
-                        <Typography variant="subtitle1" gutterBottom>SIP Configuration Template</Typography>
-                        <Input
-                            fullWidth
-                            type="file"
-                            onChange={handleSipConfigurationTemplateChange}
-                        />
-
-                        <Button
-                            type="submit"
-                            fullWidth
-                            variant="contained"
-                            color="primary"
-                            className={classes.submit}
-                        >
-                            Set Server Parameters
-                        </Button>
-
-                    </form>
-                );
-            }
-            }
-        </Formik>
+  const handleUserAccountLifetimeChange = (event) => {
+    setUserAccountLifetime(
+      tool.retrieveArrayElement(event.target.value, userAccountLifetimeTypes)
     );
-}
\ No newline at end of file
+  };
+
+  const handleSipConfigurationTemplateChange = (event) => {
+    setSIPCertificateTemplate(event.target.files[0]);
+  };
+
+  return (
+    <Formik
+      validationSchema={validationSchema}
+      initialValues={initialValues}
+      onSubmit={(values) => {
+        handleSubmit(values);
+      }}
+    >
+      {(props) => {
+        const {
+          values,
+          touched,
+          errors,
+          handleSubmit,
+          handleChange,
+          handleBlur,
+        } = props;
+        return (
+          <form className={classes.form} noValidate onSubmit={handleSubmit}>
+            <Typography variant="h5" gutterBottom color="primary">
+              Server Parameters
+            </Typography>
+            <Typography variant="body1" gutterBottom>
+              The global parameters cover the general configuration of the
+              server's engine.
+            </Typography>
+            <Typography variant="subtitle1" gutterBottom>
+              CORS Domain Name
+              <CustomPopupState message="Set the domain of the web client server to connect to the JAMS admin dashboard and Jami accounts. It is also used to define where the clients should download CRLs and submit OCSP queries. In case you are running a proxied instance (i.e. JAMS behind IIS), please make sure to set this field correctly, otherwise devices will not be able to download CRLs or validate certificates." />
+            </Typography>
+            <Typography variant="body1" gutterBottom>
+              The domain name of your web client server. Requires http:// or
+              https://
+            </Typography>
+            <TextField
+              variant="outlined"
+              margin="normal"
+              required
+              fullWidth
+              id="domain"
+              label="Domain"
+              name="domain"
+              autoComplete="domain"
+              autoFocus
+              value={values.domain}
+              onChange={handleChange}
+              onBlur={handleBlur}
+              helperText={errors.domain && touched.domain && errors.domain}
+            />
+            <Typography variant="subtitle1" gutterBottom>
+              Certificate Revocation List Lifetime
+              <CustomPopupState message="Set the lifetime of the CRL which contains the list of the certificates that have been revoked before their scheduled expiration date." />
+            </Typography>
+            <Select
+              labelId="certificate-revocation-select-label"
+              fullWidth
+              value={certificateRevocation.value}
+              onChange={handleCertificateRevocationChange}
+              variant="outlined"
+              children={certificateRevocationTypesItems}
+            />
+            <Typography variant="subtitle1" gutterBottom>
+              Device Lifetime
+            </Typography>
+            <Select
+              labelId="device-lifetime-select-label"
+              fullWidth
+              value={deviceLifetime.value}
+              onChange={handleDeviceLifetimeChange}
+              variant="outlined"
+              children={deviceLifetimeTypesItems}
+            />
+            <Typography variant="subtitle1" gutterBottom>
+              User Account Lifetime
+            </Typography>
+            <Select
+              labelId="user-account-lifetime-select-label"
+              fullWidth
+              value={userAccountLifetime.value}
+              onChange={handleUserAccountLifetimeChange}
+              isDisabled={userlifeDisabled}
+              variant="outlined"
+              children={userAccountLifetimeTypesItems}
+            />
+            {userlifeDisabled ? (
+              <span class="spanError">
+                {" "}
+                Account lifetime should be > to device lifetime.
+              </span>
+            ) : null}
+            <Typography variant="subtitle1" gutterBottom>
+              SIP Configuration Template
+            </Typography>
+            <Input
+              fullWidth
+              type="file"
+              onChange={handleSipConfigurationTemplateChange}
+            />
+
+            <Button
+              type="submit"
+              fullWidth
+              variant="contained"
+              color="primary"
+              className={classes.submit}
+            >
+              Set Server Parameters
+            </Button>
+          </form>
+        );
+      }}
+    </Formik>
+  );
+}