diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java
index b313cce..e9d2b2f 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DistributedInstancePortStore.java
@@ -190,7 +190,7 @@
             InstancePort.State oldState = event.oldValue().value().state();
             InstancePort.State newState = event.newValue().value().state();
 
-            if (oldState == ACTIVE && newState == MIGRATING) {
+            if ((oldState == ACTIVE || oldState == INACTIVE) && newState == MIGRATING) {
                 notifyDelegate(new InstancePortEvent(
                         OPENSTACK_INSTANCE_MIGRATION_STARTED,
                         event.newValue().value()));
@@ -227,8 +227,6 @@
             notifyDelegate(new InstancePortEvent(
                     OPENSTACK_INSTANCE_PORT_UPDATED,
                     event.newValue().value()));
-
-            // TODO: need to handle cold migration
         }
     }
 }
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java
index 2383e62..0935f53 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/InstancePortManager.java
@@ -246,15 +246,34 @@
                         // first time to add instance
                         createInstancePort(instPort);
                     } else {
-                        // the instance was restarted
                         if (existingPort.state() == INACTIVE) {
-                            updateInstancePort(instPort);
+
+                            if (instPort.deviceId().equals(existingPort.deviceId())) {
+
+                                // VM RESTART case
+                                // if the ID of switch where VM is attached to is
+                                // identical, we can assume that the VM was
+                                // restarted in the same location;
+                                // note that the switch port number where VM is
+                                // attached can be varied per each restart
+                                updateInstancePort(instPort);
+                            } else {
+
+                                // VM COLD MIGRATION case
+                                // if the ID of switch where VM is attached to is
+                                // varied, we can assume that the VM was migrated
+                                // to a new location
+                                updateInstancePort(instPort.updateState(MIGRATING));
+                                InstancePort updated = instPort.updateState(MIGRATED);
+                                updateInstancePort(updated.updatePrevLocation(
+                                        existingPort.deviceId(), existingPort.portNumber()));
+                            }
                         }
                     }
                     break;
                 case HOST_REMOVED:
                     // we will remove instance port from persistent store,
-                    // only if we receive port removal signal from neutron
+                    // only if we receive port removal signal from neutron.
                     // by default, we update the instance port state to INACTIVE
                     // to indicate the instance is terminated
                     updateInstancePort(instPort.updateState(INACTIVE));
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
index de9da5d..b19d78d 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/OpenstackSwitchingHostProvider.java
@@ -197,7 +197,7 @@
 
         long createTime = System.currentTimeMillis();
 
-        // we check whether the host already attached to some locations
+        // we check whether the host already attached to same locations
         Host host = hostService.getHost(hostId);
 
         // build host annotations to include a set of meta info from neutron
@@ -206,7 +206,7 @@
                 .set(ANNOTATION_PORT_ID, osPort.getId())
                 .set(ANNOTATION_CREATE_TIME, String.valueOf(createTime));
 
-        // FLAT does not require segment ID
+        // FLAT typed network does not require segment ID
         if (osNet.getNetworkType() != NetworkType.FLAT) {
             annotations.set(ANNOTATION_SEGMENT_ID, osNet.getProviderSegID());
         }
