diff --git a/core/net/src/main/java/org/onosproject/net/config/impl/NetworkConfigManager.java b/core/net/src/main/java/org/onosproject/net/config/impl/NetworkConfigManager.java
index 600b703..f6d9b51 100644
--- a/core/net/src/main/java/org/onosproject/net/config/impl/NetworkConfigManager.java
+++ b/core/net/src/main/java/org/onosproject/net/config/impl/NetworkConfigManager.java
@@ -24,6 +24,7 @@
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.apache.felix.scr.annotations.Service;
+import org.onosproject.cluster.ClusterService;
 import org.onosproject.event.AbstractListenerManager;
 import org.onosproject.net.config.Config;
 import org.onosproject.net.config.ConfigFactory;
@@ -78,6 +79,9 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected NetworkConfigStore store;
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected ClusterService clusterService;
+
 
     @Activate
     public void activate() {
@@ -125,8 +129,13 @@
             factories.remove(key(configFactory));
             configClasses.remove(identifier(configFactory));
 
-            // Note that we are deliberately not removing subject factory key bindings.
-            store.removeConfigFactory(configFactory);
+            // Removing the config factory only if this is the only ONOS instance or if it's the last
+            // instance active in a cluster. otherwise the other instances lose access to the config factory
+            // and can't use the associated net-cfgs.
+            if (clusterService.getNodes().size() == 1) {
+                // Note that we are deliberately not removing subject factory key bindings.
+                store.removeConfigFactory(configFactory);
+            }
         }
     }
 
@@ -271,20 +280,20 @@
             store.clearConfig(subject, configClass);
         } else {
             store.clearQueuedConfig(subject, configKey);
-         }
+        }
     }
 
-     @Override
-     public <S> void removeConfig(S subject) {
+    @Override
+    public <S> void removeConfig(S subject) {
         checkPermission(CONFIG_WRITE);
         store.clearConfig(subject);
-     }
+    }
 
-     @Override
-     public <S> void removeConfig() {
-         checkPermission(CONFIG_WRITE);
-         store.clearConfig();
-     }
+    @Override
+    public <S> void removeConfig() {
+        checkPermission(CONFIG_WRITE);
+        store.clearConfig();
+    }
 
     // Auxiliary store delegate to receive notification about changes in
     // the network configuration store state - by the store itself.
diff --git a/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java b/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java
index 532488c..89f8a80 100644
--- a/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/config/impl/NetworkConfigManagerTest.java
@@ -21,6 +21,8 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.onlab.junit.TestUtils;
+import org.onosproject.cluster.ClusterService;
+import org.onosproject.cluster.ClusterServiceAdapter;
 import org.onosproject.event.EventDeliveryServiceAdapter;
 import org.onosproject.net.config.Config;
 import org.onosproject.net.config.ConfigFactory;
@@ -45,6 +47,9 @@
  * Unit tests for network config registry.
  */
 public class NetworkConfigManagerTest {
+
+    private final ClusterService clusterService = new ClusterServiceAdapter();
+
     private NetworkConfigManager manager;
     private NetworkConfigRegistry registry;
     private NetworkConfigService configService;
@@ -111,6 +116,7 @@
         manager = new NetworkConfigManager();
         manager.store = configStore;
         NetTestTools.injectEventDispatcher(manager, new EventDeliveryServiceAdapter());
+        manager.clusterService = clusterService;
         manager.activate();
         registry = manager;
         configService = manager;
