diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
index b81804a..fade592 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbClientService.java
@@ -334,4 +334,24 @@
      * Disconnects the OVSDB server.
      */
     void disconnect();
+
+    /**
+     * Gets created  ports for the particular bridgeId.
+     *
+     * @param portNames  the portNames which needs to checked for create
+     * @param bridgeId   bridgeIdentifier
+     * @return OvsdbPortNames  the created ports from port table for the bridgeId by considering input port list.
+     * Considered port as created if port's interface table also gets created,irrespective
+     * of ofport value(has errors or not)
+     */
+    public List<OvsdbPortName> getPorts(List<String> portNames, DeviceId bridgeId);
+
+    /**
+     * Gets error status for the given portNames.
+     *
+     * @param portNames  the portNames which need to be checked for errors
+     * @param bridgeId   bridgeIdentifier
+     * @return errorstatus true if input port list contains error, false otherwise
+     */
+    boolean getPortError(List<OvsdbPortName>  portNames, DeviceId bridgeId);
 }
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java
index 03321da..598a97a 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/OvsdbConstant.java
@@ -106,4 +106,7 @@
 
     /** Ovsdb Bridge table, Controller column name. */
     public static final String BRIDGE_CONTROLLER = "controller";
+
+    /** Openflow port Error. */
+    public static final int OFPORT_ERROR = -1;
 }
diff --git a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
index 5523b81..11b7157 100644
--- a/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
+++ b/protocols/ovsdb/api/src/main/java/org/onosproject/ovsdb/controller/driver/DefaultOvsdbClient.java
@@ -32,6 +32,8 @@
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Consumer;
+import java.util.Collections;
 import java.util.stream.Collectors;
 
 import org.onlab.packet.IpAddress;
@@ -55,6 +57,8 @@
 import org.onosproject.ovsdb.controller.OvsdbRowStore;
 import org.onosproject.ovsdb.controller.OvsdbStore;
 import org.onosproject.ovsdb.controller.OvsdbTableStore;
+import org.onosproject.ovsdb.rfc.exception.ColumnSchemaNotFoundException;
+import org.onosproject.ovsdb.rfc.exception.VersionMismatchException;
 import org.onosproject.ovsdb.rfc.jsonrpc.Callback;
 import org.onosproject.ovsdb.rfc.message.OperationResult;
 import org.onosproject.ovsdb.rfc.message.TableUpdates;
@@ -122,6 +126,7 @@
 import static org.onosproject.ovsdb.controller.OvsdbConstant.TYPEVXLAN;
 import static org.onosproject.ovsdb.controller.OvsdbConstant.UUID;
 import static org.onosproject.ovsdb.controller.OvsdbConstant.BRIDGE_CONTROLLER;
+import static org.onosproject.ovsdb.controller.OvsdbConstant.OFPORT_ERROR;
 
 /**
  * An representation of an ovsdb client.
@@ -129,6 +134,7 @@
 public class DefaultOvsdbClient implements OvsdbProviderService, OvsdbClientService {
 
     private static final int TRANSACTCONFIG_TIMEOUT = 3; //sec
+    private static final int OFPORT_ERROR_COMPARISON = 0;
 
     private final Logger log = LoggerFactory.getLogger(DefaultOvsdbClient.class);
 
@@ -1697,4 +1703,87 @@
         channel.disconnect();
         this.agent.removeConnectedNode(nodeId);
     }
+
+    @Override
+    public List<OvsdbPortName> getPorts(List<String> portNames, DeviceId deviceId) {
+        Uuid bridgeUuid = getBridgeUuid(deviceId);
+        if (bridgeUuid == null) {
+            log.error("Can't find the bridge for the deviceId {}", deviceId);
+            return Collections.emptyList();
+        }
+        DatabaseSchema dbSchema = schema.get(DATABASENAME);
+        Row bridgeRow = getRow(DATABASENAME, BRIDGE, bridgeUuid.value());
+        Bridge bridge = (Bridge) TableGenerator.getTable(dbSchema, bridgeRow, OvsdbTable.BRIDGE);
+        if (bridge == null) {
+            return Collections.emptyList();
+        }
+        OvsdbSet setPorts = (OvsdbSet) bridge.getPortsColumn().data();
+        Set<Uuid> portSet = setPorts.set();
+        if (portSet.isEmpty()) {
+            return Collections.emptyList();
+        }
+
+        Map<Uuid, Port> portMap = portSet.stream().collect(Collectors.toMap(
+                java.util.function.Function.identity(), port -> (Port) TableGenerator
+                        .getTable(dbSchema, getRow(DATABASENAME,
+                                PORT, port.value()), OvsdbTable.PORT)));
+
+        List<OvsdbPortName> portList = portMap.entrySet().stream().filter(port -> Objects.nonNull(port.getValue())
+                && portNames.contains(port.getValue().getName())
+                && Objects.nonNull(getInterfacebyPort(port.getKey().value(), port.getValue().getName())))
+                .map(port -> new OvsdbPortName(port.getValue().getName())).collect(Collectors.toList());
+
+        return Collections.unmodifiableList(portList);
+    }
+
+    @Override
+    public boolean getPortError(List<OvsdbPortName> portNames, DeviceId bridgeId) {
+        Uuid bridgeUuid = getBridgeUuid(bridgeId);
+
+        List<Interface> interfaceList = portNames.stream().collect(Collectors
+                .toMap(java.util.function.Function.identity(),
+                        port -> (Interface) getInterfacebyPort(getPortUuid(port.value(),
+                                bridgeUuid.value()), port.value())))
+                .entrySet().stream().filter(intf -> Objects.nonNull(intf.getValue())
+                        && ((OvsdbSet) intf.getValue().getOpenFlowPortColumn().data()).set()
+                        .stream().findAny().orElse(OFPORT_ERROR_COMPARISON).equals(OFPORT_ERROR))
+                .map(intf -> intf.getValue()).collect(Collectors.toList());
+
+        interfaceList.forEach(intf -> new Consumer<Interface>() {
+            @Override
+            public void accept(Interface intf) {
+                try {
+                    Set<String> setErrors = ((OvsdbSet) intf.getErrorColumn().data()).set();
+                    log.info("Port has errors. ofport value - {}, Interface - {} has error - {} ",
+                            intf.getOpenFlowPortColumn().data(), intf.getName(), setErrors.stream()
+                                    .findFirst().get());
+                } catch (ColumnSchemaNotFoundException | VersionMismatchException  e) {
+                    log.debug("Port has errors. ofport value - {}, Interface - {} has error - {} ",
+                            intf.getOpenFlowPortColumn().data(), intf.getName(), e);
+                }
+            }
+        }.accept(intf));
+
+        return !interfaceList.isEmpty();
+    }
+
+    private Interface getInterfacebyPort(String portUuid, String portName) {
+        DatabaseSchema dbSchema = schema.get(DATABASENAME);
+
+        Row portRow = getRow(DATABASENAME, PORT, portUuid);
+        Port port = (Port) TableGenerator.getTable(dbSchema, portRow,
+                OvsdbTable.PORT);
+        if (port == null) {
+            return null;
+        }
+
+        OvsdbSet setInterfaces = (OvsdbSet) port.getInterfacesColumn().data();
+        Set<Uuid> interfaces = setInterfaces.set();
+
+        return interfaces.stream().map(intf -> (Interface) TableGenerator
+                .getTable(dbSchema, getRow(DATABASENAME,
+                        INTERFACE, intf.value()), OvsdbTable.INTERFACE))
+                .filter(intf -> Objects.nonNull(intf) && portName.equalsIgnoreCase(intf.getName()))
+                .findFirst().orElse(null);
+    }
 }
diff --git a/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java b/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java
index c05a292..9da3378 100644
--- a/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java
+++ b/protocols/ovsdb/api/src/test/java/org/onosproject/ovsdb/controller/driver/OvsdbClientServiceAdapter.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.ovsdb.controller.driver;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
@@ -34,6 +35,7 @@
 import org.onosproject.ovsdb.controller.OvsdbPort;
 import org.onosproject.ovsdb.controller.OvsdbQos;
 import org.onosproject.ovsdb.controller.OvsdbQueue;
+import org.onosproject.ovsdb.controller.OvsdbPortName;
 import org.onosproject.ovsdb.rfc.message.TableUpdates;
 import org.onosproject.ovsdb.rfc.notation.Row;
 import org.onosproject.ovsdb.rfc.operations.Operation;
@@ -278,4 +280,14 @@
     public ListenableFuture<List<JsonNode>> transact(DatabaseSchema dbSchema, List<Operation> operations) {
         return null;
     }
+
+    @Override
+    public List<OvsdbPortName> getPorts(List<String> portNames, DeviceId bridgeId) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public boolean getPortError(List<OvsdbPortName> portNames, DeviceId bridgeId) {
+        return false;
+    }
 }
