diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java
index d8752dbc883ca9ba22f932fe36d03ace86ae1b32..f3d6adeccf68ceee9791d7df8412836223ee7237 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java
@@ -266,9 +266,6 @@ public class TapSchema implements EntitiesContainer<Schema>, Serializable {
 
             if (!keyFound) {
                 boolean setKeyToRemove = true;
-                if (Tasman.ALLOWS_FICTITIOUS_KEYS) {
-                    // TODO
-                }
                 if (setKeyToRemove) {
                     String[] fromColumns = new String[kcPropsById.size()];
                     String[] targetColumns = new String[kcPropsById.size()];
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/Credentials.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/Credentials.java
index dfc027253636396c1b1a43872e3735391164e633..35695c942af3d4fbf06393da2b7fcf0f3e45af29 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/Credentials.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/Credentials.java
@@ -39,14 +39,14 @@ public class Credentials implements Serializable {
     private static final long serialVersionUID = 1153912575502196261L;
     private static final Logger LOG = LoggerFactory.getLogger(Credentials.class);
 
+    private DatabaseType databaseType;
+
     private String hostname;
     private int port;
     private String username;
     private String password;
     private String database;
 
-    private DatabaseType databaseType;
-
     public Credentials() {
         this(DatabaseType.MYSQL);
     }
@@ -56,6 +56,16 @@ public class Credentials implements Serializable {
         this.setDefaults();
     }
 
+    // Copy constructor
+    public Credentials(Credentials credentials) {
+        this(credentials.getDatabaseType());
+        this.hostname = credentials.getHostname();
+        this.port = credentials.getPort();
+        this.username = credentials.getUsername();
+        this.password = credentials.getPassword();
+        this.database = credentials.getDatabase();
+    }
+
     /**
      * The name of the server that hosts the RDBMS.
      */
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/PropertyModel.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/PropertyModel.java
index 77f4ab5c90d58a3298cfefdd2bdccecf63921ea7..393b337839db212845b45e967779266fec3cb8d9 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/PropertyModel.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/PropertyModel.java
@@ -65,6 +65,8 @@ public class PropertyModel implements Serializable {
                     defaultValue = Long.parseLong(strDefVal);
                 } else if (type == Float.class) {
                     defaultValue = Float.parseFloat(strDefVal);
+                } else if (type == Boolean.class) {
+                    defaultValue = Boolean.parseBoolean(strDefVal);
                 } else {
                     throw new UnsupportedOperationException("Default value for type " + type.getCanonicalName() + " not supported yet.");
                 }
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TapSchemaModels.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TapSchemaModels.java
index 1721f6152041a229ebccb3787456a346e8f518fc..3f4f817eafc298161c99a82a1fdad25e374de508 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TapSchemaModels.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/TapSchemaModels.java
@@ -24,8 +24,10 @@ package it.inaf.ia2.tsm.model;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import javax.xml.bind.JAXB;
 
@@ -102,4 +104,14 @@ public class TapSchemaModels {
     public static TableModel getTableModel(String tableName, String version) {
         return getTapSchemaModel(version).getTables().get(tableName);
     }
+
+    public static List<String> getAvailableVersions() {
+        List<String> versions = new ArrayList<>();
+        Iterator<TapSchemaModel> ite = getIterator();
+        while (ite.hasNext()) {
+            TapSchemaModel tapSchemaModel = ite.next();
+            versions.add(tapSchemaModel.getVersion());
+        }
+        return versions;
+    }
 }
diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/Tasman.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/Tasman.java
index 11fc66eaf444a1a8f42c2f47ee2266944145aa47..fa1c8f8639b8bc90817a91d6a4bc215a297cb6c4 100644
--- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/Tasman.java
+++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/model/Tasman.java
@@ -34,7 +34,6 @@ import java.util.Properties;
 public class Tasman {
 
     public static final String[] XML_MODEL_FILES;
-    public static final boolean ALLOWS_FICTITIOUS_KEYS;
 
     static {
         try (InputStream in = Tasman.class.getClassLoader().getResourceAsStream("core.properties")) {
@@ -46,8 +45,6 @@ public class Tasman {
                 String suffix = models[i];
                 XML_MODEL_FILES[i] = "tap_schema" + File.separator + "tap_schema-" + suffix + ".xml";
             }
-
-            ALLOWS_FICTITIOUS_KEYS = Boolean.parseBoolean(props.getProperty("allow_fictitious_keys"));
         } catch (IOException e) {
             throw new ExceptionInInitializerError(e);
         }
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/ConfigurationManager.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/ConfigurationManager.java
index 75d560e27e30a09fda34805a6396695f51206845..8a11d973f428f7808bef1fe2dcc478f13eef3e2e 100644
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/ConfigurationManager.java
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/ConfigurationManager.java
@@ -233,18 +233,11 @@ public class ConfigurationManager {
      * @return true if the credentials has been deleted from the list, false
      * otherwise.
      */
-    public synchronized boolean deleteCredentials(String username, TapCredentials credentials) {
+    public synchronized boolean deleteCredentials(String username, int credentialsIndex) {
         for (UserConfiguration user : usersConfig.getUsers()) {
             if (user.getUsername().equals(username)) {
-                Iterator<TapCredentials> ite = user.getCredentialsInfo().iterator();
-                while (ite.hasNext()) {
-                    TapCredentials tapCredentials = ite.next();
-                    if (tapCredentials.equals(credentials)) {
-                        ite.remove();
-                        updateUsersConfigurationFile();
-                        return true;
-                    }
-                }
+                user.getCredentialsInfo().remove(credentialsIndex);
+                return true;
             }
         }
         return false;
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsDialogResource.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsDialogResource.java
deleted file mode 100644
index 7916bb3204741b613af62aa250178edeb7b36cd6..0000000000000000000000000000000000000000
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsDialogResource.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * _____________________________________________________________________________
- * 
- * INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
- * Trieste INAF - IA2 Italian Center for Astronomical Archives
- * _____________________________________________________________________________
- * 
- * Copyright (C) 2017 Istituto Nazionale di Astrofisica
- * 
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License Version 3 as published by the
- * Free Software Foundation.
- * 
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- * 
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 51
- * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package it.inaf.ia2.tsm.webapp;
-
-import javax.ws.rs.Path;
-import javax.enterprise.context.RequestScoped;
-import javax.inject.Inject;
-import javax.ws.rs.POST;
-import javax.ws.rs.QueryParam;
-
-/**
- * REST Web Service for setting opening dialog status using JavaScript. This is
- * necessary to conditionally disable JSF validation when dialog is closed.
- *
- * @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
- */
-@Path("credentialsDialog")
-@RequestScoped
-public class CredentialsDialogResource {
-
-    @Inject
-    CredentialsEditing credentialsEditing;
-
-    @POST
-    public void setOpened(@QueryParam("opened") boolean opened) {
-        credentialsEditing.setCredentialsDialogOpened(opened);
-    }
-}
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsEditing.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsEditing.java
index f2d9ad91c4f8c48c76e219c9eb55f1daf7075478..5bb68a68a61b0b4fc50fac21e2b84e1307d8a505 100644
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsEditing.java
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/CredentialsEditing.java
@@ -25,6 +25,10 @@ package it.inaf.ia2.tsm.webapp;
 import it.inaf.ia2.tsm.webapp.xmlconfig.SeparatedCredentials;
 import it.inaf.ia2.tsm.datalayer.Credentials;
 import it.inaf.ia2.tsm.datalayer.DBWrapper;
+import it.inaf.ia2.tsm.model.TapSchemaModels;
+import it.inaf.ia2.tsm.webapp.env.UIModal;
+import it.inaf.ia2.tsm.webapp.xmlconfig.JoinedCredentials;
+import it.inaf.ia2.tsm.webapp.xmlconfig.TapCredentials;
 import java.io.IOException;
 import java.io.Serializable;
 import java.sql.SQLException;
@@ -58,54 +62,87 @@ public class CredentialsEditing implements Serializable {
     @Inject
     private SchemaSelectionBean schemaSelectionBean;
 
+    private Integer credentialsInEditing;
+    private Integer credentialsToRemove;
+
+    private UIModal.StatusObserver credentialsDialogStatusObserver;
     private boolean credentialsDialogOpened;
 
+    private List<String> tapSchemaVersions;
+
+    private boolean separateCredentials;
     private Credentials sourceCredentials;
     private Credentials tapSchemaCredentials;
-    private boolean separateCredentials;
-    private int currentEditingRow;
+    private String tapSchemaName;
+    private String tapSchemaVersion;
+    private boolean hasObscore;
 
-    public void test() {
-        String x = "";
-    }
-    
     @PostConstruct
     public void init() {
-        sourceCredentials = new Credentials();
-        tapSchemaCredentials = new Credentials();
+        this.credentialsDialogStatusObserver = new UIModal.StatusObserver() {
+            @Override
+            public void statusChanged(boolean isOpen) {
+                credentialsDialogOpened = isOpen;
+            }
+        };
+        this.tapSchemaVersions = TapSchemaModels.getAvailableVersions();
     }
 
-    public List getSavedCredentials() {
+    public List<TapCredentials> getSavedCredentials() {
         return user.getUserConfiguration().getCredentialsInfo();
     }
 
-    public void editCredentials(Credentials credentials, int index) {
-        this.sourceCredentials = credentials;
-        separateCredentials = false;
-        currentEditingRow = index;
-    }
+    public void editCredentials(int index) {
+        credentialsInEditing = index;
+        TapCredentials credentials = getSavedCredentials().get(index);
+
+        if (credentials instanceof JoinedCredentials) {
 
-    public void editSeparateCredentials(SeparatedCredentials sc, int index) {
-        this.sourceCredentials = sc.getSourceCredentials();
-        this.tapSchemaCredentials = sc.getTapSchemaCredentials();
-        currentEditingRow = index;
-        separateCredentials = true;
+            JoinedCredentials joinedCredentials = (JoinedCredentials) credentials;
+            separateCredentials = false;
+            sourceCredentials = new Credentials(joinedCredentials.getCredentials());
+            // in case the user wants to split credentials
+            tapSchemaCredentials = new Credentials();
+
+        } else if (credentials instanceof SeparatedCredentials) {
+
+            SeparatedCredentials separatedCredentials = (SeparatedCredentials) credentials;
+            separateCredentials = true;
+            sourceCredentials = new Credentials(separatedCredentials.getSourceCredentials());
+            tapSchemaCredentials = new Credentials(separatedCredentials.getTapSchemaCredentials());
+        }
+
+        tapSchemaName = credentials.getTapSchemaName();
+        tapSchemaVersion = credentials.getTapSchemaVersion();
+        hasObscore = credentials.isHasObscore();
     }
 
     public void addNewCredentials() {
         separateCredentials = false;
-        this.sourceCredentials = new Credentials();
-        this.tapSchemaCredentials = new Credentials();
-        currentEditingRow = getSavedCredentials().size();
+        sourceCredentials = new Credentials();
+        tapSchemaCredentials = new Credentials();
+        tapSchemaName = "";
+        tapSchemaVersion = "";
+        hasObscore = false;
     }
 
-    public String loginWithSingleCredentials(Credentials credentials) {
-        LOG.debug("Login with single credentials");
-        return loginWithDBWrapper(new DBWrapper(credentials));
+//    public void editCredentials(Credentials credentials, int index) {
+//        this.sourceCredentials = credentials;
+//        separateCredentials = false;
+//        currentEditingRow = index;
+//    }
+//
+//    public void editSeparateCredentials(SeparatedCredentials sc, int index) {
+//        this.sourceCredentials = sc.getSourceCredentials();
+//        this.tapSchemaCredentials = sc.getTapSchemaCredentials();
+//        currentEditingRow = index;
+//        separateCredentials = true;
+//    }
+    public String loginWithJoinedCredentials(JoinedCredentials credentials) {
+        return loginWithDBWrapper(new DBWrapper(credentials.getCredentials()));
     }
 
     public String loginWithSeparatedCredentials(Credentials sourceCredentials, Credentials tapSchemaCredentials) {
-        LOG.debug("Login with separated credentials");
         return loginWithDBWrapper(new DBWrapper(sourceCredentials, tapSchemaCredentials));
     }
 
@@ -144,6 +181,18 @@ public class CredentialsEditing implements Serializable {
 //        config.updateUsersConfigurationFile();
     }
 
+    public UIModal.StatusObserver getCredentialsDialogStatus() {
+        return credentialsDialogStatusObserver;
+    }
+
+    public List<String> getTapSchemaVersions() {
+        return tapSchemaVersions;
+    }
+
+    public void setTapSchemaVersions(List<String> tapSchemaVersions) {
+        this.tapSchemaVersions = tapSchemaVersions;
+    }
+
     public boolean isSeparateCredentials() {
         return separateCredentials;
     }
@@ -152,6 +201,41 @@ public class CredentialsEditing implements Serializable {
         this.separateCredentials = separateCredentials;
     }
 
+//    public void separateCredentialsChanged() {
+//        if (separateCredentials) {
+//            Credentials credentials = getJoinedCredentialsInEditing().getCredentials();
+//            SeparatedCredentials separatedCredentials = new SeparatedCredentials();
+//            separatedCredentials.setSourceCredentials(credentials);
+//            credentialsInEditing = separatedCredentials;
+//        } else {
+//            Credentials credentials = getSeparatedCredentialsInEditing().getSourceCredentials();
+//            JoinedCredentials joinedCredentials = new JoinedCredentials();
+//            joinedCredentials.setCredentials(credentials);
+//            credentialsInEditing = joinedCredentials;
+//        }
+//    }
+//
+//    public JoinedCredentials getJoinedCredentialsInEditing() {
+//        if (credentialsInEditing instanceof JoinedCredentials) {
+//            return (JoinedCredentials) credentialsInEditing;
+//        }
+//        return null;
+//    }
+//
+//    public SeparatedCredentials getSeparatedCredentialsInEditing() {
+//        if (credentialsInEditing instanceof SeparatedCredentials) {
+//            return (SeparatedCredentials) credentialsInEditing;
+//        }
+//        return null;
+//    }
+    public boolean isCredentialsDialogOpened() {
+        return credentialsDialogOpened;
+    }
+
+    public void setCredentialsDialogOpened(boolean credentialsDialogOpened) {
+        this.credentialsDialogOpened = credentialsDialogOpened;
+    }
+
     public Credentials getSourceCredentials() {
         return sourceCredentials;
     }
@@ -168,11 +252,27 @@ public class CredentialsEditing implements Serializable {
         this.tapSchemaCredentials = tapSchemaCredentials;
     }
 
-    public boolean isCredentialsDialogOpened() {
-        return credentialsDialogOpened;
+    public String getTapSchemaName() {
+        return tapSchemaName;
     }
 
-    public void setCredentialsDialogOpened(boolean credentialsDialogOpened) {
-        this.credentialsDialogOpened = credentialsDialogOpened;
+    public void setTapSchemaName(String tapSchemaName) {
+        this.tapSchemaName = tapSchemaName;
+    }
+
+    public String getTapSchemaVersion() {
+        return tapSchemaVersion;
+    }
+
+    public void setTapSchemaVersion(String tapSchemaVersion) {
+        this.tapSchemaVersion = tapSchemaVersion;
+    }
+
+    public boolean isHasObscore() {
+        return hasObscore;
+    }
+
+    public void setHasObscore(boolean hasObscore) {
+        this.hasObscore = hasObscore;
     }
 }
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/ApplicationConfig.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/ApplicationConfig.java
index c3259e8797ebf5d0992879f65c724fb7882d87e0..49143d69cdb37a76545b5a9ab81332d794770b7e 100644
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/ApplicationConfig.java
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/ApplicationConfig.java
@@ -45,7 +45,6 @@ public class ApplicationConfig extends Application {
      * out calling this method in getClasses().
      */
     private void addRestResourceClasses(Set<Class<?>> resources) {
-        resources.add(it.inaf.ia2.tsm.webapp.CredentialsDialogResource.class);
         resources.add(it.inaf.ia2.tsm.webapp.TapSchemaLoaderResource.class);
         resources.add(it.inaf.ia2.tsm.webapp.env.KeepAliveResource.class);
     }
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/UIModal.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/UIModal.java
new file mode 100644
index 0000000000000000000000000000000000000000..5444db324fd6b0cbe079556a6ad3fb74bdafda2a
--- /dev/null
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/env/UIModal.java
@@ -0,0 +1,71 @@
+/*
+ * _____________________________________________________________________________
+ * 
+ * INAF - OATS National Institute for Astrophysics - Astronomical Observatory of
+ * Trieste INAF - IA2 Italian Center for Astronomical Archives
+ * _____________________________________________________________________________
+ * 
+ * Copyright (C) 2017 Istituto Nazionale di Astrofisica
+ * 
+ * This program is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License Version 3 as published by the
+ * Free Software Foundation.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+package it.inaf.ia2.tsm.webapp.env;
+
+import java.io.IOException;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.UIComponentBase;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+/**
+ *
+ * @author Sonia Zorba {@literal <zorba at oats.inaf.it>}
+ */
+@FacesComponent(tagName = "modal", namespace = "http://ia2.inaf.it/component", createTag = true)
+public class UIModal extends UIComponentBase {
+
+    public static abstract class StatusObserver {
+
+        public abstract void statusChanged(boolean isOpen);
+    }
+
+    @Override
+    public void decode(FacesContext context) {
+
+        if (getAttributes().containsKey("status-observer")) {
+            StatusObserver status = (StatusObserver) getAttributes().get("status-observer");
+            boolean open = Boolean.parseBoolean((String) getAttributes().get("open"));
+            status.statusChanged(open);
+        }
+    }
+
+    @Override
+    public String getFamily() {
+        return "modal";
+    }
+
+    @Override
+    public void encodeBegin(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("<div class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" id=\"");
+        writer.write(getClientId());
+        writer.write("\">");
+    }
+
+    @Override
+    public void encodeEnd(FacesContext context) throws IOException {
+        ResponseWriter writer = context.getResponseWriter();
+        writer.write("</div>");
+    }
+}
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/JoinedCredentials.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/JoinedCredentials.java
index 731c1bdfc58f6f26d8c5096c2da240b55585a5a7..818bcac398894c84175a451e3b9cb58a8bd3cf63 100644
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/JoinedCredentials.java
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/JoinedCredentials.java
@@ -36,12 +36,19 @@ public class JoinedCredentials extends TapCredentials {
     private Credentials credentials;
 
     public JoinedCredentials() {
+        credentials = new Credentials();
     }
 
     public JoinedCredentials(Credentials credentials) {
         this.credentials = credentials;
     }
 
+    // Copy constructor
+    public JoinedCredentials(JoinedCredentials joinedCredentials) {
+        super(joinedCredentials);
+        this.credentials = new Credentials(joinedCredentials.getCredentials());
+    }
+
     public Credentials getCredentials() {
         return credentials;
     }
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/SeparatedCredentials.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/SeparatedCredentials.java
index 4024a60d5c65dc947719ebb8ed0064b01ac6c0ae..a8ecbbe349a4c41838061db84a84d04e4d3cedeb 100644
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/SeparatedCredentials.java
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/SeparatedCredentials.java
@@ -38,6 +38,8 @@ public class SeparatedCredentials extends TapCredentials {
     private Credentials tapSchemaCredentials;
 
     public SeparatedCredentials() {
+        this.sourceCredentials = new Credentials();
+        this.tapSchemaCredentials = new Credentials();
     }
 
     public SeparatedCredentials(Credentials sourceCredentials, Credentials tapSchemaCredentials) {
@@ -45,6 +47,13 @@ public class SeparatedCredentials extends TapCredentials {
         this.tapSchemaCredentials = tapSchemaCredentials;
     }
 
+    // Copy constructor
+    public SeparatedCredentials(SeparatedCredentials separatedCredentials) {
+        super(separatedCredentials);
+        this.sourceCredentials = new Credentials(separatedCredentials.getSourceCredentials());
+        this.tapSchemaCredentials = new Credentials(separatedCredentials.getTapSchemaCredentials());
+    }
+
     @XmlElement(name = "source-credentials")
     public Credentials getSourceCredentials() {
         return sourceCredentials;
diff --git a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/TapCredentials.java b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/TapCredentials.java
index f4c8c1a6185b5b8f22f63e12438bd2cd5d41a1ec..2924a8176e9f86a7a0fbac50f11cdb57b8f7bf91 100644
--- a/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/TapCredentials.java
+++ b/TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/xmlconfig/TapCredentials.java
@@ -37,6 +37,16 @@ public abstract class TapCredentials implements Serializable {
     private String tapSchemaVersion;
     private boolean hasObscore;
 
+    public TapCredentials() {
+    }
+
+    // Copy constructor
+    public TapCredentials(TapCredentials tapCredentials) {
+        this.tapSchemaName = tapCredentials.getTapSchemaName();
+        this.tapSchemaVersion = tapCredentials.getTapSchemaVersion();
+        this.hasObscore = tapCredentials.isHasObscore();
+    }
+
     @XmlElement(name = "tap_schema_name")
     public String getTapSchemaName() {
         return tapSchemaName;
diff --git a/TASMAN-webapp/src/main/webapp/credentialsEditing.xhtml b/TASMAN-webapp/src/main/webapp/credentialsEditing.xhtml
index 77a80ccf5b6561a052e8bbb2519ba8a579a7d160..fe29f2cf5ae6c8b08b214b81407d1684955eb53c 100644
--- a/TASMAN-webapp/src/main/webapp/credentialsEditing.xhtml
+++ b/TASMAN-webapp/src/main/webapp/credentialsEditing.xhtml
@@ -4,7 +4,8 @@
                 xmlns:f="http://java.sun.com/jsf/core"
                 xmlns:h="http://java.sun.com/jsf/html"
                 xmlns:ui="http://java.sun.com/jsf/facelets" 
-                xmlns:tsm_components="http://xmlns.jcp.org/jsf/composite/tsm_components">
+                xmlns:tsm_components="http://xmlns.jcp.org/jsf/composite/tsm_components"
+                xmlns:ia2="http://ia2.inaf.it/component">
     <ui:define name="title">TASMAN - Credentials insertion page</ui:define>
     <ui:define name="scripts">
         <h:outputScript library="js" name="credentials.js"></h:outputScript>
@@ -41,7 +42,7 @@
                                         (${c.databaseType eq 'MYSQL' ? 'MySQL' : 'Postgres'}) ${c.hostname}:${c.port} ${c.username}
                                     </div>
                                     <div class="col-xs-2 text-right">
-                                        <h:commandLink action="#{credentialsInsertion.loginWithSingleCredentials(c)}" title="Login" immediate="true">
+                                        <h:commandLink action="#{credentialsInsertion.loginWithJoinedCredentials(c)}" title="Login" immediate="true">
                                             <span class="glyphicon glyphicon-log-in"></span>
                                         </h:commandLink>
                                     </div>
@@ -83,7 +84,7 @@
                     </div>
                 </h:panelGroup>
 
-                <div class="modal fade" tabindex="-1" role="dialog" id="credentials-modal">
+                <ia2:modal id="credentials-modal" visibility-status="#{credentialsInsertion.credentialsDialogStatus}">
                     <div class="modal-dialog">
                         <div class="modal-content">
                             <div class="modal-header">
@@ -92,127 +93,151 @@
                             </div>
                             <h:panelGroup id="credentials-modal-body" layout="block" class="modal-body">
 
-                                <div class="panel panel-primary">
-                                    <h:panelGroup id="source_credentials_title" layout="block" class="panel-heading#{credentialsInsertion.separateCredentials ? '' : ' hide'}">
-                                        <h3 class="panel-title">Source credentials</h3>
-                                    </h:panelGroup>
-                                    <div class="panel-body">
-                                        <h:panelGroup layout="block" class="form-horizontal" id="source_credentials">
-                                            <div class="form-group">
-                                                <h:outputLabel for="source_dbtype" class="col-sm-2 control-label">Database type</h:outputLabel>
-                                                <div class="col-sm-10">
-                                                    <h:selectOneMenu id="source_dbtype" value="#{credentialsInsertion.sourceCredentials.databaseType}" class="form-control">
-                                                        <f:selectItem itemValue="MYSQL" itemLabel="MySQL" />
-                                                        <f:selectItem itemValue="POSTGRES" itemLabel="Postgres" />
-                                                        <f:ajax execute="@this" render=":main:source_credentials" listener="#{credentialsInsertion.sourceCredentials.setDefaults()}" />
-                                                    </h:selectOneMenu>
-                                                </div>
-                                            </div>
-                                            <div class="form-group">
-                                                <h:outputLabel for="source_hostname" class="col-sm-2 control-label">Hostname</h:outputLabel>
-                                                <div class="col-sm-10">
-                                                    <h:inputText id="source_hostname" value="#{credentialsInsertion.sourceCredentials.hostname}" class="form-control" required="#{credentialsInsertion.credentialsDialogOpened}" requiredMessage="Hostname is required"/>
-                                                    <h:message for="source_hostname" class="text-danger" /> 
-                                                </div>
-                                            </div>
-                                            <div class="form-group">
-                                                <h:outputLabel for="source_port" class="col-sm-2 control-label">Port</h:outputLabel>
-                                                <div class="col-sm-10">
-                                                    <h:inputText id="source_port" value="#{credentialsInsertion.sourceCredentials.port}" class="form-control" required="#{credentialsInsertion.credentialsDialogOpened}" requiredMessage="Port is required"/>
-                                                    <h:message for="source_port" class="text-danger" /> 
-                                                </div>
+                                <h:panelGroup class="row" layout="block" id="credentials_panels_wrapper">
+                                    <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-6':'col-xs-12'}">
+                                        <div class="panel panel-primary">
+                                            <div class="panel-heading#{credentialsInsertion.separateCredentials ? '' : ' hide'}">
+                                                <h3 class="panel-title">Source credentials</h3>
                                             </div>
-                                            <div class="form-group">
-                                                <h:outputLabel for="source_username" class="col-sm-2 control-label">Username</h:outputLabel>
-                                                <div class="col-sm-10">
-                                                    <h:inputText id="source_username" value="#{credentialsInsertion.sourceCredentials.username}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Username is required"/>
-                                                    <h:message for="source_username" class="text-danger" /> 
-                                                </div>
+                                            <div class="panel-body">
+                                                <h:panelGroup layout="block" class="form-horizontal" id="source_credentials">
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="source_dbtype" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database type</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:selectOneMenu id="source_dbtype" value="#{credentialsInsertion.sourceCredentials.databaseType}" class="form-control">
+                                                                <f:selectItem itemValue="MYSQL" itemLabel="MySQL" />
+                                                                <f:selectItem itemValue="POSTGRES" itemLabel="Postgres" />
+                                                                <f:ajax execute="@this" render=":main:source_credentials" listener="#{credentialsInsertion.sourceCredentials.setDefaults()}" />
+                                                            </h:selectOneMenu>
+                                                        </div>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="source_hostname" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Hostname</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="source_hostname" value="#{credentialsInsertion.sourceCredentials.hostname}" class="form-control" required="#{credentialsInsertion.credentialsDialogOpened}" requiredMessage="Hostname is required"/>
+                                                            <h:message for="source_hostname" class="text-danger" /> 
+                                                        </div>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="source_port" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Port</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="source_port" value="#{credentialsInsertion.sourceCredentials.port}" class="form-control" required="#{credentialsInsertion.credentialsDialogOpened}" requiredMessage="Port is required"/>
+                                                            <h:message for="source_port" class="text-danger" /> 
+                                                        </div>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="source_username" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Username</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="source_username" value="#{credentialsInsertion.sourceCredentials.username}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Username is required"/>
+                                                            <h:message for="source_username" class="text-danger" /> 
+                                                        </div>
+                                                    </div>
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="source_password" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Password</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputSecret id="source_password" value="#{credentialsInsertion.sourceCredentials.password}" class="form-control" redisplay="true" />
+                                                            <h:message for="source_password" class="text-danger" /> 
+                                                        </div>
+                                                    </div> 
+                                                    <h:panelGroup class="form-group" layout="block" rendered="#{credentialsInsertion.sourceCredentials.databaseType eq 'POSTGRES'}">
+                                                        <h:outputLabel for="source_database" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="source_database" value="#{credentialsInsertion.sourceCredentials.database}" class="form-control" />
+                                                            <h:message for="source_database" class="text-danger" /> 
+                                                        </div>
+                                                    </h:panelGroup>                        
+                                                </h:panelGroup>
                                             </div>
-                                            <div class="form-group">
-                                                <h:outputLabel for="source_password" class="col-sm-2 control-label">Password</h:outputLabel>
-                                                <div class="col-sm-10">
-                                                    <h:inputSecret id="source_password" value="#{credentialsInsertion.sourceCredentials.password}" class="form-control" redisplay="true" />
-                                                    <h:message for="source_password" class="text-danger" /> 
-                                                </div>
-                                            </div> 
-                                            <h:panelGroup class="form-group" layout="block" rendered="#{credentialsInsertion.sourceCredentials.databaseType eq 'POSTGRES'}">
-                                                <h:outputLabel for="source_database" class="col-sm-2 control-label">Database</h:outputLabel>
-                                                <div class="col-sm-10">
-                                                    <h:inputText id="source_database" value="#{credentialsInsertion.sourceCredentials.database}" class="form-control" />
-                                                    <h:message for="source_database" class="text-danger" /> 
-                                                </div>
-                                            </h:panelGroup>                        
-                                        </h:panelGroup>
+                                        </div>
                                     </div>
-                                </div>
-
-                                <div>
-                                    <label>
-                                        <h:selectBooleanCheckbox value="#{credentialsInsertion.separateCredentials}">
-                                            <f:ajax render="tap_schema_credentials source_credentials_title" execute="@this" />
-                                        </h:selectBooleanCheckbox>
-                                        Separate credentials
-                                    </label>
-                                </div>
-
-                                <h:panelGroup id="tap_schema_credentials">
-                                    <h:panelGroup layout="block" class="panel panel-primary" rendered="#{credentialsInsertion.separateCredentials}">
-                                        <h:panelGroup layout="block" class="panel-heading" rendered="#{credentialsInsertion.separateCredentials}">
-                                            <h3 class="panel-title">TAP_SCHEMA credentials</h3>
-                                        </h:panelGroup>
-                                        <div class="panel-body">
-                                            <div class="form-horizontal">
-                                                <div class="form-group">
-                                                    <h:outputLabel for="tap_schema_dbtype" class="col-sm-2 control-label">Database type</h:outputLabel>
-                                                    <div class="col-sm-10">
-                                                        <h:selectOneMenu id="tap_schema_dbtype" value="#{credentialsInsertion.tapSchemaCredentials.databaseType}" class="form-control">
-                                                            <f:selectItem itemValue="MYSQL" itemLabel="MySQL" />
-                                                            <f:selectItem itemValue="POSTGRES" itemLabel="Postgres" />
-                                                            <f:ajax execute="@this" render=":main:tap_schema_credentials" listener="#{credentialsInsertion.tapSchemaCredentials.setDefaults()}" />
-                                                        </h:selectOneMenu>
+                                    <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-6':'col-xs-12'}">
+                                        <h:panelGroup layout="block" class="panel panel-primary" rendered="#{credentialsInsertion.separateCredentials}">
+                                            <h:panelGroup layout="block" class="panel-heading" rendered="#{credentialsInsertion.separateCredentials}">
+                                                <h3 class="panel-title">TAP_SCHEMA credentials</h3>
+                                            </h:panelGroup>
+                                            <div class="panel-body">
+                                                <div class="form-horizontal">
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="tap_schema_dbtype" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database type</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:selectOneMenu id="tap_schema_dbtype" value="#{credentialsInsertion.tapSchemaCredentials.databaseType}" class="form-control">
+                                                                <f:selectItem itemValue="MYSQL" itemLabel="MySQL" />
+                                                                <f:selectItem itemValue="POSTGRES" itemLabel="Postgres" />
+                                                                <f:ajax execute="@this" render=":main:credentials_panels_wrapper" listener="#{credentialsInsertion.tapSchemaCredentials.setDefaults()}" />
+                                                            </h:selectOneMenu>
+                                                        </div>
                                                     </div>
-                                                </div>
-                                                <div class="form-group">
-                                                    <h:outputLabel for="tap_schema_hostname" class="col-sm-2 control-label">Hostname</h:outputLabel>
-                                                    <div class="col-sm-10">
-                                                        <h:inputText id="tap_schema_hostname" value="#{credentialsInsertion.tapSchemaCredentials.hostname}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Hostname is required"/>
-                                                        <h:message for="tap_schema_hostname" class="text-danger" /> 
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="tap_schema_hostname" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Hostname</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="tap_schema_hostname" value="#{credentialsInsertion.tapSchemaCredentials.hostname}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Hostname is required"/>
+                                                            <h:message for="tap_schema_hostname" class="text-danger" /> 
+                                                        </div>
                                                     </div>
-                                                </div>
-                                                <div class="form-group">
-                                                    <h:outputLabel for="tap_schema_port" class="col-sm-2 control-label">Port</h:outputLabel>
-                                                    <div class="col-sm-10">
-                                                        <h:inputText id="tap_schema_port" value="#{credentialsInsertion.tapSchemaCredentials.port}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Port is required"/>
-                                                        <h:message for="tap_schema_port" class="text-danger" /> 
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="tap_schema_port" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Port</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="tap_schema_port" value="#{credentialsInsertion.tapSchemaCredentials.port}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Port is required"/>
+                                                            <h:message for="tap_schema_port" class="text-danger" /> 
+                                                        </div>
                                                     </div>
-                                                </div>
-                                                <div class="form-group">
-                                                    <h:outputLabel for="tap_schema_username" class="col-sm-2 control-label">Username</h:outputLabel>
-                                                    <div class="col-sm-10">
-                                                        <h:inputText id="tap_schema_username" value="#{credentialsInsertion.tapSchemaCredentials.username}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Username is required"/>
-                                                        <h:message for="tap_schema_username" class="text-danger" /> 
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="tap_schema_username" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Username</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="tap_schema_username" value="#{credentialsInsertion.tapSchemaCredentials.username}" required="#{credentialsInsertion.credentialsDialogOpened}" class="form-control" requiredMessage="Username is required"/>
+                                                            <h:message for="tap_schema_username" class="text-danger" /> 
+                                                        </div>
                                                     </div>
-                                                </div>
-                                                <div class="form-group">
-                                                    <h:outputLabel for="tap_schema_password" class="col-sm-2 control-label">Password</h:outputLabel>
-                                                    <div class="col-sm-10">
-                                                        <h:inputSecret id="tap_schema_password" value="#{credentialsInsertion.tapSchemaCredentials.password}" class="form-control" redisplay="true" />
-                                                        <h:message for="tap_schema_password" class="text-danger" /> 
+                                                    <div class="form-group">
+                                                        <h:outputLabel for="tap_schema_password" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Password</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputSecret id="tap_schema_password" value="#{credentialsInsertion.tapSchemaCredentials.password}" class="form-control" redisplay="true" />
+                                                            <h:message for="tap_schema_password" class="text-danger" /> 
+                                                        </div>
                                                     </div>
+                                                    <h:panelGroup class="form-group" layout="block" rendered="#{credentialsInsertion.tapSchemaCredentials.databaseType eq 'POSTGRES'}">
+                                                        <h:outputLabel for="tap_schema_database" class="#{credentialsInsertion.separateCredentials ? 'col-xs-4': 'col-xs-3'} control-label">Database</h:outputLabel>
+                                                        <div class="#{credentialsInsertion.separateCredentials ? 'col-xs-8': 'col-xs-9'}">
+                                                            <h:inputText id="tap_schema_database" value="#{credentialsInsertion.tapSchemaCredentials.database}" class="form-control" />
+                                                            <h:message for="tap_schema_database" class="text-danger" /> 
+                                                        </div>
+                                                    </h:panelGroup>  
                                                 </div>
-                                                <h:panelGroup class="form-group" layout="block" rendered="#{credentialsInsertion.tapSchemaCredentials.databaseType eq 'POSTGRES'}">
-                                                    <h:outputLabel for="tap_schema_database" class="col-sm-2 control-label">Database</h:outputLabel>
-                                                    <div class="col-sm-10">
-                                                        <h:inputText id="tap_schema_database" value="#{credentialsInsertion.tapSchemaCredentials.database}" class="form-control" />
-                                                        <h:message for="tap_schema_database" class="text-danger" /> 
-                                                    </div>
-                                                </h:panelGroup>  
                                             </div>
-                                        </div>
-                                    </h:panelGroup>
+                                        </h:panelGroup>
+                                    </div>
                                 </h:panelGroup>
 
+                                <div class="form-horizontal">
+                                    <div class="form-group">
+                                        <label class="col-xs-6 col-xs-offset-4">
+                                            <h:selectBooleanCheckbox value="#{credentialsInsertion.separateCredentials}" id="separate-credentials">
+                                                <f:ajax render="credentials_panels_wrapper" execute="@this" onevent="credentials.separateCredentialsChanged" />
+                                            </h:selectBooleanCheckbox>
+                                            Separate credentials
+                                        </label>
+                                    </div>
+                                    <div class="form-group">
+                                        <h:outputLabel for="tap_schema_name" class="control-label col-xs-4">TAP_SCHEMA name</h:outputLabel>
+                                        <div class="col-xs-6">
+                                            <h:inputText value="#{credentialsInsertion.tapSchemaName}" class="form-control" />
+                                        </div>
+                                    </div>
+                                    <div class="form-group">
+                                        <h:outputLabel for="tap_schema_name" class="control-label col-xs-4">TAP_SCHEMA version</h:outputLabel>
+                                        <div class="col-xs-6">
+                                            <h:selectOneMenu value="#{credentialsInsertion.tapSchemaVersion}" class="form-control">
+                                                <f:selectItems value="#{credentialsInsertion.tapSchemaVersions}" var="version" itemLabel="#{version}" itemDescription="#{version}" />
+                                            </h:selectOneMenu>
+                                        </div>
+                                    </div>
+                                    <div class="form-group">
+                                        <label class="col-xs-6 col-xs-offset-4">
+                                            <h:selectBooleanCheckbox value="#{credentialsInsertion.hasObscore}" id="has-obscore" />
+                                            Has obscore
+                                        </label>
+                                    </div>
+                                </div>
                             </h:panelGroup>
                             <div class="modal-footer">
                                 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
@@ -223,7 +248,7 @@
                             </div>
                         </div>
                     </div>
-                </div>
+                </ia2:modal>
 
                 <tsm_components:ucd_editor id="ucd-editor" />
             </div>
diff --git a/TASMAN-webapp/src/main/webapp/resources/js/credentials.js b/TASMAN-webapp/src/main/webapp/resources/js/credentials.js
index 068ce3357502a22565588f8b1cc5df3aafaf7395..5fb483c3ce425364b1ac9e6c5f5f00704a24965a 100644
--- a/TASMAN-webapp/src/main/webapp/resources/js/credentials.js
+++ b/TASMAN-webapp/src/main/webapp/resources/js/credentials.js
@@ -1,29 +1,42 @@
 (function () {
 
+    function checkSeparateCredentials() {
+        var separateCredentials = $('#main\\:separate-credentials').is(':checked');
+        $('#main\\:credentials-modal .modal-dialog').toggleClass('modal-lg', separateCredentials);
+    }
+
     window.credentials = {
         editClicked: function (event) {
             if (event.status === 'success') {
-                $('#credentials-modal').modal('show');
+                $('#main\\:credentials-modal').modal('show');
             }
         },
         credentialsSaved: function (event) {
             if (event.status === 'success') {
-                if ($('#credentials-modal .text-danger').length === 0) {
-                    $('#credentials-modal').modal('hide');
+                if ($('#main\\:credentials-modal .text-danger').length === 0) {
+                    $('#main\\:credentials-modal').modal('hide');
                 }
             }
+        },
+        separateCredentialsChanged: function (event) {
+            if (event.status === 'success') {
+                checkSeparateCredentials();
+            }
         }
     };
 
     $(document).ready(function () {
-        $('body').on('shown.bs.modal', '#credentials-modal', function ( ) {
-            $.post(TSM.getRestPath("credentialsDialog?opened=true"));
-        });
-        $('body').on('hidden.bs.modal', '#credentials-modal', function ( ) {
-            $.post(TSM.getRestPath("credentialsDialog?opened=false"));
+        $('body').on('show.bs.modal', '#main\\:credentials-modal', function ( ) {
+            checkSeparateCredentials();
         });
+//        $('body').on('shown.bs.modal', '#main\\:credentials-modal', function ( ) {
+//            $.post(TSM.getRestPath("credentialsDialog?opened=true"));
+//        });
+//        $('body').on('hidden.bs.modal', '#main\\:credentials-modal', function ( ) {
+//            $.post(TSM.getRestPath("credentialsDialog?opened=false"));
+//        });
 
-        $('body').on('keyup', '#credentials-modal input', function (event) {
+        $('body').on('keyup', '#main\\:credentials-modal input', function (event) {
             if (event.keyCode === 13) {
                 $('#main\\:save-credentials').click();
                 event.preventDefault();