diff --git a/internal/pkg/application/igmp.go b/internal/pkg/application/igmp.go
index fa28c8e..d43283d 100644
--- a/internal/pkg/application/igmp.go
+++ b/internal/pkg/application/igmp.go
@@ -5273,3 +5273,22 @@
 	}
 	return true
 }
+
+// JsonMarshal wrapper function for json Marshal MvlanProfile
+func (mvp *MvlanProfile) JsonMarshal() ([]byte, error) {
+	return json.Marshal(MvlanProfile{
+		Name:                mvp.Name,
+		Mvlan:               mvp.Mvlan,
+		PonVlan:             mvp.PonVlan,
+		Groups:              mvp.Groups,
+		Proxy:               mvp.Proxy,
+		Version:             mvp.Version,
+		IsPonVlanPresent:    mvp.IsPonVlanPresent,
+		IsChannelBasedGroup: mvp.IsChannelBasedGroup,
+		DevicesList:         mvp.DevicesList,
+		MaxActiveChannels:   mvp.MaxActiveChannels,
+		PendingDeleteFlow:   mvp.PendingDeleteFlow,
+		DeleteInProgress:    mvp.DeleteInProgress,
+		IgmpServVersion:     mvp.IgmpServVersion,
+	})
+}
diff --git a/internal/pkg/application/major_upgrade.go b/internal/pkg/application/major_upgrade.go
index 13c3762..084a554 100644
--- a/internal/pkg/application/major_upgrade.go
+++ b/internal/pkg/application/major_upgrade.go
@@ -347,7 +347,7 @@
 	vs.AssociatedFlows = make(map[string]bool)
 	vs.DeleteInProgress = false
 	vs.PonPort = 0xFF
-	if updatedData, err = json.Marshal(vs); err != nil {
+	if updatedData, err = vs.JsonMarshal(); err != nil {
 		logger.Warnw(ctx, "Marshal of Service failed", log.Fields{"Error": err.Error()})
 		return ""
 	}
@@ -414,7 +414,7 @@
 	}
 	vnet.PendingDeleteFlow = make(map[string]map[string]bool)
 	vnet.DeleteInProgress = false
-	if updatedData, err = json.Marshal(vnet); err != nil {
+	if updatedData, err = vnet.JsonMarshal(); err != nil {
 		logger.Warnw(ctx, "Marshal of Vnet failed", log.Fields{"Error": err.Error()})
 		return ""
 	}
@@ -469,7 +469,7 @@
 	vpv.PendingDeleteFlow = make(map[string]bool)
 	vpv.PonPort = 0xFF
 
-	if updatedData, err = json.Marshal(vpv); err != nil {
+	if updatedData, err = vpv.JsonMarshal(); err != nil {
 		logger.Warnw(ctx, "Marshal of VPV failed", log.Fields{"Error": err.Error()})
 		return ""
 	}
@@ -495,7 +495,7 @@
 		mvp.IgmpServVersion[srNo] = &servVersion
 	}
 
-	if updatedData, err = json.Marshal(mvp); err != nil {
+	if updatedData, err = mvp.JsonMarshal(); err != nil {
 		logger.Warnw(ctx, "Marshal of Mvlan Profile failed", log.Fields{"Error": err.Error()})
 		return ""
 	}
diff --git a/internal/pkg/application/service.go b/internal/pkg/application/service.go
index e90b948..e9a7393 100644
--- a/internal/pkg/application/service.go
+++ b/internal/pkg/application/service.go
@@ -1976,3 +1976,31 @@
 //triggerServiceInProgressInd - Indication is generated when Service is not provisioned after add serviec req from NB
 func (vs *VoltService) triggerServiceInProgressInd() {
 }
+
+// JsonMarshal wrapper function for json Marshal VoltService
+func (vs *VoltService) JsonMarshal() ([]byte, error) {
+	return json.Marshal(VoltService{
+		VoltServiceCfg: vs.VoltServiceCfg,
+		VoltServiceOper: VoltServiceOper{
+			Device:             vs.VoltServiceOper.Device,
+			Ipv4Addr:           vs.VoltServiceOper.Ipv4Addr,
+			Ipv6Addr:           vs.VoltServiceOper.Ipv6Addr,
+			UsMeterID:          vs.VoltServiceOper.UsMeterID,
+			DsMeterID:          vs.VoltServiceOper.DsMeterID,
+			AggDsMeterID:       vs.VoltServiceOper.AggDsMeterID,
+			UsHSIAFlowsApplied: vs.VoltServiceOper.UsHSIAFlowsApplied,
+			DsHSIAFlowsApplied: vs.VoltServiceOper.DsHSIAFlowsApplied,
+			UsDhcpFlowsApplied: vs.VoltServiceOper.UsDhcpFlowsApplied,
+			DsDhcpFlowsApplied: vs.VoltServiceOper.DsDhcpFlowsApplied,
+			IgmpFlowsApplied:   vs.VoltServiceOper.IgmpFlowsApplied,
+			Icmpv6FlowsApplied: vs.VoltServiceOper.Icmpv6FlowsApplied,
+			PendingFlows:       vs.VoltServiceOper.PendingFlows,
+			AssociatedFlows:    vs.VoltServiceOper.AssociatedFlows,
+			DeleteInProgress:   vs.VoltServiceOper.DeleteInProgress,
+			ForceDelete:        vs.VoltServiceOper.ForceDelete,
+			BwAvailInfo:        vs.VoltServiceOper.BwAvailInfo,
+			UpdateInProgress:   vs.VoltServiceOper.UpdateInProgress,
+			Metadata:           vs.VoltServiceOper.Metadata,
+		},
+	})
+}
diff --git a/internal/pkg/application/vnets.go b/internal/pkg/application/vnets.go
index cf2d1fc..40add28 100644
--- a/internal/pkg/application/vnets.go
+++ b/internal/pkg/application/vnets.go
@@ -3136,3 +3136,65 @@
 	}
 	return true
 }
+
+// JsonMarshal wrapper function for json Marshal VoltVnet
+func (vv *VoltVnet) JsonMarshal() ([]byte, error) {
+	return json.Marshal(VoltVnet{
+		VnetConfig: vv.VnetConfig,
+		Version: vv.Version,
+		VnetOper: VnetOper{
+			PendingDeleteFlow:     vv.VnetOper.PendingDeleteFlow,
+			DeleteInProgress:      vv.VnetOper.DeleteInProgress,
+			PendingDeviceToDelete: vv.VnetOper.PendingDeviceToDelete,
+		},
+	})
+}
+
+// JsonMarshal wrapper function for json Marshal VoltPortVnet
+func (vpv *VoltPortVnet) JsonMarshal() ([]byte, error) {
+	return json.Marshal(VoltPortVnet{
+		Device:                     vpv.Device,
+		Port:                       vpv.Port,
+		PonPort:                    vpv.PonPort,
+		VnetName:                   vpv.VnetName,
+		SVlan:                      vpv.SVlan,
+		CVlan:                      vpv.CVlan,
+		UniVlan:                    vpv.UniVlan,
+		SVlanTpid:                  vpv.SVlanTpid,
+		DhcpRelay:                  vpv.DhcpRelay,
+		ArpRelay:                   vpv.ArpRelay,
+		PppoeIa:                    vpv.PppoeIa,
+		MacLearning:                vpv.MacLearning,
+		DhcpStatus:                 vpv.DhcpStatus,
+		DhcpExpiryTime:             vpv.DhcpExpiryTime,
+		Dhcp6ExpiryTime:            vpv.Dhcp6ExpiryTime,
+		FlowsApplied:               vpv.FlowsApplied,
+		Ipv4Addr:                   vpv.Ipv4Addr,
+		Ipv6Addr:                   vpv.Ipv6Addr,
+		MacAddr:                    vpv.MacAddr,
+		LearntMacAddr:              vpv.LearntMacAddr,
+		CircuitID:                  vpv.CircuitID,
+		RemoteID:                   vpv.RemoteID,
+		IsOption82Disabled:         vpv.IsOption82Disabled,
+		RelayState:                 vpv.RelayState,
+		PPPoeState:                 vpv.PPPoeState,
+		RelayStatev6:               vpv.RelayStatev6,
+		IgmpEnabled:                vpv.IgmpEnabled,
+		IgmpFlowsApplied:           vpv.IgmpFlowsApplied,
+		McastService:               vpv.McastService,
+		ONTEtherTypeClassification: vpv.ONTEtherTypeClassification,
+		VlanControl:                vpv.VlanControl,
+		MvlanProfileName:           vpv.MvlanProfileName,
+		Version:                    vpv.Version,
+		McastTechProfileID:         vpv.McastTechProfileID,
+		McastPbit:                  vpv.McastPbit,
+		McastUsMeterID:             vpv.McastUsMeterID,
+		AllowTransparent:           vpv.AllowTransparent,
+		SchedID:                    vpv.SchedID,
+		DHCPv6DUID:                 vpv.DHCPv6DUID,
+		PendingDeleteFlow:          vpv.PendingDeleteFlow,
+		DeleteInProgress:           vpv.DeleteInProgress,
+		Blocked:                    vpv.Blocked,
+		DhcpPbit:                   vpv.DhcpPbit,
+	})
+}
