diff --git a/src/main/java/org/opencord/cordvtn/impl/CordVtnManager.java b/src/main/java/org/opencord/cordvtn/impl/CordVtnManager.java
index f325143..e93eaf6 100644
--- a/src/main/java/org/opencord/cordvtn/impl/CordVtnManager.java
+++ b/src/main/java/org/opencord/cordvtn/impl/CordVtnManager.java
@@ -311,6 +311,7 @@
                 throw new IllegalStateException(error);
             }
             store.createSubnet(subnet);
+            // FIXME update the network as well with the new subnet
             log.info(String.format(MSG_SUBNET, CREATED, subnet.getId()));
         }
     }
@@ -351,6 +352,7 @@
     @Override
     public Set<VtnNetwork> vtnNetworks() {
         Set<VtnNetwork> vtnNetworks = networks().stream()
+                .filter(net -> vtnNetwork(NetworkId.of(net.getId())) != null)
                 .map(net -> vtnNetwork(NetworkId.of(net.getId())))
                 .collect(Collectors.toSet());
         return ImmutableSet.copyOf(vtnNetworks);
@@ -380,6 +382,7 @@
     @Override
     public Set<VtnPort> vtnPorts() {
         Set<VtnPort> vtnPorts = ports().stream()
+                .filter(port -> vtnPort(PortId.of(port.getId())) != null)
                 .map(port -> vtnPort(PortId.of(port.getId())))
                 .collect(Collectors.toSet());
         return ImmutableSet.copyOf(vtnPorts);
@@ -509,7 +512,6 @@
     }
 
     private Subnet getSubnet(NetworkId netId) {
-        // TODO fix networking-onos to send Network UPDATE when subnet created
         Optional<Subnet> subnet = subnets().stream()
                 .filter(s -> Objects.equals(s.getNetworkId(), netId.id()))
                 .findFirst();
diff --git a/src/main/java/org/opencord/cordvtn/impl/DistributedCordVtnStore.java b/src/main/java/org/opencord/cordvtn/impl/DistributedCordVtnStore.java
index e4176e5..beb6475 100644
--- a/src/main/java/org/opencord/cordvtn/impl/DistributedCordVtnStore.java
+++ b/src/main/java/org/opencord/cordvtn/impl/DistributedCordVtnStore.java
@@ -409,9 +409,9 @@
         if (netA == netB) {
             return true;
         }
+        // FIXME compare subnet here when CordVtnManager.createSubnet is fixed
         if (Objects.equals(netA.getId(), netB.getId()) &&
-                Objects.equals(netA.getProviderSegID(), netB.getProviderSegID()) &&
-                Objects.equals(netA.getSubnets(), netB.getSubnets())) {
+                Objects.equals(netA.getProviderSegID(), netB.getProviderSegID())) {
             return true;
         }
         return false;
