diff --git a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java
index 6411c01..ea07728 100644
--- a/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java
+++ b/protocols/netconf/api/src/main/java/org/onosproject/netconf/NetconfController.java
@@ -19,6 +19,7 @@
 import org.onlab.packet.IpAddress;
 import org.onosproject.net.DeviceId;
 
+import java.io.IOException;
 import java.util.Map;
 
 /**
@@ -48,7 +49,7 @@
      * @param deviceInfo info about the device to add
      * @return NetconfDevice Netconf device
      */
-    NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo);
+    NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) throws IOException;
 
     /**
      * Removes a Netconf device.
diff --git a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java
index a572a2b..cc53e37 100644
--- a/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java
+++ b/protocols/netconf/ctl/src/main/java/org/onosproject/netconf/ctl/NetconfControllerImpl.java
@@ -91,9 +91,9 @@
     }
 
     @Override
-    public NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) {
+    public NetconfDevice connectDevice(NetconfDeviceInfo deviceInfo) throws IOException {
         if (netconfDeviceMap.containsKey(deviceInfo.getDeviceId())) {
-            log.warn("Device {} is already present");
+            log.info("Device {} is already present");
             return netconfDeviceMap.get(deviceInfo.getDeviceId());
         } else {
             log.info("Creating NETCONF device {}", deviceInfo);
@@ -110,19 +110,13 @@
         }
     }
 
-    private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) {
+    private NetconfDevice createDevice(NetconfDeviceInfo deviceInfo) throws IOException {
         NetconfDevice netconfDevice = null;
-        try {
-            netconfDevice = new NetconfDeviceImpl(deviceInfo);
-            for (NetconfDeviceListener l : netconfDeviceListeners) {
-                l.deviceAdded(deviceInfo);
-            }
-            netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice);
-        } catch (IOException e) {
-            throw new IllegalStateException("Cannot create NETCONF device " +
-                                                    "with device Info: " +
-                                                    deviceInfo + " \n" + e);
+        netconfDevice = new NetconfDeviceImpl(deviceInfo);
+        for (NetconfDeviceListener l : netconfDeviceListeners) {
+            l.deviceAdded(deviceInfo);
         }
+        netconfDeviceMap.put(deviceInfo.getDeviceId(), netconfDevice);
         return netconfDevice;
     }
 
diff --git a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
index d12c647..12b9351 100644
--- a/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
+++ b/providers/netconf/device/src/main/java/org/onosproject/provider/netconf/device/impl/NetconfDeviceProvider.java
@@ -49,6 +49,7 @@
 import org.onosproject.netconf.NetconfDeviceListener;
 import org.slf4j.Logger;
 
+import java.io.IOException;
 import java.util.Map;
 
 import static org.onosproject.net.config.basics.SubjectFactories.APP_SUBJECT_FACTORY;
@@ -192,11 +193,23 @@
         if (cfg != null) {
             log.info("cfg {}", cfg);
             try {
-                cfg.getDevicesAddresses().stream().forEach(addr -> controller
-                        .connectDevice(new NetconfDeviceInfo(addr.name(),
-                                                             addr.password(),
-                                                             addr.ip(),
-                                                             addr.port())));
+                cfg.getDevicesAddresses().stream()
+                        .forEach(addr -> {
+                                     try {
+                                         controller.connectDevice(
+                                                 new NetconfDeviceInfo(addr.name(),
+                                                                       addr.password(),
+                                                                       addr.ip(),
+                                                                       addr.port()));
+                                     } catch (IOException e) {
+                                         log.warn("Can't connect to NETCONF " +
+                                                          "device on {}:{}",
+                                                            addr.ip(),
+                                                            addr.port());
+                                     }
+                                 }
+                        );
+
             } catch (ConfigException e) {
                 log.error("Cannot read config error " + e);
             }
