diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
index efe30843..4ddfc73 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/UiWebSocket.java
@@ -28,6 +28,7 @@
 import org.onosproject.ui.UiMessageHandlerFactory;
 import org.onosproject.ui.UiMessageHandler;
 import org.onosproject.ui.UiTopoOverlayFactory;
+import org.onosproject.ui.impl.topo.UiTopoSession;
 import org.onosproject.ui.topo.TopoConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,7 +38,7 @@
 import java.util.Map;
 
 /**
- * Web socket capable of interacting with the GUI.
+ * Web socket capable of interacting with the Web UI.
  */
 public class UiWebSocket
         implements UiConnection, WebSocket.OnTextMessage, WebSocket.OnControl {
@@ -50,14 +51,14 @@
     private static final byte PONG = 0xA;
     private static final byte[] PING_DATA = new byte[]{(byte) 0xde, (byte) 0xad};
 
+    private final ObjectMapper mapper = new ObjectMapper();
     private final ServiceDirectory directory;
+    private final UiTopoSession topoSession;
 
     private Connection connection;
     private FrameConnection control;
     private String userName;
 
-    private final ObjectMapper mapper = new ObjectMapper();
-
     private long lastActive = System.currentTimeMillis();
 
     private Map<String, UiMessageHandler> handlers;
@@ -72,6 +73,7 @@
     public UiWebSocket(ServiceDirectory directory, String userName) {
         this.directory = directory;
         this.userName = userName;
+        this.topoSession = new UiTopoSession(this);
     }
 
     @Override
@@ -115,6 +117,7 @@
         this.connection = connection;
         this.control = (FrameConnection) connection;
         try {
+            topoSession.init();
             createHandlersAndOverlays();
             sendInstanceData();
             log.info("GUI client connected");
@@ -129,6 +132,7 @@
 
     @Override
     public synchronized void onClose(int closeCode, String message) {
+        topoSession.destroy();
         destroyHandlersAndOverlays();
         log.info("GUI client disconnected [close-code={}, message={}]",
                  closeCode, message);
