diff --git a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
index 9c06445..d3597ee 100644
--- a/apps/openstacknode/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
+++ b/apps/openstacknode/src/main/java/org/onosproject/openstacknode/impl/DefaultOpenstackNodeHandler.java
@@ -538,8 +538,7 @@
                     .setOutput(cNode.tunnelPortNum())
                     .build();
             GroupBucket bucket = createSelectGroupBucket(treatment);
-            if (osGroup == null || osGroup.state() != Group.GroupState.ADDED ||
-                    !osGroup.buckets().buckets().contains(bucket)) {
+            if (osGroup == null || !osGroup.buckets().buckets().contains(bucket)) {
                 return false;
             }
         }
@@ -551,8 +550,7 @@
                     .setOutput(cNode.vlanPortNum())
                     .build();
             GroupBucket bucket = createSelectGroupBucket(treatment);
-            if (osGroup == null || osGroup.state() != Group.GroupState.ADDED ||
-                    !osGroup.buckets().buckets().contains(bucket)) {
+            if (osGroup == null || !osGroup.buckets().buckets().contains(bucket)) {
                 return false;
             }
         }
@@ -763,11 +761,12 @@
         }
 
         private void processGroup(Group group) {
-            OpenstackNode osNode = osNodeService.nodes().stream()
-                    .filter(n -> n.gatewayGroupId(VXLAN).equals(group.id()) ||
-                            n.gatewayGroupId(VLAN).equals(group.id()))
+            OpenstackNode osNode = osNodeService.nodes(COMPUTE).stream()
+                    .filter(n -> n.state() == PORT_CREATED &&
+                            (n.gatewayGroupId(VXLAN).equals(group.id()) ||
+                            n.gatewayGroupId(VLAN).equals(group.id())))
                     .findAny().orElse(null);
-            if (osNode != null && osNode.state() == PORT_CREATED) {
+            if (osNode != null) {
                 bootstrapNode(osNode);
             }
             osNodeService.nodes(GATEWAY).stream()
