diff --git a/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelEditor.java b/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelEditor.java
index 0fa6c8c..028d6d5 100644
--- a/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelEditor.java
+++ b/services/org.eclipse.sensinact.studio.model.manager/src/org/eclipse/sensinact/studio/model/manager/modelupdater/ModelEditor.java
@@ -237,7 +237,6 @@
 
 	@SuppressWarnings("unchecked")
 	public List<String> getGatewaysId() throws InterruptedException {
-
 		setupStudio();
 
 		return (List<String>) getEditingDomain().runExclusive(new RunnableWithResult.Impl<List<String>>() {
@@ -255,6 +254,25 @@
 	}
 
 	@SuppressWarnings("unchecked")
+	public List<String> getConnectedGatewaysId() throws InterruptedException {
+		setupStudio();
+
+		return (List<String>) getEditingDomain().runExclusive(new RunnableWithResult.Impl<List<String>>() {
+			@Override
+			public void run() {
+				List<String> retval = new ArrayList<String>();
+				EList<Gateway> gateways = USE_IN_RUNEXLUSIVE_getStudio().getGateways();
+				for (Gateway gateway : gateways) {
+					if (gateway.getDevice().size() != 0)
+						retval.add(gateway.getName());
+				}
+				setResult(retval);
+				return;
+			}
+		});
+	}
+	
+	@SuppressWarnings("unchecked")
 	public List<String> getDevicesId(final String gatewayName) throws InterruptedException {
 
 		//setupStudio();
diff --git a/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaDeployHandler.java b/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaDeployHandler.java
index 96ccd9b..5d6c6b2 100644
--- a/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaDeployHandler.java
+++ b/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaDeployHandler.java
@@ -11,15 +11,17 @@
 package org.eclipse.sensinact.studio.view.projectexplorer.handler;
 
 import java.io.IOException;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.List;
 
 import org.apache.log4j.Logger;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
 import org.eclipse.sensinact.studio.http.client.GatewayHttpClient;
 import org.eclipse.sensinact.studio.http.client.snamessage.MsgSensinact;
+import org.eclipse.sensinact.studio.model.manager.modelupdater.ModelEditor;
 import org.eclipse.sensinact.studio.model.resource.utils.Constants;
 import org.eclipse.sensinact.studio.model.resource.utils.ResourceDescriptor;
 import org.eclipse.sensinact.studio.model.resource.utils.Segments;
@@ -28,9 +30,9 @@
 import org.json.JSONException;
 import org.json.JSONObject;
 
-import org.eclipse.sensinact.studio.language.sensinact.DSL_Resource;
 import org.eclipse.sensinact.studio.language.sensinact.DSL_SENSINACT;
 import org.eclipse.sensinact.studio.resource.AccessMethodType;
+import org.eclipse.sensinact.studio.ui.common.dialog.BasicListDialog;
 
 /**
  * @author Etienne Gandrille
@@ -49,10 +51,19 @@
 		try {
 			DSL_SENSINACT sna = fileURI2eca(snaFileURI);
 			JSONObject app = generateJsonApplication(sna, fileName);
-			String gatewayID = getGatewayID(sna);
-			MsgSensinact response = install(Constants.createInstallAppRD(gatewayID), app);
-			String title = response.isValid() ? "Application deployed" : "Application deploy failed"; 
-			displayResult(shell, title, fileName, response);
+			
+			List<String> gatewayIds = ModelEditor.getInstance().getConnectedGatewaysId();
+			if (gatewayIds.size() == 0) {
+				MessageDialog.openError(getShell(event), "Application installation failed", "No connected gateway available.");
+			} else {
+				BasicListDialog listDialog = new BasicListDialog(getShell(event), "Connected gateways", "Please choose a Gateway", gatewayIds.toArray(new String[0]));
+				if (listDialog.open() == Window.OK) {
+					String gatewayID = listDialog.getFirstResult();
+					MsgSensinact response = install(Constants.createInstallAppRD(gatewayID), app);
+					String title = response.isValid() ? "Application deployed" : "Application deploy failed"; 
+					displayResult(shell, title, fileName, response);
+				}
+			}
 		} catch (Exception e) {
 			displayResult(shell, "Application deploy failed", fileName, e);
 			logger.error("Application deploy failed", e);
@@ -74,23 +85,4 @@
 		logger.debug(app);
 		return app;
 	}
-
-	private String getGatewayID(DSL_SENSINACT sna) {
-		Set<String> gateways = new HashSet<>();
-		
-		if (sna == null)
-			throw new IllegalArgumentException("");
-		
-		for (DSL_Resource resource : sna.getResources()) {
-			gateways.add(resource.getGatewayID());
-		}
-		
-		if (gateways.size() == 0) {
-			throw new IllegalArgumentException("No gateway referenced in the sna file");
-		} 
-		if (gateways.size() == 1) {
-			return gateways.iterator().next();
-		}
-		throw new IllegalArgumentException(gateways.size() + " gateways are referenced in the sna file. Only one is allowed.");
-	}
 }
diff --git a/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaRemoveHandler.java b/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaRemoveHandler.java
index 70dc582..7b3ead5 100644
--- a/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaRemoveHandler.java
+++ b/ui/org.eclipse.sensinact.studio.view.projectexplorer/src/org/eclipse/sensinact/studio/view/projectexplorer/handler/SnaRemoveHandler.java
@@ -52,7 +52,7 @@
 			if (gatewayIds.size() == 0) {
 				MessageDialog.openError(getShell(event), "Application removal failed", "Application not found.\nIs the gateway connected?");
 			} else {
-				BasicListDialog listDialog = new BasicListDialog(getShell(event), "Gateway selection", "Please choose a Gateway", gatewayIds.toArray(new String[0]));
+				BasicListDialog listDialog = new BasicListDialog(getShell(event), "Connected gateways", "Please choose a Gateway", gatewayIds.toArray(new String[0]));
 				if (listDialog.open() == Window.OK) {
 					String gatewayID = listDialog.getFirstResult();
 					MsgSensinact response = uninstall(Constants.createUninstallAppRD(gatewayID), fileName);
