diff --git a/internal/pkg/application/application.go b/internal/pkg/application/application.go
index fa9e649..74b72f8 100644
--- a/internal/pkg/application/application.go
+++ b/internal/pkg/application/application.go
@@ -215,6 +215,7 @@
 	FlowDelEventMap              *util.ConcurrentMap //map[string]*FlowEvent
 	MigratingServices            *util.ConcurrentMap //<vnetID,<RequestID, MigrateServicesRequest>>
 	GlobalDhcpFlowAdded          bool
+	NniDhcpTrapVid               of.VlanType
 }
 
 // NewVoltDevice : Constructor for the device
@@ -234,6 +235,11 @@
 	d.FlowAddEventMap = util.NewConcurrentMap()
 	d.FlowDelEventMap = util.NewConcurrentMap()
 	d.GlobalDhcpFlowAdded = false
+	if config, ok := GetApplication().DevicesConfig.Load(slno); ok {
+		//Update nni dhcp vid
+		deviceConfig := config.(DeviceConfig)
+		d.NniDhcpTrapVid = of.VlanType(deviceConfig.NniDhcpTrapVid)
+	}
 	return &d
 }
 
@@ -443,6 +449,7 @@
 	PortAlarmProfileCache     map[string]map[string]int // [portAlarmID][ThresholdLevelString]ThresholdLevel
 	vendorID                  string
 	OltFlowServiceConfig      OltFlowService
+	DevicesConfig             sync.Map
 }
 
 // PonPortCfg contains NB port config and activeIGMPChannels count
@@ -791,14 +798,16 @@
 
 // GetDeviceBySerialNo to get a device by serial number.
 // TODO - Transform this into a MAP instead
-func (va *VoltApplication) GetDeviceBySerialNo(slno string) *VoltDevice {
+func (va *VoltApplication) GetDeviceBySerialNo(slno string) (*VoltDevice, string) {
 	var device *VoltDevice
+	var deviceID string
 	getserial := func(key interface{}, value interface{}) bool {
 		device = value.(*VoltDevice)
+		deviceID = key.(string)
 		return device.SerialNum != slno
 	}
 	va.DevicesDisc.Range(getserial)
-	return device
+	return device, deviceID
 }
 
 // PortAddInd : This is a PORT add indication coming from the VPAgent, which is essentially
@@ -1740,7 +1749,7 @@
 // UpdateDeviceSerialNumberList to update the device serial number list after device serial number is updated for vnet and mvlan
 func (va *VoltApplication) UpdateDeviceSerialNumberList(oldOltSlNo string, newOltSlNo string) {
 
-	voltDevice := va.GetDeviceBySerialNo(oldOltSlNo)
+	voltDevice, _ := va.GetDeviceBySerialNo(oldOltSlNo)
 
 	if voltDevice != nil {
 		// Device is present with old serial number ID
@@ -2080,7 +2089,7 @@
 		if vnetIntf, _ := va.VnetsByName.Load(vnetName); vnetIntf != nil {
 			vnet := vnetIntf.(*VoltVnet)
 			logger.Warnw(ctx, "Triggering Pending Vnet flows delete", log.Fields{"Vnet": vnet.Name})
-			if d := va.GetDeviceBySerialNo(vnet.PendingDeviceToDelete); d != nil && d.SerialNum == vnet.PendingDeviceToDelete {
+			if d, _ := va.GetDeviceBySerialNo(vnet.PendingDeviceToDelete); d != nil && d.SerialNum == vnet.PendingDeviceToDelete {
 				va.DeleteDevFlowForVlanFromDevice(cntx, vnet, vnet.PendingDeviceToDelete)
 				va.deleteVnetConfig(vnet)
 			} else {
@@ -2124,3 +2133,34 @@
 	}
 	logger.Infow(ctx, "updated OltFlowServiceConfig from DB", log.Fields{"OltFlowServiceConfig": va.OltFlowServiceConfig})
 }
+
+type DeviceConfig struct {
+	SerialNumber       string
+	UplinkPort         int
+	HardwareIdentifier string
+	IPAddress          net.IP
+	NasID              string
+	NniDhcpTrapVid     int
+}
+
+func (va *VoltApplication) UpdateDeviceConfig(cntx context.Context, sn, mac, nasID string, port, dhcpVid int, ip net.IP) {
+	if d, ok := va.DevicesConfig.Load(sn); ok {
+		logger.Infow(ctx, "Device configuration already exists", log.Fields{"DeviceInfo": d})
+	}
+	d := DeviceConfig {
+		SerialNumber       : sn,
+		UplinkPort         : port,
+		HardwareIdentifier : mac,
+		IPAddress          : ip,
+		NasID              : nasID,
+		NniDhcpTrapVid     : dhcpVid,
+	}
+	logger.Infow(ctx, "Added OLT configurations", log.Fields{"DeviceInfo": d})
+	va.DevicesConfig.Store(sn, d)
+	// If device is already discovered update the VoltDevice structure
+	device, id := va.GetDeviceBySerialNo(sn)
+	if device != nil {
+		device.NniDhcpTrapVid = of.VlanType(dhcpVid)
+		va.DevicesDisc.Store(id, device)
+	}
+}
