diff --git a/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingManager.java b/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingManager.java
index d881d81..5a19ed0 100644
--- a/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingManager.java
+++ b/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingManager.java
@@ -214,6 +214,30 @@
         log.debug("port {} is removed", port.toString());
     }
 
+    private void initializeFlowRules() {
+        OpenstackSwitchingRulePopulator rulePopulator =
+                new OpenstackSwitchingRulePopulator(appId, flowObjectiveService,
+                        deviceService, restHandler, driverService);
+
+        deviceService.getDevices().forEach(device -> {
+                    log.debug("device {} num of ports {} ", device.id(),
+                            deviceService.getPorts(device.id()).size());
+                    deviceService.getPorts(device.id()).stream()
+                            .filter(port -> port.annotations().value("portName").startsWith("tap"))
+                            .forEach(vmPort -> {
+                                        OpenstackPort osPort = rulePopulator.openstackPort(vmPort);
+                                        if (osPort != null) {
+                                            rulePopulator.populateSwitchingRules(device, vmPort);
+                                            registerDhcpInfo(osPort);
+                                        } else {
+                                            log.warn("No openstackPort information for port {}", vmPort);
+                                        }
+                                    }
+                            );
+                }
+        );
+    }
+
     private void registerDhcpInfo(OpenstackPort openstackPort) {
         Ip4Address ip4Address;
         Ip4Address subnetMask;
@@ -343,6 +367,7 @@
             doNotPushFlows = cfg.doNotPushFlows();
             restHandler = new OpenstackRestHandler(cfg);
             arpHandler = new OpenstackArpHandler(restHandler, packetService);
+            initializeFlowRules();
         }
 
         @Override
diff --git a/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java b/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java
index 38c0363..3d1e3fb 100644
--- a/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java
+++ b/apps/openstackswitching/app/src/main/java/org/onosproject/openstackswitching/OpenstackSwitchingRulePopulator.java
@@ -99,6 +99,18 @@
     }
 
     /**
+     * Returns OpenstackPort object for the Port reference given.
+     *
+     * @param port Port object
+     * @return OpenstackPort reference, or null when not found
+     */
+    public OpenstackPort openstackPort(Port port) {
+        String uuid = port.annotations().value("portName").substring(3);
+        return openstackPortList.stream().filter(p -> p.id().startsWith(uuid))
+                .findAny().orElse(null);
+    }
+
+    /**
      * Populates the flow rules for traffic to VMs in the same Cnode as the sender.
      *
      * @param device device to put the rules
