diff --git a/internal/pkg/application/application.go b/internal/pkg/application/application.go
index 1f31149..730be6c 100644
--- a/internal/pkg/application/application.go
+++ b/internal/pkg/application/application.go
@@ -454,7 +454,7 @@
 type DeviceConfig struct {
 	SerialNumber       string `json:"id"`
 	HardwareIdentifier string `json:"hardwareIdentifier"`
-	IPAddress          net.IP `json:"ipAddress"`
+	IPAddress          string `json:"ipAddress"`
 	UplinkPort         int    `json:"uplinkPort"`
 	NasID              string `json:"nasId"`
 	NniDhcpTrapVid     int    `json:"nniDhcpTrapVid"`
@@ -573,29 +573,31 @@
 	return nil
 }
 
-func (va *VoltApplication) AddDeviceConfig(cntx context.Context, serialNum, hardwareIdentifier, nasID string, ipAddress net.IP, uplinkPort, nniDhcpTrapId int) error {
+func (va *VoltApplication) AddDeviceConfig(cntx context.Context, serialNum, hardwareIdentifier, nasID, ipAddress string, uplinkPort, nniDhcpTrapId int) error {
 	var dc *DeviceConfig
 
-	d := va.GetDeviceConfig(serialNum)
-	if d == nil {
-		deviceConfig := &DeviceConfig{
-			SerialNumber:       serialNum,
-			HardwareIdentifier: hardwareIdentifier,
-			NasID:              nasID,
-			UplinkPort:         uplinkPort,
-			IPAddress:          ipAddress,
-			NniDhcpTrapVid:     nniDhcpTrapId,
-		}
-		va.DevicesConfig.Store(serialNum, deviceConfig)
-		err := dc.WriteDeviceConfigToDb(cntx, serialNum, deviceConfig)
-		if err != nil {
-			logger.Errorw(ctx, "DB update for device config failed", log.Fields{"err": err})
-			return err
-		}
-	} else {
-		logger.Errorw(ctx, "Device config already exist", log.Fields{"DeviceID": serialNum})
-		return errors.New("Device config already exist")
+	deviceConfig := &DeviceConfig{
+		SerialNumber:       serialNum,
+		HardwareIdentifier: hardwareIdentifier,
+		NasID:              nasID,
+		UplinkPort:         uplinkPort,
+		IPAddress:          ipAddress,
+		NniDhcpTrapVid:     nniDhcpTrapId,
 	}
+	va.DevicesConfig.Store(serialNum, deviceConfig)
+	err := dc.WriteDeviceConfigToDb(cntx, serialNum, deviceConfig)
+	if err != nil {
+		logger.Errorw(ctx, "DB update for device config failed", log.Fields{"err": err})
+		return err
+	}
+
+	// If device is already discovered update the VoltDevice structure
+	device, id := va.GetDeviceBySerialNo(serialNum)
+	if device != nil {
+		device.NniDhcpTrapVid = of.VlanType(nniDhcpTrapId)
+		va.DevicesDisc.Store(id, device)
+	}
+
 	return nil
 }
 
@@ -2145,24 +2147,18 @@
 	logger.Infow(ctx, "updated OltFlowServiceConfig from DB", log.Fields{"OltFlowServiceConfig": va.OltFlowServiceConfig})
 }
 
-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})
+func (va *VoltApplication) UpdateDeviceConfig(cntx context.Context, deviceConfig *DeviceConfig) {
+	var dc *DeviceConfig
+	va.DevicesConfig.Store(deviceConfig.SerialNumber, deviceConfig)
+	err := dc.WriteDeviceConfigToDb(cntx, deviceConfig.SerialNumber, deviceConfig)
+	if err != nil {
+		logger.Errorw(ctx, "DB update for device config failed", log.Fields{"err": err})
 	}
-	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)
+	logger.Infow(ctx, "Added OLT configurations", log.Fields{"DeviceInfo": deviceConfig})
 	// If device is already discovered update the VoltDevice structure
-	device, id := va.GetDeviceBySerialNo(sn)
+	device, id := va.GetDeviceBySerialNo(deviceConfig.SerialNumber)
 	if device != nil {
-		device.NniDhcpTrapVid = of.VlanType(dhcpVid)
+		device.NniDhcpTrapVid = of.VlanType(deviceConfig.NniDhcpTrapVid)
 		va.DevicesDisc.Store(id, device)
 	}
 }
