diff --git a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/ControllerConfigCiscoImpl.java b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/ControllerConfigCiscoImpl.java
index 43dbe09..f62000e 100644
--- a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/ControllerConfigCiscoImpl.java
+++ b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/ControllerConfigCiscoImpl.java
@@ -48,9 +48,11 @@
     private static final String SW1_CMD = "switch 1";
     private static final String DELETE_OF_CONFIG = "no switch 1";
     private static final String PROTO_VER_CMD = "protocol-version 1.3";
-    private static final String PIPELINE_CMD = "pipeline 201";
+    private static final String N9K_PIPELINE_CMD = "pipeline 201";
+    private static final String N7K_PIPELINE_CMD = "pipeline 301";
     private static final String OF_CONTROLLER_CONF_CMD = "controller ipv4 %s port %d vrf %s security none";
     private static final String NO_SHUTDOWN_CMD = "no shutdown";
+    private static final String SHOW_VERSION = "show version";
     private static final String COPY_RUNNING_CONFIG = "copy running-config startup-config";
 
     @Override
@@ -97,7 +99,12 @@
         cmds.add(DELETE_OF_CONFIG);
         cmds.add(SW1_CMD);
         cmds.add(PROTO_VER_CMD);
-        cmds.add(PIPELINE_CMD);
+        if (checkSwitchN7K(handler)) {
+            cmds.add(N7K_PIPELINE_CMD);
+            log.info("This is N7K Switch");
+        }
+        cmds.add(N9K_PIPELINE_CMD);
+        log.info("This is N9K Switch");
 
         // can configure up to eight controllers
         controllers.stream().limit(8).forEach(c -> cmds
@@ -168,4 +175,25 @@
     }
 
 
+    public boolean checkSwitchN7K(DriverHandler handler) {
+
+        String response = NxApiRequest.postClis(handler, SHOW_VERSION);
+
+        String msg = "";
+
+        try {
+            ObjectMapper om = new ObjectMapper();
+            JsonNode json = om.readTree(response);
+            JsonNode res = json.get("result");
+            msg = res.findValue("msg").asText();
+        } catch (IOException e) {
+            log.error("Exception thrown", e);
+            return false;
+        }
+
+        if (msg.contains("Nexus7700")) {
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/NxApiRequest.java b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/NxApiRequest.java
index 07509c9..201ff02 100644
--- a/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/NxApiRequest.java
+++ b/drivers/cisco/rest/src/main/java/org/onosproject/drivers/cisco/rest/NxApiRequest.java
@@ -139,6 +139,20 @@
         String request = generate(command, type);
         return post(controller, deviceId, request);
     }
+    /**
+     * Sends NX-API request message to the device.
+     * @param handler device's driver handler
+     * @param cmd NX-API command string
+     * @return the response string
+     */
+    static String postClis(DriverHandler handler, String cmd) {
+        RestSBController controller = checkNotNull(handler.get(RestSBController.class));
+        DeviceId deviceId = handler.data().deviceId();
+
+        String request = generate(cmd, CommandType.CLI);
+        InputStream stream = new ByteArrayInputStream(request.getBytes(StandardCharsets.UTF_8));
+        return controller.post(deviceId, API_URI, stream, MediaType.valueOf(APP_JSON_RPC), String.class);
+    }
 
     /**
      * Sends NX-API request message to the device.
