diff --git a/voltha-go-controller/onos_nbi/deviceportadapter.go b/voltha-go-controller/onos_nbi/deviceportadapter.go
index 800d497..740ac31 100644
--- a/voltha-go-controller/onos_nbi/deviceportadapter.go
+++ b/voltha-go-controller/onos_nbi/deviceportadapter.go
@@ -11,7 +11,7 @@
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-*/
+ */
 
 package onos_nbi
 
@@ -19,9 +19,10 @@
 	"encoding/json"
 	"net/http"
 
-	"github.com/gorilla/mux"
 	app "voltha-go-controller/internal/pkg/application"
 	"voltha-go-controller/log"
+
+	"github.com/gorilla/mux"
 )
 
 // DeviceHandle Handle DeviceIDList Requests
@@ -42,6 +43,7 @@
 		logger.Warnw(ctx, "Unsupported Method", log.Fields{"Method": r.Method})
 	}
 }
+
 // GetDeviceList to get device id list
 func (dh *DeviceHandle) GetDeviceList(w http.ResponseWriter, r *http.Request) {
 
@@ -100,13 +102,14 @@
 	vars := mux.Vars(r)
 	deviceID := vars["olt_of_id"]
 
-	var portListResp PortEntry
-	portListResp.Ports = []Port{}
+	var devicePortListResp DevicePortEntry
+	devicePortListResp.Device = Device{}
+	devicePortListResp.Ports = []Port{}
 
 	getPortList := func(key, value interface{}) bool {
 		voltPort := value.(*app.VoltPort)
 		port := convertVoltPortToPort(voltPort)
-		portListResp.Ports = append(portListResp.Ports, port)
+		devicePortListResp.Ports = append(devicePortListResp.Ports, port)
 		return true
 	}
 	if len(deviceID) > 0 {
@@ -114,10 +117,12 @@
 		voltDevice := app.GetApplication().GetDevice(deviceID)
 		if voltDevice != nil {
 			logger.Infow(ctx, "Found device", log.Fields{"deviceID": deviceID})
+			devicePortListResp.Device = convertVoltDeviceToDevice(voltDevice)
 			voltDevice.Ports.Range(getPortList)
 		}
+
 	}
-	portListJSON, err := json.Marshal(portListResp)
+	portListJSON, err := json.Marshal(devicePortListResp)
 	if err != nil {
 		logger.Errorw(ctx, "Error occurred while marshaling port list response", log.Fields{"Error": err})
 		w.WriteHeader(http.StatusInternalServerError)
@@ -131,6 +136,7 @@
 		w.WriteHeader(http.StatusInternalServerError)
 	}
 }
+
 // GetPortList to get device id list
 func (dh *DevicePortHandle) GetPortList(w http.ResponseWriter, r *http.Request) {
 
@@ -166,4 +172,3 @@
 		w.WriteHeader(http.StatusInternalServerError)
 	}
 }
-
diff --git a/voltha-go-controller/onos_nbi/models.go b/voltha-go-controller/onos_nbi/models.go
index 5f8f923..abf4950 100644
--- a/voltha-go-controller/onos_nbi/models.go
+++ b/voltha-go-controller/onos_nbi/models.go
@@ -248,6 +248,12 @@
 	FAILED string = "FAILED"
 
 	PENDING string = "PENDING"
+
+	FAILED_ADD string = "FAILED_ADD"
+
+	PENDING_ADD string = "PENDING_ADD"
+
+	PENDING_REMOVE string = "PENDING_REMOVE"
 )
 
 // Selector Critrtion structs
@@ -508,13 +514,27 @@
 	return flowEntry
 }
 
+func FlowStateMapping(state uint8) string {
+	var flowState string
+	if state == of.FlowAddSuccess {
+		flowState = ADDED
+	} else if state == of.FlowAddFailure {
+		flowState = FAILED_ADD
+	} else if state == of.FlowAddPending {
+		flowState = PENDING_ADD
+	} else if state == of.FlowDelPending {
+		flowState = PENDING_REMOVE
+	}
+	return flowState
+}
+
 func ConvertVoltSubFlowToOnosFlow(subFlow *of.VoltSubFlow) Flow {
 	var flow Flow
 	flow.ID = strconv.FormatUint(subFlow.Cookie, 10)
 	flow.TableID = int(subFlow.TableID)
 	flow.Priority = int(subFlow.Priority)
-	//flow.State = subFlow.State
-
+	state := FlowStateMapping(subFlow.State)
+	flow.State = state
 	// Fill Match criteria
 	if subFlow.InPort != 0 {
 		portSelector := PortSelector{
@@ -723,6 +743,11 @@
 	Ports []Port `json:"ports"`
 }
 
+type DevicePortEntry struct {
+	Device Device `json:"device"`
+	Ports  []Port `json:"ports"`
+}
+
 type Port struct {
 	Element     string          `json:"element"`
 	Port        string          `json:"port"`
