diff --git a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
index f4ff72d..e313369 100644
--- a/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
+++ b/apps/tetopology/app/src/test/java/org/onosproject/tetopology/management/SimpleTeTopologyStore.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.tetopology.management;
 
+import static org.onosproject.tetopology.management.api.OptimizationType.NOT_OPTIMIZED;
 import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_ADDED;
 import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.NETWORK_REMOVED;
 import static org.onosproject.tetopology.management.api.TeTopologyEvent.Type.TE_TOPOLOGY_ADDED;
@@ -297,6 +298,7 @@
         }
         TeTopologyId topologyId = null;
         DeviceId ownerId = null;
+        OptimizationType opt = NOT_OPTIMIZED;
         if (curNetwork.teTopologyKey() != null
                 && teTopology(curNetwork.teTopologyKey()) != null) {
             topologyId = new TeTopologyId(curNetwork.teTopologyKey()
@@ -304,11 +306,12 @@
                                           teTopology(curNetwork.teTopologyKey())
                                                   .teTopologyIdStringValue());
             ownerId = teTopology(curNetwork.teTopologyKey()).ownerId();
-
+            opt = teTopologyMap.get(curNetwork.teTopologyKey()).topologyData()
+                    .optimization();
         }
         return new DefaultNetwork(networkId, supportingNetworkIds, nodes, links,
                                   topologyId, curNetwork.serverProvided(),
-                                  ownerId);
+                                  ownerId, opt);
     }
 
     @Override
@@ -408,9 +411,8 @@
                 // Hard rule for now
                 flags.set(TeTopology.BIT_CUSTOMIZED);
             }
-            CommonTopologyData common = new CommonTopologyData(network
-                    .networkId(), OptimizationType.NOT_OPTIMIZED, flags, network
-                            .ownerId());
+            CommonTopologyData common = new CommonTopologyData(network.networkId(), NOT_OPTIMIZED,
+                                                               flags, network.ownerId());
             intTopo.setTopologydata(common);
             teTopologyMap.put(topoKey, intTopo);
             // Assume new topology
@@ -424,8 +426,7 @@
         networkMap.put(network.networkId(), newNetwork);
         // Assume new network
         TeTopologyEvent topologyEvent = new TeTopologyEvent(NETWORK_ADDED,
-                                                            network(network
-                                                                    .networkId()));
+                                                            network(network.networkId()));
         notifyDelegate(topologyEvent);
     }
 
@@ -440,7 +441,8 @@
                                                                                null,
                                                                                null,
                                                                                false,
-                                                                               null));
+                                                                               null,
+                                                                               NOT_OPTIMIZED));
         notifyDelegate(topologyEvent);
         if (network != null && network.teTopologyKey() != null) {
             removeNetworkMapEntrys(network, false);
