diff --git a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java
index 64691d5..f4ae805 100644
--- a/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java
+++ b/core/net/src/main/java/org/onosproject/net/newresource/impl/ResourceDeviceListener.java
@@ -41,10 +41,13 @@
 import org.onosproject.net.newresource.BandwidthCapacity;
 import org.onosproject.net.newresource.Resource;
 import org.onosproject.net.newresource.Resources;
+import org.onosproject.net.newresource.ResourceService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
@@ -60,6 +63,7 @@
     private static final Logger log = LoggerFactory.getLogger(ResourceDeviceListener.class);
 
     private final ResourceAdminService adminService;
+    private final ResourceService resourceService;
     private final DeviceService deviceService;
     private final DriverService driverService;
     private final NetworkConfigService netcfgService;
@@ -75,9 +79,11 @@
      * @param netcfgService {@link NetworkConfigService} to be used.
      * @param executor executor used for processing resource registration
      */
-    ResourceDeviceListener(ResourceAdminService adminService, DeviceService deviceService, DriverService driverService,
+    ResourceDeviceListener(ResourceAdminService adminService, ResourceService resourceService,
+                           DeviceService deviceService, DriverService driverService,
                            NetworkConfigService netcfgService, ExecutorService executor) {
         this.adminService = checkNotNull(adminService);
+        this.resourceService = checkNotNull(resourceService);
         this.deviceService = checkNotNull(deviceService);
         this.driverService = checkNotNull(driverService);
         this.netcfgService = checkNotNull(netcfgService);
@@ -123,7 +129,11 @@
     }
 
     private void unregisterDeviceResource(Device device) {
-        executor.submit(() -> adminService.unregisterResources(Resources.discrete(device.id()).resource()));
+        executor.submit(() -> {
+            Resource devResource = Resources.discrete(device.id()).resource();
+            List<Resource> allResources = getDescendantResources(devResource);
+            adminService.unregisterResources(allResources);
+        });
     }
 
     private void registerPortResource(Device device, Port port) {
@@ -175,8 +185,30 @@
     }
 
     private void unregisterPortResource(Device device, Port port) {
-        Resource resource = Resources.discrete(device.id(), port.number()).resource();
-        executor.submit(() -> adminService.unregisterResources(resource));
+        executor.submit(() -> {
+            Resource portResource = Resources.discrete(device.id(), port.number()).resource();
+            List<Resource> allResources = getDescendantResources(portResource);
+            adminService.unregisterResources(allResources);
+        });
+    }
+
+    // Returns list of all descendant resources of given resource, including itself.
+    private List<Resource> getDescendantResources(Resource parent) {
+        LinkedList<Resource> allResources = new LinkedList<>();
+        allResources.add(parent);
+
+        Set<Resource> nextResources = resourceService.getRegisteredResources(parent);
+        while (!nextResources.isEmpty()) {
+            Set<Resource> currentResources = nextResources;
+            // resource list should be ordered from leaf to root
+            allResources.addAll(0, currentResources);
+
+            nextResources = currentResources.stream()
+                    .flatMap(r -> resourceService.getRegisteredResources(r).stream())
+                    .collect(Collectors.toSet());
+        }
+
+        return allResources;
     }
 
     /**
