diff --git a/VERSION b/VERSION
index 1a03094..9767cc9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.1.9
+0.1.10
diff --git a/internal/pkg/application/application.go b/internal/pkg/application/application.go
index e8bc663..cc5e331 100644
--- a/internal/pkg/application/application.go
+++ b/internal/pkg/application/application.go
@@ -1168,7 +1168,7 @@
 	}
 	if len(d.(*VoltDevice).NniPort) > 0 {
 		for _, nniPort := range d.(*VoltDevice).NniPort {
-			nniPortID, err := GetApplication().GetPortID(nniPort)
+			nniPortID, err := GetApplication().GetDevicePortID(device, nniPort)
 			if err != nil {
 				logger.Errorw(ctx, "Error getting port ID by port Name", log.Fields{"Error": err})
 				continue
@@ -2349,3 +2349,16 @@
 		va.DevicesDisc.Store(id, device)
 	}
 }
+
+func (va *VoltApplication) GetDevicePortID(device, port string) (uint32, error) {
+	logger.Debugw(ctx, "Received Get Device Port ID", log.Fields{"Port": port})
+	d := va.GetDevice(device)
+	if d == nil {
+		return 0, fmt.Errorf("device not found: %s", device)
+	}
+	value, ok := d.Ports.Load(port)
+	if !ok {
+		return 0, fmt.Errorf("port not found: %s", port)
+	}
+	return value.(*VoltPort).ID, nil
+}
diff --git a/internal/pkg/application/igmpprofiles.go b/internal/pkg/application/igmpprofiles.go
index f26e33b..673dacc 100644
--- a/internal/pkg/application/igmpprofiles.go
+++ b/internal/pkg/application/igmpprofiles.go
@@ -565,7 +565,7 @@
 	if err != nil {
 		return nil, err
 	}
-	nniPortID, err1 := GetApplication().GetPortID(nniPort)
+	nniPortID, err1 := GetApplication().GetDevicePortID(device, nniPort)
 	if err1 != nil {
 		return nil, errors.New("Unknown NNI outport")
 	}
diff --git a/internal/pkg/application/service.go b/internal/pkg/application/service.go
index b36cb8f..bb2966f 100644
--- a/internal/pkg/application/service.go
+++ b/internal/pkg/application/service.go
@@ -593,7 +593,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err1})
 			return nil, err1
 		}
-		inport, _ = GetApplication().GetPortID(nniPort)
+		inport, _ = GetApplication().GetDevicePortID(device.Name, nniPort)
 	}
 	outport, _ := GetApplication().GetPortID(vs.Port)
 	// PortName and PortID to be used for validation of port before flow pushing
@@ -791,7 +791,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return nil, err
 		}
-		outport, _ = GetApplication().GetPortID(nniPort)
+		outport, _ = GetApplication().GetDevicePortID(device.Name, nniPort)
 	}
 	inport, _ := GetApplication().GetPortID(vs.Port)
 	// PortName and PortID to be used for validation of port before flow pushing
diff --git a/internal/pkg/application/vnets.go b/internal/pkg/application/vnets.go
index 8a23636..e4f96be 100644
--- a/internal/pkg/application/vnets.go
+++ b/internal/pkg/application/vnets.go
@@ -1953,7 +1953,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return nil, err
 		}
-		inport, _ = GetApplication().GetPortID(nniPort)
+		inport, _ = GetApplication().GetDevicePortID(device.Name, nniPort)
 	}
 
 	subFlow.SetInPort(inport)
@@ -2051,7 +2051,7 @@
 		logger.Errorw(ctx, "Failed to fetch nni port from vpv", log.Fields{"error": err, "device": vpv.Device})
 		return nil, err
 	}
-	nniport, err := GetApplication().GetPortID(nni)
+	nniport, err := GetApplication().GetDevicePortID(vpv.Device, nni)
 	if err != nil {
 		logger.Errorw(ctx, "Failed to fetch port ID for nni", log.Fields{"error": err, "nni": nni})
 		return nil, err
@@ -2212,7 +2212,7 @@
 	if err != nil {
 		return nil, err
 	}
-	nniport, err := GetApplication().GetPortID(nni)
+	nniport, err := GetApplication().GetDevicePortID(vpv.Device, nni)
 	if err != nil {
 		return nil, err
 	}
@@ -2717,7 +2717,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		if portID, err := va.GetPortID(nniPort); err == nil {
+		if portID, err := va.GetDevicePortID(device.Name, nniPort); err == nil {
 			if state, _ := controller.GetController().GetPortState(device.Name, nniPort); state != controller.PortStateUp {
 				logger.Warnw(ctx, "Skipping Dev Flow Configuration - Port Down", log.Fields{"Device": device})
 				return true
@@ -2777,7 +2777,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		nniPortID, err := va.GetPortID(nniPort)
+		nniPortID, err := va.GetDevicePortID(device.Name, nniPort)
 		if err != nil {
 			logger.Errorw(ctx, "Push ICMPv6 Failed - Failed to get NNI Port Id", log.Fields{"Port": device.NniPort, "Reason": err.Error})
 		}
@@ -2829,7 +2829,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		if portID, err := va.GetPortID(nniPort); err == nil {
+		if portID, err := va.GetDevicePortID(device.Name, nniPort); err == nil {
 			if state, _ := controller.GetController().GetPortState(device.Name, nniPort); state != controller.PortStateUp {
 				logger.Warnw(ctx, "Skipping ICMPv6 Flow Deletion - Port Down", log.Fields{"Device": device})
 				return true
@@ -2883,7 +2883,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		nniPortID, err := va.GetPortID(nniPort)
+		nniPortID, err := va.GetDevicePortID(device.Name, nniPort)
 		if err != nil {
 			logger.Errorw(ctx, "Delete ICMPv6 Failed - Failed to get NNI Port Id", log.Fields{"Port": device.NniPort, "Reason": err.Error})
 		}
@@ -2950,7 +2950,7 @@
 			logger.Errorw(ctx, "Error getting NNI port", log.Fields{"Error": err})
 			return true
 		}
-		if portID, err := va.GetPortID(nniPort); err == nil {
+		if portID, err := va.GetDevicePortID(device.Name, nniPort); err == nil {
 			if state, _ := controller.GetController().GetPortState(device.Name, nniPort); state != controller.PortStateUp {
 				logger.Warnw(ctx, "Skipping ICMPv6 Flow Deletion - Port Down", log.Fields{"Device": device})
 				return false
diff --git a/internal/pkg/application/vnets_test.go b/internal/pkg/application/vnets_test.go
index 7016667..9fa1e3f 100644
--- a/internal/pkg/application/vnets_test.go
+++ b/internal/pkg/application/vnets_test.go
@@ -2125,6 +2125,7 @@
 				assert.NotNil(t, got)
 			case "BuildDsDhcp6Flows":
 				voltDev.NniPort = []string{"16777216"}
+				voltDev.Ports.Store("16777216", voltPort)
 				va.DevicesDisc.Store("SDX6320031", voltDev)
 				va.DevicesConfig.Store("SDX6320031", deviceConfig)
 				got, err := vpv.BuildDsDhcp6Flows()
