diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java
index 0802c9e..e1edb6d 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtil.java
@@ -115,6 +115,9 @@
     private static final String PROXY_MODE = "proxy";
     private static final String BROADCAST_MODE = "broadcast";
 
+    private static final String ENABLE = "enable";
+    private static final String DISABLE = "disable";
+
     private static final int HTTP_PAYLOAD_BUFFER = 8 * 1024;
 
     private static final String HMAC_SHA256 = "HmacSHA256";
@@ -457,6 +460,24 @@
     }
 
     /**
+     * Checks the validity of activation flag.
+     *
+     * @param activationFlag activation flag
+     * @return returns true if the activation flag is valid, false otherwise
+     */
+    public static boolean checkActivationFlag(String activationFlag) {
+
+        switch (activationFlag) {
+            case ENABLE:
+                return true;
+            case DISABLE:
+                return false;
+            default:
+                throw new IllegalArgumentException("The given activation flag is not valid!");
+        }
+    }
+
+    /**
      * Swaps current location with old location info.
      * The revised instance port will be used to mod the flow rules after migration.
      *
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java
index 72f23574..8b335e6 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/web/OpenstackManagementWebResource.java
@@ -29,6 +29,7 @@
 import org.onosproject.openstacknetworking.api.OpenstackRouterAdminService;
 import org.onosproject.openstacknetworking.api.OpenstackSecurityGroupAdminService;
 import org.onosproject.openstacknetworking.impl.OpenstackRoutingArpHandler;
+import org.onosproject.openstacknetworking.impl.OpenstackSecurityGroupHandler;
 import org.onosproject.openstacknetworking.impl.OpenstackSwitchingArpHandler;
 import org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil;
 import org.onosproject.openstacknode.api.NodeState;
@@ -53,9 +54,7 @@
 
 import static java.lang.Thread.sleep;
 import static org.onlab.util.Tools.nullIsIllegal;
-import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.addRouterIface;
-import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.checkArpMode;
-import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getPropertyValue;
+import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.*;
 import static org.onosproject.openstacknode.api.OpenstackNode.NodeType.CONTROLLER;
 
 /**
@@ -67,6 +66,7 @@
 
     private static final String FLOATINGIPS = "floatingips";
     private static final String ARP_MODE_NAME = "arpMode";
+    private static final String USE_SECURITY_GROUP_NAME = "useSecurityGroup";
 
     private static final long SLEEP_MS = 3000; // we wait 3s for init each node
 
@@ -74,6 +74,8 @@
 
     private static final String ARP_MODE_REQUIRED = "ARP mode is not specified";
 
+    private static final String SECURITY_GROUP_FLAG_REQUIRED = "Security Group flag is not specified";
+
     private final ObjectNode root = mapper().createObjectNode();
     private final ArrayNode floatingipsNode = root.putArray(FLOATINGIPS);
 
@@ -252,6 +254,28 @@
     }
 
     /**
+     * Configures the security group (enable | disable).
+     *
+     * @param securityGroup security group activation flag
+     * @return 200 OK with config result, 404 not found
+     */
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("config/securityGroup/{securityGroup}")
+    public Response configSecurityGroup(@PathParam("securityGroup") String securityGroup) {
+        String securityGroupStr = nullIsIllegal(securityGroup, SECURITY_GROUP_FLAG_REQUIRED);
+
+        boolean flag = checkActivationFlag(securityGroupStr);
+
+        ComponentConfigService service = get(ComponentConfigService.class);
+        String securityGroupComponent = OpenstackSecurityGroupHandler.class.getName();
+
+        service.setProperty(securityGroupComponent, USE_SECURITY_GROUP_NAME, String.valueOf(flag));
+
+        return ok(mapper().createObjectNode()).build();
+    }
+
+    /**
      * Obtains a collection of all floating IPs.
      *
      * @return 200 OK with a collection of floating IPs, 404 not found
diff --git a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java
index ed18a79..c6e403a 100644
--- a/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java
+++ b/apps/openstacknetworking/app/src/test/java/org/onosproject/openstacknetworking/util/OpenstackNetworkingUtilTest.java
@@ -78,6 +78,7 @@
 import static org.onosproject.openstacknetworking.api.Constants.UNSUPPORTED_VENDOR;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.addRouterIface;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.associatedFloatingIp;
+import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.checkActivationFlag;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.checkArpMode;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getConnectedClient;
 import static org.onosproject.openstacknetworking.util.OpenstackNetworkingUtil.getGwByComputeDevId;
@@ -472,6 +473,24 @@
         assertEquals(vnicType(portNameUnsupported), Constants.VnicType.UNSUPPORTED);
     }
 
+    /**
+     * Tests the checkActivationFlag method.
+     */
+    @Test
+    public void testCheckActivationFlag() {
+        assertFalse(checkActivationFlag("disable"));
+        assertTrue(checkActivationFlag("enable"));
+    }
+
+    /**
+     * Tests the checkActivationFlag method with incorrect input parameters.
+     */
+    @Test (expected = IllegalArgumentException.class)
+    public void testCheckActivationFlagWithException() {
+        checkActivationFlag("test");
+        checkActivationFlag(null);
+    }
+
     private DeviceId genDeviceId(int index) {
         return DeviceId.deviceId("of:compute-" + index);
     }
