// Code generated by "gen/generator.go"; DO NOT EDIT.
// In order to regenerate this file execute `go generate` from the repository root.
// More details can be found in the [README](https://github.com/CiscoDevNet/terraform-provider-aci/blob/master/README.md).

package provider

import (
	"context"
	"encoding/json"
	"fmt"

	"github.com/ciscoecosystem/aci-go-client/v2/client"
	"github.com/ciscoecosystem/aci-go-client/v2/container"
	"github.com/hashicorp/terraform-plugin-framework-validators/setvalidator"
	"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
	"github.com/hashicorp/terraform-plugin-framework/attr"
	"github.com/hashicorp/terraform-plugin-framework/diag"
	"github.com/hashicorp/terraform-plugin-framework/path"
	"github.com/hashicorp/terraform-plugin-framework/resource"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema/objectplanmodifier"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema/setplanmodifier"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault"
	"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
	"github.com/hashicorp/terraform-plugin-framework/schema/validator"
	"github.com/hashicorp/terraform-plugin-framework/types"
	"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
	"github.com/hashicorp/terraform-plugin-log/tflog"
)

// Ensure provider defined types fully satisfy framework interfaces.
var _ resource.Resource = &FvBDResource{}
var _ resource.ResourceWithImportState = &FvBDResource{}

func NewFvBDResource() resource.Resource {
	return &FvBDResource{}
}

// FvBDResource defines the resource implementation.
type FvBDResource struct {
	client *client.Client
}

// FvBDResourceModel describes the resource data model.
type FvBDResourceModel struct {
	Id                                   types.String `tfsdk:"id"`
	ParentDn                             types.String `tfsdk:"parent_dn"`
	OptimizeWanBandwidth                 types.String `tfsdk:"optimize_wan_bandwidth"`
	Annotation                           types.String `tfsdk:"annotation"`
	ArpFlood                             types.String `tfsdk:"arp_flooding"`
	Descr                                types.String `tfsdk:"description"`
	EnableRogueExceptMac                 types.String `tfsdk:"enable_rogue_exception_mac"`
	EpClear                              types.String `tfsdk:"clear_remote_mac_entries"`
	EpMoveDetectMode                     types.String `tfsdk:"endpoint_move_detection_mode"`
	HostBasedRouting                     types.String `tfsdk:"advertise_host_routes"`
	IntersiteBumTrafficAllow             types.String `tfsdk:"enable_intersite_bum_traffic"`
	IntersiteL2Stretch                   types.String `tfsdk:"intersite_l2_stretch"`
	IpLearning                           types.String `tfsdk:"ip_learning"`
	Ipv6McastAllow                       types.String `tfsdk:"pim_ipv6"`
	LimitIpLearnToSubnets                types.String `tfsdk:"limit_ip_learn_to_subnets"`
	LlAddr                               types.String `tfsdk:"link_local_ipv6_address"`
	Mac                                  types.String `tfsdk:"custom_mac_address"`
	McastARPDrop                         types.String `tfsdk:"drop_arp_with_multicast_smac"`
	McastAllow                           types.String `tfsdk:"pim"`
	MultiDstPktAct                       types.String `tfsdk:"multi_destination_flooding"`
	Name                                 types.String `tfsdk:"name"`
	NameAlias                            types.String `tfsdk:"name_alias"`
	OwnerKey                             types.String `tfsdk:"owner_key"`
	OwnerTag                             types.String `tfsdk:"owner_tag"`
	PcTag                                types.String `tfsdk:"pc_tag"`
	Scope                                types.String `tfsdk:"scope"`
	Seg                                  types.String `tfsdk:"segment"`
	ServiceBdRoutingDisable              types.String `tfsdk:"service_bd_routing_disable"`
	Type                                 types.String `tfsdk:"bridge_domain_type"`
	UnicastRoute                         types.String `tfsdk:"unicast_routing"`
	UnkMacUcastAct                       types.String `tfsdk:"l2_unknown_unicast_flooding"`
	UnkMcastAct                          types.String `tfsdk:"l3_unknown_multicast_flooding"`
	V6unkMcastAct                        types.String `tfsdk:"ipv6_l3_unknown_multicast_flooding"`
	Vmac                                 types.String `tfsdk:"virtual_mac_address"`
	FvAccP                               types.Object `tfsdk:"legacy_mode"`
	FvRogueExceptionMac                  types.Set    `tfsdk:"rogue_coop_exceptions"`
	FvRsABDPolMonPol                     types.Object `tfsdk:"relation_to_monitoring_policy"`
	FvRsBDToFhs                          types.Object `tfsdk:"relation_to_first_hop_security_policy"`
	FvRsBDToNdP                          types.Object `tfsdk:"relation_to_neighbor_discovery_interface_policy"`
	FvRsBDToNetflowMonitorPol            types.Set    `tfsdk:"relation_to_netflow_monitor_policies"`
	FvRsBDToOut                          types.Set    `tfsdk:"relation_to_l3_outsides"`
	FvRsBDToProfile                      types.Object `tfsdk:"relation_to_route_control_profile"`
	FvRsBDToRelayP                       types.Object `tfsdk:"relation_to_dhcp_relay_policy"`
	FvRsBdToEpRet                        types.Object `tfsdk:"relation_to_end_point_retention_policy"`
	FvRsCtx                              types.Object `tfsdk:"relation_to_vrf"`
	FvRsIgmpsn                           types.Object `tfsdk:"relation_to_igmp_snooping_policy"`
	FvRsMldsn                            types.Object `tfsdk:"relation_to_mld_snooping_policy"`
	TagAnnotation                        types.Set    `tfsdk:"annotations"`
	TagTag                               types.Set    `tfsdk:"tags"`
	DeprecatedArpFlood                   types.String `tfsdk:"arp_flood"`
	DeprecatedEpClear                    types.String `tfsdk:"ep_clear"`
	DeprecatedEpMoveDetectMode           types.String `tfsdk:"ep_move_detect_mode"`
	DeprecatedHostBasedRouting           types.String `tfsdk:"host_based_routing"`
	DeprecatedIntersiteBumTrafficAllow   types.String `tfsdk:"intersite_bum_traffic_allow"`
	DeprecatedIpv6McastAllow             types.String `tfsdk:"ipv6_mcast_allow"`
	DeprecatedLlAddr                     types.String `tfsdk:"ll_addr"`
	DeprecatedMac                        types.String `tfsdk:"mac"`
	DeprecatedMcastAllow                 types.String `tfsdk:"mcast_allow"`
	DeprecatedMultiDstPktAct             types.String `tfsdk:"multi_dst_pkt_act"`
	DeprecatedParentDn                   types.String `tfsdk:"tenant_dn"`
	DeprecatedUnicastRoute               types.String `tfsdk:"unicast_route"`
	DeprecatedUnkMacUcastAct             types.String `tfsdk:"unk_mac_ucast_act"`
	DeprecatedUnkMcastAct                types.String `tfsdk:"unk_mcast_act"`
	DeprecatedV6unkMcastAct              types.String `tfsdk:"v6unk_mcast_act"`
	DeprecatedVmac                       types.String `tfsdk:"vmac"`
	DeprecatedFvRsBDToRelayP             types.String `tfsdk:"relation_fv_rs_bd_to_relay_p"`
	DeprecatedFvRsBdToEpRet              types.String `tfsdk:"relation_fv_rs_bd_to_ep_ret"`
	DeprecatedFvRsBDToFhs                types.String `tfsdk:"relation_fv_rs_bd_to_fhs"`
	DeprecatedFvRsBDToOut                types.Set    `tfsdk:"relation_fv_rs_bd_to_out"`
	DeprecatedFvRsABDPolMonPol           types.String `tfsdk:"relation_fv_rs_abd_pol_mon_pol"`
	DeprecatedFvRsBDToNdP                types.String `tfsdk:"relation_fv_rs_bd_to_nd_p"`
	Ignored_relation_fv_rs_bd_flood_to   types.Set    `tfsdk:"relation_fv_rs_bd_flood_to"`
	Ignored_relation_fv_rs_bd_to_profile types.String `tfsdk:"relation_fv_rs_bd_to_profile"`
	DeprecatedFvRsIgmpsn                 types.String `tfsdk:"relation_fv_rs_igmpsn"`
	DeprecatedFvRsMldsn                  types.String `tfsdk:"relation_fv_rs_mldsn"`
	DeprecatedFvRsCtx                    types.String `tfsdk:"relation_fv_rs_ctx"`
	DeprecatedFvRsBDToNetflowMonitorPol  types.Set    `tfsdk:"relation_fv_rs_bd_to_netflow_monitor_pol"`
}

func getEmptyFvBDResourceModel() *FvBDResourceModel {
	return &FvBDResourceModel{
		Id:                       basetypes.NewStringNull(),
		ParentDn:                 basetypes.NewStringNull(),
		OptimizeWanBandwidth:     basetypes.NewStringNull(),
		Annotation:               basetypes.NewStringNull(),
		ArpFlood:                 basetypes.NewStringNull(),
		Descr:                    basetypes.NewStringNull(),
		EnableRogueExceptMac:     basetypes.NewStringNull(),
		EpClear:                  basetypes.NewStringNull(),
		EpMoveDetectMode:         basetypes.NewStringNull(),
		HostBasedRouting:         basetypes.NewStringNull(),
		IntersiteBumTrafficAllow: basetypes.NewStringNull(),
		IntersiteL2Stretch:       basetypes.NewStringNull(),
		IpLearning:               basetypes.NewStringNull(),
		Ipv6McastAllow:           basetypes.NewStringNull(),
		LimitIpLearnToSubnets:    basetypes.NewStringNull(),
		LlAddr:                   basetypes.NewStringNull(),
		Mac:                      basetypes.NewStringNull(),
		McastARPDrop:             basetypes.NewStringNull(),
		McastAllow:               basetypes.NewStringNull(),
		MultiDstPktAct:           basetypes.NewStringNull(),
		Name:                     basetypes.NewStringNull(),
		NameAlias:                basetypes.NewStringNull(),
		OwnerKey:                 basetypes.NewStringNull(),
		OwnerTag:                 basetypes.NewStringNull(),
		PcTag:                    basetypes.NewStringNull(),
		Scope:                    basetypes.NewStringNull(),
		Seg:                      basetypes.NewStringNull(),
		ServiceBdRoutingDisable:  basetypes.NewStringNull(),
		Type:                     basetypes.NewStringNull(),
		UnicastRoute:             basetypes.NewStringNull(),
		UnkMacUcastAct:           basetypes.NewStringNull(),
		UnkMcastAct:              basetypes.NewStringNull(),
		V6unkMcastAct:            basetypes.NewStringNull(),
		Vmac:                     basetypes.NewStringNull(),
		FvAccP: types.ObjectNull(map[string]attr.Type{
			"annotation":    types.StringType,
			"description":   types.StringType,
			"encapsulation": types.StringType,
			"name":          types.StringType,
			"name_alias":    types.StringType,
			"owner_key":     types.StringType,
			"owner_tag":     types.StringType,
			"annotations":   types.SetType{ElemType: TagAnnotationFvAccPFvBDType},
			"tags":          types.SetType{ElemType: TagTagFvAccPFvBDType},
		}),
		FvRogueExceptionMac: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"annotation":  types.StringType,
				"description": types.StringType,
				"mac":         types.StringType,
				"name":        types.StringType,
				"name_alias":  types.StringType,
				"annotations": types.SetType{ElemType: TagAnnotationFvRogueExceptionMacFvBDType},
				"tags":        types.SetType{ElemType: TagTagFvRogueExceptionMacFvBDType},
			},
		}),
		FvRsABDPolMonPol: types.ObjectNull(map[string]attr.Type{
			"annotation":             types.StringType,
			"monitoring_policy_name": types.StringType,
			"annotations":            types.SetType{ElemType: TagAnnotationFvRsABDPolMonPolFvBDType},
			"tags":                   types.SetType{ElemType: TagTagFvRsABDPolMonPolFvBDType},
		}),
		FvRsBDToFhs: types.ObjectNull(map[string]attr.Type{
			"annotation":                     types.StringType,
			"first_hop_security_policy_name": types.StringType,
			"annotations":                    types.SetType{ElemType: TagAnnotationFvRsBDToFhsFvBDType},
			"tags":                           types.SetType{ElemType: TagTagFvRsBDToFhsFvBDType},
		}),
		FvRsBDToNdP: types.ObjectNull(map[string]attr.Type{
			"annotation": types.StringType,
			"neighbor_discovery_interface_policy_name": types.StringType,
			"annotations": types.SetType{ElemType: TagAnnotationFvRsBDToNdPFvBDType},
			"tags":        types.SetType{ElemType: TagTagFvRsBDToNdPFvBDType},
		}),
		FvRsBDToNetflowMonitorPol: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"annotation":                  types.StringType,
				"filter_type":                 types.StringType,
				"netflow_monitor_policy_name": types.StringType,
				"annotations":                 types.SetType{ElemType: TagAnnotationFvRsBDToNetflowMonitorPolFvBDType},
				"tags":                        types.SetType{ElemType: TagTagFvRsBDToNetflowMonitorPolFvBDType},
			},
		}),
		FvRsBDToOut: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"annotation":      types.StringType,
				"l3_outside_name": types.StringType,
				"annotations":     types.SetType{ElemType: TagAnnotationFvRsBDToOutFvBDType},
				"tags":            types.SetType{ElemType: TagTagFvRsBDToOutFvBDType},
			},
		}),
		FvRsBDToProfile: types.ObjectNull(map[string]attr.Type{
			"annotation":                 types.StringType,
			"l3_outside_name":            types.StringType,
			"route_control_profile_name": types.StringType,
			"annotations":                types.SetType{ElemType: TagAnnotationFvRsBDToProfileFvBDType},
			"tags":                       types.SetType{ElemType: TagTagFvRsBDToProfileFvBDType},
		}),
		FvRsBDToRelayP: types.ObjectNull(map[string]attr.Type{
			"annotation":             types.StringType,
			"dhcp_relay_policy_name": types.StringType,
			"annotations":            types.SetType{ElemType: TagAnnotationFvRsBDToRelayPFvBDType},
			"tags":                   types.SetType{ElemType: TagTagFvRsBDToRelayPFvBDType},
		}),
		FvRsBdToEpRet: types.ObjectNull(map[string]attr.Type{
			"annotation":                      types.StringType,
			"resolve_action":                  types.StringType,
			"end_point_retention_policy_name": types.StringType,
			"annotations":                     types.SetType{ElemType: TagAnnotationFvRsBdToEpRetFvBDType},
			"tags":                            types.SetType{ElemType: TagTagFvRsBdToEpRetFvBDType},
		}),
		FvRsCtx: types.ObjectNull(map[string]attr.Type{
			"annotation":  types.StringType,
			"vrf_name":    types.StringType,
			"annotations": types.SetType{ElemType: TagAnnotationFvRsCtxFvBDType},
			"tags":        types.SetType{ElemType: TagTagFvRsCtxFvBDType},
		}),
		FvRsIgmpsn: types.ObjectNull(map[string]attr.Type{
			"annotation":                types.StringType,
			"igmp_snooping_policy_name": types.StringType,
			"annotations":               types.SetType{ElemType: TagAnnotationFvRsIgmpsnFvBDType},
			"tags":                      types.SetType{ElemType: TagTagFvRsIgmpsnFvBDType},
		}),
		FvRsMldsn: types.ObjectNull(map[string]attr.Type{
			"annotation":               types.StringType,
			"mld_snooping_policy_name": types.StringType,
			"annotations":              types.SetType{ElemType: TagAnnotationFvRsMldsnFvBDType},
			"tags":                     types.SetType{ElemType: TagTagFvRsMldsnFvBDType},
		}),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		DeprecatedArpFlood:                   types.String{},
		DeprecatedEpClear:                    types.String{},
		DeprecatedEpMoveDetectMode:           types.String{},
		DeprecatedHostBasedRouting:           types.String{},
		DeprecatedIntersiteBumTrafficAllow:   types.String{},
		DeprecatedIpv6McastAllow:             types.String{},
		DeprecatedLlAddr:                     types.String{},
		DeprecatedMac:                        types.String{},
		DeprecatedMcastAllow:                 types.String{},
		DeprecatedMultiDstPktAct:             types.String{},
		DeprecatedParentDn:                   types.String{},
		DeprecatedUnicastRoute:               types.String{},
		DeprecatedUnkMacUcastAct:             types.String{},
		DeprecatedUnkMcastAct:                types.String{},
		DeprecatedV6unkMcastAct:              types.String{},
		DeprecatedVmac:                       types.String{},
		DeprecatedFvRsBDToRelayP:             types.String{},
		DeprecatedFvRsBdToEpRet:              types.String{},
		DeprecatedFvRsBDToFhs:                types.String{},
		DeprecatedFvRsBDToOut:                types.SetNull(types.StringType),
		DeprecatedFvRsABDPolMonPol:           types.String{},
		DeprecatedFvRsBDToNdP:                types.String{},
		Ignored_relation_fv_rs_bd_flood_to:   types.SetNull(types.StringType),
		Ignored_relation_fv_rs_bd_to_profile: types.String{},
		DeprecatedFvRsIgmpsn:                 types.String{},
		DeprecatedFvRsMldsn:                  types.String{},
		DeprecatedFvRsCtx:                    types.String{},
		DeprecatedFvRsBDToNetflowMonitorPol:  types.SetNull(deprecatedFvRsBDToNetflowMonitorPolType),
	}
}

// FvAccPFvBDResourceModel describes the resource data model for the children without relation ships.
type FvAccPFvBDResourceModel struct {
	Annotation    types.String `tfsdk:"annotation"`
	Descr         types.String `tfsdk:"description"`
	Encap         types.String `tfsdk:"encapsulation"`
	Name          types.String `tfsdk:"name"`
	NameAlias     types.String `tfsdk:"name_alias"`
	OwnerKey      types.String `tfsdk:"owner_key"`
	OwnerTag      types.String `tfsdk:"owner_tag"`
	TagAnnotation types.Set    `tfsdk:"annotations"`
	TagTag        types.Set    `tfsdk:"tags"`
}

func getEmptyFvAccPFvBDResourceModel() FvAccPFvBDResourceModel {
	return FvAccPFvBDResourceModel{
		Annotation: basetypes.NewStringNull(),
		Descr:      basetypes.NewStringNull(),
		Encap:      basetypes.NewStringNull(),
		Name:       basetypes.NewStringNull(),
		NameAlias:  basetypes.NewStringNull(),
		OwnerKey:   basetypes.NewStringNull(),
		OwnerTag:   basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvAccPFvBDType = map[string]attr.Type{
	"annotation":    types.StringType,
	"description":   types.StringType,
	"encapsulation": types.StringType,
	"name":          types.StringType,
	"name_alias":    types.StringType,
	"owner_key":     types.StringType,
	"owner_tag":     types.StringType,
	"annotations":   types.SetType{ElemType: TagAnnotationFvAccPFvBDType},
	"tags":          types.SetType{ElemType: TagTagFvAccPFvBDType},
}

// TagAnnotationFvAccPFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvAccPFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvAccPFvBDResourceModel() TagAnnotationFvAccPFvBDResourceModel {
	return TagAnnotationFvAccPFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvAccPFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvAccPFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvAccPFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvAccPFvBDResourceModel() TagTagFvAccPFvBDResourceModel {
	return TagTagFvAccPFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvAccPFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRogueExceptionMacFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRogueExceptionMacFvBDResourceModel struct {
	Annotation    types.String `tfsdk:"annotation"`
	Descr         types.String `tfsdk:"description"`
	Mac           types.String `tfsdk:"mac"`
	Name          types.String `tfsdk:"name"`
	NameAlias     types.String `tfsdk:"name_alias"`
	TagAnnotation types.Set    `tfsdk:"annotations"`
	TagTag        types.Set    `tfsdk:"tags"`
}

func getEmptyFvRogueExceptionMacFvBDResourceModel() FvRogueExceptionMacFvBDResourceModel {
	return FvRogueExceptionMacFvBDResourceModel{
		Annotation: basetypes.NewStringNull(),
		Descr:      basetypes.NewStringNull(),
		Mac:        basetypes.NewStringNull(),
		Name:       basetypes.NewStringNull(),
		NameAlias:  basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRogueExceptionMacFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"annotation":  types.StringType,
		"description": types.StringType,
		"mac":         types.StringType,
		"name":        types.StringType,
		"name_alias":  types.StringType,
		"annotations": types.SetType{ElemType: TagAnnotationFvRogueExceptionMacFvBDType},
		"tags":        types.SetType{ElemType: TagTagFvRogueExceptionMacFvBDType},
	},
}

func FvRogueExceptionMacFvBDSetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate(ctx context.Context, planValue, stateValue types.Set) basetypes.SetValue {
	//  Function is needed to handle the case that an attribute is not yet supported in a version and gets set to null during read
	var planSetValues, stateSetValues []FvRogueExceptionMacFvBDResourceModel
	stateValue.ElementsAs(ctx, &stateSetValues, false)
	planValue.ElementsAs(ctx, &planSetValues, false)

	// If the length of the state and plan values are different a change is already detected the loop can be skipped
	if len(stateSetValues) == len(planSetValues) {
		for index, stateValue := range stateSetValues {
			nullInStateFound := false
			if stateValue.Annotation.IsNull() {
				nullInStateFound = true
				planSetValues[index].Annotation = basetypes.NewStringNull()
			}
			if stateValue.Descr.IsNull() {
				nullInStateFound = true
				planSetValues[index].Descr = basetypes.NewStringNull()
			}
			if stateValue.Mac.IsNull() {
				nullInStateFound = true
				planSetValues[index].Mac = basetypes.NewStringNull()
			}
			if stateValue.Name.IsNull() {
				nullInStateFound = true
				planSetValues[index].Name = basetypes.NewStringNull()
			}
			if stateValue.NameAlias.IsNull() {
				nullInStateFound = true
				planSetValues[index].NameAlias = basetypes.NewStringNull()
			}
			if !nullInStateFound {
				// when there are no null fields we can conclude the version supports all attributes in set
				break
			}
		}
	}
	planSet, _ := types.SetValueFrom(ctx, FvRogueExceptionMacFvBDType, planSetValues)
	return planSet

}

// TagAnnotationFvRogueExceptionMacFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRogueExceptionMacFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRogueExceptionMacFvBDResourceModel() TagAnnotationFvRogueExceptionMacFvBDResourceModel {
	return TagAnnotationFvRogueExceptionMacFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRogueExceptionMacFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRogueExceptionMacFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRogueExceptionMacFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRogueExceptionMacFvBDResourceModel() TagTagFvRogueExceptionMacFvBDResourceModel {
	return TagTagFvRogueExceptionMacFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRogueExceptionMacFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsABDPolMonPolFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsABDPolMonPolFvBDResourceModel struct {
	Annotation      types.String `tfsdk:"annotation"`
	TnMonEPGPolName types.String `tfsdk:"monitoring_policy_name"`
	TagAnnotation   types.Set    `tfsdk:"annotations"`
	TagTag          types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsABDPolMonPolFvBDResourceModel() FvRsABDPolMonPolFvBDResourceModel {
	return FvRsABDPolMonPolFvBDResourceModel{
		Annotation:      basetypes.NewStringNull(),
		TnMonEPGPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsABDPolMonPolFvBDType = map[string]attr.Type{
	"annotation":             types.StringType,
	"monitoring_policy_name": types.StringType,
	"annotations":            types.SetType{ElemType: TagAnnotationFvRsABDPolMonPolFvBDType},
	"tags":                   types.SetType{ElemType: TagTagFvRsABDPolMonPolFvBDType},
}

// TagAnnotationFvRsABDPolMonPolFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsABDPolMonPolFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsABDPolMonPolFvBDResourceModel() TagAnnotationFvRsABDPolMonPolFvBDResourceModel {
	return TagAnnotationFvRsABDPolMonPolFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsABDPolMonPolFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsABDPolMonPolFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsABDPolMonPolFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsABDPolMonPolFvBDResourceModel() TagTagFvRsABDPolMonPolFvBDResourceModel {
	return TagTagFvRsABDPolMonPolFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsABDPolMonPolFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBDToFhsFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBDToFhsFvBDResourceModel struct {
	Annotation     types.String `tfsdk:"annotation"`
	TnFhsBDPolName types.String `tfsdk:"first_hop_security_policy_name"`
	TagAnnotation  types.Set    `tfsdk:"annotations"`
	TagTag         types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBDToFhsFvBDResourceModel() FvRsBDToFhsFvBDResourceModel {
	return FvRsBDToFhsFvBDResourceModel{
		Annotation:     basetypes.NewStringNull(),
		TnFhsBDPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBDToFhsFvBDType = map[string]attr.Type{
	"annotation":                     types.StringType,
	"first_hop_security_policy_name": types.StringType,
	"annotations":                    types.SetType{ElemType: TagAnnotationFvRsBDToFhsFvBDType},
	"tags":                           types.SetType{ElemType: TagTagFvRsBDToFhsFvBDType},
}

// TagAnnotationFvRsBDToFhsFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBDToFhsFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBDToFhsFvBDResourceModel() TagAnnotationFvRsBDToFhsFvBDResourceModel {
	return TagAnnotationFvRsBDToFhsFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBDToFhsFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBDToFhsFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBDToFhsFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBDToFhsFvBDResourceModel() TagTagFvRsBDToFhsFvBDResourceModel {
	return TagTagFvRsBDToFhsFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBDToFhsFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBDToNdPFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBDToNdPFvBDResourceModel struct {
	Annotation    types.String `tfsdk:"annotation"`
	TnNdIfPolName types.String `tfsdk:"neighbor_discovery_interface_policy_name"`
	TagAnnotation types.Set    `tfsdk:"annotations"`
	TagTag        types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBDToNdPFvBDResourceModel() FvRsBDToNdPFvBDResourceModel {
	return FvRsBDToNdPFvBDResourceModel{
		Annotation:    basetypes.NewStringNull(),
		TnNdIfPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBDToNdPFvBDType = map[string]attr.Type{
	"annotation": types.StringType,
	"neighbor_discovery_interface_policy_name": types.StringType,
	"annotations": types.SetType{ElemType: TagAnnotationFvRsBDToNdPFvBDType},
	"tags":        types.SetType{ElemType: TagTagFvRsBDToNdPFvBDType},
}

// TagAnnotationFvRsBDToNdPFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBDToNdPFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBDToNdPFvBDResourceModel() TagAnnotationFvRsBDToNdPFvBDResourceModel {
	return TagAnnotationFvRsBDToNdPFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBDToNdPFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBDToNdPFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBDToNdPFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBDToNdPFvBDResourceModel() TagTagFvRsBDToNdPFvBDResourceModel {
	return TagTagFvRsBDToNdPFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBDToNdPFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBDToNetflowMonitorPolFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBDToNetflowMonitorPolFvBDResourceModel struct {
	Annotation              types.String `tfsdk:"annotation"`
	FltType                 types.String `tfsdk:"filter_type"`
	TnNetflowMonitorPolName types.String `tfsdk:"netflow_monitor_policy_name"`
	TagAnnotation           types.Set    `tfsdk:"annotations"`
	TagTag                  types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBDToNetflowMonitorPolFvBDResourceModel() FvRsBDToNetflowMonitorPolFvBDResourceModel {
	return FvRsBDToNetflowMonitorPolFvBDResourceModel{
		Annotation:              basetypes.NewStringNull(),
		FltType:                 basetypes.NewStringNull(),
		TnNetflowMonitorPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBDToNetflowMonitorPolFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"annotation":                  types.StringType,
		"filter_type":                 types.StringType,
		"netflow_monitor_policy_name": types.StringType,
		"annotations":                 types.SetType{ElemType: TagAnnotationFvRsBDToNetflowMonitorPolFvBDType},
		"tags":                        types.SetType{ElemType: TagTagFvRsBDToNetflowMonitorPolFvBDType},
	},
}

func FvRsBDToNetflowMonitorPolFvBDSetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate(ctx context.Context, planValue, stateValue types.Set) basetypes.SetValue {
	//  Function is needed to handle the case that an attribute is not yet supported in a version and gets set to null during read
	var planSetValues, stateSetValues []FvRsBDToNetflowMonitorPolFvBDResourceModel
	stateValue.ElementsAs(ctx, &stateSetValues, false)
	planValue.ElementsAs(ctx, &planSetValues, false)

	// If the length of the state and plan values are different a change is already detected the loop can be skipped
	if len(stateSetValues) == len(planSetValues) {
		for index, stateValue := range stateSetValues {
			nullInStateFound := false
			if stateValue.Annotation.IsNull() {
				nullInStateFound = true
				planSetValues[index].Annotation = basetypes.NewStringNull()
			}
			if stateValue.FltType.IsNull() {
				nullInStateFound = true
				planSetValues[index].FltType = basetypes.NewStringNull()
			}
			if stateValue.TnNetflowMonitorPolName.IsNull() {
				nullInStateFound = true
				planSetValues[index].TnNetflowMonitorPolName = basetypes.NewStringNull()
			}
			if !nullInStateFound {
				// when there are no null fields we can conclude the version supports all attributes in set
				break
			}
		}
	}
	planSet, _ := types.SetValueFrom(ctx, FvRsBDToNetflowMonitorPolFvBDType, planSetValues)
	return planSet

}

// TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel() TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel {
	return TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBDToNetflowMonitorPolFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBDToNetflowMonitorPolFvBDResourceModel() TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel {
	return TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBDToNetflowMonitorPolFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBDToOutFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBDToOutFvBDResourceModel struct {
	Annotation     types.String `tfsdk:"annotation"`
	TnL3extOutName types.String `tfsdk:"l3_outside_name"`
	TagAnnotation  types.Set    `tfsdk:"annotations"`
	TagTag         types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBDToOutFvBDResourceModel() FvRsBDToOutFvBDResourceModel {
	return FvRsBDToOutFvBDResourceModel{
		Annotation:     basetypes.NewStringNull(),
		TnL3extOutName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBDToOutFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"annotation":      types.StringType,
		"l3_outside_name": types.StringType,
		"annotations":     types.SetType{ElemType: TagAnnotationFvRsBDToOutFvBDType},
		"tags":            types.SetType{ElemType: TagTagFvRsBDToOutFvBDType},
	},
}

func FvRsBDToOutFvBDSetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate(ctx context.Context, planValue, stateValue types.Set) basetypes.SetValue {
	//  Function is needed to handle the case that an attribute is not yet supported in a version and gets set to null during read
	var planSetValues, stateSetValues []FvRsBDToOutFvBDResourceModel
	stateValue.ElementsAs(ctx, &stateSetValues, false)
	planValue.ElementsAs(ctx, &planSetValues, false)

	// If the length of the state and plan values are different a change is already detected the loop can be skipped
	if len(stateSetValues) == len(planSetValues) {
		for index, stateValue := range stateSetValues {
			nullInStateFound := false
			if stateValue.Annotation.IsNull() {
				nullInStateFound = true
				planSetValues[index].Annotation = basetypes.NewStringNull()
			}
			if stateValue.TnL3extOutName.IsNull() {
				nullInStateFound = true
				planSetValues[index].TnL3extOutName = basetypes.NewStringNull()
			}
			if !nullInStateFound {
				// when there are no null fields we can conclude the version supports all attributes in set
				break
			}
		}
	}
	planSet, _ := types.SetValueFrom(ctx, FvRsBDToOutFvBDType, planSetValues)
	return planSet

}

// TagAnnotationFvRsBDToOutFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBDToOutFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBDToOutFvBDResourceModel() TagAnnotationFvRsBDToOutFvBDResourceModel {
	return TagAnnotationFvRsBDToOutFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBDToOutFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBDToOutFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBDToOutFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBDToOutFvBDResourceModel() TagTagFvRsBDToOutFvBDResourceModel {
	return TagTagFvRsBDToOutFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBDToOutFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBDToProfileFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBDToProfileFvBDResourceModel struct {
	Annotation          types.String `tfsdk:"annotation"`
	TnL3extOutName      types.String `tfsdk:"l3_outside_name"`
	TnRtctrlProfileName types.String `tfsdk:"route_control_profile_name"`
	TagAnnotation       types.Set    `tfsdk:"annotations"`
	TagTag              types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBDToProfileFvBDResourceModel() FvRsBDToProfileFvBDResourceModel {
	return FvRsBDToProfileFvBDResourceModel{
		Annotation:          basetypes.NewStringNull(),
		TnL3extOutName:      basetypes.NewStringNull(),
		TnRtctrlProfileName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBDToProfileFvBDType = map[string]attr.Type{
	"annotation":                 types.StringType,
	"l3_outside_name":            types.StringType,
	"route_control_profile_name": types.StringType,
	"annotations":                types.SetType{ElemType: TagAnnotationFvRsBDToProfileFvBDType},
	"tags":                       types.SetType{ElemType: TagTagFvRsBDToProfileFvBDType},
}

// TagAnnotationFvRsBDToProfileFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBDToProfileFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBDToProfileFvBDResourceModel() TagAnnotationFvRsBDToProfileFvBDResourceModel {
	return TagAnnotationFvRsBDToProfileFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBDToProfileFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBDToProfileFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBDToProfileFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBDToProfileFvBDResourceModel() TagTagFvRsBDToProfileFvBDResourceModel {
	return TagTagFvRsBDToProfileFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBDToProfileFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBDToRelayPFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBDToRelayPFvBDResourceModel struct {
	Annotation       types.String `tfsdk:"annotation"`
	TnDhcpRelayPName types.String `tfsdk:"dhcp_relay_policy_name"`
	TagAnnotation    types.Set    `tfsdk:"annotations"`
	TagTag           types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBDToRelayPFvBDResourceModel() FvRsBDToRelayPFvBDResourceModel {
	return FvRsBDToRelayPFvBDResourceModel{
		Annotation:       basetypes.NewStringNull(),
		TnDhcpRelayPName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBDToRelayPFvBDType = map[string]attr.Type{
	"annotation":             types.StringType,
	"dhcp_relay_policy_name": types.StringType,
	"annotations":            types.SetType{ElemType: TagAnnotationFvRsBDToRelayPFvBDType},
	"tags":                   types.SetType{ElemType: TagTagFvRsBDToRelayPFvBDType},
}

// TagAnnotationFvRsBDToRelayPFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBDToRelayPFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBDToRelayPFvBDResourceModel() TagAnnotationFvRsBDToRelayPFvBDResourceModel {
	return TagAnnotationFvRsBDToRelayPFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBDToRelayPFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBDToRelayPFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBDToRelayPFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBDToRelayPFvBDResourceModel() TagTagFvRsBDToRelayPFvBDResourceModel {
	return TagTagFvRsBDToRelayPFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBDToRelayPFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsBdToEpRetFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsBdToEpRetFvBDResourceModel struct {
	Annotation       types.String `tfsdk:"annotation"`
	ResolveAct       types.String `tfsdk:"resolve_action"`
	TnFvEpRetPolName types.String `tfsdk:"end_point_retention_policy_name"`
	TagAnnotation    types.Set    `tfsdk:"annotations"`
	TagTag           types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsBdToEpRetFvBDResourceModel() FvRsBdToEpRetFvBDResourceModel {
	return FvRsBdToEpRetFvBDResourceModel{
		Annotation:       basetypes.NewStringNull(),
		ResolveAct:       basetypes.NewStringNull(),
		TnFvEpRetPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsBdToEpRetFvBDType = map[string]attr.Type{
	"annotation":                      types.StringType,
	"resolve_action":                  types.StringType,
	"end_point_retention_policy_name": types.StringType,
	"annotations":                     types.SetType{ElemType: TagAnnotationFvRsBdToEpRetFvBDType},
	"tags":                            types.SetType{ElemType: TagTagFvRsBdToEpRetFvBDType},
}

// TagAnnotationFvRsBdToEpRetFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsBdToEpRetFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsBdToEpRetFvBDResourceModel() TagAnnotationFvRsBdToEpRetFvBDResourceModel {
	return TagAnnotationFvRsBdToEpRetFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsBdToEpRetFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsBdToEpRetFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsBdToEpRetFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsBdToEpRetFvBDResourceModel() TagTagFvRsBdToEpRetFvBDResourceModel {
	return TagTagFvRsBdToEpRetFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsBdToEpRetFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsCtxFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsCtxFvBDResourceModel struct {
	Annotation    types.String `tfsdk:"annotation"`
	TnFvCtxName   types.String `tfsdk:"vrf_name"`
	TagAnnotation types.Set    `tfsdk:"annotations"`
	TagTag        types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsCtxFvBDResourceModel() FvRsCtxFvBDResourceModel {
	return FvRsCtxFvBDResourceModel{
		Annotation:  basetypes.NewStringNull(),
		TnFvCtxName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsCtxFvBDType = map[string]attr.Type{
	"annotation":  types.StringType,
	"vrf_name":    types.StringType,
	"annotations": types.SetType{ElemType: TagAnnotationFvRsCtxFvBDType},
	"tags":        types.SetType{ElemType: TagTagFvRsCtxFvBDType},
}

// TagAnnotationFvRsCtxFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsCtxFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsCtxFvBDResourceModel() TagAnnotationFvRsCtxFvBDResourceModel {
	return TagAnnotationFvRsCtxFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsCtxFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsCtxFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsCtxFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsCtxFvBDResourceModel() TagTagFvRsCtxFvBDResourceModel {
	return TagTagFvRsCtxFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsCtxFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsIgmpsnFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsIgmpsnFvBDResourceModel struct {
	Annotation         types.String `tfsdk:"annotation"`
	TnIgmpSnoopPolName types.String `tfsdk:"igmp_snooping_policy_name"`
	TagAnnotation      types.Set    `tfsdk:"annotations"`
	TagTag             types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsIgmpsnFvBDResourceModel() FvRsIgmpsnFvBDResourceModel {
	return FvRsIgmpsnFvBDResourceModel{
		Annotation:         basetypes.NewStringNull(),
		TnIgmpSnoopPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsIgmpsnFvBDType = map[string]attr.Type{
	"annotation":                types.StringType,
	"igmp_snooping_policy_name": types.StringType,
	"annotations":               types.SetType{ElemType: TagAnnotationFvRsIgmpsnFvBDType},
	"tags":                      types.SetType{ElemType: TagTagFvRsIgmpsnFvBDType},
}

// TagAnnotationFvRsIgmpsnFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsIgmpsnFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsIgmpsnFvBDResourceModel() TagAnnotationFvRsIgmpsnFvBDResourceModel {
	return TagAnnotationFvRsIgmpsnFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsIgmpsnFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsIgmpsnFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsIgmpsnFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsIgmpsnFvBDResourceModel() TagTagFvRsIgmpsnFvBDResourceModel {
	return TagTagFvRsIgmpsnFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsIgmpsnFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// FvRsMldsnFvBDResourceModel describes the resource data model for the children without relation ships.
type FvRsMldsnFvBDResourceModel struct {
	Annotation        types.String `tfsdk:"annotation"`
	TnMldSnoopPolName types.String `tfsdk:"mld_snooping_policy_name"`
	TagAnnotation     types.Set    `tfsdk:"annotations"`
	TagTag            types.Set    `tfsdk:"tags"`
}

func getEmptyFvRsMldsnFvBDResourceModel() FvRsMldsnFvBDResourceModel {
	return FvRsMldsnFvBDResourceModel{
		Annotation:        basetypes.NewStringNull(),
		TnMldSnoopPolName: basetypes.NewStringNull(),
		TagAnnotation: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
		TagTag: types.SetNull(types.ObjectType{
			AttrTypes: map[string]attr.Type{
				"key":   types.StringType,
				"value": types.StringType,
			},
		}),
	}
}

var FvRsMldsnFvBDType = map[string]attr.Type{
	"annotation":               types.StringType,
	"mld_snooping_policy_name": types.StringType,
	"annotations":              types.SetType{ElemType: TagAnnotationFvRsMldsnFvBDType},
	"tags":                     types.SetType{ElemType: TagTagFvRsMldsnFvBDType},
}

// TagAnnotationFvRsMldsnFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvRsMldsnFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvRsMldsnFvBDResourceModel() TagAnnotationFvRsMldsnFvBDResourceModel {
	return TagAnnotationFvRsMldsnFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvRsMldsnFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvRsMldsnFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvRsMldsnFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvRsMldsnFvBDResourceModel() TagTagFvRsMldsnFvBDResourceModel {
	return TagTagFvRsMldsnFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvRsMldsnFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagAnnotationFvBDResourceModel describes the resource data model for the children without relation ships.
type TagAnnotationFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagAnnotationFvBDResourceModel() TagAnnotationFvBDResourceModel {
	return TagAnnotationFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagAnnotationFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

// TagTagFvBDResourceModel describes the resource data model for the children without relation ships.
type TagTagFvBDResourceModel struct {
	Key   types.String `tfsdk:"key"`
	Value types.String `tfsdk:"value"`
}

func getEmptyTagTagFvBDResourceModel() TagTagFvBDResourceModel {
	return TagTagFvBDResourceModel{
		Key:   basetypes.NewStringNull(),
		Value: basetypes.NewStringNull(),
	}
}

var TagTagFvBDType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"key":   types.StringType,
		"value": types.StringType,
	},
}

type FvBDIdentifier struct {
	Name types.String
}

var deprecatedFvRsBDToNetflowMonitorPolType = types.ObjectType{
	AttrTypes: map[string]attr.Type{
		"flt_type":                    basetypes.StringType{},
		"tn_netflow_monitor_pol_name": basetypes.StringType{},
	},
}

type FvBDResourceModelV1 struct {
	Annotation                           types.String `tfsdk:"annotation"`
	ArpFlood                             types.String `tfsdk:"arp_flood"`
	Descr                                types.String `tfsdk:"description"`
	EpClear                              types.String `tfsdk:"ep_clear"`
	EpMoveDetectMode                     types.String `tfsdk:"ep_move_detect_mode"`
	HostBasedRouting                     types.String `tfsdk:"host_based_routing"`
	Id                                   types.String `tfsdk:"id"`
	IntersiteBumTrafficAllow             types.String `tfsdk:"intersite_bum_traffic_allow"`
	IntersiteL2Stretch                   types.String `tfsdk:"intersite_l2_stretch"`
	IpLearning                           types.String `tfsdk:"ip_learning"`
	Ipv6McastAllow                       types.String `tfsdk:"ipv6_mcast_allow"`
	LimitIpLearnToSubnets                types.String `tfsdk:"limit_ip_learn_to_subnets"`
	LlAddr                               types.String `tfsdk:"ll_addr"`
	Mac                                  types.String `tfsdk:"mac"`
	McastAllow                           types.String `tfsdk:"mcast_allow"`
	MultiDstPktAct                       types.String `tfsdk:"multi_dst_pkt_act"`
	Name                                 types.String `tfsdk:"name"`
	NameAlias                            types.String `tfsdk:"name_alias"`
	OptimizeWanBandwidth                 types.String `tfsdk:"optimize_wan_bandwidth"`
	ParentDn                             types.String `tfsdk:"tenant_dn"`
	Type                                 types.String `tfsdk:"bridge_domain_type"`
	UnicastRoute                         types.String `tfsdk:"unicast_route"`
	UnkMacUcastAct                       types.String `tfsdk:"unk_mac_ucast_act"`
	UnkMcastAct                          types.String `tfsdk:"unk_mcast_act"`
	V6unkMcastAct                        types.String `tfsdk:"v6unk_mcast_act"`
	Vmac                                 types.String `tfsdk:"vmac"`
	FvRsBDToRelayP                       types.String `tfsdk:"relation_fv_rs_bd_to_relay_p"`
	FvRsBdToEpRet                        types.String `tfsdk:"relation_fv_rs_bd_to_ep_ret"`
	FvRsBDToFhs                          types.String `tfsdk:"relation_fv_rs_bd_to_fhs"`
	FvRsBDToOut                          types.Set    `tfsdk:"relation_fv_rs_bd_to_out"`
	FvRsABDPolMonPol                     types.String `tfsdk:"relation_fv_rs_abd_pol_mon_pol"`
	FvRsBDToNdP                          types.String `tfsdk:"relation_fv_rs_bd_to_nd_p"`
	Ignored_relation_fv_rs_bd_flood_to   types.Set    `tfsdk:"relation_fv_rs_bd_flood_to"`
	Ignored_relation_fv_rs_bd_to_profile types.String `tfsdk:"relation_fv_rs_bd_to_profile"`
	FvRsIgmpsn                           types.String `tfsdk:"relation_fv_rs_igmpsn"`
	FvRsMldsn                            types.String `tfsdk:"relation_fv_rs_mldsn"`
	FvRsCtx                              types.String `tfsdk:"relation_fv_rs_ctx"`
	FvRsBDToNetflowMonitorPol            types.Set    `tfsdk:"relation_fv_rs_bd_to_netflow_monitor_pol"`
}

type FvRsBDToNetflowMonitorPolFvBDResourceModelV1 struct {
	FltType                 types.String `tfsdk:"flt_type"`
	TnNetflowMonitorPolName types.String `tfsdk:"tn_netflow_monitor_pol_name"`
}

func getEmptyFvRsBDToNetflowMonitorPolFvBDResourceModelV1() FvRsBDToNetflowMonitorPolFvBDResourceModelV1 {
	return FvRsBDToNetflowMonitorPolFvBDResourceModelV1{
		FltType:                 basetypes.NewStringNull(),
		TnNetflowMonitorPolName: basetypes.NewStringNull(),
	}
}

func (r *FvBDResource) UpgradeState(ctx context.Context) map[int64]resource.StateUpgrader {
	return map[int64]resource.StateUpgrader{
		1: {
			PriorSchema: &schema.Schema{
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"arp_flood": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"description": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"ep_clear": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"ep_move_detect_mode": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"host_based_routing": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"id": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"intersite_bum_traffic_allow": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"intersite_l2_stretch": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"ip_learning": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"ipv6_mcast_allow": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"limit_ip_learn_to_subnets": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"ll_addr": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"mac": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"mcast_allow": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"multi_dst_pkt_act": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"name": schema.StringAttribute{
						Required: true,
						Optional: false,
						Computed: false,
					},
					"name_alias": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"optimize_wan_bandwidth": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"tenant_dn": schema.StringAttribute{
						Required: true,
						Optional: false,
						Computed: false,
					},
					"bridge_domain_type": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"unicast_route": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"unk_mac_ucast_act": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"unk_mcast_act": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"v6unk_mcast_act": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"vmac": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"relation_fv_rs_bd_to_relay_p": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: false,
					},
					"relation_fv_rs_bd_to_ep_ret": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"relation_fv_rs_bd_to_fhs": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: false,
					},
					"relation_fv_rs_bd_to_out": schema.SetAttribute{
						Required:    false,
						Optional:    true,
						Computed:    false,
						ElementType: types.StringType,
					},
					"relation_fv_rs_abd_pol_mon_pol": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: false,
					},
					"relation_fv_rs_bd_to_nd_p": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"relation_fv_rs_bd_flood_to": schema.SetAttribute{
						Required:    false,
						Optional:    true,
						Computed:    false,
						ElementType: types.StringType,
					},
					"relation_fv_rs_bd_to_profile": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: false,
					},
					"relation_fv_rs_igmpsn": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"relation_fv_rs_mldsn": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
					"relation_fv_rs_ctx": schema.StringAttribute{
						Required: false,
						Optional: true,
						Computed: true,
					},
				},
				Blocks: map[string]schema.Block{
					"relation_fv_rs_bd_to_netflow_monitor_pol": schema.SetNestedBlock{
						NestedObject: schema.NestedBlockObject{
							Attributes: map[string]schema.Attribute{
								"flt_type": schema.StringAttribute{
									Required: true,
									Optional: false,
									Computed: false,
								},
								"tn_netflow_monitor_pol_name": schema.StringAttribute{
									Required: true,
									Optional: false,
									Computed: false,
								},
							},
						},
					},
				},
			},
			StateUpgrader: func(ctx context.Context, req resource.UpgradeStateRequest, resp *resource.UpgradeStateResponse) {
				var priorStateData FvBDResourceModelV1

				resp.Diagnostics.Append(req.State.Get(ctx, &priorStateData)...)

				if resp.Diagnostics.HasError() {
					return
				}

				upgradedStateData := FvBDResourceModel{
					Id:                                   priorStateData.Id,
					ParentDn:                             priorStateData.ParentDn,
					OptimizeWanBandwidth:                 priorStateData.OptimizeWanBandwidth,
					Annotation:                           priorStateData.Annotation,
					ArpFlood:                             priorStateData.ArpFlood,
					Descr:                                priorStateData.Descr,
					EnableRogueExceptMac:                 basetypes.NewStringNull(),
					EpClear:                              priorStateData.EpClear,
					EpMoveDetectMode:                     priorStateData.EpMoveDetectMode,
					HostBasedRouting:                     priorStateData.HostBasedRouting,
					IntersiteBumTrafficAllow:             priorStateData.IntersiteBumTrafficAllow,
					IntersiteL2Stretch:                   priorStateData.IntersiteL2Stretch,
					IpLearning:                           priorStateData.IpLearning,
					Ipv6McastAllow:                       priorStateData.Ipv6McastAllow,
					LimitIpLearnToSubnets:                priorStateData.LimitIpLearnToSubnets,
					LlAddr:                               priorStateData.LlAddr,
					Mac:                                  priorStateData.Mac,
					McastARPDrop:                         basetypes.NewStringNull(),
					McastAllow:                           priorStateData.McastAllow,
					MultiDstPktAct:                       priorStateData.MultiDstPktAct,
					Name:                                 priorStateData.Name,
					NameAlias:                            priorStateData.NameAlias,
					OwnerKey:                             basetypes.NewStringNull(),
					OwnerTag:                             basetypes.NewStringNull(),
					PcTag:                                basetypes.NewStringNull(),
					Scope:                                basetypes.NewStringNull(),
					Seg:                                  basetypes.NewStringNull(),
					ServiceBdRoutingDisable:              basetypes.NewStringNull(),
					Type:                                 priorStateData.Type,
					UnicastRoute:                         priorStateData.UnicastRoute,
					UnkMacUcastAct:                       priorStateData.UnkMacUcastAct,
					UnkMcastAct:                          priorStateData.UnkMcastAct,
					V6unkMcastAct:                        priorStateData.V6unkMcastAct,
					Vmac:                                 priorStateData.Vmac,
					DeprecatedArpFlood:                   priorStateData.ArpFlood,
					DeprecatedEpClear:                    priorStateData.EpClear,
					DeprecatedEpMoveDetectMode:           priorStateData.EpMoveDetectMode,
					DeprecatedHostBasedRouting:           priorStateData.HostBasedRouting,
					DeprecatedIntersiteBumTrafficAllow:   priorStateData.IntersiteBumTrafficAllow,
					DeprecatedIpv6McastAllow:             priorStateData.Ipv6McastAllow,
					DeprecatedLlAddr:                     priorStateData.LlAddr,
					DeprecatedMac:                        priorStateData.Mac,
					DeprecatedMcastAllow:                 priorStateData.McastAllow,
					DeprecatedMultiDstPktAct:             priorStateData.MultiDstPktAct,
					DeprecatedParentDn:                   priorStateData.ParentDn,
					DeprecatedUnicastRoute:               priorStateData.UnicastRoute,
					DeprecatedUnkMacUcastAct:             priorStateData.UnkMacUcastAct,
					DeprecatedUnkMcastAct:                priorStateData.UnkMcastAct,
					DeprecatedV6unkMcastAct:              priorStateData.V6unkMcastAct,
					DeprecatedVmac:                       priorStateData.Vmac,
					DeprecatedFvRsBDToRelayP:             priorStateData.FvRsBDToRelayP,
					DeprecatedFvRsBdToEpRet:              priorStateData.FvRsBdToEpRet,
					DeprecatedFvRsBDToFhs:                priorStateData.FvRsBDToFhs,
					DeprecatedFvRsABDPolMonPol:           priorStateData.FvRsABDPolMonPol,
					DeprecatedFvRsBDToNdP:                priorStateData.FvRsBDToNdP,
					Ignored_relation_fv_rs_bd_flood_to:   priorStateData.Ignored_relation_fv_rs_bd_flood_to,
					Ignored_relation_fv_rs_bd_to_profile: priorStateData.Ignored_relation_fv_rs_bd_to_profile,
					DeprecatedFvRsIgmpsn:                 priorStateData.FvRsIgmpsn,
					DeprecatedFvRsMldsn:                  priorStateData.FvRsMldsn,
					DeprecatedFvRsCtx:                    priorStateData.FvRsCtx,
				}

				upgradedStateData.FvAccP = types.ObjectNull(FvAccPFvBDType)

				upgradedStateData.FvRogueExceptionMac = types.SetNull(
					types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"annotation":  basetypes.StringType{},
							"description": basetypes.StringType{},
							"mac":         basetypes.StringType{},
							"name":        basetypes.StringType{},
							"name_alias":  basetypes.StringType{},
							"annotations": basetypes.SetType{ElemType: TagAnnotationFvRogueExceptionMacFvBDType},
							"tags":        basetypes.SetType{ElemType: TagTagFvRogueExceptionMacFvBDType},
						},
					},
				)

				FvRsABDPolMonPolObject := FvRsABDPolMonPolFvBDResourceModel{
					Annotation:      basetypes.NewStringNull(),
					TnMonEPGPolName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsABDPolMonPol.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsABDPolMonPolObject, _ := types.ObjectValueFrom(ctx, FvRsABDPolMonPolFvBDType, FvRsABDPolMonPolObject)
				upgradedStateData.FvRsABDPolMonPol = fvRsABDPolMonPolObject

				FvRsBDToFhsObject := FvRsBDToFhsFvBDResourceModel{
					Annotation:     basetypes.NewStringNull(),
					TnFhsBDPolName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsBDToFhs.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsBDToFhsObject, _ := types.ObjectValueFrom(ctx, FvRsBDToFhsFvBDType, FvRsBDToFhsObject)
				upgradedStateData.FvRsBDToFhs = fvRsBDToFhsObject

				FvRsBDToNdPObject := FvRsBDToNdPFvBDResourceModel{
					Annotation:    basetypes.NewStringNull(),
					TnNdIfPolName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsBDToNdP.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsBDToNdPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToNdPFvBDType, FvRsBDToNdPObject)
				upgradedStateData.FvRsBDToNdP = fvRsBDToNdPObject

				FvRsBDToNetflowMonitorPolList := make([]FvRsBDToNetflowMonitorPolFvBDResourceModel, 0)
				var priorStateDataFvRsBDToNetflowMonitorPolList []FvRsBDToNetflowMonitorPolFvBDResourceModelV1
				priorStateData.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &priorStateDataFvRsBDToNetflowMonitorPolList, false)
				for _, priorStateDataFvRsBDToNetflowMonitorPol := range priorStateDataFvRsBDToNetflowMonitorPolList {
					FvRsBDToNetflowMonitorPol := FvRsBDToNetflowMonitorPolFvBDResourceModel{
						Annotation:              basetypes.NewStringNull(),
						FltType:                 priorStateDataFvRsBDToNetflowMonitorPol.FltType,
						TnNetflowMonitorPolName: priorStateDataFvRsBDToNetflowMonitorPol.TnNetflowMonitorPolName,
						TagAnnotation: basetypes.NewSetNull(types.ObjectType{
							AttrTypes: map[string]attr.Type{
								"key":   types.StringType,
								"value": types.StringType,
							},
						}),
						TagTag: basetypes.NewSetNull(types.ObjectType{
							AttrTypes: map[string]attr.Type{
								"key":   types.StringType,
								"value": types.StringType,
							},
						}),
					}
					FvRsBDToNetflowMonitorPolList = append(FvRsBDToNetflowMonitorPolList, FvRsBDToNetflowMonitorPol)
				}
				FvRsBDToNetflowMonitorPolSet, _ := types.SetValueFrom(ctx, FvRsBDToNetflowMonitorPolFvBDType, FvRsBDToNetflowMonitorPolList)
				upgradedStateData.FvRsBDToNetflowMonitorPol = FvRsBDToNetflowMonitorPolSet

				FvRsBDToOutList := make([]FvRsBDToOutFvBDResourceModel, 0)
				var priorStateDataFvRsBDToOutList []string
				priorStateData.FvRsBDToOut.ElementsAs(ctx, &priorStateDataFvRsBDToOutList, false)
				for _, priorStateDataFvRsBDToOut := range priorStateDataFvRsBDToOutList {
					FvRsBDToOut := FvRsBDToOutFvBDResourceModel{
						Annotation:     basetypes.NewStringNull(),
						TnL3extOutName: basetypes.NewStringValue(GetMOName(priorStateDataFvRsBDToOut)),
						TagAnnotation: basetypes.NewSetNull(types.ObjectType{
							AttrTypes: map[string]attr.Type{
								"key":   types.StringType,
								"value": types.StringType,
							},
						}),
						TagTag: basetypes.NewSetNull(types.ObjectType{
							AttrTypes: map[string]attr.Type{
								"key":   types.StringType,
								"value": types.StringType,
							},
						}),
					}
					FvRsBDToOutList = append(FvRsBDToOutList, FvRsBDToOut)
				}
				FvRsBDToOutSet, _ := types.SetValueFrom(ctx, FvRsBDToOutFvBDType, FvRsBDToOutList)
				upgradedStateData.FvRsBDToOut = FvRsBDToOutSet

				upgradedStateData.FvRsBDToProfile = types.ObjectNull(FvRsBDToProfileFvBDType)

				FvRsBDToRelayPObject := FvRsBDToRelayPFvBDResourceModel{
					Annotation:       basetypes.NewStringNull(),
					TnDhcpRelayPName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsBDToRelayP.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsBDToRelayPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToRelayPFvBDType, FvRsBDToRelayPObject)
				upgradedStateData.FvRsBDToRelayP = fvRsBDToRelayPObject

				FvRsBdToEpRetObject := FvRsBdToEpRetFvBDResourceModel{
					Annotation:       basetypes.NewStringNull(),
					ResolveAct:       basetypes.NewStringNull(),
					TnFvEpRetPolName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsBdToEpRet.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsBdToEpRetObject, _ := types.ObjectValueFrom(ctx, FvRsBdToEpRetFvBDType, FvRsBdToEpRetObject)
				upgradedStateData.FvRsBdToEpRet = fvRsBdToEpRetObject

				FvRsCtxObject := FvRsCtxFvBDResourceModel{
					Annotation:  basetypes.NewStringNull(),
					TnFvCtxName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsCtx.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsCtxObject, _ := types.ObjectValueFrom(ctx, FvRsCtxFvBDType, FvRsCtxObject)
				upgradedStateData.FvRsCtx = fvRsCtxObject

				FvRsIgmpsnObject := FvRsIgmpsnFvBDResourceModel{
					Annotation:         basetypes.NewStringNull(),
					TnIgmpSnoopPolName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsIgmpsn.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsIgmpsnObject, _ := types.ObjectValueFrom(ctx, FvRsIgmpsnFvBDType, FvRsIgmpsnObject)
				upgradedStateData.FvRsIgmpsn = fvRsIgmpsnObject

				FvRsMldsnObject := FvRsMldsnFvBDResourceModel{
					Annotation:        basetypes.NewStringNull(),
					TnMldSnoopPolName: basetypes.NewStringValue(GetMOName(priorStateData.FvRsMldsn.ValueString())),
					TagAnnotation: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
					TagTag: basetypes.NewSetNull(types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   types.StringType,
							"value": types.StringType,
						},
					}),
				}
				fvRsMldsnObject, _ := types.ObjectValueFrom(ctx, FvRsMldsnFvBDType, FvRsMldsnObject)
				upgradedStateData.FvRsMldsn = fvRsMldsnObject

				upgradedStateData.TagAnnotation = types.SetNull(
					types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   basetypes.StringType{},
							"value": basetypes.StringType{},
						},
					},
				)

				upgradedStateData.TagTag = types.SetNull(
					types.ObjectType{
						AttrTypes: map[string]attr.Type{
							"key":   basetypes.StringType{},
							"value": basetypes.StringType{},
						},
					},
				)

				var deprecatedFvRsBDToOutList []string
				priorStateData.FvRsBDToOut.ElementsAs(ctx, &deprecatedFvRsBDToOutList, false)
				DeprecatedFvRsBDToOutSet, _ := types.SetValueFrom(ctx, types.StringType, deprecatedFvRsBDToOutList)
				upgradedStateData.DeprecatedFvRsBDToOut = DeprecatedFvRsBDToOutSet

				var FvRsBDToNetflowMonitorPolV1List []FvRsBDToNetflowMonitorPolFvBDResourceModelV1
				priorStateData.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &FvRsBDToNetflowMonitorPolV1List, false)
				FvRsBDToNetflowMonitorPolV1Set, _ := types.SetValueFrom(ctx, deprecatedFvRsBDToNetflowMonitorPolType, FvRsBDToNetflowMonitorPolV1List)
				upgradedStateData.DeprecatedFvRsBDToNetflowMonitorPol = FvRsBDToNetflowMonitorPolV1Set

				resp.Diagnostics.Append(resp.State.Set(ctx, upgradedStateData)...)
			},
		},
	}
}

func setFvBDLegacyAttributes(ctx context.Context, diags *diag.Diagnostics, data, staticData *FvBDResourceModel, classReadInfo []interface{}) {
	data.DeprecatedParentDn = data.ParentDn
	if !staticData.Ignored_relation_fv_rs_bd_flood_to.IsUnknown() && !staticData.Ignored_relation_fv_rs_bd_flood_to.IsNull() {
		data.Ignored_relation_fv_rs_bd_flood_to = staticData.Ignored_relation_fv_rs_bd_flood_to
	} else {
		Ignored_relation_fv_rs_bd_flood_toSet, _ := types.SetValueFrom(ctx, types.StringType, []string{})
		data.Ignored_relation_fv_rs_bd_flood_to = Ignored_relation_fv_rs_bd_flood_toSet
	}
	if !staticData.Ignored_relation_fv_rs_bd_to_profile.IsUnknown() {
		data.Ignored_relation_fv_rs_bd_to_profile = staticData.Ignored_relation_fv_rs_bd_to_profile
	}
	attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{})
	for attributeName, attributeValue := range attributes {
		if attributeName == "arpFlood" {
			data.DeprecatedArpFlood = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "epClear" {
			data.DeprecatedEpClear = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "epMoveDetectMode" {
			data.DeprecatedEpMoveDetectMode = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "hostBasedRouting" {
			data.DeprecatedHostBasedRouting = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "intersiteBumTrafficAllow" {
			data.DeprecatedIntersiteBumTrafficAllow = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "ipv6McastAllow" {
			data.DeprecatedIpv6McastAllow = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "llAddr" {
			data.DeprecatedLlAddr = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "mac" {
			data.DeprecatedMac = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "mcastAllow" {
			data.DeprecatedMcastAllow = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "multiDstPktAct" {
			data.DeprecatedMultiDstPktAct = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "unicastRoute" {
			data.DeprecatedUnicastRoute = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "unkMacUcastAct" {
			data.DeprecatedUnkMacUcastAct = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "unkMcastAct" {
			data.DeprecatedUnkMcastAct = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "v6unkMcastAct" {
			data.DeprecatedV6unkMcastAct = basetypes.NewStringValue(attributeValue.(string))
		}
		if attributeName == "vmac" {
			data.DeprecatedVmac = basetypes.NewStringValue(attributeValue.(string))
		}
	}
	data.DeprecatedFvRsABDPolMonPol = basetypes.NewStringNull()
	data.DeprecatedFvRsBDToFhs = basetypes.NewStringNull()
	data.DeprecatedFvRsBDToNdP = basetypes.NewStringNull()
	DeprecatedFvRsBDToNetflowMonitorPolFvBDList := make([]FvRsBDToNetflowMonitorPolFvBDResourceModelV1, 0)
	DeprecatedFvRsBDToOutFvBDList := make([]string, 0)
	data.DeprecatedFvRsBDToRelayP = basetypes.NewStringNull()
	data.DeprecatedFvRsBdToEpRet = basetypes.NewStringNull()
	data.DeprecatedFvRsCtx = basetypes.NewStringNull()
	data.DeprecatedFvRsIgmpsn = basetypes.NewStringNull()
	data.DeprecatedFvRsMldsn = basetypes.NewStringNull()

	_, ok := classReadInfo[0].(map[string]interface{})["children"]
	if ok {
		children := classReadInfo[0].(map[string]interface{})["children"].([]interface{})
		for _, child := range children {
			for childClassName, childClassDetails := range child.(map[string]interface{}) {
				childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{})
				if childClassName == "fvRsABDPolMonPol" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsABDPolMonPol = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsBDToFhs" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsBDToFhs = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsBDToNdP" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsBDToNdP = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsBDToNetflowMonitorPol" {
					DeprecatedFvRsBDToNetflowMonitorPolFvBD := getEmptyFvRsBDToNetflowMonitorPolFvBDResourceModelV1()
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "fltType" {
							DeprecatedFvRsBDToNetflowMonitorPolFvBD.FltType = basetypes.NewStringValue(childAttributeValue.(string))
						}
						if childAttributeName == "tDn" {
							DeprecatedFvRsBDToNetflowMonitorPolFvBD.TnNetflowMonitorPolName = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
					DeprecatedFvRsBDToNetflowMonitorPolFvBDList = append(DeprecatedFvRsBDToNetflowMonitorPolFvBDList, DeprecatedFvRsBDToNetflowMonitorPolFvBD)
				}
				if childClassName == "fvRsBDToOut" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" && childAttributeValue != "" && !ContainsString(DeprecatedFvRsBDToOutFvBDList, childAttributeValue.(string)) {
							DeprecatedFvRsBDToOutFvBDList = append(DeprecatedFvRsBDToOutFvBDList, childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsBDToRelayP" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsBDToRelayP = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsBdToEpRet" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsBdToEpRet = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsCtx" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsCtx = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsIgmpsn" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsIgmpsn = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
				if childClassName == "fvRsMldsn" {
					for childAttributeName, childAttributeValue := range childAttributes {
						if childAttributeName == "tDn" {
							data.DeprecatedFvRsMldsn = basetypes.NewStringValue(childAttributeValue.(string))
						}
					}
				}
			}
		}
		fvRsBDToNetflowMonitorPolSet, _ := types.SetValueFrom(ctx, data.DeprecatedFvRsBDToNetflowMonitorPol.ElementType(ctx), DeprecatedFvRsBDToNetflowMonitorPolFvBDList)
		data.DeprecatedFvRsBDToNetflowMonitorPol = fvRsBDToNetflowMonitorPolSet
		fvRsBDToOutSet, _ := types.SetValueFrom(ctx, data.DeprecatedFvRsBDToOut.ElementType(ctx), DeprecatedFvRsBDToOutFvBDList)
		data.DeprecatedFvRsBDToOut = fvRsBDToOutSet
	}
}

func (r *FvBDResource) ModifyPlan(ctx context.Context, req resource.ModifyPlanRequest, resp *resource.ModifyPlanResponse) {
	if !req.Plan.Raw.IsNull() {
		var planData, stateData, configData *FvBDResourceModel
		resp.Diagnostics.Append(req.Plan.Get(ctx, &planData)...)
		resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...)
		resp.Diagnostics.Append(req.Config.Get(ctx, &configData)...)

		if resp.Diagnostics.HasError() {
			return
		}

		if (planData.Id.IsUnknown() || planData.Id.IsNull()) && !planData.ParentDn.IsUnknown() && !planData.Name.IsUnknown() {
			setFvBDId(ctx, planData)
		}

		if stateData == nil && !globalAllowExistingOnCreate && !planData.Id.IsUnknown() && !planData.Id.IsNull() {
			CheckDn(ctx, &resp.Diagnostics, r.client, "fvBD", planData.Id.ValueString())
			if resp.Diagnostics.HasError() {
				return
			}
		}
		if !configData.FvAccP.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvAccP.Attributes()) {
				FvAccPObject, _ := types.ObjectValueFrom(ctx, FvAccPFvBDType, getEmptyFvAccPFvBDResourceModel())
				planData.FvAccP = FvAccPObject
			}
		}
		if !configData.FvRsABDPolMonPol.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsABDPolMonPol.Attributes()) {
				FvRsABDPolMonPolObject, _ := types.ObjectValueFrom(ctx, FvRsABDPolMonPolFvBDType, getEmptyFvRsABDPolMonPolFvBDResourceModel())
				planData.FvRsABDPolMonPol = FvRsABDPolMonPolObject
			}
		}
		if !configData.FvRsBDToFhs.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsBDToFhs.Attributes()) {
				FvRsBDToFhsObject, _ := types.ObjectValueFrom(ctx, FvRsBDToFhsFvBDType, getEmptyFvRsBDToFhsFvBDResourceModel())
				planData.FvRsBDToFhs = FvRsBDToFhsObject
			}
		}
		if !configData.FvRsBDToNdP.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsBDToNdP.Attributes()) {
				FvRsBDToNdPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToNdPFvBDType, getEmptyFvRsBDToNdPFvBDResourceModel())
				planData.FvRsBDToNdP = FvRsBDToNdPObject
			}
		}
		if !configData.FvRsBDToProfile.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsBDToProfile.Attributes()) {
				FvRsBDToProfileObject, _ := types.ObjectValueFrom(ctx, FvRsBDToProfileFvBDType, getEmptyFvRsBDToProfileFvBDResourceModel())
				planData.FvRsBDToProfile = FvRsBDToProfileObject
			}
		}
		if !configData.FvRsBDToRelayP.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsBDToRelayP.Attributes()) {
				FvRsBDToRelayPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToRelayPFvBDType, getEmptyFvRsBDToRelayPFvBDResourceModel())
				planData.FvRsBDToRelayP = FvRsBDToRelayPObject
			}
		}
		if !configData.FvRsBdToEpRet.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsBdToEpRet.Attributes()) {
				FvRsBdToEpRetObject, _ := types.ObjectValueFrom(ctx, FvRsBdToEpRetFvBDType, getEmptyFvRsBdToEpRetFvBDResourceModel())
				planData.FvRsBdToEpRet = FvRsBdToEpRetObject
			}
		}
		if !configData.FvRsCtx.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsCtx.Attributes()) {
				FvRsCtxObject, _ := types.ObjectValueFrom(ctx, FvRsCtxFvBDType, getEmptyFvRsCtxFvBDResourceModel())
				planData.FvRsCtx = FvRsCtxObject
			}
		}
		if !configData.FvRsIgmpsn.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsIgmpsn.Attributes()) {
				FvRsIgmpsnObject, _ := types.ObjectValueFrom(ctx, FvRsIgmpsnFvBDType, getEmptyFvRsIgmpsnFvBDResourceModel())
				planData.FvRsIgmpsn = FvRsIgmpsnObject
			}
		}
		if !configData.FvRsMldsn.IsNull() && stateData != nil {
			if IsEmptySingleNestedAttribute(configData.FvRsMldsn.Attributes()) {
				FvRsMldsnObject, _ := types.ObjectValueFrom(ctx, FvRsMldsnFvBDType, getEmptyFvRsMldsnFvBDResourceModel())
				planData.FvRsMldsn = FvRsMldsnObject
			}
		}

		if !configData.DeprecatedArpFlood.IsNull() {
			planData.ArpFlood = configData.DeprecatedArpFlood
		}

		if !configData.DeprecatedEpClear.IsNull() {
			planData.EpClear = configData.DeprecatedEpClear
		}

		if !configData.DeprecatedEpMoveDetectMode.IsNull() {
			planData.EpMoveDetectMode = configData.DeprecatedEpMoveDetectMode
		}

		if !configData.DeprecatedHostBasedRouting.IsNull() {
			planData.HostBasedRouting = configData.DeprecatedHostBasedRouting
		}

		if !configData.DeprecatedIntersiteBumTrafficAllow.IsNull() {
			planData.IntersiteBumTrafficAllow = configData.DeprecatedIntersiteBumTrafficAllow
		}

		if !configData.DeprecatedIpv6McastAllow.IsNull() {
			planData.Ipv6McastAllow = configData.DeprecatedIpv6McastAllow
		}

		if !configData.DeprecatedLlAddr.IsNull() {
			planData.LlAddr = configData.DeprecatedLlAddr
		}

		if !configData.DeprecatedMac.IsNull() {
			planData.Mac = configData.DeprecatedMac
		}

		if !configData.DeprecatedMcastAllow.IsNull() {
			planData.McastAllow = configData.DeprecatedMcastAllow
		}

		if !configData.DeprecatedMultiDstPktAct.IsNull() {
			planData.MultiDstPktAct = configData.DeprecatedMultiDstPktAct
		}

		if !configData.DeprecatedParentDn.IsNull() {
			planData.ParentDn = configData.DeprecatedParentDn
		}

		if !configData.DeprecatedUnicastRoute.IsNull() {
			planData.UnicastRoute = configData.DeprecatedUnicastRoute
		}

		if !configData.DeprecatedUnkMacUcastAct.IsNull() {
			planData.UnkMacUcastAct = configData.DeprecatedUnkMacUcastAct
		}

		if !configData.DeprecatedUnkMcastAct.IsNull() {
			planData.UnkMcastAct = configData.DeprecatedUnkMcastAct
		}

		if !configData.DeprecatedV6unkMcastAct.IsNull() {
			planData.V6unkMcastAct = configData.DeprecatedV6unkMcastAct
		}

		if !configData.DeprecatedVmac.IsNull() {
			planData.Vmac = configData.DeprecatedVmac
		}

		if !configData.DeprecatedFvRsBDToRelayP.IsNull() {
			var newAttributeValues FvRsBDToRelayPFvBDResourceModel
			tagAnnotationFvRsBDToRelayPFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToRelayPFvBDType, make([]TagAnnotationFvRsBDToRelayPFvBDResourceModel, 0))
			tagTagFvRsBDToRelayPFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsBDToRelayPFvBDType, make([]TagTagFvRsBDToRelayPFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsBDToRelayP.Attributes()) {
				stateData.FvRsBDToRelayP.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsBDToRelayPFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsBDToRelayPFvBDValue = newAttributeValues.TagTag
			}
			tnDhcpRelayPNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsBDToRelayP.IsUnknown() {
				tnDhcpRelayPNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsBDToRelayP.ValueString()))
			}
			FvRsBDToRelayP := FvRsBDToRelayPFvBDResourceModel{
				Annotation:       annotationValue,
				TnDhcpRelayPName: tnDhcpRelayPNameValue,
				TagAnnotation:    tagAnnotationFvRsBDToRelayPFvBDValue,
				TagTag:           tagTagFvRsBDToRelayPFvBDValue,
			}
			FvRsBDToRelayPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToRelayPFvBDType, FvRsBDToRelayP)
			planData.FvRsBDToRelayP = FvRsBDToRelayPObject
		}

		if !configData.DeprecatedFvRsBdToEpRet.IsNull() {
			var newAttributeValues FvRsBdToEpRetFvBDResourceModel
			tagAnnotationFvRsBdToEpRetFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBdToEpRetFvBDType, make([]TagAnnotationFvRsBdToEpRetFvBDResourceModel, 0))
			tagTagFvRsBdToEpRetFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsBdToEpRetFvBDType, make([]TagTagFvRsBdToEpRetFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			resolveActValue := basetypes.NewStringUnknown()
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsBdToEpRet.Attributes()) {
				stateData.FvRsBdToEpRet.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				resolveActValue = newAttributeValues.ResolveAct
				tagAnnotationFvRsBdToEpRetFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsBdToEpRetFvBDValue = newAttributeValues.TagTag
			}
			tnFvEpRetPolNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsBdToEpRet.IsUnknown() {
				tnFvEpRetPolNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsBdToEpRet.ValueString()))
			}
			FvRsBdToEpRet := FvRsBdToEpRetFvBDResourceModel{
				Annotation:       annotationValue,
				ResolveAct:       resolveActValue,
				TnFvEpRetPolName: tnFvEpRetPolNameValue,
				TagAnnotation:    tagAnnotationFvRsBdToEpRetFvBDValue,
				TagTag:           tagTagFvRsBdToEpRetFvBDValue,
			}
			FvRsBdToEpRetObject, _ := types.ObjectValueFrom(ctx, FvRsBdToEpRetFvBDType, FvRsBdToEpRet)
			planData.FvRsBdToEpRet = FvRsBdToEpRetObject
		}

		if !configData.DeprecatedFvRsBDToFhs.IsNull() {
			var newAttributeValues FvRsBDToFhsFvBDResourceModel
			tagAnnotationFvRsBDToFhsFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToFhsFvBDType, make([]TagAnnotationFvRsBDToFhsFvBDResourceModel, 0))
			tagTagFvRsBDToFhsFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsBDToFhsFvBDType, make([]TagTagFvRsBDToFhsFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsBDToFhs.Attributes()) {
				stateData.FvRsBDToFhs.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsBDToFhsFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsBDToFhsFvBDValue = newAttributeValues.TagTag
			}
			tnFhsBDPolNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsBDToFhs.IsUnknown() {
				tnFhsBDPolNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsBDToFhs.ValueString()))
			}
			FvRsBDToFhs := FvRsBDToFhsFvBDResourceModel{
				Annotation:     annotationValue,
				TnFhsBDPolName: tnFhsBDPolNameValue,
				TagAnnotation:  tagAnnotationFvRsBDToFhsFvBDValue,
				TagTag:         tagTagFvRsBDToFhsFvBDValue,
			}
			FvRsBDToFhsObject, _ := types.ObjectValueFrom(ctx, FvRsBDToFhsFvBDType, FvRsBDToFhs)
			planData.FvRsBDToFhs = FvRsBDToFhsObject
		}

		if !configData.DeprecatedFvRsBDToOut.IsNull() {
			FvRsBDToOutList := make([]FvRsBDToOutFvBDResourceModel, 0)
			var attributeValues []basetypes.StringValue
			var newAttributeValues []FvRsBDToOutFvBDResourceModel
			planData.DeprecatedFvRsBDToOut.ElementsAs(ctx, &attributeValues, false)
			if stateData != nil {
				stateData.FvRsBDToOut.ElementsAs(ctx, &newAttributeValues, false)
			}
			for _, attributeValue := range attributeValues {
				FvRsBDToOutValue := FvRsBDToOutFvBDResourceModel{}
				foundAttributeValue := false
				for _, newAttributeValue := range newAttributeValues {
					if newAttributeValue.TnL3extOutName.ValueString() == GetMOName(attributeValue.ValueString()) {
						FvRsBDToOutValue = newAttributeValue
						foundAttributeValue = true
						break
					}
				}
				tnL3extOutNameValue := basetypes.NewStringUnknown()
				if !attributeValue.IsUnknown() {
					tnL3extOutNameValue = basetypes.NewStringValue(GetMOName(attributeValue.ValueString()))
				}
				FvRsBDToOut := FvRsBDToOutFvBDResourceModel{
					TnL3extOutName: tnL3extOutNameValue,
				}

				if foundAttributeValue {
					FvRsBDToOut.Annotation = FvRsBDToOutValue.Annotation
				} else {
					FvRsBDToOut.Annotation = planData.Annotation
				}
				tagAnnotationFvRsBDToOutFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToOutFvBDType, make([]TagAnnotationFvRsBDToOutFvBDResourceModel, 0))
				FvRsBDToOut.TagAnnotation = tagAnnotationFvRsBDToOutFvBDValue
				tagTagFvRsBDToOutFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsBDToOutFvBDType, make([]TagTagFvRsBDToOutFvBDResourceModel, 0))
				FvRsBDToOut.TagTag = tagTagFvRsBDToOutFvBDValue
				FvRsBDToOutList = append(FvRsBDToOutList, FvRsBDToOut)
			}
			FvRsBDToOutSet, _ := types.SetValueFrom(ctx, FvRsBDToOutFvBDType, FvRsBDToOutList)
			planData.FvRsBDToOut = FvRsBDToOutSet
		}

		if !configData.DeprecatedFvRsABDPolMonPol.IsNull() {
			var newAttributeValues FvRsABDPolMonPolFvBDResourceModel
			tagAnnotationFvRsABDPolMonPolFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsABDPolMonPolFvBDType, make([]TagAnnotationFvRsABDPolMonPolFvBDResourceModel, 0))
			tagTagFvRsABDPolMonPolFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsABDPolMonPolFvBDType, make([]TagTagFvRsABDPolMonPolFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsABDPolMonPol.Attributes()) {
				stateData.FvRsABDPolMonPol.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsABDPolMonPolFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsABDPolMonPolFvBDValue = newAttributeValues.TagTag
			}
			tnMonEPGPolNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsABDPolMonPol.IsUnknown() {
				tnMonEPGPolNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsABDPolMonPol.ValueString()))
			}
			FvRsABDPolMonPol := FvRsABDPolMonPolFvBDResourceModel{
				Annotation:      annotationValue,
				TnMonEPGPolName: tnMonEPGPolNameValue,
				TagAnnotation:   tagAnnotationFvRsABDPolMonPolFvBDValue,
				TagTag:          tagTagFvRsABDPolMonPolFvBDValue,
			}
			FvRsABDPolMonPolObject, _ := types.ObjectValueFrom(ctx, FvRsABDPolMonPolFvBDType, FvRsABDPolMonPol)
			planData.FvRsABDPolMonPol = FvRsABDPolMonPolObject
		}

		if !configData.DeprecatedFvRsBDToNdP.IsNull() {
			var newAttributeValues FvRsBDToNdPFvBDResourceModel
			tagAnnotationFvRsBDToNdPFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToNdPFvBDType, make([]TagAnnotationFvRsBDToNdPFvBDResourceModel, 0))
			tagTagFvRsBDToNdPFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsBDToNdPFvBDType, make([]TagTagFvRsBDToNdPFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsBDToNdP.Attributes()) {
				stateData.FvRsBDToNdP.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsBDToNdPFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsBDToNdPFvBDValue = newAttributeValues.TagTag
			}
			tnNdIfPolNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsBDToNdP.IsUnknown() {
				tnNdIfPolNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsBDToNdP.ValueString()))
			}
			FvRsBDToNdP := FvRsBDToNdPFvBDResourceModel{
				Annotation:    annotationValue,
				TnNdIfPolName: tnNdIfPolNameValue,
				TagAnnotation: tagAnnotationFvRsBDToNdPFvBDValue,
				TagTag:        tagTagFvRsBDToNdPFvBDValue,
			}
			FvRsBDToNdPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToNdPFvBDType, FvRsBDToNdP)
			planData.FvRsBDToNdP = FvRsBDToNdPObject
		}

		if !configData.DeprecatedFvRsIgmpsn.IsNull() {
			var newAttributeValues FvRsIgmpsnFvBDResourceModel
			tagAnnotationFvRsIgmpsnFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsIgmpsnFvBDType, make([]TagAnnotationFvRsIgmpsnFvBDResourceModel, 0))
			tagTagFvRsIgmpsnFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsIgmpsnFvBDType, make([]TagTagFvRsIgmpsnFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsIgmpsn.Attributes()) {
				stateData.FvRsIgmpsn.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsIgmpsnFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsIgmpsnFvBDValue = newAttributeValues.TagTag
			}
			tnIgmpSnoopPolNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsIgmpsn.IsUnknown() {
				tnIgmpSnoopPolNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsIgmpsn.ValueString()))
			}
			FvRsIgmpsn := FvRsIgmpsnFvBDResourceModel{
				Annotation:         annotationValue,
				TnIgmpSnoopPolName: tnIgmpSnoopPolNameValue,
				TagAnnotation:      tagAnnotationFvRsIgmpsnFvBDValue,
				TagTag:             tagTagFvRsIgmpsnFvBDValue,
			}
			FvRsIgmpsnObject, _ := types.ObjectValueFrom(ctx, FvRsIgmpsnFvBDType, FvRsIgmpsn)
			planData.FvRsIgmpsn = FvRsIgmpsnObject
		}

		if !configData.DeprecatedFvRsMldsn.IsNull() {
			var newAttributeValues FvRsMldsnFvBDResourceModel
			tagAnnotationFvRsMldsnFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsMldsnFvBDType, make([]TagAnnotationFvRsMldsnFvBDResourceModel, 0))
			tagTagFvRsMldsnFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsMldsnFvBDType, make([]TagTagFvRsMldsnFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsMldsn.Attributes()) {
				stateData.FvRsMldsn.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsMldsnFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsMldsnFvBDValue = newAttributeValues.TagTag
			}
			tnMldSnoopPolNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsMldsn.IsUnknown() {
				tnMldSnoopPolNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsMldsn.ValueString()))
			}
			FvRsMldsn := FvRsMldsnFvBDResourceModel{
				Annotation:        annotationValue,
				TnMldSnoopPolName: tnMldSnoopPolNameValue,
				TagAnnotation:     tagAnnotationFvRsMldsnFvBDValue,
				TagTag:            tagTagFvRsMldsnFvBDValue,
			}
			FvRsMldsnObject, _ := types.ObjectValueFrom(ctx, FvRsMldsnFvBDType, FvRsMldsn)
			planData.FvRsMldsn = FvRsMldsnObject
		}

		if !configData.DeprecatedFvRsCtx.IsNull() {
			var newAttributeValues FvRsCtxFvBDResourceModel
			tagAnnotationFvRsCtxFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsCtxFvBDType, make([]TagAnnotationFvRsCtxFvBDResourceModel, 0))
			tagTagFvRsCtxFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsCtxFvBDType, make([]TagTagFvRsCtxFvBDResourceModel, 0))
			annotationValue := planData.Annotation
			if stateData != nil && !IsEmptySingleNestedAttribute(stateData.FvRsCtx.Attributes()) {
				stateData.FvRsCtx.As(ctx, &newAttributeValues, basetypes.ObjectAsOptions{})
				annotationValue = newAttributeValues.Annotation
				tagAnnotationFvRsCtxFvBDValue = newAttributeValues.TagAnnotation
				tagTagFvRsCtxFvBDValue = newAttributeValues.TagTag
			}
			tnFvCtxNameValue := basetypes.NewStringUnknown()
			if !configData.DeprecatedFvRsCtx.IsUnknown() {
				tnFvCtxNameValue = basetypes.NewStringValue(GetMOName(configData.DeprecatedFvRsCtx.ValueString()))
			}
			FvRsCtx := FvRsCtxFvBDResourceModel{
				Annotation:    annotationValue,
				TnFvCtxName:   tnFvCtxNameValue,
				TagAnnotation: tagAnnotationFvRsCtxFvBDValue,
				TagTag:        tagTagFvRsCtxFvBDValue,
			}
			FvRsCtxObject, _ := types.ObjectValueFrom(ctx, FvRsCtxFvBDType, FvRsCtx)
			planData.FvRsCtx = FvRsCtxObject
		}

		if !configData.DeprecatedFvRsBDToNetflowMonitorPol.IsNull() {
			FvRsBDToNetflowMonitorPolList := make([]FvRsBDToNetflowMonitorPolFvBDResourceModel, 0)
			var attributeValues []FvRsBDToNetflowMonitorPolFvBDResourceModelV1
			var newAttributeValues []FvRsBDToNetflowMonitorPolFvBDResourceModel
			if stateData != nil {
				stateData.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &newAttributeValues, false)
			}
			planData.DeprecatedFvRsBDToNetflowMonitorPol.ElementsAs(ctx, &attributeValues, false)
			for _, attributeValue := range attributeValues {
				plannedFvRsBDToNetflowMonitorPol := FvRsBDToNetflowMonitorPolFvBDResourceModel{}
				foundAttributeValue := false
				for _, newAttributeValue := range newAttributeValues {
					if newAttributeValue.TnNetflowMonitorPolName.ValueString() == GetMOName(attributeValue.TnNetflowMonitorPolName.ValueString()) {
						plannedFvRsBDToNetflowMonitorPol = newAttributeValue
						foundAttributeValue = true
						break
					}
				}
				tnNetflowMonitorPolNameValue := basetypes.NewStringUnknown()
				if !attributeValue.TnNetflowMonitorPolName.IsUnknown() {
					tnNetflowMonitorPolNameValue = basetypes.NewStringValue(GetMOName(attributeValue.TnNetflowMonitorPolName.ValueString()))
				}
				FvRsBDToNetflowMonitorPol := FvRsBDToNetflowMonitorPolFvBDResourceModel{
					Annotation:              planData.Annotation,
					FltType:                 attributeValue.FltType,
					TnNetflowMonitorPolName: tnNetflowMonitorPolNameValue,
				}
				if foundAttributeValue {
					FvRsBDToNetflowMonitorPol.Annotation = plannedFvRsBDToNetflowMonitorPol.Annotation
				}
				tagAnnotationFvRsBDToNetflowMonitorPolFvBDValue, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToNetflowMonitorPolFvBDType, make([]TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel, 0))
				FvRsBDToNetflowMonitorPol.TagAnnotation = tagAnnotationFvRsBDToNetflowMonitorPolFvBDValue
				tagTagFvRsBDToNetflowMonitorPolFvBDValue, _ := types.SetValueFrom(ctx, TagTagFvRsBDToNetflowMonitorPolFvBDType, make([]TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel, 0))
				FvRsBDToNetflowMonitorPol.TagTag = tagTagFvRsBDToNetflowMonitorPolFvBDValue
				FvRsBDToNetflowMonitorPolList = append(FvRsBDToNetflowMonitorPolList, FvRsBDToNetflowMonitorPol)
			}
			FvRsBDToNetflowMonitorPolSet, _ := types.SetValueFrom(ctx, FvRsBDToNetflowMonitorPolFvBDType, FvRsBDToNetflowMonitorPolList)
			planData.FvRsBDToNetflowMonitorPol = FvRsBDToNetflowMonitorPolSet
		} else if !configData.FvRsBDToNetflowMonitorPol.IsNull() && stateData == nil {
			setUnknownDeprecatedFvRsBDToNetflowMonitorPolFvBDResourceModelToPlan(ctx, planData)
		}

		// Workaround to compare the state with plan to avoid plan changes with only known after apply
		if stateData != nil {
			avoidFvBDPlanChangeForKnownAfterApplyOnly(ctx, planData, stateData, configData)
		}

		resp.Diagnostics.Append(resp.Plan.Set(ctx, &planData)...)
	}
}
func setUnknownDeprecatedFvRsBDToNetflowMonitorPolFvBDResourceModelToPlan(ctx context.Context, planData *FvBDResourceModel) {
	var attributeValues []FvRsBDToNetflowMonitorPolFvBDResourceModel
	var legacyAttributeValues []FvRsBDToNetflowMonitorPolFvBDResourceModelV1
	planData.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &attributeValues, false)
	for i := 0; i < len(attributeValues); i++ {
		legacyAttributeValues = append(legacyAttributeValues, FvRsBDToNetflowMonitorPolFvBDResourceModelV1{
			FltType:                 basetypes.NewStringUnknown(),
			TnNetflowMonitorPolName: basetypes.NewStringUnknown(),
		})
	}
	DeprecatedFvRsBDToNetflowMonitorPolSet, _ := types.SetValueFrom(ctx, deprecatedFvRsBDToNetflowMonitorPolType, legacyAttributeValues)
	planData.DeprecatedFvRsBDToNetflowMonitorPol = DeprecatedFvRsBDToNetflowMonitorPolSet
}

func avoidFvBDPlanChangeForKnownAfterApplyOnly(ctx context.Context, planData, stateData, configData *FvBDResourceModel) {
	// Set read-only and deprecated attributes in planData from stateData
	planData.PcTag = stateData.PcTag
	planData.Scope = stateData.Scope
	planData.Seg = stateData.Seg
	if configData.DeprecatedArpFlood.IsNull() {
		planData.DeprecatedArpFlood = stateData.DeprecatedArpFlood
	}
	if configData.DeprecatedEpClear.IsNull() {
		planData.DeprecatedEpClear = stateData.DeprecatedEpClear
	}
	if configData.DeprecatedEpMoveDetectMode.IsNull() {
		planData.DeprecatedEpMoveDetectMode = stateData.DeprecatedEpMoveDetectMode
	}
	if configData.DeprecatedHostBasedRouting.IsNull() {
		planData.DeprecatedHostBasedRouting = stateData.DeprecatedHostBasedRouting
	}
	if configData.DeprecatedIntersiteBumTrafficAllow.IsNull() {
		planData.DeprecatedIntersiteBumTrafficAllow = stateData.DeprecatedIntersiteBumTrafficAllow
	}
	if configData.DeprecatedIpv6McastAllow.IsNull() {
		planData.DeprecatedIpv6McastAllow = stateData.DeprecatedIpv6McastAllow
	}
	if configData.DeprecatedLlAddr.IsNull() {
		planData.DeprecatedLlAddr = stateData.DeprecatedLlAddr
	}
	if configData.DeprecatedMac.IsNull() {
		planData.DeprecatedMac = stateData.DeprecatedMac
	}
	if configData.DeprecatedMcastAllow.IsNull() {
		planData.DeprecatedMcastAllow = stateData.DeprecatedMcastAllow
	}
	if configData.DeprecatedMultiDstPktAct.IsNull() {
		planData.DeprecatedMultiDstPktAct = stateData.DeprecatedMultiDstPktAct
	}
	if configData.DeprecatedParentDn.IsNull() {
		planData.DeprecatedParentDn = stateData.DeprecatedParentDn
	}
	if configData.DeprecatedUnicastRoute.IsNull() {
		planData.DeprecatedUnicastRoute = stateData.DeprecatedUnicastRoute
	}
	if configData.DeprecatedUnkMacUcastAct.IsNull() {
		planData.DeprecatedUnkMacUcastAct = stateData.DeprecatedUnkMacUcastAct
	}
	if configData.DeprecatedUnkMcastAct.IsNull() {
		planData.DeprecatedUnkMcastAct = stateData.DeprecatedUnkMcastAct
	}
	if configData.DeprecatedV6unkMcastAct.IsNull() {
		planData.DeprecatedV6unkMcastAct = stateData.DeprecatedV6unkMcastAct
	}
	if configData.DeprecatedVmac.IsNull() {
		planData.DeprecatedVmac = stateData.DeprecatedVmac
	}
	if configData.DeprecatedFvRsBDToRelayP.IsNull() {
		planData.DeprecatedFvRsBDToRelayP = stateData.DeprecatedFvRsBDToRelayP
	}
	if configData.DeprecatedFvRsBdToEpRet.IsNull() {
		planData.DeprecatedFvRsBdToEpRet = stateData.DeprecatedFvRsBdToEpRet
	}
	if configData.DeprecatedFvRsBDToFhs.IsNull() {
		planData.DeprecatedFvRsBDToFhs = stateData.DeprecatedFvRsBDToFhs
	}
	if configData.DeprecatedFvRsBDToOut.IsNull() {
		planData.DeprecatedFvRsBDToOut = stateData.DeprecatedFvRsBDToOut
	}
	if configData.DeprecatedFvRsABDPolMonPol.IsNull() {
		planData.DeprecatedFvRsABDPolMonPol = stateData.DeprecatedFvRsABDPolMonPol
	}
	if configData.DeprecatedFvRsBDToNdP.IsNull() {
		planData.DeprecatedFvRsBDToNdP = stateData.DeprecatedFvRsBDToNdP
	}
	if configData.DeprecatedFvRsIgmpsn.IsNull() {
		planData.DeprecatedFvRsIgmpsn = stateData.DeprecatedFvRsIgmpsn
	}
	if configData.DeprecatedFvRsMldsn.IsNull() {
		planData.DeprecatedFvRsMldsn = stateData.DeprecatedFvRsMldsn
	}
	if configData.DeprecatedFvRsCtx.IsNull() {
		planData.DeprecatedFvRsCtx = stateData.DeprecatedFvRsCtx
	}
	if configData.DeprecatedFvRsBDToNetflowMonitorPol.IsNull() {
		planData.DeprecatedFvRsBDToNetflowMonitorPol = stateData.DeprecatedFvRsBDToNetflowMonitorPol
	}

	// Compare the string representation of the planData and stateData because structs cannot be compared directly
	if fmt.Sprintf("%s", planData) != fmt.Sprintf("%s", stateData) {
		planData.PcTag = basetypes.NewStringUnknown()
		planData.Scope = basetypes.NewStringUnknown()
		planData.Seg = basetypes.NewStringUnknown()
		if configData.DeprecatedArpFlood.IsNull() {
			planData.DeprecatedArpFlood = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedEpClear.IsNull() {
			planData.DeprecatedEpClear = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedEpMoveDetectMode.IsNull() {
			planData.DeprecatedEpMoveDetectMode = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedHostBasedRouting.IsNull() {
			planData.DeprecatedHostBasedRouting = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedIntersiteBumTrafficAllow.IsNull() {
			planData.DeprecatedIntersiteBumTrafficAllow = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedIpv6McastAllow.IsNull() {
			planData.DeprecatedIpv6McastAllow = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedLlAddr.IsNull() {
			planData.DeprecatedLlAddr = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedMac.IsNull() {
			planData.DeprecatedMac = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedMcastAllow.IsNull() {
			planData.DeprecatedMcastAllow = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedMultiDstPktAct.IsNull() {
			planData.DeprecatedMultiDstPktAct = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedParentDn.IsNull() {
			planData.DeprecatedParentDn = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedUnicastRoute.IsNull() {
			planData.DeprecatedUnicastRoute = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedUnkMacUcastAct.IsNull() {
			planData.DeprecatedUnkMacUcastAct = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedUnkMcastAct.IsNull() {
			planData.DeprecatedUnkMcastAct = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedV6unkMcastAct.IsNull() {
			planData.DeprecatedV6unkMcastAct = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedVmac.IsNull() {
			planData.DeprecatedVmac = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsBDToRelayP.IsNull() {
			planData.DeprecatedFvRsBDToRelayP = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsBdToEpRet.IsNull() {
			planData.DeprecatedFvRsBdToEpRet = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsBDToFhs.IsNull() {
			planData.DeprecatedFvRsBDToFhs = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsBDToOut.IsNull() {
			planData.DeprecatedFvRsBDToOut = basetypes.NewSetUnknown(basetypes.StringType{})
		}
		if configData.DeprecatedFvRsABDPolMonPol.IsNull() {
			planData.DeprecatedFvRsABDPolMonPol = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsBDToNdP.IsNull() {
			planData.DeprecatedFvRsBDToNdP = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsIgmpsn.IsNull() {
			planData.DeprecatedFvRsIgmpsn = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsMldsn.IsNull() {
			planData.DeprecatedFvRsMldsn = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsCtx.IsNull() {
			planData.DeprecatedFvRsCtx = basetypes.NewStringUnknown()
		}
		if configData.DeprecatedFvRsBDToNetflowMonitorPol.IsNull() {
			setUnknownDeprecatedFvRsBDToNetflowMonitorPolFvBDResourceModelToPlan(ctx, planData)
		}
	}
}

func (r *FvBDResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
	tflog.Debug(ctx, "Start metadata of resource: aci_bridge_domain")
	resp.TypeName = req.ProviderTypeName + "_bridge_domain"
	tflog.Debug(ctx, "End metadata of resource: aci_bridge_domain")
}

func (r *FvBDResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) {
	tflog.Debug(ctx, "Start schema of resource: aci_bridge_domain")
	resp.Schema = schema.Schema{
		// This description is used by the documentation generator and the language server.
		MarkdownDescription: "The bridge_domain resource for the 'fvBD' class",
		Version:             2,

		Attributes: map[string]schema.Attribute{
			// Deprecated attributes
			"arp_flood": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'arp_flood' is deprecated, please refer to 'arp_flooding' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("arp_flooding"),
					}...),
				},
			},
			"ep_clear": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'ep_clear' is deprecated, please refer to 'clear_remote_mac_entries' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("clear_remote_mac_entries"),
					}...),
				},
			},
			"ep_move_detect_mode": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'ep_move_detect_mode' is deprecated, please refer to 'endpoint_move_detection_mode' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("endpoint_move_detection_mode"),
					}...),
				},
			},
			"host_based_routing": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'host_based_routing' is deprecated, please refer to 'advertise_host_routes' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("advertise_host_routes"),
					}...),
				},
			},
			"intersite_bum_traffic_allow": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'intersite_bum_traffic_allow' is deprecated, please refer to 'enable_intersite_bum_traffic' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("enable_intersite_bum_traffic"),
					}...),
				},
			},
			"ipv6_mcast_allow": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'ipv6_mcast_allow' is deprecated, please refer to 'pim_ipv6' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("pim_ipv6"),
					}...),
				},
			},
			"ll_addr": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'll_addr' is deprecated, please refer to 'link_local_ipv6_address' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("link_local_ipv6_address"),
					}...),
				},
			},
			"mac": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'mac' is deprecated, please refer to 'custom_mac_address' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("custom_mac_address"),
					}...),
				},
			},
			"mcast_allow": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'mcast_allow' is deprecated, please refer to 'pim' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("pim"),
					}...),
				},
			},
			"multi_dst_pkt_act": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'multi_dst_pkt_act' is deprecated, please refer to 'multi_destination_flooding' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("multi_destination_flooding"),
					}...),
				},
			},
			"tenant_dn": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'tenant_dn' is deprecated, please refer to 'parent_dn' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("parent_dn"),
					}...),
				},
			},
			"unicast_route": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'unicast_route' is deprecated, please refer to 'unicast_routing' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("unicast_routing"),
					}...),
				},
			},
			"unk_mac_ucast_act": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'unk_mac_ucast_act' is deprecated, please refer to 'l2_unknown_unicast_flooding' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("l2_unknown_unicast_flooding"),
					}...),
				},
			},
			"unk_mcast_act": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'unk_mcast_act' is deprecated, please refer to 'l3_unknown_multicast_flooding' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("l3_unknown_multicast_flooding"),
					}...),
				},
			},
			"v6unk_mcast_act": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'v6unk_mcast_act' is deprecated, please refer to 'ipv6_l3_unknown_multicast_flooding' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("ipv6_l3_unknown_multicast_flooding"),
					}...),
				},
			},
			"vmac": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'vmac' is deprecated, please refer to 'virtual_mac_address' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("virtual_mac_address"),
					}...),
				},
			},
			"relation_fv_rs_bd_to_relay_p": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_bd_to_relay_p' is deprecated, please refer to 'relation_to_dhcp_relay_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_dhcp_relay_policy"),
					}...),
				},
			},
			"relation_fv_rs_bd_to_ep_ret": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_bd_to_ep_ret' is deprecated, please refer to 'relation_to_end_point_retention_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_end_point_retention_policy"),
					}...),
				},
			},
			"relation_fv_rs_bd_to_fhs": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_bd_to_fhs' is deprecated, please refer to 'relation_to_first_hop_security_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_first_hop_security_policy"),
					}...),
				},
			},
			"relation_fv_rs_bd_to_out": schema.SetAttribute{
				Optional:           true,
				Computed:           true,
				ElementType:        types.StringType,
				DeprecationMessage: "Attribute 'relation_fv_rs_bd_to_out' is deprecated, please refer to 'relation_to_l3_outsides' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.Set{
					setvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_l3_outsides"),
					}...),
				},
			},
			"relation_fv_rs_abd_pol_mon_pol": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_abd_pol_mon_pol' is deprecated, please refer to 'relation_to_monitoring_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_monitoring_policy"),
					}...),
				},
			},
			"relation_fv_rs_bd_to_nd_p": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_bd_to_nd_p' is deprecated, please refer to 'relation_to_neighbor_discovery_interface_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_neighbor_discovery_interface_policy"),
					}...),
				},
			},
			"relation_fv_rs_bd_flood_to": schema.SetAttribute{
				Optional:           true,
				Computed:           true,
				ElementType:        types.StringType,
				DeprecationMessage: "Attribute `relation_fv_rs_bd_flood_to` is deprecated. The configuration was not functioning as intended because the Managed Object (MO) created by the pre-migrated resource was either configured incorrectly or exposed without any implemented functionality on the APIC. The MO for this attribute is no longer created on the APIC, but the existing MO will remain present until the resource is destroyed. This attribute will be removed in the next major version of the provider.",
				PlanModifiers: []planmodifier.Set{
					setplanmodifier.UseStateForUnknown(),
				},
			},
			"relation_fv_rs_bd_to_profile": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute `relation_fv_rs_bd_to_profile` is deprecated. The configuration was not functioning as intended because the Managed Object (MO) created by the pre-migrated resource was either configured incorrectly or exposed without any implemented functionality on the APIC. The MO for this attribute is no longer created on the APIC, but the existing MO will remain present until the resource is destroyed. This attribute will be removed in the next major version of the provider.",
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
			},
			"relation_fv_rs_igmpsn": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_igmpsn' is deprecated, please refer to 'relation_to_igmp_snooping_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_igmp_snooping_policy"),
					}...),
				},
			},
			"relation_fv_rs_mldsn": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_mldsn' is deprecated, please refer to 'relation_to_mld_snooping_policy' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_mld_snooping_policy"),
					}...),
				},
			},
			"relation_fv_rs_ctx": schema.StringAttribute{
				Optional:           true,
				Computed:           true,
				DeprecationMessage: "Attribute 'relation_fv_rs_ctx' is deprecated, please refer to 'relation_to_vrf' instead. The attribute will be removed in the next major version of the provider.",
				Validators: []validator.String{
					stringvalidator.ConflictsWith(path.Expressions{
						path.MatchRoot("relation_to_vrf"),
					}...),
				},
			},
			// End of deprecated attributes
			"id": schema.StringAttribute{
				Computed:            true,
				MarkdownDescription: "The distinguished name (DN) of the Bridge Domain object.",
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
				},
			},
			"parent_dn": schema.StringAttribute{
				Optional:            true,
				Computed:            true,
				MarkdownDescription: "The distinguished name (DN) of the parent object.",
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					stringplanmodifier.RequiresReplace(),
				},
				Validators: []validator.String{
					stringvalidator.AtLeastOneOf(path.Expressions{
						path.MatchRoot("tenant_dn"),
					}...),
				},
			},
			"optimize_wan_bandwidth": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Optimize WAN Bandwidth for the Bridge Domain object.`,
			},
			"annotation": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Default:             stringdefault.StaticString(globalAnnotation),
				MarkdownDescription: `The annotation of the Bridge Domain object.`,
			},
			"arp_flooding": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enable ARP flooding for the Bridge Domain object. If flooding is disabled, ARP requests for unknown endpoints will be forwarded by the leaf switch to the spine proxy for resolution and might trigger an ARP glean if the endpoint is not present in the COOP database.`,
			},
			"description": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				MarkdownDescription: `The description of the Bridge Domain object.`,
			},
			"enable_rogue_exception_mac": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enable rogue exception based on MAC wildcard for the Bridge Domain object.`,
			},
			"clear_remote_mac_entries": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Clear all endpoints in leaf switches for the Bridge Domain object.`,
			},
			"endpoint_move_detection_mode": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("", "garp"),
				},
				MarkdownDescription: `The End Point move detection option uses the Gratuitous Address Resolution Protocol (GARP). A gratuitous ARP is an ARP broadcast-type of packet that is used to verify that no other device on the network has the same IP address as the sending device.`,
			},
			"advertise_host_routes": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Advertise host routes (/32 prefixes) out of the L3Out(s) associated to the Bridge Domain object.`,
			},
			"enable_intersite_bum_traffic": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enable intersite Broadcast, Unknown-Unicast and Multicast (BUM) traffic between sites for the Bridge Domain object.`,
			},
			"intersite_l2_stretch": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enable L2 stretch between sites for the Bridge Domain object.`,
			},
			"ip_learning": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `The IP learning setting of the Bridge Domain object.`,
			},
			"pim_ipv6": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enable IPv6 Protocol Independent Multicast (PIM) traffic for the Bridge Domain object.`,
			},
			"limit_ip_learn_to_subnets": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Limit IP address learning to subnets for the Bridge Domain object. Every Bridge Domain object can have multiple subnets associated with it.`,
			},
			"link_local_ipv6_address": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators:          []validator.String{},
				MarkdownDescription: `The override of the system generated IPv6 link-local address.`,
			},
			"custom_mac_address": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators:          []validator.String{},
				MarkdownDescription: `The MAC address of the Bridge Domain object.`,
			},
			"drop_arp_with_multicast_smac": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Drop rogue multicast ARP packets for the Bridge Domain object.`,
			},
			"pim": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enable IPv4 Protocol Independent Multicast (PIM) traffic for the Bridge Domain object.`,
			},
			"multi_destination_flooding": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("bd-flood", "drop", "encap-flood"),
				},
				MarkdownDescription: `The multiple destination forwarding method for L2 Multicast, Broadcast, and Link Layer traffic types.`,
			},
			"name": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
					stringplanmodifier.RequiresReplace(),
				},
				Validators: []validator.String{
					MakeStringRequired(),
				},
				MarkdownDescription: `The name of the Bridge Domain object.`,
			},
			"name_alias": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				MarkdownDescription: `The name alias of the Bridge Domain object.`,
			},
			"owner_key": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				MarkdownDescription: `The key for enabling clients to own their data for entity correlation.`,
			},
			"owner_tag": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				MarkdownDescription: `A tag for enabling clients to add their own data. For example, to indicate who created this object.`,
			},
			"pc_tag": schema.StringAttribute{
				Computed:            true,
				MarkdownDescription: `The classification tag used for policy enforcement and zoning.`,
			},
			"scope": schema.StringAttribute{
				Computed:            true,
				MarkdownDescription: `The scope ID (L3-VNI) of the Bridge Domain object.`,
			},
			"segment": schema.StringAttribute{
				Computed:            true,
				MarkdownDescription: `The segment ID (L2-VNI) of the Bridge Domain object.`,
			},
			"service_bd_routing_disable": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Disable Routing on service BD.`,
			},
			"bridge_domain_type": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("fc", "regular"),
				},
				MarkdownDescription: `The domain type of the Bridge Domain object.`,
			},
			"unicast_routing": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("no", "yes"),
				},
				MarkdownDescription: `Enables L3 routing and endpoint IP learning for the Bridge Domain object.`,
			},
			"l2_unknown_unicast_flooding": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("flood", "proxy"),
				},
				MarkdownDescription: `The forwarding method for unknown layer 2 destinations.`,
			},
			"l3_unknown_multicast_flooding": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("flood", "opt-flood"),
				},
				MarkdownDescription: `The forwarding method for unknown layer 3 multicast destinations.`,
			},
			"ipv6_l3_unknown_multicast_flooding": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators: []validator.String{
					stringvalidator.OneOf("flood", "opt-flood"),
				},
				MarkdownDescription: `The forwarding method for unknown IPv6 multicast destinations.`,
			},
			"virtual_mac_address": schema.StringAttribute{
				Optional: true,
				Computed: true,
				PlanModifiers: []planmodifier.String{
					stringplanmodifier.UseStateForUnknown(),
					SetToStringNullWhenStateIsNullPlanIsUnknownDuringUpdate(),
				},
				Validators:          []validator.String{},
				MarkdownDescription: `The virtual MAC address of the Bridge Domain object. This is used when the the BD/SVI is extended to multiple sites using a L2 Outside.`,
			},
			"legacy_mode": schema.SingleNestedAttribute{
				MarkdownDescription: `The bridge domain (BD) access profile. When created over a BD, contracts are not enforced for the BD, and the encap will be applied to all endpoint groups on this BD.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Validators: []validator.Object{
					MakeSingleNestedAttributeRequiredAttributesNotProvidedValidator("legacy_mode", []string{"encapsulation"}),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Legacy Mode object.`,
					},
					"description": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The description of the Legacy Mode object.`,
					},
					"encapsulation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The VLAN or VXLAN encapsulation of the Legacy Mode object.`,
					},
					"name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the Legacy Mode object.`,
					},
					"name_alias": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name alias of the Legacy Mode object.`,
					},
					"owner_key": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The key for enabling clients to own their data for entity correlation.`,
					},
					"owner_tag": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `A tag for enabling clients to add their own data. For example, to indicate who created this object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"rogue_coop_exceptions": schema.SetNestedAttribute{
				MarkdownDescription: `Configuration of MAC address to be excepted from Rogue processing`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Set{
					setplanmodifier.UseStateForUnknown(),
					SetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate(FvRogueExceptionMacFvBDSetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate),
				},
				NestedObject: schema.NestedAttributeObject{
					Attributes: map[string]schema.Attribute{
						"annotation": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators:          []validator.String{},
							MarkdownDescription: `The annotation of the Rogue Coop Exception object.`,
						},
						"description": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators:          []validator.String{},
							MarkdownDescription: `The description of the Rogue Coop Exception object.`,
						},
						"mac": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The MAC address of the Rogue Coop Exception object.`,
						},
						"name": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators:          []validator.String{},
							MarkdownDescription: `The name of the Rogue Coop Exception object.`,
						},
						"name_alias": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators:          []validator.String{},
							MarkdownDescription: `The name alias of the Rogue Coop Exception object.`,
						},
						"annotations": schema.SetNestedAttribute{
							MarkdownDescription: ``,
							Optional:            true,
							Computed:            true,
							PlanModifiers: []planmodifier.Set{
								setplanmodifier.UseStateForUnknown(),
							},
							NestedObject: schema.NestedAttributeObject{
								Attributes: map[string]schema.Attribute{
									"key": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The key used to uniquely identify this configuration object.`,
									},
									"value": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The value of the property.`,
									},
								},
							},
						},
						"tags": schema.SetNestedAttribute{
							MarkdownDescription: ``,
							Optional:            true,
							Computed:            true,
							PlanModifiers: []planmodifier.Set{
								setplanmodifier.UseStateForUnknown(),
							},
							NestedObject: schema.NestedAttributeObject{
								Attributes: map[string]schema.Attribute{
									"key": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The key used to uniquely identify this configuration object.`,
									},
									"value": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The value of the property.`,
									},
								},
							},
						},
					},
				},
			},
			"relation_to_monitoring_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `A source relation to the monitoring policy model for the endpoint group semantic scope. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation From Bridge Domain To Monitoring Policy object.`,
					},
					"monitoring_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the Monitoring Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_first_hop_security_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `Relation to FHS BD policy`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation From Bridge Domain To First Hop Security Policy object.`,
					},
					"first_hop_security_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the First Hop Security Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_neighbor_discovery_interface_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `The neighbor discovery policy.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation From Bridge Domain To Neighbor Discovery Interface Policy object.`,
					},
					"neighbor_discovery_interface_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the Neighbor Discovery Interface Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_netflow_monitor_policies": schema.SetNestedAttribute{
				MarkdownDescription: `Relation to Netflow Monitor policy`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Set{
					setplanmodifier.UseStateForUnknown(),
					SetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate(FvRsBDToNetflowMonitorPolFvBDSetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate),
				},
				NestedObject: schema.NestedAttributeObject{
					Attributes: map[string]schema.Attribute{
						"annotation": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators:          []validator.String{},
							MarkdownDescription: `The annotation of the Relation From Bridge Domain To NetFlow Monitor Policy object.`,
						},
						"filter_type": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								stringvalidator.OneOf("ce", "ipv4", "ipv6", "unspecified"),
								MakeStringRequired(),
							},
							MarkdownDescription: `The filter type of the NetFlow Monitor Policy object.`,
						},
						"netflow_monitor_policy_name": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The name of the NetFlow Monitor Policy object.`,
						},
						"annotations": schema.SetNestedAttribute{
							MarkdownDescription: ``,
							Optional:            true,
							Computed:            true,
							PlanModifiers: []planmodifier.Set{
								setplanmodifier.UseStateForUnknown(),
							},
							NestedObject: schema.NestedAttributeObject{
								Attributes: map[string]schema.Attribute{
									"key": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The key used to uniquely identify this configuration object.`,
									},
									"value": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The value of the property.`,
									},
								},
							},
						},
						"tags": schema.SetNestedAttribute{
							MarkdownDescription: ``,
							Optional:            true,
							Computed:            true,
							PlanModifiers: []planmodifier.Set{
								setplanmodifier.UseStateForUnknown(),
							},
							NestedObject: schema.NestedAttributeObject{
								Attributes: map[string]schema.Attribute{
									"key": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The key used to uniquely identify this configuration object.`,
									},
									"value": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The value of the property.`,
									},
								},
							},
						},
					},
				},
			},
			"relation_to_l3_outsides": schema.SetNestedAttribute{
				MarkdownDescription: `A source relation to the policy controlling connectivity to the outside. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Set{
					setplanmodifier.UseStateForUnknown(),
					SetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate(FvRsBDToOutFvBDSetToSetNullWhenStateIsNullPlanIsUnknownDuringUpdate),
				},
				NestedObject: schema.NestedAttributeObject{
					Attributes: map[string]schema.Attribute{
						"annotation": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators:          []validator.String{},
							MarkdownDescription: `The annotation of the Relation From Bridge Domain To L3 Outside object.`,
						},
						"l3_outside_name": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The name of the L3 Outside object.`,
						},
						"annotations": schema.SetNestedAttribute{
							MarkdownDescription: ``,
							Optional:            true,
							Computed:            true,
							PlanModifiers: []planmodifier.Set{
								setplanmodifier.UseStateForUnknown(),
							},
							NestedObject: schema.NestedAttributeObject{
								Attributes: map[string]schema.Attribute{
									"key": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The key used to uniquely identify this configuration object.`,
									},
									"value": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The value of the property.`,
									},
								},
							},
						},
						"tags": schema.SetNestedAttribute{
							MarkdownDescription: ``,
							Optional:            true,
							Computed:            true,
							PlanModifiers: []planmodifier.Set{
								setplanmodifier.UseStateForUnknown(),
							},
							NestedObject: schema.NestedAttributeObject{
								Attributes: map[string]schema.Attribute{
									"key": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The key used to uniquely identify this configuration object.`,
									},
									"value": schema.StringAttribute{
										Optional: true,
										Computed: true,
										PlanModifiers: []planmodifier.String{
											stringplanmodifier.UseStateForUnknown(),
										},
										Validators: []validator.String{
											MakeStringRequired(),
										},
										MarkdownDescription: `The value of the property.`,
									},
								},
							},
						},
					},
				},
			},
			"relation_to_route_control_profile": schema.SingleNestedAttribute{
				MarkdownDescription: `A source relation to external networks that are routed via Layer 3 networks outside the fabric that are reachable by a tenant's applications. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation From Bridge Domain To Route Control Profile object.`,
					},
					"l3_outside_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the L3 Outside object.`,
					},
					"route_control_profile_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the Route Control Profile object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_dhcp_relay_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `A source relation to the DHCP relay profile. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation From Bridge Domain To DHCP Relay Policy object.`,
					},
					"dhcp_relay_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the DHCP Relay Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_end_point_retention_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `A source relation to the endpoint retention policy providing the parameters for the lifecycle of the endpoint group. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation From Bridge Domain To End Point Retention Policy object.`,
					},
					"resolve_action": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						Validators: []validator.String{
							stringvalidator.OneOf("inherit", "resolve"),
						},
						MarkdownDescription: `The action to take for resolving the Endpoint Retention Policy object.`,
					},
					"end_point_retention_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the Endpoint Retention Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_vrf": schema.SingleNestedAttribute{
				MarkdownDescription: `A source relation to a private layer 3 network context that either belongs to a specific tenant or is shared. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation To VRF object.`,
					},
					"vrf_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the VRF object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_igmp_snooping_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `A source relation to the Internet Group Management Protocol (IGMP) snooping policy. This is an internal object.`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation To IGMP Snooping Policy object.`,
					},
					"igmp_snooping_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the IGMP Snooping Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"relation_to_mld_snooping_policy": schema.SingleNestedAttribute{
				MarkdownDescription: `Relation to an MLD Snoop policy`,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Object{
					objectplanmodifier.UseStateForUnknown(),
				},
				Attributes: map[string]schema.Attribute{
					"annotation": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The annotation of the Relation To MLD Snooping Policy object.`,
					},
					"mld_snooping_policy_name": schema.StringAttribute{
						Optional: true,
						Computed: true,
						PlanModifiers: []planmodifier.String{
							stringplanmodifier.UseStateForUnknown(),
						},
						MarkdownDescription: `The name of the MLD Snooping Policy object.`,
					},
					"annotations": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
					"tags": schema.SetNestedAttribute{
						MarkdownDescription: ``,
						Optional:            true,
						Computed:            true,
						PlanModifiers: []planmodifier.Set{
							setplanmodifier.UseStateForUnknown(),
						},
						NestedObject: schema.NestedAttributeObject{
							Attributes: map[string]schema.Attribute{
								"key": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The key used to uniquely identify this configuration object.`,
								},
								"value": schema.StringAttribute{
									Optional: true,
									Computed: true,
									PlanModifiers: []planmodifier.String{
										stringplanmodifier.UseStateForUnknown(),
									},
									Validators: []validator.String{
										MakeStringRequired(),
									},
									MarkdownDescription: `The value of the property.`,
								},
							},
						},
					},
				},
			},
			"annotations": schema.SetNestedAttribute{
				MarkdownDescription: ``,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Set{
					setplanmodifier.UseStateForUnknown(),
				},
				NestedObject: schema.NestedAttributeObject{
					Attributes: map[string]schema.Attribute{
						"key": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The key used to uniquely identify this configuration object.`,
						},
						"value": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The value of the property.`,
						},
					},
				},
			},
			"tags": schema.SetNestedAttribute{
				MarkdownDescription: ``,
				Optional:            true,
				Computed:            true,
				PlanModifiers: []planmodifier.Set{
					setplanmodifier.UseStateForUnknown(),
				},
				NestedObject: schema.NestedAttributeObject{
					Attributes: map[string]schema.Attribute{
						"key": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The key used to uniquely identify this configuration object.`,
						},
						"value": schema.StringAttribute{
							Optional: true,
							Computed: true,
							PlanModifiers: []planmodifier.String{
								stringplanmodifier.UseStateForUnknown(),
							},
							Validators: []validator.String{
								MakeStringRequired(),
							},
							MarkdownDescription: `The value of the property.`,
						},
					},
				},
			},
		},
		Blocks: map[string]schema.Block{
			"relation_fv_rs_bd_to_netflow_monitor_pol": schema.SetNestedBlock{
				NestedObject: schema.NestedBlockObject{
					Attributes: map[string]schema.Attribute{
						"flt_type": schema.StringAttribute{
							Optional:           true,
							Computed:           true,
							DeprecationMessage: "Attribute 'flt_type' will be deprecated soon, please use 'relation_to_netflow_monitor_policies.filter_type' instead",
							Validators: []validator.String{
								stringvalidator.ConflictsWith(path.Expressions{
									path.MatchRoot("relation_to_netflow_monitor_policies"),
								}...),
								MakeStringRequired(),
							},
						},
						"tn_netflow_monitor_pol_name": schema.StringAttribute{
							Optional:           true,
							Computed:           true,
							DeprecationMessage: "Attribute 'tn_netflow_monitor_pol_name' will be deprecated soon, please use 'relation_to_netflow_monitor_policies.netflow_monitor_policy_name' instead",
							Validators: []validator.String{
								stringvalidator.ConflictsWith(path.Expressions{
									path.MatchRoot("relation_to_netflow_monitor_policies"),
								}...),
								MakeStringRequired(),
							},
						},
					},
				},
			},
		},
	}
	tflog.Debug(ctx, "End schema of resource: aci_bridge_domain")
}

func (r *FvBDResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
	tflog.Debug(ctx, "Start configure of resource: aci_bridge_domain")
	// Prevent panic if the provider has not been configured.
	if req.ProviderData == nil {
		return
	}

	client, ok := req.ProviderData.(*client.Client)

	if !ok {
		resp.Diagnostics.AddError(
			"Unexpected Resource Configure Type",
			fmt.Sprintf("Expected *client.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData),
		)

		return
	}

	r.client = client
	tflog.Debug(ctx, "End configure of resource: aci_bridge_domain")
}

func (r *FvBDResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
	tflog.Debug(ctx, "Start create of resource: aci_bridge_domain")
	// On create retrieve information on current state prior to making any changes in order to determine child delete operations
	var stateData *FvBDResourceModel
	resp.Diagnostics.Append(req.Plan.Get(ctx, &stateData)...)
	if stateData.Id.IsUnknown() || stateData.Id.IsNull() {
		setFvBDId(ctx, stateData)
	}
	getAndSetFvBDAttributes(ctx, &resp.Diagnostics, r.client, stateData)
	if !globalAllowExistingOnCreate && !stateData.Id.IsNull() {
		resp.Diagnostics.AddError(
			"Object Already Exists",
			fmt.Sprintf("The fvBD object with DN '%s' already exists.", stateData.Id.ValueString()),
		)
		return
	}

	var data *FvBDResourceModel

	// Read Terraform plan data into the model
	resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...)

	if resp.Diagnostics.HasError() {
		return
	}

	if data.Id.IsUnknown() || data.Id.IsNull() {
		setFvBDId(ctx, data)
	}

	tflog.Debug(ctx, fmt.Sprintf("Create of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))

	var fvAccPPlan, fvAccPState FvAccPFvBDResourceModel
	data.FvAccP.As(ctx, &fvAccPPlan, basetypes.ObjectAsOptions{})
	stateData.FvAccP.As(ctx, &fvAccPState, basetypes.ObjectAsOptions{})
	var fvRogueExceptionMacPlan, fvRogueExceptionMacState []FvRogueExceptionMacFvBDResourceModel
	data.FvRogueExceptionMac.ElementsAs(ctx, &fvRogueExceptionMacPlan, false)
	stateData.FvRogueExceptionMac.ElementsAs(ctx, &fvRogueExceptionMacState, false)
	var fvRsABDPolMonPolPlan, fvRsABDPolMonPolState FvRsABDPolMonPolFvBDResourceModel
	data.FvRsABDPolMonPol.As(ctx, &fvRsABDPolMonPolPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsABDPolMonPol.As(ctx, &fvRsABDPolMonPolState, basetypes.ObjectAsOptions{})
	var fvRsBDToFhsPlan, fvRsBDToFhsState FvRsBDToFhsFvBDResourceModel
	data.FvRsBDToFhs.As(ctx, &fvRsBDToFhsPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToFhs.As(ctx, &fvRsBDToFhsState, basetypes.ObjectAsOptions{})
	var fvRsBDToNdPPlan, fvRsBDToNdPState FvRsBDToNdPFvBDResourceModel
	data.FvRsBDToNdP.As(ctx, &fvRsBDToNdPPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToNdP.As(ctx, &fvRsBDToNdPState, basetypes.ObjectAsOptions{})
	var fvRsBDToNetflowMonitorPolPlan, fvRsBDToNetflowMonitorPolState []FvRsBDToNetflowMonitorPolFvBDResourceModel
	data.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &fvRsBDToNetflowMonitorPolPlan, false)
	stateData.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &fvRsBDToNetflowMonitorPolState, false)
	var fvRsBDToOutPlan, fvRsBDToOutState []FvRsBDToOutFvBDResourceModel
	data.FvRsBDToOut.ElementsAs(ctx, &fvRsBDToOutPlan, false)
	stateData.FvRsBDToOut.ElementsAs(ctx, &fvRsBDToOutState, false)
	var fvRsBDToProfilePlan, fvRsBDToProfileState FvRsBDToProfileFvBDResourceModel
	data.FvRsBDToProfile.As(ctx, &fvRsBDToProfilePlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToProfile.As(ctx, &fvRsBDToProfileState, basetypes.ObjectAsOptions{})
	var fvRsBDToRelayPPlan, fvRsBDToRelayPState FvRsBDToRelayPFvBDResourceModel
	data.FvRsBDToRelayP.As(ctx, &fvRsBDToRelayPPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToRelayP.As(ctx, &fvRsBDToRelayPState, basetypes.ObjectAsOptions{})
	var fvRsBdToEpRetPlan, fvRsBdToEpRetState FvRsBdToEpRetFvBDResourceModel
	data.FvRsBdToEpRet.As(ctx, &fvRsBdToEpRetPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBdToEpRet.As(ctx, &fvRsBdToEpRetState, basetypes.ObjectAsOptions{})
	var fvRsCtxPlan, fvRsCtxState FvRsCtxFvBDResourceModel
	data.FvRsCtx.As(ctx, &fvRsCtxPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsCtx.As(ctx, &fvRsCtxState, basetypes.ObjectAsOptions{})
	var fvRsIgmpsnPlan, fvRsIgmpsnState FvRsIgmpsnFvBDResourceModel
	data.FvRsIgmpsn.As(ctx, &fvRsIgmpsnPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsIgmpsn.As(ctx, &fvRsIgmpsnState, basetypes.ObjectAsOptions{})
	var fvRsMldsnPlan, fvRsMldsnState FvRsMldsnFvBDResourceModel
	data.FvRsMldsn.As(ctx, &fvRsMldsnPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsMldsn.As(ctx, &fvRsMldsnState, basetypes.ObjectAsOptions{})
	var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvBDResourceModel
	data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false)
	stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false)
	var tagTagPlan, tagTagState []TagTagFvBDResourceModel
	data.TagTag.ElementsAs(ctx, &tagTagPlan, false)
	stateData.TagTag.ElementsAs(ctx, &tagTagState, false)
	jsonPayload := getFvBDCreateJsonPayload(ctx, &resp.Diagnostics, true, data, fvAccPPlan, fvAccPState, fvRogueExceptionMacPlan, fvRogueExceptionMacState, fvRsABDPolMonPolPlan, fvRsABDPolMonPolState, fvRsBDToFhsPlan, fvRsBDToFhsState, fvRsBDToNdPPlan, fvRsBDToNdPState, fvRsBDToNetflowMonitorPolPlan, fvRsBDToNetflowMonitorPolState, fvRsBDToOutPlan, fvRsBDToOutState, fvRsBDToProfilePlan, fvRsBDToProfileState, fvRsBDToRelayPPlan, fvRsBDToRelayPState, fvRsBdToEpRetPlan, fvRsBdToEpRetState, fvRsCtxPlan, fvRsCtxState, fvRsIgmpsnPlan, fvRsIgmpsnState, fvRsMldsnPlan, fvRsMldsnState, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState)

	if resp.Diagnostics.HasError() {
		return
	}

	DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload)

	if resp.Diagnostics.HasError() {
		return
	}

	getAndSetFvBDAttributes(ctx, &resp.Diagnostics, r.client, data)

	// Save data into Terraform state
	resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
	tflog.Debug(ctx, fmt.Sprintf("End create of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))
}

func (r *FvBDResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {
	tflog.Debug(ctx, "Start read of resource: aci_bridge_domain")
	var data *FvBDResourceModel

	// Read Terraform prior state data into the model
	resp.Diagnostics.Append(req.State.Get(ctx, &data)...)

	if resp.Diagnostics.HasError() {
		return
	}

	tflog.Debug(ctx, fmt.Sprintf("Read of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))

	getAndSetFvBDAttributes(ctx, &resp.Diagnostics, r.client, data)

	// Save updated data into Terraform state
	if data.Id.IsNull() {
		var emptyData *FvBDResourceModel
		resp.Diagnostics.Append(resp.State.Set(ctx, &emptyData)...)
	} else {
		resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
	}

	tflog.Debug(ctx, fmt.Sprintf("End read of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))
}

func (r *FvBDResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
	tflog.Debug(ctx, "Start update of resource: aci_bridge_domain")
	var data *FvBDResourceModel
	var stateData *FvBDResourceModel

	// Read Terraform plan data into the model
	resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...)
	resp.Diagnostics.Append(req.State.Get(ctx, &stateData)...)
	// Error out when child object fvRsBDToNdP is being deleted
	if IsEmptySingleNestedAttribute(data.FvRsBDToNdP.Attributes()) && !IsEmptySingleNestedAttribute(stateData.FvRsBDToNdP.Attributes()) {
		resp.Diagnostics.AddError(
			"FvRsBDToNdP object cannot be deleted",
			"deletion of child is only possible upon deletion of the parent",
		)
	}
	// Error out when child object fvRsBdToEpRet is being deleted
	if IsEmptySingleNestedAttribute(data.FvRsBdToEpRet.Attributes()) && !IsEmptySingleNestedAttribute(stateData.FvRsBdToEpRet.Attributes()) {
		resp.Diagnostics.AddError(
			"FvRsBdToEpRet object cannot be deleted",
			"deletion of child is only possible upon deletion of the parent",
		)
	}
	// Error out when child object fvRsCtx is being deleted
	if IsEmptySingleNestedAttribute(data.FvRsCtx.Attributes()) && !IsEmptySingleNestedAttribute(stateData.FvRsCtx.Attributes()) {
		resp.Diagnostics.AddError(
			"FvRsCtx object cannot be deleted",
			"deletion of child is only possible upon deletion of the parent",
		)
	}
	// Error out when child object fvRsIgmpsn is being deleted
	if IsEmptySingleNestedAttribute(data.FvRsIgmpsn.Attributes()) && !IsEmptySingleNestedAttribute(stateData.FvRsIgmpsn.Attributes()) {
		resp.Diagnostics.AddError(
			"FvRsIgmpsn object cannot be deleted",
			"deletion of child is only possible upon deletion of the parent",
		)
	}
	// Error out when child object fvRsMldsn is being deleted
	if IsEmptySingleNestedAttribute(data.FvRsMldsn.Attributes()) && !IsEmptySingleNestedAttribute(stateData.FvRsMldsn.Attributes()) {
		resp.Diagnostics.AddError(
			"FvRsMldsn object cannot be deleted",
			"deletion of child is only possible upon deletion of the parent",
		)
	}

	if resp.Diagnostics.HasError() {
		return
	}

	tflog.Debug(ctx, fmt.Sprintf("Update of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))

	var fvAccPPlan, fvAccPState FvAccPFvBDResourceModel
	data.FvAccP.As(ctx, &fvAccPPlan, basetypes.ObjectAsOptions{})
	stateData.FvAccP.As(ctx, &fvAccPState, basetypes.ObjectAsOptions{})
	var fvRogueExceptionMacPlan, fvRogueExceptionMacState []FvRogueExceptionMacFvBDResourceModel
	data.FvRogueExceptionMac.ElementsAs(ctx, &fvRogueExceptionMacPlan, false)
	stateData.FvRogueExceptionMac.ElementsAs(ctx, &fvRogueExceptionMacState, false)
	var fvRsABDPolMonPolPlan, fvRsABDPolMonPolState FvRsABDPolMonPolFvBDResourceModel
	data.FvRsABDPolMonPol.As(ctx, &fvRsABDPolMonPolPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsABDPolMonPol.As(ctx, &fvRsABDPolMonPolState, basetypes.ObjectAsOptions{})
	var fvRsBDToFhsPlan, fvRsBDToFhsState FvRsBDToFhsFvBDResourceModel
	data.FvRsBDToFhs.As(ctx, &fvRsBDToFhsPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToFhs.As(ctx, &fvRsBDToFhsState, basetypes.ObjectAsOptions{})
	var fvRsBDToNdPPlan, fvRsBDToNdPState FvRsBDToNdPFvBDResourceModel
	data.FvRsBDToNdP.As(ctx, &fvRsBDToNdPPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToNdP.As(ctx, &fvRsBDToNdPState, basetypes.ObjectAsOptions{})
	var fvRsBDToNetflowMonitorPolPlan, fvRsBDToNetflowMonitorPolState []FvRsBDToNetflowMonitorPolFvBDResourceModel
	data.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &fvRsBDToNetflowMonitorPolPlan, false)
	stateData.FvRsBDToNetflowMonitorPol.ElementsAs(ctx, &fvRsBDToNetflowMonitorPolState, false)
	var fvRsBDToOutPlan, fvRsBDToOutState []FvRsBDToOutFvBDResourceModel
	data.FvRsBDToOut.ElementsAs(ctx, &fvRsBDToOutPlan, false)
	stateData.FvRsBDToOut.ElementsAs(ctx, &fvRsBDToOutState, false)
	var fvRsBDToProfilePlan, fvRsBDToProfileState FvRsBDToProfileFvBDResourceModel
	data.FvRsBDToProfile.As(ctx, &fvRsBDToProfilePlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToProfile.As(ctx, &fvRsBDToProfileState, basetypes.ObjectAsOptions{})
	var fvRsBDToRelayPPlan, fvRsBDToRelayPState FvRsBDToRelayPFvBDResourceModel
	data.FvRsBDToRelayP.As(ctx, &fvRsBDToRelayPPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBDToRelayP.As(ctx, &fvRsBDToRelayPState, basetypes.ObjectAsOptions{})
	var fvRsBdToEpRetPlan, fvRsBdToEpRetState FvRsBdToEpRetFvBDResourceModel
	data.FvRsBdToEpRet.As(ctx, &fvRsBdToEpRetPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsBdToEpRet.As(ctx, &fvRsBdToEpRetState, basetypes.ObjectAsOptions{})
	var fvRsCtxPlan, fvRsCtxState FvRsCtxFvBDResourceModel
	data.FvRsCtx.As(ctx, &fvRsCtxPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsCtx.As(ctx, &fvRsCtxState, basetypes.ObjectAsOptions{})
	var fvRsIgmpsnPlan, fvRsIgmpsnState FvRsIgmpsnFvBDResourceModel
	data.FvRsIgmpsn.As(ctx, &fvRsIgmpsnPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsIgmpsn.As(ctx, &fvRsIgmpsnState, basetypes.ObjectAsOptions{})
	var fvRsMldsnPlan, fvRsMldsnState FvRsMldsnFvBDResourceModel
	data.FvRsMldsn.As(ctx, &fvRsMldsnPlan, basetypes.ObjectAsOptions{})
	stateData.FvRsMldsn.As(ctx, &fvRsMldsnState, basetypes.ObjectAsOptions{})
	var tagAnnotationPlan, tagAnnotationState []TagAnnotationFvBDResourceModel
	data.TagAnnotation.ElementsAs(ctx, &tagAnnotationPlan, false)
	stateData.TagAnnotation.ElementsAs(ctx, &tagAnnotationState, false)
	var tagTagPlan, tagTagState []TagTagFvBDResourceModel
	data.TagTag.ElementsAs(ctx, &tagTagPlan, false)
	stateData.TagTag.ElementsAs(ctx, &tagTagState, false)
	jsonPayload := getFvBDCreateJsonPayload(ctx, &resp.Diagnostics, false, data, fvAccPPlan, fvAccPState, fvRogueExceptionMacPlan, fvRogueExceptionMacState, fvRsABDPolMonPolPlan, fvRsABDPolMonPolState, fvRsBDToFhsPlan, fvRsBDToFhsState, fvRsBDToNdPPlan, fvRsBDToNdPState, fvRsBDToNetflowMonitorPolPlan, fvRsBDToNetflowMonitorPolState, fvRsBDToOutPlan, fvRsBDToOutState, fvRsBDToProfilePlan, fvRsBDToProfileState, fvRsBDToRelayPPlan, fvRsBDToRelayPState, fvRsBdToEpRetPlan, fvRsBdToEpRetState, fvRsCtxPlan, fvRsCtxState, fvRsIgmpsnPlan, fvRsIgmpsnState, fvRsMldsnPlan, fvRsMldsnState, tagAnnotationPlan, tagAnnotationState, tagTagPlan, tagTagState)

	if resp.Diagnostics.HasError() {
		return
	}

	DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload)

	if resp.Diagnostics.HasError() {
		return
	}

	getAndSetFvBDAttributes(ctx, &resp.Diagnostics, r.client, data)

	// Save updated data into Terraform state
	resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
	tflog.Debug(ctx, fmt.Sprintf("End update of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))
}

func (r *FvBDResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) {
	tflog.Debug(ctx, "Start delete of resource: aci_bridge_domain")
	var data *FvBDResourceModel

	// Read Terraform prior state data into the model
	resp.Diagnostics.Append(req.State.Get(ctx, &data)...)

	if resp.Diagnostics.HasError() {
		return
	}

	tflog.Debug(ctx, fmt.Sprintf("Delete of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))
	jsonPayload := GetDeleteJsonPayload(ctx, &resp.Diagnostics, "fvBD", data.Id.ValueString())
	if resp.Diagnostics.HasError() {
		return
	}
	DoRestRequest(ctx, &resp.Diagnostics, r.client, fmt.Sprintf("api/mo/%s.json", data.Id.ValueString()), "POST", jsonPayload)
	if resp.Diagnostics.HasError() {
		return
	}
	tflog.Debug(ctx, fmt.Sprintf("End delete of resource aci_bridge_domain with id '%s'", data.Id.ValueString()))
}

func (r *FvBDResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) {
	tflog.Debug(ctx, "Start import state of resource: aci_bridge_domain")
	resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp)

	var stateData *FvBDResourceModel
	resp.Diagnostics.Append(resp.State.Get(ctx, &stateData)...)
	tflog.Debug(ctx, fmt.Sprintf("Import state of resource aci_bridge_domain with id '%s'", stateData.Id.ValueString()))

	tflog.Debug(ctx, "End import of state resource: aci_bridge_domain")
}

func getAndSetFvBDAttributes(ctx context.Context, diags *diag.Diagnostics, client *client.Client, data *FvBDResourceModel) {
	requestData := DoRestRequest(ctx, diags, client, fmt.Sprintf("api/mo/%s.json?rsp-subtree=full&rsp-subtree-class=%s", data.Id.ValueString(), "fvBD,fvAccP,fvRogueExceptionMac,fvRsABDPolMonPol,fvRsBDToFhs,fvRsBDToNdP,fvRsBDToNetflowMonitorPol,fvRsBDToOut,fvRsBDToProfile,fvRsBDToRelayP,fvRsBdToEpRet,fvRsCtx,fvRsIgmpsn,fvRsMldsn,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag,tagAnnotation,tagTag"), "GET", nil)

	readData := getEmptyFvBDResourceModel()

	if diags.HasError() {
		return
	}
	if requestData.Search("imdata").Search("fvBD").Data() != nil {
		classReadInfo := requestData.Search("imdata").Search("fvBD").Data().([]interface{})
		if len(classReadInfo) == 1 {
			attributes := classReadInfo[0].(map[string]interface{})["attributes"].(map[string]interface{})
			for attributeName, attributeValue := range attributes {
				if attributeName == "dn" {
					readData.Id = basetypes.NewStringValue(attributeValue.(string))
					setFvBDParentDn(ctx, attributeValue.(string), readData)
				}
				if attributeName == "OptimizeWanBandwidth" {
					readData.OptimizeWanBandwidth = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "annotation" {
					readData.Annotation = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "arpFlood" {
					readData.ArpFlood = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "descr" {
					readData.Descr = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "enableRogueExceptMac" {
					readData.EnableRogueExceptMac = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "epClear" {
					readData.EpClear = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "epMoveDetectMode" {
					readData.EpMoveDetectMode = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "hostBasedRouting" {
					readData.HostBasedRouting = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "intersiteBumTrafficAllow" {
					readData.IntersiteBumTrafficAllow = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "intersiteL2Stretch" {
					readData.IntersiteL2Stretch = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "ipLearning" {
					readData.IpLearning = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "ipv6McastAllow" {
					readData.Ipv6McastAllow = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "limitIpLearnToSubnets" {
					readData.LimitIpLearnToSubnets = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "llAddr" {
					readData.LlAddr = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "mac" {
					readData.Mac = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "mcastARPDrop" {
					readData.McastARPDrop = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "mcastAllow" {
					readData.McastAllow = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "multiDstPktAct" {
					readData.MultiDstPktAct = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "name" {
					readData.Name = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "nameAlias" {
					readData.NameAlias = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "ownerKey" {
					readData.OwnerKey = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "ownerTag" {
					readData.OwnerTag = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "pcTag" {
					readData.PcTag = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "scope" {
					readData.Scope = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "seg" {
					readData.Seg = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "serviceBdRoutingDisable" {
					readData.ServiceBdRoutingDisable = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "type" {
					readData.Type = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "unicastRoute" {
					readData.UnicastRoute = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "unkMacUcastAct" {
					readData.UnkMacUcastAct = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "unkMcastAct" {
					readData.UnkMcastAct = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "v6unkMcastAct" {
					readData.V6unkMcastAct = basetypes.NewStringValue(attributeValue.(string))
				}
				if attributeName == "vmac" {
					readData.Vmac = basetypes.NewStringValue(attributeValue.(string))
				}
			}
			FvAccPFvBDList := make([]FvAccPFvBDResourceModel, 0)
			FvRogueExceptionMacFvBDList := make([]FvRogueExceptionMacFvBDResourceModel, 0)
			FvRsABDPolMonPolFvBDList := make([]FvRsABDPolMonPolFvBDResourceModel, 0)
			FvRsBDToFhsFvBDList := make([]FvRsBDToFhsFvBDResourceModel, 0)
			FvRsBDToNdPFvBDList := make([]FvRsBDToNdPFvBDResourceModel, 0)
			FvRsBDToNetflowMonitorPolFvBDList := make([]FvRsBDToNetflowMonitorPolFvBDResourceModel, 0)
			FvRsBDToOutFvBDList := make([]FvRsBDToOutFvBDResourceModel, 0)
			FvRsBDToProfileFvBDList := make([]FvRsBDToProfileFvBDResourceModel, 0)
			FvRsBDToRelayPFvBDList := make([]FvRsBDToRelayPFvBDResourceModel, 0)
			FvRsBdToEpRetFvBDList := make([]FvRsBdToEpRetFvBDResourceModel, 0)
			FvRsCtxFvBDList := make([]FvRsCtxFvBDResourceModel, 0)
			FvRsIgmpsnFvBDList := make([]FvRsIgmpsnFvBDResourceModel, 0)
			FvRsMldsnFvBDList := make([]FvRsMldsnFvBDResourceModel, 0)
			TagAnnotationFvBDList := make([]TagAnnotationFvBDResourceModel, 0)
			TagTagFvBDList := make([]TagTagFvBDResourceModel, 0)
			_, ok := classReadInfo[0].(map[string]interface{})["children"]
			if ok {
				children := classReadInfo[0].(map[string]interface{})["children"].([]interface{})
				for _, child := range children {
					for childClassName, childClassDetails := range child.(map[string]interface{}) {
						childAttributes := childClassDetails.(map[string]interface{})["attributes"].(map[string]interface{})
						if childClassName == "fvAccP" {
							FvAccPFvBD := getEmptyFvAccPFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvAccPFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "descr" {
									FvAccPFvBD.Descr = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "encap" {
									FvAccPFvBD.Encap = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "name" {
									FvAccPFvBD.Name = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "nameAlias" {
									FvAccPFvBD.NameAlias = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "ownerKey" {
									FvAccPFvBD.OwnerKey = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "ownerTag" {
									FvAccPFvBD.OwnerTag = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvAccPFvBDList := make([]TagAnnotationFvAccPFvBDResourceModel, 0)
							TagTagFvAccPFvBDList := make([]TagTagFvAccPFvBDResourceModel, 0)
							childrenOfFvAccPFvBD, childrenOfFvAccPFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvAccPFvBDExist {
								for _, childFvAccPFvBD := range childrenOfFvAccPFvBD.([]interface{}) {
									for childClassNameFvAccPFvBD, childClassDetailsFvAccPFvBD := range childFvAccPFvBD.(map[string]interface{}) {
										if childClassNameFvAccPFvBD == "tagAnnotation" {
											TagAnnotationFvAccPFvBD := getEmptyTagAnnotationFvAccPFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvAccPFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvAccPFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvAccPFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvAccPFvBDList = append(TagAnnotationFvAccPFvBDList, TagAnnotationFvAccPFvBD)
										}
										if childClassNameFvAccPFvBD == "tagTag" {
											TagTagFvAccPFvBD := getEmptyTagTagFvAccPFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvAccPFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvAccPFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvAccPFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvAccPFvBDList = append(TagTagFvAccPFvBDList, TagTagFvAccPFvBD)
										}
									}
								}
							}
							TagAnnotationFvAccPFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvAccPFvBDType, TagAnnotationFvAccPFvBDList)
							FvAccPFvBD.TagAnnotation = TagAnnotationFvAccPFvBDSet
							TagTagFvAccPFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvAccPFvBDType, TagTagFvAccPFvBDList)
							FvAccPFvBD.TagTag = TagTagFvAccPFvBDSet
							FvAccPFvBDList = append(FvAccPFvBDList, FvAccPFvBD)
						}
						if childClassName == "fvRogueExceptionMac" {
							FvRogueExceptionMacFvBD := getEmptyFvRogueExceptionMacFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRogueExceptionMacFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "descr" {
									FvRogueExceptionMacFvBD.Descr = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "mac" {
									FvRogueExceptionMacFvBD.Mac = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "name" {
									FvRogueExceptionMacFvBD.Name = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "nameAlias" {
									FvRogueExceptionMacFvBD.NameAlias = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRogueExceptionMacFvBDList := make([]TagAnnotationFvRogueExceptionMacFvBDResourceModel, 0)
							TagTagFvRogueExceptionMacFvBDList := make([]TagTagFvRogueExceptionMacFvBDResourceModel, 0)
							childrenOfFvRogueExceptionMacFvBD, childrenOfFvRogueExceptionMacFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRogueExceptionMacFvBDExist {
								for _, childFvRogueExceptionMacFvBD := range childrenOfFvRogueExceptionMacFvBD.([]interface{}) {
									for childClassNameFvRogueExceptionMacFvBD, childClassDetailsFvRogueExceptionMacFvBD := range childFvRogueExceptionMacFvBD.(map[string]interface{}) {
										if childClassNameFvRogueExceptionMacFvBD == "tagAnnotation" {
											TagAnnotationFvRogueExceptionMacFvBD := getEmptyTagAnnotationFvRogueExceptionMacFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRogueExceptionMacFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRogueExceptionMacFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRogueExceptionMacFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRogueExceptionMacFvBDList = append(TagAnnotationFvRogueExceptionMacFvBDList, TagAnnotationFvRogueExceptionMacFvBD)
										}
										if childClassNameFvRogueExceptionMacFvBD == "tagTag" {
											TagTagFvRogueExceptionMacFvBD := getEmptyTagTagFvRogueExceptionMacFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRogueExceptionMacFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRogueExceptionMacFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRogueExceptionMacFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRogueExceptionMacFvBDList = append(TagTagFvRogueExceptionMacFvBDList, TagTagFvRogueExceptionMacFvBD)
										}
									}
								}
							}
							TagAnnotationFvRogueExceptionMacFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRogueExceptionMacFvBDType, TagAnnotationFvRogueExceptionMacFvBDList)
							FvRogueExceptionMacFvBD.TagAnnotation = TagAnnotationFvRogueExceptionMacFvBDSet
							TagTagFvRogueExceptionMacFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRogueExceptionMacFvBDType, TagTagFvRogueExceptionMacFvBDList)
							FvRogueExceptionMacFvBD.TagTag = TagTagFvRogueExceptionMacFvBDSet
							FvRogueExceptionMacFvBDList = append(FvRogueExceptionMacFvBDList, FvRogueExceptionMacFvBD)
						}
						if childClassName == "fvRsABDPolMonPol" {
							FvRsABDPolMonPolFvBD := getEmptyFvRsABDPolMonPolFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsABDPolMonPolFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnMonEPGPolName" {
									FvRsABDPolMonPolFvBD.TnMonEPGPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsABDPolMonPolFvBDList := make([]TagAnnotationFvRsABDPolMonPolFvBDResourceModel, 0)
							TagTagFvRsABDPolMonPolFvBDList := make([]TagTagFvRsABDPolMonPolFvBDResourceModel, 0)
							childrenOfFvRsABDPolMonPolFvBD, childrenOfFvRsABDPolMonPolFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsABDPolMonPolFvBDExist {
								for _, childFvRsABDPolMonPolFvBD := range childrenOfFvRsABDPolMonPolFvBD.([]interface{}) {
									for childClassNameFvRsABDPolMonPolFvBD, childClassDetailsFvRsABDPolMonPolFvBD := range childFvRsABDPolMonPolFvBD.(map[string]interface{}) {
										if childClassNameFvRsABDPolMonPolFvBD == "tagAnnotation" {
											TagAnnotationFvRsABDPolMonPolFvBD := getEmptyTagAnnotationFvRsABDPolMonPolFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsABDPolMonPolFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsABDPolMonPolFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsABDPolMonPolFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsABDPolMonPolFvBDList = append(TagAnnotationFvRsABDPolMonPolFvBDList, TagAnnotationFvRsABDPolMonPolFvBD)
										}
										if childClassNameFvRsABDPolMonPolFvBD == "tagTag" {
											TagTagFvRsABDPolMonPolFvBD := getEmptyTagTagFvRsABDPolMonPolFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsABDPolMonPolFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsABDPolMonPolFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsABDPolMonPolFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsABDPolMonPolFvBDList = append(TagTagFvRsABDPolMonPolFvBDList, TagTagFvRsABDPolMonPolFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsABDPolMonPolFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsABDPolMonPolFvBDType, TagAnnotationFvRsABDPolMonPolFvBDList)
							FvRsABDPolMonPolFvBD.TagAnnotation = TagAnnotationFvRsABDPolMonPolFvBDSet
							TagTagFvRsABDPolMonPolFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsABDPolMonPolFvBDType, TagTagFvRsABDPolMonPolFvBDList)
							FvRsABDPolMonPolFvBD.TagTag = TagTagFvRsABDPolMonPolFvBDSet
							FvRsABDPolMonPolFvBDList = append(FvRsABDPolMonPolFvBDList, FvRsABDPolMonPolFvBD)
						}
						if childClassName == "fvRsBDToFhs" {
							FvRsBDToFhsFvBD := getEmptyFvRsBDToFhsFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBDToFhsFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnFhsBDPolName" {
									FvRsBDToFhsFvBD.TnFhsBDPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBDToFhsFvBDList := make([]TagAnnotationFvRsBDToFhsFvBDResourceModel, 0)
							TagTagFvRsBDToFhsFvBDList := make([]TagTagFvRsBDToFhsFvBDResourceModel, 0)
							childrenOfFvRsBDToFhsFvBD, childrenOfFvRsBDToFhsFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBDToFhsFvBDExist {
								for _, childFvRsBDToFhsFvBD := range childrenOfFvRsBDToFhsFvBD.([]interface{}) {
									for childClassNameFvRsBDToFhsFvBD, childClassDetailsFvRsBDToFhsFvBD := range childFvRsBDToFhsFvBD.(map[string]interface{}) {
										if childClassNameFvRsBDToFhsFvBD == "tagAnnotation" {
											TagAnnotationFvRsBDToFhsFvBD := getEmptyTagAnnotationFvRsBDToFhsFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBDToFhsFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBDToFhsFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBDToFhsFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBDToFhsFvBDList = append(TagAnnotationFvRsBDToFhsFvBDList, TagAnnotationFvRsBDToFhsFvBD)
										}
										if childClassNameFvRsBDToFhsFvBD == "tagTag" {
											TagTagFvRsBDToFhsFvBD := getEmptyTagTagFvRsBDToFhsFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBDToFhsFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBDToFhsFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBDToFhsFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBDToFhsFvBDList = append(TagTagFvRsBDToFhsFvBDList, TagTagFvRsBDToFhsFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBDToFhsFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToFhsFvBDType, TagAnnotationFvRsBDToFhsFvBDList)
							FvRsBDToFhsFvBD.TagAnnotation = TagAnnotationFvRsBDToFhsFvBDSet
							TagTagFvRsBDToFhsFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBDToFhsFvBDType, TagTagFvRsBDToFhsFvBDList)
							FvRsBDToFhsFvBD.TagTag = TagTagFvRsBDToFhsFvBDSet
							FvRsBDToFhsFvBDList = append(FvRsBDToFhsFvBDList, FvRsBDToFhsFvBD)
						}
						if childClassName == "fvRsBDToNdP" {
							FvRsBDToNdPFvBD := getEmptyFvRsBDToNdPFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBDToNdPFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnNdIfPolName" {
									FvRsBDToNdPFvBD.TnNdIfPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBDToNdPFvBDList := make([]TagAnnotationFvRsBDToNdPFvBDResourceModel, 0)
							TagTagFvRsBDToNdPFvBDList := make([]TagTagFvRsBDToNdPFvBDResourceModel, 0)
							childrenOfFvRsBDToNdPFvBD, childrenOfFvRsBDToNdPFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBDToNdPFvBDExist {
								for _, childFvRsBDToNdPFvBD := range childrenOfFvRsBDToNdPFvBD.([]interface{}) {
									for childClassNameFvRsBDToNdPFvBD, childClassDetailsFvRsBDToNdPFvBD := range childFvRsBDToNdPFvBD.(map[string]interface{}) {
										if childClassNameFvRsBDToNdPFvBD == "tagAnnotation" {
											TagAnnotationFvRsBDToNdPFvBD := getEmptyTagAnnotationFvRsBDToNdPFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBDToNdPFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBDToNdPFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBDToNdPFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBDToNdPFvBDList = append(TagAnnotationFvRsBDToNdPFvBDList, TagAnnotationFvRsBDToNdPFvBD)
										}
										if childClassNameFvRsBDToNdPFvBD == "tagTag" {
											TagTagFvRsBDToNdPFvBD := getEmptyTagTagFvRsBDToNdPFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBDToNdPFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBDToNdPFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBDToNdPFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBDToNdPFvBDList = append(TagTagFvRsBDToNdPFvBDList, TagTagFvRsBDToNdPFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBDToNdPFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToNdPFvBDType, TagAnnotationFvRsBDToNdPFvBDList)
							FvRsBDToNdPFvBD.TagAnnotation = TagAnnotationFvRsBDToNdPFvBDSet
							TagTagFvRsBDToNdPFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBDToNdPFvBDType, TagTagFvRsBDToNdPFvBDList)
							FvRsBDToNdPFvBD.TagTag = TagTagFvRsBDToNdPFvBDSet
							FvRsBDToNdPFvBDList = append(FvRsBDToNdPFvBDList, FvRsBDToNdPFvBD)
						}
						if childClassName == "fvRsBDToNetflowMonitorPol" {
							FvRsBDToNetflowMonitorPolFvBD := getEmptyFvRsBDToNetflowMonitorPolFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBDToNetflowMonitorPolFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "fltType" {
									FvRsBDToNetflowMonitorPolFvBD.FltType = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnNetflowMonitorPolName" {
									FvRsBDToNetflowMonitorPolFvBD.TnNetflowMonitorPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBDToNetflowMonitorPolFvBDList := make([]TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel, 0)
							TagTagFvRsBDToNetflowMonitorPolFvBDList := make([]TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel, 0)
							childrenOfFvRsBDToNetflowMonitorPolFvBD, childrenOfFvRsBDToNetflowMonitorPolFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBDToNetflowMonitorPolFvBDExist {
								for _, childFvRsBDToNetflowMonitorPolFvBD := range childrenOfFvRsBDToNetflowMonitorPolFvBD.([]interface{}) {
									for childClassNameFvRsBDToNetflowMonitorPolFvBD, childClassDetailsFvRsBDToNetflowMonitorPolFvBD := range childFvRsBDToNetflowMonitorPolFvBD.(map[string]interface{}) {
										if childClassNameFvRsBDToNetflowMonitorPolFvBD == "tagAnnotation" {
											TagAnnotationFvRsBDToNetflowMonitorPolFvBD := getEmptyTagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBDToNetflowMonitorPolFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBDToNetflowMonitorPolFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBDToNetflowMonitorPolFvBDList = append(TagAnnotationFvRsBDToNetflowMonitorPolFvBDList, TagAnnotationFvRsBDToNetflowMonitorPolFvBD)
										}
										if childClassNameFvRsBDToNetflowMonitorPolFvBD == "tagTag" {
											TagTagFvRsBDToNetflowMonitorPolFvBD := getEmptyTagTagFvRsBDToNetflowMonitorPolFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBDToNetflowMonitorPolFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBDToNetflowMonitorPolFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBDToNetflowMonitorPolFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBDToNetflowMonitorPolFvBDList = append(TagTagFvRsBDToNetflowMonitorPolFvBDList, TagTagFvRsBDToNetflowMonitorPolFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBDToNetflowMonitorPolFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToNetflowMonitorPolFvBDType, TagAnnotationFvRsBDToNetflowMonitorPolFvBDList)
							FvRsBDToNetflowMonitorPolFvBD.TagAnnotation = TagAnnotationFvRsBDToNetflowMonitorPolFvBDSet
							TagTagFvRsBDToNetflowMonitorPolFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBDToNetflowMonitorPolFvBDType, TagTagFvRsBDToNetflowMonitorPolFvBDList)
							FvRsBDToNetflowMonitorPolFvBD.TagTag = TagTagFvRsBDToNetflowMonitorPolFvBDSet
							FvRsBDToNetflowMonitorPolFvBDList = append(FvRsBDToNetflowMonitorPolFvBDList, FvRsBDToNetflowMonitorPolFvBD)
						}
						if childClassName == "fvRsBDToOut" {
							FvRsBDToOutFvBD := getEmptyFvRsBDToOutFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBDToOutFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnL3extOutName" {
									FvRsBDToOutFvBD.TnL3extOutName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBDToOutFvBDList := make([]TagAnnotationFvRsBDToOutFvBDResourceModel, 0)
							TagTagFvRsBDToOutFvBDList := make([]TagTagFvRsBDToOutFvBDResourceModel, 0)
							childrenOfFvRsBDToOutFvBD, childrenOfFvRsBDToOutFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBDToOutFvBDExist {
								for _, childFvRsBDToOutFvBD := range childrenOfFvRsBDToOutFvBD.([]interface{}) {
									for childClassNameFvRsBDToOutFvBD, childClassDetailsFvRsBDToOutFvBD := range childFvRsBDToOutFvBD.(map[string]interface{}) {
										if childClassNameFvRsBDToOutFvBD == "tagAnnotation" {
											TagAnnotationFvRsBDToOutFvBD := getEmptyTagAnnotationFvRsBDToOutFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBDToOutFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBDToOutFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBDToOutFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBDToOutFvBDList = append(TagAnnotationFvRsBDToOutFvBDList, TagAnnotationFvRsBDToOutFvBD)
										}
										if childClassNameFvRsBDToOutFvBD == "tagTag" {
											TagTagFvRsBDToOutFvBD := getEmptyTagTagFvRsBDToOutFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBDToOutFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBDToOutFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBDToOutFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBDToOutFvBDList = append(TagTagFvRsBDToOutFvBDList, TagTagFvRsBDToOutFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBDToOutFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToOutFvBDType, TagAnnotationFvRsBDToOutFvBDList)
							FvRsBDToOutFvBD.TagAnnotation = TagAnnotationFvRsBDToOutFvBDSet
							TagTagFvRsBDToOutFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBDToOutFvBDType, TagTagFvRsBDToOutFvBDList)
							FvRsBDToOutFvBD.TagTag = TagTagFvRsBDToOutFvBDSet
							FvRsBDToOutFvBDList = append(FvRsBDToOutFvBDList, FvRsBDToOutFvBD)
						}
						if childClassName == "fvRsBDToProfile" {
							FvRsBDToProfileFvBD := getEmptyFvRsBDToProfileFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBDToProfileFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnL3extOutName" {
									FvRsBDToProfileFvBD.TnL3extOutName = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnRtctrlProfileName" {
									FvRsBDToProfileFvBD.TnRtctrlProfileName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBDToProfileFvBDList := make([]TagAnnotationFvRsBDToProfileFvBDResourceModel, 0)
							TagTagFvRsBDToProfileFvBDList := make([]TagTagFvRsBDToProfileFvBDResourceModel, 0)
							childrenOfFvRsBDToProfileFvBD, childrenOfFvRsBDToProfileFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBDToProfileFvBDExist {
								for _, childFvRsBDToProfileFvBD := range childrenOfFvRsBDToProfileFvBD.([]interface{}) {
									for childClassNameFvRsBDToProfileFvBD, childClassDetailsFvRsBDToProfileFvBD := range childFvRsBDToProfileFvBD.(map[string]interface{}) {
										if childClassNameFvRsBDToProfileFvBD == "tagAnnotation" {
											TagAnnotationFvRsBDToProfileFvBD := getEmptyTagAnnotationFvRsBDToProfileFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBDToProfileFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBDToProfileFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBDToProfileFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBDToProfileFvBDList = append(TagAnnotationFvRsBDToProfileFvBDList, TagAnnotationFvRsBDToProfileFvBD)
										}
										if childClassNameFvRsBDToProfileFvBD == "tagTag" {
											TagTagFvRsBDToProfileFvBD := getEmptyTagTagFvRsBDToProfileFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBDToProfileFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBDToProfileFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBDToProfileFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBDToProfileFvBDList = append(TagTagFvRsBDToProfileFvBDList, TagTagFvRsBDToProfileFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBDToProfileFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToProfileFvBDType, TagAnnotationFvRsBDToProfileFvBDList)
							FvRsBDToProfileFvBD.TagAnnotation = TagAnnotationFvRsBDToProfileFvBDSet
							TagTagFvRsBDToProfileFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBDToProfileFvBDType, TagTagFvRsBDToProfileFvBDList)
							FvRsBDToProfileFvBD.TagTag = TagTagFvRsBDToProfileFvBDSet
							FvRsBDToProfileFvBDList = append(FvRsBDToProfileFvBDList, FvRsBDToProfileFvBD)
						}
						if childClassName == "fvRsBDToRelayP" {
							FvRsBDToRelayPFvBD := getEmptyFvRsBDToRelayPFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBDToRelayPFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnDhcpRelayPName" {
									FvRsBDToRelayPFvBD.TnDhcpRelayPName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBDToRelayPFvBDList := make([]TagAnnotationFvRsBDToRelayPFvBDResourceModel, 0)
							TagTagFvRsBDToRelayPFvBDList := make([]TagTagFvRsBDToRelayPFvBDResourceModel, 0)
							childrenOfFvRsBDToRelayPFvBD, childrenOfFvRsBDToRelayPFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBDToRelayPFvBDExist {
								for _, childFvRsBDToRelayPFvBD := range childrenOfFvRsBDToRelayPFvBD.([]interface{}) {
									for childClassNameFvRsBDToRelayPFvBD, childClassDetailsFvRsBDToRelayPFvBD := range childFvRsBDToRelayPFvBD.(map[string]interface{}) {
										if childClassNameFvRsBDToRelayPFvBD == "tagAnnotation" {
											TagAnnotationFvRsBDToRelayPFvBD := getEmptyTagAnnotationFvRsBDToRelayPFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBDToRelayPFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBDToRelayPFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBDToRelayPFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBDToRelayPFvBDList = append(TagAnnotationFvRsBDToRelayPFvBDList, TagAnnotationFvRsBDToRelayPFvBD)
										}
										if childClassNameFvRsBDToRelayPFvBD == "tagTag" {
											TagTagFvRsBDToRelayPFvBD := getEmptyTagTagFvRsBDToRelayPFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBDToRelayPFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBDToRelayPFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBDToRelayPFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBDToRelayPFvBDList = append(TagTagFvRsBDToRelayPFvBDList, TagTagFvRsBDToRelayPFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBDToRelayPFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBDToRelayPFvBDType, TagAnnotationFvRsBDToRelayPFvBDList)
							FvRsBDToRelayPFvBD.TagAnnotation = TagAnnotationFvRsBDToRelayPFvBDSet
							TagTagFvRsBDToRelayPFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBDToRelayPFvBDType, TagTagFvRsBDToRelayPFvBDList)
							FvRsBDToRelayPFvBD.TagTag = TagTagFvRsBDToRelayPFvBDSet
							FvRsBDToRelayPFvBDList = append(FvRsBDToRelayPFvBDList, FvRsBDToRelayPFvBD)
						}
						if childClassName == "fvRsBdToEpRet" {
							FvRsBdToEpRetFvBD := getEmptyFvRsBdToEpRetFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsBdToEpRetFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "resolveAct" {
									FvRsBdToEpRetFvBD.ResolveAct = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnFvEpRetPolName" {
									FvRsBdToEpRetFvBD.TnFvEpRetPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsBdToEpRetFvBDList := make([]TagAnnotationFvRsBdToEpRetFvBDResourceModel, 0)
							TagTagFvRsBdToEpRetFvBDList := make([]TagTagFvRsBdToEpRetFvBDResourceModel, 0)
							childrenOfFvRsBdToEpRetFvBD, childrenOfFvRsBdToEpRetFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsBdToEpRetFvBDExist {
								for _, childFvRsBdToEpRetFvBD := range childrenOfFvRsBdToEpRetFvBD.([]interface{}) {
									for childClassNameFvRsBdToEpRetFvBD, childClassDetailsFvRsBdToEpRetFvBD := range childFvRsBdToEpRetFvBD.(map[string]interface{}) {
										if childClassNameFvRsBdToEpRetFvBD == "tagAnnotation" {
											TagAnnotationFvRsBdToEpRetFvBD := getEmptyTagAnnotationFvRsBdToEpRetFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsBdToEpRetFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsBdToEpRetFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsBdToEpRetFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsBdToEpRetFvBDList = append(TagAnnotationFvRsBdToEpRetFvBDList, TagAnnotationFvRsBdToEpRetFvBD)
										}
										if childClassNameFvRsBdToEpRetFvBD == "tagTag" {
											TagTagFvRsBdToEpRetFvBD := getEmptyTagTagFvRsBdToEpRetFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsBdToEpRetFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsBdToEpRetFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsBdToEpRetFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsBdToEpRetFvBDList = append(TagTagFvRsBdToEpRetFvBDList, TagTagFvRsBdToEpRetFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsBdToEpRetFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsBdToEpRetFvBDType, TagAnnotationFvRsBdToEpRetFvBDList)
							FvRsBdToEpRetFvBD.TagAnnotation = TagAnnotationFvRsBdToEpRetFvBDSet
							TagTagFvRsBdToEpRetFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsBdToEpRetFvBDType, TagTagFvRsBdToEpRetFvBDList)
							FvRsBdToEpRetFvBD.TagTag = TagTagFvRsBdToEpRetFvBDSet
							FvRsBdToEpRetFvBDList = append(FvRsBdToEpRetFvBDList, FvRsBdToEpRetFvBD)
						}
						if childClassName == "fvRsCtx" {
							FvRsCtxFvBD := getEmptyFvRsCtxFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsCtxFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnFvCtxName" {
									FvRsCtxFvBD.TnFvCtxName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsCtxFvBDList := make([]TagAnnotationFvRsCtxFvBDResourceModel, 0)
							TagTagFvRsCtxFvBDList := make([]TagTagFvRsCtxFvBDResourceModel, 0)
							childrenOfFvRsCtxFvBD, childrenOfFvRsCtxFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsCtxFvBDExist {
								for _, childFvRsCtxFvBD := range childrenOfFvRsCtxFvBD.([]interface{}) {
									for childClassNameFvRsCtxFvBD, childClassDetailsFvRsCtxFvBD := range childFvRsCtxFvBD.(map[string]interface{}) {
										if childClassNameFvRsCtxFvBD == "tagAnnotation" {
											TagAnnotationFvRsCtxFvBD := getEmptyTagAnnotationFvRsCtxFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsCtxFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsCtxFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsCtxFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsCtxFvBDList = append(TagAnnotationFvRsCtxFvBDList, TagAnnotationFvRsCtxFvBD)
										}
										if childClassNameFvRsCtxFvBD == "tagTag" {
											TagTagFvRsCtxFvBD := getEmptyTagTagFvRsCtxFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsCtxFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsCtxFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsCtxFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsCtxFvBDList = append(TagTagFvRsCtxFvBDList, TagTagFvRsCtxFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsCtxFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsCtxFvBDType, TagAnnotationFvRsCtxFvBDList)
							FvRsCtxFvBD.TagAnnotation = TagAnnotationFvRsCtxFvBDSet
							TagTagFvRsCtxFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsCtxFvBDType, TagTagFvRsCtxFvBDList)
							FvRsCtxFvBD.TagTag = TagTagFvRsCtxFvBDSet
							FvRsCtxFvBDList = append(FvRsCtxFvBDList, FvRsCtxFvBD)
						}
						if childClassName == "fvRsIgmpsn" {
							FvRsIgmpsnFvBD := getEmptyFvRsIgmpsnFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsIgmpsnFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnIgmpSnoopPolName" {
									FvRsIgmpsnFvBD.TnIgmpSnoopPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsIgmpsnFvBDList := make([]TagAnnotationFvRsIgmpsnFvBDResourceModel, 0)
							TagTagFvRsIgmpsnFvBDList := make([]TagTagFvRsIgmpsnFvBDResourceModel, 0)
							childrenOfFvRsIgmpsnFvBD, childrenOfFvRsIgmpsnFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsIgmpsnFvBDExist {
								for _, childFvRsIgmpsnFvBD := range childrenOfFvRsIgmpsnFvBD.([]interface{}) {
									for childClassNameFvRsIgmpsnFvBD, childClassDetailsFvRsIgmpsnFvBD := range childFvRsIgmpsnFvBD.(map[string]interface{}) {
										if childClassNameFvRsIgmpsnFvBD == "tagAnnotation" {
											TagAnnotationFvRsIgmpsnFvBD := getEmptyTagAnnotationFvRsIgmpsnFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsIgmpsnFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsIgmpsnFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsIgmpsnFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsIgmpsnFvBDList = append(TagAnnotationFvRsIgmpsnFvBDList, TagAnnotationFvRsIgmpsnFvBD)
										}
										if childClassNameFvRsIgmpsnFvBD == "tagTag" {
											TagTagFvRsIgmpsnFvBD := getEmptyTagTagFvRsIgmpsnFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsIgmpsnFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsIgmpsnFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsIgmpsnFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsIgmpsnFvBDList = append(TagTagFvRsIgmpsnFvBDList, TagTagFvRsIgmpsnFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsIgmpsnFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsIgmpsnFvBDType, TagAnnotationFvRsIgmpsnFvBDList)
							FvRsIgmpsnFvBD.TagAnnotation = TagAnnotationFvRsIgmpsnFvBDSet
							TagTagFvRsIgmpsnFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsIgmpsnFvBDType, TagTagFvRsIgmpsnFvBDList)
							FvRsIgmpsnFvBD.TagTag = TagTagFvRsIgmpsnFvBDSet
							FvRsIgmpsnFvBDList = append(FvRsIgmpsnFvBDList, FvRsIgmpsnFvBD)
						}
						if childClassName == "fvRsMldsn" {
							FvRsMldsnFvBD := getEmptyFvRsMldsnFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "annotation" {
									FvRsMldsnFvBD.Annotation = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "tnMldSnoopPolName" {
									FvRsMldsnFvBD.TnMldSnoopPolName = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvRsMldsnFvBDList := make([]TagAnnotationFvRsMldsnFvBDResourceModel, 0)
							TagTagFvRsMldsnFvBDList := make([]TagTagFvRsMldsnFvBDResourceModel, 0)
							childrenOfFvRsMldsnFvBD, childrenOfFvRsMldsnFvBDExist := childClassDetails.(map[string]interface{})["children"]
							if childrenOfFvRsMldsnFvBDExist {
								for _, childFvRsMldsnFvBD := range childrenOfFvRsMldsnFvBD.([]interface{}) {
									for childClassNameFvRsMldsnFvBD, childClassDetailsFvRsMldsnFvBD := range childFvRsMldsnFvBD.(map[string]interface{}) {
										if childClassNameFvRsMldsnFvBD == "tagAnnotation" {
											TagAnnotationFvRsMldsnFvBD := getEmptyTagAnnotationFvRsMldsnFvBDResourceModel()
											tagAnnotationchildAttributeValue := childClassDetailsFvRsMldsnFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagAnnotationchildAttributeValue {
												if childAttributeName == "key" {
													TagAnnotationFvRsMldsnFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagAnnotationFvRsMldsnFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagAnnotationFvRsMldsnFvBDList = append(TagAnnotationFvRsMldsnFvBDList, TagAnnotationFvRsMldsnFvBD)
										}
										if childClassNameFvRsMldsnFvBD == "tagTag" {
											TagTagFvRsMldsnFvBD := getEmptyTagTagFvRsMldsnFvBDResourceModel()
											tagTagchildAttributeValue := childClassDetailsFvRsMldsnFvBD.(map[string]interface{})["attributes"].(map[string]interface{})
											for childAttributeName, childAttributeValue := range tagTagchildAttributeValue {
												if childAttributeName == "key" {
													TagTagFvRsMldsnFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
												}
												if childAttributeName == "value" {
													TagTagFvRsMldsnFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
												}
											}
											TagTagFvRsMldsnFvBDList = append(TagTagFvRsMldsnFvBDList, TagTagFvRsMldsnFvBD)
										}
									}
								}
							}
							TagAnnotationFvRsMldsnFvBDSet, _ := types.SetValueFrom(ctx, TagAnnotationFvRsMldsnFvBDType, TagAnnotationFvRsMldsnFvBDList)
							FvRsMldsnFvBD.TagAnnotation = TagAnnotationFvRsMldsnFvBDSet
							TagTagFvRsMldsnFvBDSet, _ := types.SetValueFrom(ctx, TagTagFvRsMldsnFvBDType, TagTagFvRsMldsnFvBDList)
							FvRsMldsnFvBD.TagTag = TagTagFvRsMldsnFvBDSet
							FvRsMldsnFvBDList = append(FvRsMldsnFvBDList, FvRsMldsnFvBD)
						}
						if childClassName == "tagAnnotation" {
							TagAnnotationFvBD := getEmptyTagAnnotationFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "key" {
									TagAnnotationFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "value" {
									TagAnnotationFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagAnnotationFvBDList = append(TagAnnotationFvBDList, TagAnnotationFvBD)
						}
						if childClassName == "tagTag" {
							TagTagFvBD := getEmptyTagTagFvBDResourceModel()
							for childAttributeName, childAttributeValue := range childAttributes {
								if childAttributeName == "key" {
									TagTagFvBD.Key = basetypes.NewStringValue(childAttributeValue.(string))
								}
								if childAttributeName == "value" {
									TagTagFvBD.Value = basetypes.NewStringValue(childAttributeValue.(string))
								}

							}
							TagTagFvBDList = append(TagTagFvBDList, TagTagFvBD)
						}
					}
				}
			}
			if len(FvAccPFvBDList) == 1 {
				fvAccPObject, _ := types.ObjectValueFrom(ctx, FvAccPFvBDType, FvAccPFvBDList[0])
				readData.FvAccP = fvAccPObject
			} else {
				fvAccPObject, _ := types.ObjectValueFrom(ctx, FvAccPFvBDType, getEmptyFvAccPFvBDResourceModel())
				readData.FvAccP = fvAccPObject
			}
			fvRogueExceptionMacSet, _ := types.SetValueFrom(ctx, readData.FvRogueExceptionMac.ElementType(ctx), FvRogueExceptionMacFvBDList)
			readData.FvRogueExceptionMac = fvRogueExceptionMacSet
			if len(FvRsABDPolMonPolFvBDList) == 1 {
				fvRsABDPolMonPolObject, _ := types.ObjectValueFrom(ctx, FvRsABDPolMonPolFvBDType, FvRsABDPolMonPolFvBDList[0])
				readData.FvRsABDPolMonPol = fvRsABDPolMonPolObject
			} else {
				fvRsABDPolMonPolObject, _ := types.ObjectValueFrom(ctx, FvRsABDPolMonPolFvBDType, getEmptyFvRsABDPolMonPolFvBDResourceModel())
				readData.FvRsABDPolMonPol = fvRsABDPolMonPolObject
			}
			if len(FvRsBDToFhsFvBDList) == 1 {
				fvRsBDToFhsObject, _ := types.ObjectValueFrom(ctx, FvRsBDToFhsFvBDType, FvRsBDToFhsFvBDList[0])
				readData.FvRsBDToFhs = fvRsBDToFhsObject
			} else {
				fvRsBDToFhsObject, _ := types.ObjectValueFrom(ctx, FvRsBDToFhsFvBDType, getEmptyFvRsBDToFhsFvBDResourceModel())
				readData.FvRsBDToFhs = fvRsBDToFhsObject
			}
			if len(FvRsBDToNdPFvBDList) == 1 {
				fvRsBDToNdPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToNdPFvBDType, FvRsBDToNdPFvBDList[0])
				readData.FvRsBDToNdP = fvRsBDToNdPObject
			} else {
				fvRsBDToNdPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToNdPFvBDType, getEmptyFvRsBDToNdPFvBDResourceModel())
				readData.FvRsBDToNdP = fvRsBDToNdPObject
			}
			fvRsBDToNetflowMonitorPolSet, _ := types.SetValueFrom(ctx, readData.FvRsBDToNetflowMonitorPol.ElementType(ctx), FvRsBDToNetflowMonitorPolFvBDList)
			readData.FvRsBDToNetflowMonitorPol = fvRsBDToNetflowMonitorPolSet
			fvRsBDToOutSet, _ := types.SetValueFrom(ctx, readData.FvRsBDToOut.ElementType(ctx), FvRsBDToOutFvBDList)
			readData.FvRsBDToOut = fvRsBDToOutSet
			if len(FvRsBDToProfileFvBDList) == 1 {
				fvRsBDToProfileObject, _ := types.ObjectValueFrom(ctx, FvRsBDToProfileFvBDType, FvRsBDToProfileFvBDList[0])
				readData.FvRsBDToProfile = fvRsBDToProfileObject
			} else {
				fvRsBDToProfileObject, _ := types.ObjectValueFrom(ctx, FvRsBDToProfileFvBDType, getEmptyFvRsBDToProfileFvBDResourceModel())
				readData.FvRsBDToProfile = fvRsBDToProfileObject
			}
			if len(FvRsBDToRelayPFvBDList) == 1 {
				fvRsBDToRelayPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToRelayPFvBDType, FvRsBDToRelayPFvBDList[0])
				readData.FvRsBDToRelayP = fvRsBDToRelayPObject
			} else {
				fvRsBDToRelayPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToRelayPFvBDType, getEmptyFvRsBDToRelayPFvBDResourceModel())
				readData.FvRsBDToRelayP = fvRsBDToRelayPObject
			}
			if len(FvRsBdToEpRetFvBDList) == 1 {
				fvRsBdToEpRetObject, _ := types.ObjectValueFrom(ctx, FvRsBdToEpRetFvBDType, FvRsBdToEpRetFvBDList[0])
				readData.FvRsBdToEpRet = fvRsBdToEpRetObject
			} else {
				fvRsBdToEpRetObject, _ := types.ObjectValueFrom(ctx, FvRsBdToEpRetFvBDType, getEmptyFvRsBdToEpRetFvBDResourceModel())
				readData.FvRsBdToEpRet = fvRsBdToEpRetObject
			}
			if len(FvRsCtxFvBDList) == 1 {
				fvRsCtxObject, _ := types.ObjectValueFrom(ctx, FvRsCtxFvBDType, FvRsCtxFvBDList[0])
				readData.FvRsCtx = fvRsCtxObject
			} else {
				fvRsCtxObject, _ := types.ObjectValueFrom(ctx, FvRsCtxFvBDType, getEmptyFvRsCtxFvBDResourceModel())
				readData.FvRsCtx = fvRsCtxObject
			}
			if len(FvRsIgmpsnFvBDList) == 1 {
				fvRsIgmpsnObject, _ := types.ObjectValueFrom(ctx, FvRsIgmpsnFvBDType, FvRsIgmpsnFvBDList[0])
				readData.FvRsIgmpsn = fvRsIgmpsnObject
			} else {
				fvRsIgmpsnObject, _ := types.ObjectValueFrom(ctx, FvRsIgmpsnFvBDType, getEmptyFvRsIgmpsnFvBDResourceModel())
				readData.FvRsIgmpsn = fvRsIgmpsnObject
			}
			if len(FvRsMldsnFvBDList) == 1 {
				fvRsMldsnObject, _ := types.ObjectValueFrom(ctx, FvRsMldsnFvBDType, FvRsMldsnFvBDList[0])
				readData.FvRsMldsn = fvRsMldsnObject
			} else {
				fvRsMldsnObject, _ := types.ObjectValueFrom(ctx, FvRsMldsnFvBDType, getEmptyFvRsMldsnFvBDResourceModel())
				readData.FvRsMldsn = fvRsMldsnObject
			}
			tagAnnotationSet, _ := types.SetValueFrom(ctx, readData.TagAnnotation.ElementType(ctx), TagAnnotationFvBDList)
			readData.TagAnnotation = tagAnnotationSet
			tagTagSet, _ := types.SetValueFrom(ctx, readData.TagTag.ElementType(ctx), TagTagFvBDList)
			readData.TagTag = tagTagSet
			setFvBDLegacyAttributes(ctx, diags, readData, data, classReadInfo)
		} else {
			diags.AddError(
				"too many results in response",
				fmt.Sprintf("%v matches returned for class 'fvBD'. Please report this issue to the provider developers.", len(classReadInfo)),
			)
		}
	} else {
		readData.Id = basetypes.NewStringNull()
	}
	*data = *readData
}

func getFvBDRn(ctx context.Context, data *FvBDResourceModel) string {
	return fmt.Sprintf("BD-%s", data.Name.ValueString())
}

func setFvBDParentDn(ctx context.Context, dn string, data *FvBDResourceModel) {
	bracketIndex := 0
	rnIndex := 0
	for i := len(dn) - 1; i >= 0; i-- {
		if string(dn[i]) == "]" {
			bracketIndex = bracketIndex + 1
		} else if string(dn[i]) == "[" {
			bracketIndex = bracketIndex - 1
		} else if string(dn[i]) == "/" && bracketIndex == 0 {
			rnIndex = i
			break
		}
	}
	data.ParentDn = basetypes.NewStringValue(dn[:rnIndex])
}

func setFvBDId(ctx context.Context, data *FvBDResourceModel) {
	rn := getFvBDRn(ctx, data)
	data.Id = types.StringValue(fmt.Sprintf("%s/%s", data.ParentDn.ValueString(), rn))
}

func getFvBDFvAccPChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvAccPFvBDPlan, fvAccPFvBDState FvAccPFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvAccP.IsNull() && !data.FvAccP.IsUnknown() {
		FvAccPFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvAccP.Attributes()) {
			if !fvAccPFvBDPlan.Annotation.IsUnknown() && !fvAccPFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvAccPFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvAccPFvBDPlan.Descr.IsUnknown() && !fvAccPFvBDPlan.Descr.IsNull() {
				childMap.Attributes["descr"] = fvAccPFvBDPlan.Descr.ValueString()
			}
			if !fvAccPFvBDPlan.Encap.IsUnknown() && !fvAccPFvBDPlan.Encap.IsNull() {
				childMap.Attributes["encap"] = fvAccPFvBDPlan.Encap.ValueString()
			}
			if !fvAccPFvBDPlan.Name.IsUnknown() && !fvAccPFvBDPlan.Name.IsNull() {
				childMap.Attributes["name"] = fvAccPFvBDPlan.Name.ValueString()
			}
			if !fvAccPFvBDPlan.NameAlias.IsUnknown() && !fvAccPFvBDPlan.NameAlias.IsNull() {
				childMap.Attributes["nameAlias"] = fvAccPFvBDPlan.NameAlias.ValueString()
			}
			if !fvAccPFvBDPlan.OwnerKey.IsUnknown() && !fvAccPFvBDPlan.OwnerKey.IsNull() {
				childMap.Attributes["ownerKey"] = fvAccPFvBDPlan.OwnerKey.ValueString()
			}
			if !fvAccPFvBDPlan.OwnerTag.IsUnknown() && !fvAccPFvBDPlan.OwnerTag.IsNull() {
				childMap.Attributes["ownerTag"] = fvAccPFvBDPlan.OwnerTag.ValueString()
			}

			var tagAnnotationFvAccPFvBDPlan, tagAnnotationFvAccPFvBDState []TagAnnotationFvAccPFvBDResourceModel
			fvAccPFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvAccPFvBDPlan, false)
			if !fvAccPFvBDState.TagAnnotation.IsNull() {
				fvAccPFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvAccPFvBDState, false)
			}
			if !fvAccPFvBDPlan.TagAnnotation.IsNull() && !fvAccPFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvAccPFvBD := range tagAnnotationFvAccPFvBDPlan {
					tagAnnotationFvAccPFvBDChildMap := NewAciObject()
					if !tagAnnotationFvAccPFvBD.Key.IsNull() && !tagAnnotationFvAccPFvBD.Key.IsUnknown() {
						tagAnnotationFvAccPFvBDChildMap.Attributes["key"] = tagAnnotationFvAccPFvBD.Key.ValueString()
					}
					if !tagAnnotationFvAccPFvBD.Value.IsNull() && !tagAnnotationFvAccPFvBD.Value.IsUnknown() {
						tagAnnotationFvAccPFvBDChildMap.Attributes["value"] = tagAnnotationFvAccPFvBD.Value.ValueString()
					}
					FvAccPFvBDChildren = append(FvAccPFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvAccPFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvAccPFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvAccPFvBD := range tagAnnotationFvAccPFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvAccPFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvAccPFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvAccPFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvAccPFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvAccPFvBD.Key.ValueString()
						FvAccPFvBDChildren = append(FvAccPFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvAccPFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvAccPFvBDPlan, tagTagFvAccPFvBDState []TagTagFvAccPFvBDResourceModel
			fvAccPFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvAccPFvBDPlan, false)
			if !fvAccPFvBDState.TagTag.IsNull() {
				fvAccPFvBDState.TagTag.ElementsAs(ctx, &tagTagFvAccPFvBDState, false)
			}
			if !fvAccPFvBDPlan.TagTag.IsNull() && !fvAccPFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvAccPFvBD := range tagTagFvAccPFvBDPlan {
					tagTagFvAccPFvBDChildMap := NewAciObject()
					if !tagTagFvAccPFvBD.Key.IsNull() && !tagTagFvAccPFvBD.Key.IsUnknown() {
						tagTagFvAccPFvBDChildMap.Attributes["key"] = tagTagFvAccPFvBD.Key.ValueString()
					}
					if !tagTagFvAccPFvBD.Value.IsNull() && !tagTagFvAccPFvBD.Value.IsUnknown() {
						tagTagFvAccPFvBDChildMap.Attributes["value"] = tagTagFvAccPFvBD.Value.ValueString()
					}
					FvAccPFvBDChildren = append(FvAccPFvBDChildren, map[string]interface{}{"tagTag": tagTagFvAccPFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvAccPFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvAccPFvBD := range tagTagFvAccPFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvAccPFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvAccPFvBDChildMapForDelete := NewAciObject()
						tagTagFvAccPFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvAccPFvBDChildMapForDelete.Attributes["key"] = tagTagFvAccPFvBD.Key.ValueString()
						FvAccPFvBDChildren = append(FvAccPFvBDChildren, map[string]interface{}{"tagTag": tagTagFvAccPFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvAccPFvBDChildren
		} else {
			childMap.Attributes["status"] = "deleted"
		}
		childPayloads = append(childPayloads, map[string]interface{}{"fvAccP": childMap})
	} else {
		FvAccPObject, _ := types.ObjectValueFrom(ctx, FvAccPFvBDType, getEmptyFvAccPFvBDResourceModel())
		data.FvAccP = FvAccPObject
	}

	return childPayloads
}

func getFvBDFvRogueExceptionMacChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRogueExceptionMacFvBDPlan, fvRogueExceptionMacFvBDState []FvRogueExceptionMacFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRogueExceptionMac.IsNull() && !data.FvRogueExceptionMac.IsUnknown() {
		fvRogueExceptionMacIdentifiers := []FvRogueExceptionMacIdentifier{}
		for _, fvRogueExceptionMacFvBD := range fvRogueExceptionMacFvBDPlan {
			FvRogueExceptionMacFvBDChildren := make([]map[string]interface{}, 0)
			childMap := NewAciObject()
			if !fvRogueExceptionMacFvBD.Annotation.IsNull() && !fvRogueExceptionMacFvBD.Annotation.IsUnknown() {
				childMap.Attributes["annotation"] = fvRogueExceptionMacFvBD.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRogueExceptionMacFvBD.Descr.IsNull() && !fvRogueExceptionMacFvBD.Descr.IsUnknown() {
				childMap.Attributes["descr"] = fvRogueExceptionMacFvBD.Descr.ValueString()
			}
			if !fvRogueExceptionMacFvBD.Mac.IsNull() && !fvRogueExceptionMacFvBD.Mac.IsUnknown() {
				childMap.Attributes["mac"] = fvRogueExceptionMacFvBD.Mac.ValueString()
			}
			if !fvRogueExceptionMacFvBD.Name.IsNull() && !fvRogueExceptionMacFvBD.Name.IsUnknown() {
				childMap.Attributes["name"] = fvRogueExceptionMacFvBD.Name.ValueString()
			}
			if !fvRogueExceptionMacFvBD.NameAlias.IsNull() && !fvRogueExceptionMacFvBD.NameAlias.IsUnknown() {
				childMap.Attributes["nameAlias"] = fvRogueExceptionMacFvBD.NameAlias.ValueString()
			}

			var tagAnnotationFvRogueExceptionMacFvBDPlan, tagAnnotationFvRogueExceptionMacFvBDState []TagAnnotationFvRogueExceptionMacFvBDResourceModel
			fvRogueExceptionMacFvBD.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRogueExceptionMacFvBDPlan, false)
			for _, tagAnnotationFvRogueExceptionMacFvBDstate := range fvRogueExceptionMacFvBDState {
				tagAnnotationFvRogueExceptionMacFvBDstate.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRogueExceptionMacFvBDState, false)
			}
			if !fvRogueExceptionMacFvBD.TagAnnotation.IsNull() && !fvRogueExceptionMacFvBD.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRogueExceptionMacFvBD := range tagAnnotationFvRogueExceptionMacFvBDPlan {
					tagAnnotationFvRogueExceptionMacFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRogueExceptionMacFvBD.Key.IsNull() && !tagAnnotationFvRogueExceptionMacFvBD.Key.IsUnknown() {
						tagAnnotationFvRogueExceptionMacFvBDChildMap.Attributes["key"] = tagAnnotationFvRogueExceptionMacFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRogueExceptionMacFvBD.Value.IsNull() && !tagAnnotationFvRogueExceptionMacFvBD.Value.IsUnknown() {
						tagAnnotationFvRogueExceptionMacFvBDChildMap.Attributes["value"] = tagAnnotationFvRogueExceptionMacFvBD.Value.ValueString()
					}
					FvRogueExceptionMacFvBDChildren = append(FvRogueExceptionMacFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRogueExceptionMacFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRogueExceptionMacFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRogueExceptionMacFvBD := range tagAnnotationFvRogueExceptionMacFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRogueExceptionMacFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRogueExceptionMacFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRogueExceptionMacFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRogueExceptionMacFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRogueExceptionMacFvBD.Key.ValueString()
						FvRogueExceptionMacFvBDChildren = append(FvRogueExceptionMacFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRogueExceptionMacFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRogueExceptionMacFvBDPlan, tagTagFvRogueExceptionMacFvBDState []TagTagFvRogueExceptionMacFvBDResourceModel
			fvRogueExceptionMacFvBD.TagTag.ElementsAs(ctx, &tagTagFvRogueExceptionMacFvBDPlan, false)
			for _, tagTagFvRogueExceptionMacFvBDstate := range fvRogueExceptionMacFvBDState {
				tagTagFvRogueExceptionMacFvBDstate.TagTag.ElementsAs(ctx, &tagTagFvRogueExceptionMacFvBDState, false)
			}
			if !fvRogueExceptionMacFvBD.TagTag.IsNull() && !fvRogueExceptionMacFvBD.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRogueExceptionMacFvBD := range tagTagFvRogueExceptionMacFvBDPlan {
					tagTagFvRogueExceptionMacFvBDChildMap := NewAciObject()
					if !tagTagFvRogueExceptionMacFvBD.Key.IsNull() && !tagTagFvRogueExceptionMacFvBD.Key.IsUnknown() {
						tagTagFvRogueExceptionMacFvBDChildMap.Attributes["key"] = tagTagFvRogueExceptionMacFvBD.Key.ValueString()
					}
					if !tagTagFvRogueExceptionMacFvBD.Value.IsNull() && !tagTagFvRogueExceptionMacFvBD.Value.IsUnknown() {
						tagTagFvRogueExceptionMacFvBDChildMap.Attributes["value"] = tagTagFvRogueExceptionMacFvBD.Value.ValueString()
					}
					FvRogueExceptionMacFvBDChildren = append(FvRogueExceptionMacFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRogueExceptionMacFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRogueExceptionMacFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRogueExceptionMacFvBD := range tagTagFvRogueExceptionMacFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRogueExceptionMacFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRogueExceptionMacFvBDChildMapForDelete := NewAciObject()
						tagTagFvRogueExceptionMacFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRogueExceptionMacFvBDChildMapForDelete.Attributes["key"] = tagTagFvRogueExceptionMacFvBD.Key.ValueString()
						FvRogueExceptionMacFvBDChildren = append(FvRogueExceptionMacFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRogueExceptionMacFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRogueExceptionMacFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRogueExceptionMac": childMap})
			fvRogueExceptionMacIdentifier := FvRogueExceptionMacIdentifier{}
			fvRogueExceptionMacIdentifier.Mac = fvRogueExceptionMacFvBD.Mac
			fvRogueExceptionMacIdentifiers = append(fvRogueExceptionMacIdentifiers, fvRogueExceptionMacIdentifier)
		}
		for _, fvRogueExceptionMac := range fvRogueExceptionMacFvBDState {
			delete := true
			for _, fvRogueExceptionMacIdentifier := range fvRogueExceptionMacIdentifiers {
				if fvRogueExceptionMacIdentifier.Mac == fvRogueExceptionMac.Mac {
					delete = false
					break
				}
			}
			if delete {
				fvRogueExceptionMacChildMapForDelete := NewAciObject()
				fvRogueExceptionMacChildMapForDelete.Attributes["status"] = "deleted"
				fvRogueExceptionMacChildMapForDelete.Attributes["mac"] = fvRogueExceptionMac.Mac.ValueString()
				childPayloads = append(childPayloads, map[string]interface{}{"fvRogueExceptionMac": fvRogueExceptionMacChildMapForDelete})
			}
		}
	} else {
		data.FvRogueExceptionMac = types.SetNull(data.FvRogueExceptionMac.ElementType(ctx))
	}

	return childPayloads
}

func getFvBDFvRsABDPolMonPolChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsABDPolMonPolFvBDPlan, fvRsABDPolMonPolFvBDState FvRsABDPolMonPolFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsABDPolMonPol.IsNull() && !data.FvRsABDPolMonPol.IsUnknown() {
		FvRsABDPolMonPolFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsABDPolMonPol.Attributes()) {
			if !fvRsABDPolMonPolFvBDPlan.Annotation.IsUnknown() && !fvRsABDPolMonPolFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsABDPolMonPolFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsABDPolMonPolFvBDPlan.TnMonEPGPolName.IsUnknown() && !fvRsABDPolMonPolFvBDPlan.TnMonEPGPolName.IsNull() {
				childMap.Attributes["tnMonEPGPolName"] = fvRsABDPolMonPolFvBDPlan.TnMonEPGPolName.ValueString()
			}

			var tagAnnotationFvRsABDPolMonPolFvBDPlan, tagAnnotationFvRsABDPolMonPolFvBDState []TagAnnotationFvRsABDPolMonPolFvBDResourceModel
			fvRsABDPolMonPolFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsABDPolMonPolFvBDPlan, false)
			if !fvRsABDPolMonPolFvBDState.TagAnnotation.IsNull() {
				fvRsABDPolMonPolFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsABDPolMonPolFvBDState, false)
			}
			if !fvRsABDPolMonPolFvBDPlan.TagAnnotation.IsNull() && !fvRsABDPolMonPolFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsABDPolMonPolFvBD := range tagAnnotationFvRsABDPolMonPolFvBDPlan {
					tagAnnotationFvRsABDPolMonPolFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsABDPolMonPolFvBD.Key.IsNull() && !tagAnnotationFvRsABDPolMonPolFvBD.Key.IsUnknown() {
						tagAnnotationFvRsABDPolMonPolFvBDChildMap.Attributes["key"] = tagAnnotationFvRsABDPolMonPolFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsABDPolMonPolFvBD.Value.IsNull() && !tagAnnotationFvRsABDPolMonPolFvBD.Value.IsUnknown() {
						tagAnnotationFvRsABDPolMonPolFvBDChildMap.Attributes["value"] = tagAnnotationFvRsABDPolMonPolFvBD.Value.ValueString()
					}
					FvRsABDPolMonPolFvBDChildren = append(FvRsABDPolMonPolFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsABDPolMonPolFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsABDPolMonPolFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsABDPolMonPolFvBD := range tagAnnotationFvRsABDPolMonPolFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsABDPolMonPolFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsABDPolMonPolFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsABDPolMonPolFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsABDPolMonPolFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsABDPolMonPolFvBD.Key.ValueString()
						FvRsABDPolMonPolFvBDChildren = append(FvRsABDPolMonPolFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsABDPolMonPolFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsABDPolMonPolFvBDPlan, tagTagFvRsABDPolMonPolFvBDState []TagTagFvRsABDPolMonPolFvBDResourceModel
			fvRsABDPolMonPolFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsABDPolMonPolFvBDPlan, false)
			if !fvRsABDPolMonPolFvBDState.TagTag.IsNull() {
				fvRsABDPolMonPolFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsABDPolMonPolFvBDState, false)
			}
			if !fvRsABDPolMonPolFvBDPlan.TagTag.IsNull() && !fvRsABDPolMonPolFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsABDPolMonPolFvBD := range tagTagFvRsABDPolMonPolFvBDPlan {
					tagTagFvRsABDPolMonPolFvBDChildMap := NewAciObject()
					if !tagTagFvRsABDPolMonPolFvBD.Key.IsNull() && !tagTagFvRsABDPolMonPolFvBD.Key.IsUnknown() {
						tagTagFvRsABDPolMonPolFvBDChildMap.Attributes["key"] = tagTagFvRsABDPolMonPolFvBD.Key.ValueString()
					}
					if !tagTagFvRsABDPolMonPolFvBD.Value.IsNull() && !tagTagFvRsABDPolMonPolFvBD.Value.IsUnknown() {
						tagTagFvRsABDPolMonPolFvBDChildMap.Attributes["value"] = tagTagFvRsABDPolMonPolFvBD.Value.ValueString()
					}
					FvRsABDPolMonPolFvBDChildren = append(FvRsABDPolMonPolFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsABDPolMonPolFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsABDPolMonPolFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsABDPolMonPolFvBD := range tagTagFvRsABDPolMonPolFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsABDPolMonPolFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsABDPolMonPolFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsABDPolMonPolFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsABDPolMonPolFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsABDPolMonPolFvBD.Key.ValueString()
						FvRsABDPolMonPolFvBDChildren = append(FvRsABDPolMonPolFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsABDPolMonPolFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsABDPolMonPolFvBDChildren
		} else {
			childMap.Attributes["status"] = "deleted"
		}
		childPayloads = append(childPayloads, map[string]interface{}{"fvRsABDPolMonPol": childMap})
	} else {
		FvRsABDPolMonPolObject, _ := types.ObjectValueFrom(ctx, FvRsABDPolMonPolFvBDType, getEmptyFvRsABDPolMonPolFvBDResourceModel())
		data.FvRsABDPolMonPol = FvRsABDPolMonPolObject
	}

	return childPayloads
}

func getFvBDFvRsBDToFhsChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBDToFhsFvBDPlan, fvRsBDToFhsFvBDState FvRsBDToFhsFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBDToFhs.IsNull() && !data.FvRsBDToFhs.IsUnknown() {
		FvRsBDToFhsFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsBDToFhs.Attributes()) {
			if !fvRsBDToFhsFvBDPlan.Annotation.IsUnknown() && !fvRsBDToFhsFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsBDToFhsFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBDToFhsFvBDPlan.TnFhsBDPolName.IsUnknown() && !fvRsBDToFhsFvBDPlan.TnFhsBDPolName.IsNull() {
				childMap.Attributes["tnFhsBDPolName"] = fvRsBDToFhsFvBDPlan.TnFhsBDPolName.ValueString()
			}

			var tagAnnotationFvRsBDToFhsFvBDPlan, tagAnnotationFvRsBDToFhsFvBDState []TagAnnotationFvRsBDToFhsFvBDResourceModel
			fvRsBDToFhsFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToFhsFvBDPlan, false)
			if !fvRsBDToFhsFvBDState.TagAnnotation.IsNull() {
				fvRsBDToFhsFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToFhsFvBDState, false)
			}
			if !fvRsBDToFhsFvBDPlan.TagAnnotation.IsNull() && !fvRsBDToFhsFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBDToFhsFvBD := range tagAnnotationFvRsBDToFhsFvBDPlan {
					tagAnnotationFvRsBDToFhsFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBDToFhsFvBD.Key.IsNull() && !tagAnnotationFvRsBDToFhsFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBDToFhsFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBDToFhsFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBDToFhsFvBD.Value.IsNull() && !tagAnnotationFvRsBDToFhsFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBDToFhsFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBDToFhsFvBD.Value.ValueString()
					}
					FvRsBDToFhsFvBDChildren = append(FvRsBDToFhsFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToFhsFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBDToFhsFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBDToFhsFvBD := range tagAnnotationFvRsBDToFhsFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBDToFhsFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBDToFhsFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBDToFhsFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBDToFhsFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBDToFhsFvBD.Key.ValueString()
						FvRsBDToFhsFvBDChildren = append(FvRsBDToFhsFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToFhsFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBDToFhsFvBDPlan, tagTagFvRsBDToFhsFvBDState []TagTagFvRsBDToFhsFvBDResourceModel
			fvRsBDToFhsFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsBDToFhsFvBDPlan, false)
			if !fvRsBDToFhsFvBDState.TagTag.IsNull() {
				fvRsBDToFhsFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsBDToFhsFvBDState, false)
			}
			if !fvRsBDToFhsFvBDPlan.TagTag.IsNull() && !fvRsBDToFhsFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBDToFhsFvBD := range tagTagFvRsBDToFhsFvBDPlan {
					tagTagFvRsBDToFhsFvBDChildMap := NewAciObject()
					if !tagTagFvRsBDToFhsFvBD.Key.IsNull() && !tagTagFvRsBDToFhsFvBD.Key.IsUnknown() {
						tagTagFvRsBDToFhsFvBDChildMap.Attributes["key"] = tagTagFvRsBDToFhsFvBD.Key.ValueString()
					}
					if !tagTagFvRsBDToFhsFvBD.Value.IsNull() && !tagTagFvRsBDToFhsFvBD.Value.IsUnknown() {
						tagTagFvRsBDToFhsFvBDChildMap.Attributes["value"] = tagTagFvRsBDToFhsFvBD.Value.ValueString()
					}
					FvRsBDToFhsFvBDChildren = append(FvRsBDToFhsFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToFhsFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBDToFhsFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBDToFhsFvBD := range tagTagFvRsBDToFhsFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBDToFhsFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBDToFhsFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBDToFhsFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBDToFhsFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBDToFhsFvBD.Key.ValueString()
						FvRsBDToFhsFvBDChildren = append(FvRsBDToFhsFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToFhsFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBDToFhsFvBDChildren
		} else {
			childMap.Attributes["status"] = "deleted"
		}
		childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToFhs": childMap})
	} else {
		FvRsBDToFhsObject, _ := types.ObjectValueFrom(ctx, FvRsBDToFhsFvBDType, getEmptyFvRsBDToFhsFvBDResourceModel())
		data.FvRsBDToFhs = FvRsBDToFhsObject
	}

	return childPayloads
}

func getFvBDFvRsBDToNdPChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBDToNdPFvBDPlan, fvRsBDToNdPFvBDState FvRsBDToNdPFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBDToNdP.IsNull() && !data.FvRsBDToNdP.IsUnknown() {
		FvRsBDToNdPFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsBDToNdP.Attributes()) {
			if !fvRsBDToNdPFvBDPlan.Annotation.IsUnknown() && !fvRsBDToNdPFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsBDToNdPFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBDToNdPFvBDPlan.TnNdIfPolName.IsUnknown() && !fvRsBDToNdPFvBDPlan.TnNdIfPolName.IsNull() {
				childMap.Attributes["tnNdIfPolName"] = fvRsBDToNdPFvBDPlan.TnNdIfPolName.ValueString()
			}

			var tagAnnotationFvRsBDToNdPFvBDPlan, tagAnnotationFvRsBDToNdPFvBDState []TagAnnotationFvRsBDToNdPFvBDResourceModel
			fvRsBDToNdPFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToNdPFvBDPlan, false)
			if !fvRsBDToNdPFvBDState.TagAnnotation.IsNull() {
				fvRsBDToNdPFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToNdPFvBDState, false)
			}
			if !fvRsBDToNdPFvBDPlan.TagAnnotation.IsNull() && !fvRsBDToNdPFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBDToNdPFvBD := range tagAnnotationFvRsBDToNdPFvBDPlan {
					tagAnnotationFvRsBDToNdPFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBDToNdPFvBD.Key.IsNull() && !tagAnnotationFvRsBDToNdPFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBDToNdPFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBDToNdPFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBDToNdPFvBD.Value.IsNull() && !tagAnnotationFvRsBDToNdPFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBDToNdPFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBDToNdPFvBD.Value.ValueString()
					}
					FvRsBDToNdPFvBDChildren = append(FvRsBDToNdPFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToNdPFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBDToNdPFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBDToNdPFvBD := range tagAnnotationFvRsBDToNdPFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBDToNdPFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBDToNdPFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBDToNdPFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBDToNdPFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBDToNdPFvBD.Key.ValueString()
						FvRsBDToNdPFvBDChildren = append(FvRsBDToNdPFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToNdPFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBDToNdPFvBDPlan, tagTagFvRsBDToNdPFvBDState []TagTagFvRsBDToNdPFvBDResourceModel
			fvRsBDToNdPFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsBDToNdPFvBDPlan, false)
			if !fvRsBDToNdPFvBDState.TagTag.IsNull() {
				fvRsBDToNdPFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsBDToNdPFvBDState, false)
			}
			if !fvRsBDToNdPFvBDPlan.TagTag.IsNull() && !fvRsBDToNdPFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBDToNdPFvBD := range tagTagFvRsBDToNdPFvBDPlan {
					tagTagFvRsBDToNdPFvBDChildMap := NewAciObject()
					if !tagTagFvRsBDToNdPFvBD.Key.IsNull() && !tagTagFvRsBDToNdPFvBD.Key.IsUnknown() {
						tagTagFvRsBDToNdPFvBDChildMap.Attributes["key"] = tagTagFvRsBDToNdPFvBD.Key.ValueString()
					}
					if !tagTagFvRsBDToNdPFvBD.Value.IsNull() && !tagTagFvRsBDToNdPFvBD.Value.IsUnknown() {
						tagTagFvRsBDToNdPFvBDChildMap.Attributes["value"] = tagTagFvRsBDToNdPFvBD.Value.ValueString()
					}
					FvRsBDToNdPFvBDChildren = append(FvRsBDToNdPFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToNdPFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBDToNdPFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBDToNdPFvBD := range tagTagFvRsBDToNdPFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBDToNdPFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBDToNdPFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBDToNdPFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBDToNdPFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBDToNdPFvBD.Key.ValueString()
						FvRsBDToNdPFvBDChildren = append(FvRsBDToNdPFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToNdPFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBDToNdPFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToNdP": childMap})
		}
	} else {
		FvRsBDToNdPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToNdPFvBDType, getEmptyFvRsBDToNdPFvBDResourceModel())
		data.FvRsBDToNdP = FvRsBDToNdPObject
	}

	return childPayloads
}

func getFvBDFvRsBDToNetflowMonitorPolChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBDToNetflowMonitorPolFvBDPlan, fvRsBDToNetflowMonitorPolFvBDState []FvRsBDToNetflowMonitorPolFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBDToNetflowMonitorPol.IsNull() && !data.FvRsBDToNetflowMonitorPol.IsUnknown() {
		fvRsBDToNetflowMonitorPolIdentifiers := []FvRsBDToNetflowMonitorPolIdentifier{}
		for _, fvRsBDToNetflowMonitorPolFvBD := range fvRsBDToNetflowMonitorPolFvBDPlan {
			FvRsBDToNetflowMonitorPolFvBDChildren := make([]map[string]interface{}, 0)
			childMap := NewAciObject()
			if !fvRsBDToNetflowMonitorPolFvBD.Annotation.IsNull() && !fvRsBDToNetflowMonitorPolFvBD.Annotation.IsUnknown() {
				childMap.Attributes["annotation"] = fvRsBDToNetflowMonitorPolFvBD.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBDToNetflowMonitorPolFvBD.FltType.IsNull() && !fvRsBDToNetflowMonitorPolFvBD.FltType.IsUnknown() {
				childMap.Attributes["fltType"] = fvRsBDToNetflowMonitorPolFvBD.FltType.ValueString()
			}
			if !fvRsBDToNetflowMonitorPolFvBD.TnNetflowMonitorPolName.IsNull() && !fvRsBDToNetflowMonitorPolFvBD.TnNetflowMonitorPolName.IsUnknown() {
				childMap.Attributes["tnNetflowMonitorPolName"] = fvRsBDToNetflowMonitorPolFvBD.TnNetflowMonitorPolName.ValueString()
			}

			var tagAnnotationFvRsBDToNetflowMonitorPolFvBDPlan, tagAnnotationFvRsBDToNetflowMonitorPolFvBDState []TagAnnotationFvRsBDToNetflowMonitorPolFvBDResourceModel
			fvRsBDToNetflowMonitorPolFvBD.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToNetflowMonitorPolFvBDPlan, false)
			for _, tagAnnotationFvRsBDToNetflowMonitorPolFvBDstate := range fvRsBDToNetflowMonitorPolFvBDState {
				tagAnnotationFvRsBDToNetflowMonitorPolFvBDstate.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToNetflowMonitorPolFvBDState, false)
			}
			if !fvRsBDToNetflowMonitorPolFvBD.TagAnnotation.IsNull() && !fvRsBDToNetflowMonitorPolFvBD.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBDToNetflowMonitorPolFvBD := range tagAnnotationFvRsBDToNetflowMonitorPolFvBDPlan {
					tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key.IsNull() && !tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Value.IsNull() && !tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Value.ValueString()
					}
					FvRsBDToNetflowMonitorPolFvBDChildren = append(FvRsBDToNetflowMonitorPolFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBDToNetflowMonitorPolFvBD := range tagAnnotationFvRsBDToNetflowMonitorPolFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBDToNetflowMonitorPolFvBD.Key.ValueString()
						FvRsBDToNetflowMonitorPolFvBDChildren = append(FvRsBDToNetflowMonitorPolFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToNetflowMonitorPolFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBDToNetflowMonitorPolFvBDPlan, tagTagFvRsBDToNetflowMonitorPolFvBDState []TagTagFvRsBDToNetflowMonitorPolFvBDResourceModel
			fvRsBDToNetflowMonitorPolFvBD.TagTag.ElementsAs(ctx, &tagTagFvRsBDToNetflowMonitorPolFvBDPlan, false)
			for _, tagTagFvRsBDToNetflowMonitorPolFvBDstate := range fvRsBDToNetflowMonitorPolFvBDState {
				tagTagFvRsBDToNetflowMonitorPolFvBDstate.TagTag.ElementsAs(ctx, &tagTagFvRsBDToNetflowMonitorPolFvBDState, false)
			}
			if !fvRsBDToNetflowMonitorPolFvBD.TagTag.IsNull() && !fvRsBDToNetflowMonitorPolFvBD.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBDToNetflowMonitorPolFvBD := range tagTagFvRsBDToNetflowMonitorPolFvBDPlan {
					tagTagFvRsBDToNetflowMonitorPolFvBDChildMap := NewAciObject()
					if !tagTagFvRsBDToNetflowMonitorPolFvBD.Key.IsNull() && !tagTagFvRsBDToNetflowMonitorPolFvBD.Key.IsUnknown() {
						tagTagFvRsBDToNetflowMonitorPolFvBDChildMap.Attributes["key"] = tagTagFvRsBDToNetflowMonitorPolFvBD.Key.ValueString()
					}
					if !tagTagFvRsBDToNetflowMonitorPolFvBD.Value.IsNull() && !tagTagFvRsBDToNetflowMonitorPolFvBD.Value.IsUnknown() {
						tagTagFvRsBDToNetflowMonitorPolFvBDChildMap.Attributes["value"] = tagTagFvRsBDToNetflowMonitorPolFvBD.Value.ValueString()
					}
					FvRsBDToNetflowMonitorPolFvBDChildren = append(FvRsBDToNetflowMonitorPolFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToNetflowMonitorPolFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBDToNetflowMonitorPolFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBDToNetflowMonitorPolFvBD := range tagTagFvRsBDToNetflowMonitorPolFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBDToNetflowMonitorPolFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBDToNetflowMonitorPolFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBDToNetflowMonitorPolFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBDToNetflowMonitorPolFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBDToNetflowMonitorPolFvBD.Key.ValueString()
						FvRsBDToNetflowMonitorPolFvBDChildren = append(FvRsBDToNetflowMonitorPolFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToNetflowMonitorPolFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBDToNetflowMonitorPolFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToNetflowMonitorPol": childMap})
			fvRsBDToNetflowMonitorPolIdentifier := FvRsBDToNetflowMonitorPolIdentifier{}
			fvRsBDToNetflowMonitorPolIdentifier.FltType = fvRsBDToNetflowMonitorPolFvBD.FltType
			fvRsBDToNetflowMonitorPolIdentifier.TnNetflowMonitorPolName = fvRsBDToNetflowMonitorPolFvBD.TnNetflowMonitorPolName
			fvRsBDToNetflowMonitorPolIdentifiers = append(fvRsBDToNetflowMonitorPolIdentifiers, fvRsBDToNetflowMonitorPolIdentifier)
		}
		for _, fvRsBDToNetflowMonitorPol := range fvRsBDToNetflowMonitorPolFvBDState {
			delete := true
			for _, fvRsBDToNetflowMonitorPolIdentifier := range fvRsBDToNetflowMonitorPolIdentifiers {
				if fvRsBDToNetflowMonitorPolIdentifier.FltType == fvRsBDToNetflowMonitorPol.FltType &&
					fvRsBDToNetflowMonitorPolIdentifier.TnNetflowMonitorPolName == fvRsBDToNetflowMonitorPol.TnNetflowMonitorPolName {
					delete = false
					break
				}
			}
			if delete {
				fvRsBDToNetflowMonitorPolChildMapForDelete := NewAciObject()
				fvRsBDToNetflowMonitorPolChildMapForDelete.Attributes["status"] = "deleted"
				fvRsBDToNetflowMonitorPolChildMapForDelete.Attributes["fltType"] = fvRsBDToNetflowMonitorPol.FltType.ValueString()
				fvRsBDToNetflowMonitorPolChildMapForDelete.Attributes["tnNetflowMonitorPolName"] = fvRsBDToNetflowMonitorPol.TnNetflowMonitorPolName.ValueString()
				childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToNetflowMonitorPol": fvRsBDToNetflowMonitorPolChildMapForDelete})
			}
		}
	} else {
		data.FvRsBDToNetflowMonitorPol = types.SetNull(data.FvRsBDToNetflowMonitorPol.ElementType(ctx))
	}

	return childPayloads
}

func getFvBDFvRsBDToOutChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBDToOutFvBDPlan, fvRsBDToOutFvBDState []FvRsBDToOutFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBDToOut.IsNull() && !data.FvRsBDToOut.IsUnknown() {
		fvRsBDToOutIdentifiers := []FvRsBDToOutIdentifier{}
		for _, fvRsBDToOutFvBD := range fvRsBDToOutFvBDPlan {
			FvRsBDToOutFvBDChildren := make([]map[string]interface{}, 0)
			childMap := NewAciObject()
			if !fvRsBDToOutFvBD.Annotation.IsNull() && !fvRsBDToOutFvBD.Annotation.IsUnknown() {
				childMap.Attributes["annotation"] = fvRsBDToOutFvBD.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBDToOutFvBD.TnL3extOutName.IsNull() && !fvRsBDToOutFvBD.TnL3extOutName.IsUnknown() {
				childMap.Attributes["tnL3extOutName"] = fvRsBDToOutFvBD.TnL3extOutName.ValueString()
			}

			var tagAnnotationFvRsBDToOutFvBDPlan, tagAnnotationFvRsBDToOutFvBDState []TagAnnotationFvRsBDToOutFvBDResourceModel
			fvRsBDToOutFvBD.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToOutFvBDPlan, false)
			for _, tagAnnotationFvRsBDToOutFvBDstate := range fvRsBDToOutFvBDState {
				tagAnnotationFvRsBDToOutFvBDstate.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToOutFvBDState, false)
			}
			if !fvRsBDToOutFvBD.TagAnnotation.IsNull() && !fvRsBDToOutFvBD.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBDToOutFvBD := range tagAnnotationFvRsBDToOutFvBDPlan {
					tagAnnotationFvRsBDToOutFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBDToOutFvBD.Key.IsNull() && !tagAnnotationFvRsBDToOutFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBDToOutFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBDToOutFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBDToOutFvBD.Value.IsNull() && !tagAnnotationFvRsBDToOutFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBDToOutFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBDToOutFvBD.Value.ValueString()
					}
					FvRsBDToOutFvBDChildren = append(FvRsBDToOutFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToOutFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBDToOutFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBDToOutFvBD := range tagAnnotationFvRsBDToOutFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBDToOutFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBDToOutFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBDToOutFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBDToOutFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBDToOutFvBD.Key.ValueString()
						FvRsBDToOutFvBDChildren = append(FvRsBDToOutFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToOutFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBDToOutFvBDPlan, tagTagFvRsBDToOutFvBDState []TagTagFvRsBDToOutFvBDResourceModel
			fvRsBDToOutFvBD.TagTag.ElementsAs(ctx, &tagTagFvRsBDToOutFvBDPlan, false)
			for _, tagTagFvRsBDToOutFvBDstate := range fvRsBDToOutFvBDState {
				tagTagFvRsBDToOutFvBDstate.TagTag.ElementsAs(ctx, &tagTagFvRsBDToOutFvBDState, false)
			}
			if !fvRsBDToOutFvBD.TagTag.IsNull() && !fvRsBDToOutFvBD.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBDToOutFvBD := range tagTagFvRsBDToOutFvBDPlan {
					tagTagFvRsBDToOutFvBDChildMap := NewAciObject()
					if !tagTagFvRsBDToOutFvBD.Key.IsNull() && !tagTagFvRsBDToOutFvBD.Key.IsUnknown() {
						tagTagFvRsBDToOutFvBDChildMap.Attributes["key"] = tagTagFvRsBDToOutFvBD.Key.ValueString()
					}
					if !tagTagFvRsBDToOutFvBD.Value.IsNull() && !tagTagFvRsBDToOutFvBD.Value.IsUnknown() {
						tagTagFvRsBDToOutFvBDChildMap.Attributes["value"] = tagTagFvRsBDToOutFvBD.Value.ValueString()
					}
					FvRsBDToOutFvBDChildren = append(FvRsBDToOutFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToOutFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBDToOutFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBDToOutFvBD := range tagTagFvRsBDToOutFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBDToOutFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBDToOutFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBDToOutFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBDToOutFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBDToOutFvBD.Key.ValueString()
						FvRsBDToOutFvBDChildren = append(FvRsBDToOutFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToOutFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBDToOutFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToOut": childMap})
			fvRsBDToOutIdentifier := FvRsBDToOutIdentifier{}
			fvRsBDToOutIdentifier.TnL3extOutName = fvRsBDToOutFvBD.TnL3extOutName
			fvRsBDToOutIdentifiers = append(fvRsBDToOutIdentifiers, fvRsBDToOutIdentifier)
		}
		for _, fvRsBDToOut := range fvRsBDToOutFvBDState {
			delete := true
			for _, fvRsBDToOutIdentifier := range fvRsBDToOutIdentifiers {
				if fvRsBDToOutIdentifier.TnL3extOutName == fvRsBDToOut.TnL3extOutName {
					delete = false
					break
				}
			}
			if delete {
				fvRsBDToOutChildMapForDelete := NewAciObject()
				fvRsBDToOutChildMapForDelete.Attributes["status"] = "deleted"
				fvRsBDToOutChildMapForDelete.Attributes["tnL3extOutName"] = fvRsBDToOut.TnL3extOutName.ValueString()
				childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToOut": fvRsBDToOutChildMapForDelete})
			}
		}
	} else {
		data.FvRsBDToOut = types.SetNull(data.FvRsBDToOut.ElementType(ctx))
	}

	return childPayloads
}

func getFvBDFvRsBDToProfileChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBDToProfileFvBDPlan, fvRsBDToProfileFvBDState FvRsBDToProfileFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBDToProfile.IsNull() && !data.FvRsBDToProfile.IsUnknown() {
		FvRsBDToProfileFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsBDToProfile.Attributes()) {
			if !fvRsBDToProfileFvBDPlan.Annotation.IsUnknown() && !fvRsBDToProfileFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsBDToProfileFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBDToProfileFvBDPlan.TnL3extOutName.IsUnknown() && !fvRsBDToProfileFvBDPlan.TnL3extOutName.IsNull() {
				childMap.Attributes["tnL3extOutName"] = fvRsBDToProfileFvBDPlan.TnL3extOutName.ValueString()
			}
			if !fvRsBDToProfileFvBDPlan.TnRtctrlProfileName.IsUnknown() && !fvRsBDToProfileFvBDPlan.TnRtctrlProfileName.IsNull() {
				childMap.Attributes["tnRtctrlProfileName"] = fvRsBDToProfileFvBDPlan.TnRtctrlProfileName.ValueString()
			}

			var tagAnnotationFvRsBDToProfileFvBDPlan, tagAnnotationFvRsBDToProfileFvBDState []TagAnnotationFvRsBDToProfileFvBDResourceModel
			fvRsBDToProfileFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToProfileFvBDPlan, false)
			if !fvRsBDToProfileFvBDState.TagAnnotation.IsNull() {
				fvRsBDToProfileFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToProfileFvBDState, false)
			}
			if !fvRsBDToProfileFvBDPlan.TagAnnotation.IsNull() && !fvRsBDToProfileFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBDToProfileFvBD := range tagAnnotationFvRsBDToProfileFvBDPlan {
					tagAnnotationFvRsBDToProfileFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBDToProfileFvBD.Key.IsNull() && !tagAnnotationFvRsBDToProfileFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBDToProfileFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBDToProfileFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBDToProfileFvBD.Value.IsNull() && !tagAnnotationFvRsBDToProfileFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBDToProfileFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBDToProfileFvBD.Value.ValueString()
					}
					FvRsBDToProfileFvBDChildren = append(FvRsBDToProfileFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToProfileFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBDToProfileFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBDToProfileFvBD := range tagAnnotationFvRsBDToProfileFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBDToProfileFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBDToProfileFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBDToProfileFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBDToProfileFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBDToProfileFvBD.Key.ValueString()
						FvRsBDToProfileFvBDChildren = append(FvRsBDToProfileFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToProfileFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBDToProfileFvBDPlan, tagTagFvRsBDToProfileFvBDState []TagTagFvRsBDToProfileFvBDResourceModel
			fvRsBDToProfileFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsBDToProfileFvBDPlan, false)
			if !fvRsBDToProfileFvBDState.TagTag.IsNull() {
				fvRsBDToProfileFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsBDToProfileFvBDState, false)
			}
			if !fvRsBDToProfileFvBDPlan.TagTag.IsNull() && !fvRsBDToProfileFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBDToProfileFvBD := range tagTagFvRsBDToProfileFvBDPlan {
					tagTagFvRsBDToProfileFvBDChildMap := NewAciObject()
					if !tagTagFvRsBDToProfileFvBD.Key.IsNull() && !tagTagFvRsBDToProfileFvBD.Key.IsUnknown() {
						tagTagFvRsBDToProfileFvBDChildMap.Attributes["key"] = tagTagFvRsBDToProfileFvBD.Key.ValueString()
					}
					if !tagTagFvRsBDToProfileFvBD.Value.IsNull() && !tagTagFvRsBDToProfileFvBD.Value.IsUnknown() {
						tagTagFvRsBDToProfileFvBDChildMap.Attributes["value"] = tagTagFvRsBDToProfileFvBD.Value.ValueString()
					}
					FvRsBDToProfileFvBDChildren = append(FvRsBDToProfileFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToProfileFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBDToProfileFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBDToProfileFvBD := range tagTagFvRsBDToProfileFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBDToProfileFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBDToProfileFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBDToProfileFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBDToProfileFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBDToProfileFvBD.Key.ValueString()
						FvRsBDToProfileFvBDChildren = append(FvRsBDToProfileFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToProfileFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBDToProfileFvBDChildren
		} else {
			childMap.Attributes["status"] = "deleted"
		}
		childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToProfile": childMap})
	} else {
		FvRsBDToProfileObject, _ := types.ObjectValueFrom(ctx, FvRsBDToProfileFvBDType, getEmptyFvRsBDToProfileFvBDResourceModel())
		data.FvRsBDToProfile = FvRsBDToProfileObject
	}

	return childPayloads
}

func getFvBDFvRsBDToRelayPChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBDToRelayPFvBDPlan, fvRsBDToRelayPFvBDState FvRsBDToRelayPFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBDToRelayP.IsNull() && !data.FvRsBDToRelayP.IsUnknown() {
		FvRsBDToRelayPFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsBDToRelayP.Attributes()) {
			if !fvRsBDToRelayPFvBDPlan.Annotation.IsUnknown() && !fvRsBDToRelayPFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsBDToRelayPFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBDToRelayPFvBDPlan.TnDhcpRelayPName.IsUnknown() && !fvRsBDToRelayPFvBDPlan.TnDhcpRelayPName.IsNull() {
				childMap.Attributes["tnDhcpRelayPName"] = fvRsBDToRelayPFvBDPlan.TnDhcpRelayPName.ValueString()
			}

			var tagAnnotationFvRsBDToRelayPFvBDPlan, tagAnnotationFvRsBDToRelayPFvBDState []TagAnnotationFvRsBDToRelayPFvBDResourceModel
			fvRsBDToRelayPFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToRelayPFvBDPlan, false)
			if !fvRsBDToRelayPFvBDState.TagAnnotation.IsNull() {
				fvRsBDToRelayPFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBDToRelayPFvBDState, false)
			}
			if !fvRsBDToRelayPFvBDPlan.TagAnnotation.IsNull() && !fvRsBDToRelayPFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBDToRelayPFvBD := range tagAnnotationFvRsBDToRelayPFvBDPlan {
					tagAnnotationFvRsBDToRelayPFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBDToRelayPFvBD.Key.IsNull() && !tagAnnotationFvRsBDToRelayPFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBDToRelayPFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBDToRelayPFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBDToRelayPFvBD.Value.IsNull() && !tagAnnotationFvRsBDToRelayPFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBDToRelayPFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBDToRelayPFvBD.Value.ValueString()
					}
					FvRsBDToRelayPFvBDChildren = append(FvRsBDToRelayPFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToRelayPFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBDToRelayPFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBDToRelayPFvBD := range tagAnnotationFvRsBDToRelayPFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBDToRelayPFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBDToRelayPFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBDToRelayPFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBDToRelayPFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBDToRelayPFvBD.Key.ValueString()
						FvRsBDToRelayPFvBDChildren = append(FvRsBDToRelayPFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBDToRelayPFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBDToRelayPFvBDPlan, tagTagFvRsBDToRelayPFvBDState []TagTagFvRsBDToRelayPFvBDResourceModel
			fvRsBDToRelayPFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsBDToRelayPFvBDPlan, false)
			if !fvRsBDToRelayPFvBDState.TagTag.IsNull() {
				fvRsBDToRelayPFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsBDToRelayPFvBDState, false)
			}
			if !fvRsBDToRelayPFvBDPlan.TagTag.IsNull() && !fvRsBDToRelayPFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBDToRelayPFvBD := range tagTagFvRsBDToRelayPFvBDPlan {
					tagTagFvRsBDToRelayPFvBDChildMap := NewAciObject()
					if !tagTagFvRsBDToRelayPFvBD.Key.IsNull() && !tagTagFvRsBDToRelayPFvBD.Key.IsUnknown() {
						tagTagFvRsBDToRelayPFvBDChildMap.Attributes["key"] = tagTagFvRsBDToRelayPFvBD.Key.ValueString()
					}
					if !tagTagFvRsBDToRelayPFvBD.Value.IsNull() && !tagTagFvRsBDToRelayPFvBD.Value.IsUnknown() {
						tagTagFvRsBDToRelayPFvBDChildMap.Attributes["value"] = tagTagFvRsBDToRelayPFvBD.Value.ValueString()
					}
					FvRsBDToRelayPFvBDChildren = append(FvRsBDToRelayPFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToRelayPFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBDToRelayPFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBDToRelayPFvBD := range tagTagFvRsBDToRelayPFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBDToRelayPFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBDToRelayPFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBDToRelayPFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBDToRelayPFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBDToRelayPFvBD.Key.ValueString()
						FvRsBDToRelayPFvBDChildren = append(FvRsBDToRelayPFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBDToRelayPFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBDToRelayPFvBDChildren
		} else {
			childMap.Attributes["status"] = "deleted"
		}
		childPayloads = append(childPayloads, map[string]interface{}{"fvRsBDToRelayP": childMap})
	} else {
		FvRsBDToRelayPObject, _ := types.ObjectValueFrom(ctx, FvRsBDToRelayPFvBDType, getEmptyFvRsBDToRelayPFvBDResourceModel())
		data.FvRsBDToRelayP = FvRsBDToRelayPObject
	}

	return childPayloads
}

func getFvBDFvRsBdToEpRetChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsBdToEpRetFvBDPlan, fvRsBdToEpRetFvBDState FvRsBdToEpRetFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsBdToEpRet.IsNull() && !data.FvRsBdToEpRet.IsUnknown() {
		FvRsBdToEpRetFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsBdToEpRet.Attributes()) {
			if !fvRsBdToEpRetFvBDPlan.Annotation.IsUnknown() && !fvRsBdToEpRetFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsBdToEpRetFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsBdToEpRetFvBDPlan.ResolveAct.IsUnknown() && !fvRsBdToEpRetFvBDPlan.ResolveAct.IsNull() {
				childMap.Attributes["resolveAct"] = fvRsBdToEpRetFvBDPlan.ResolveAct.ValueString()
			}
			if !fvRsBdToEpRetFvBDPlan.TnFvEpRetPolName.IsUnknown() && !fvRsBdToEpRetFvBDPlan.TnFvEpRetPolName.IsNull() {
				childMap.Attributes["tnFvEpRetPolName"] = fvRsBdToEpRetFvBDPlan.TnFvEpRetPolName.ValueString()
			}

			var tagAnnotationFvRsBdToEpRetFvBDPlan, tagAnnotationFvRsBdToEpRetFvBDState []TagAnnotationFvRsBdToEpRetFvBDResourceModel
			fvRsBdToEpRetFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBdToEpRetFvBDPlan, false)
			if !fvRsBdToEpRetFvBDState.TagAnnotation.IsNull() {
				fvRsBdToEpRetFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsBdToEpRetFvBDState, false)
			}
			if !fvRsBdToEpRetFvBDPlan.TagAnnotation.IsNull() && !fvRsBdToEpRetFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsBdToEpRetFvBD := range tagAnnotationFvRsBdToEpRetFvBDPlan {
					tagAnnotationFvRsBdToEpRetFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsBdToEpRetFvBD.Key.IsNull() && !tagAnnotationFvRsBdToEpRetFvBD.Key.IsUnknown() {
						tagAnnotationFvRsBdToEpRetFvBDChildMap.Attributes["key"] = tagAnnotationFvRsBdToEpRetFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsBdToEpRetFvBD.Value.IsNull() && !tagAnnotationFvRsBdToEpRetFvBD.Value.IsUnknown() {
						tagAnnotationFvRsBdToEpRetFvBDChildMap.Attributes["value"] = tagAnnotationFvRsBdToEpRetFvBD.Value.ValueString()
					}
					FvRsBdToEpRetFvBDChildren = append(FvRsBdToEpRetFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBdToEpRetFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsBdToEpRetFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsBdToEpRetFvBD := range tagAnnotationFvRsBdToEpRetFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsBdToEpRetFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsBdToEpRetFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsBdToEpRetFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsBdToEpRetFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsBdToEpRetFvBD.Key.ValueString()
						FvRsBdToEpRetFvBDChildren = append(FvRsBdToEpRetFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsBdToEpRetFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsBdToEpRetFvBDPlan, tagTagFvRsBdToEpRetFvBDState []TagTagFvRsBdToEpRetFvBDResourceModel
			fvRsBdToEpRetFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsBdToEpRetFvBDPlan, false)
			if !fvRsBdToEpRetFvBDState.TagTag.IsNull() {
				fvRsBdToEpRetFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsBdToEpRetFvBDState, false)
			}
			if !fvRsBdToEpRetFvBDPlan.TagTag.IsNull() && !fvRsBdToEpRetFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsBdToEpRetFvBD := range tagTagFvRsBdToEpRetFvBDPlan {
					tagTagFvRsBdToEpRetFvBDChildMap := NewAciObject()
					if !tagTagFvRsBdToEpRetFvBD.Key.IsNull() && !tagTagFvRsBdToEpRetFvBD.Key.IsUnknown() {
						tagTagFvRsBdToEpRetFvBDChildMap.Attributes["key"] = tagTagFvRsBdToEpRetFvBD.Key.ValueString()
					}
					if !tagTagFvRsBdToEpRetFvBD.Value.IsNull() && !tagTagFvRsBdToEpRetFvBD.Value.IsUnknown() {
						tagTagFvRsBdToEpRetFvBDChildMap.Attributes["value"] = tagTagFvRsBdToEpRetFvBD.Value.ValueString()
					}
					FvRsBdToEpRetFvBDChildren = append(FvRsBdToEpRetFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBdToEpRetFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsBdToEpRetFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsBdToEpRetFvBD := range tagTagFvRsBdToEpRetFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsBdToEpRetFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsBdToEpRetFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsBdToEpRetFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsBdToEpRetFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsBdToEpRetFvBD.Key.ValueString()
						FvRsBdToEpRetFvBDChildren = append(FvRsBdToEpRetFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsBdToEpRetFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsBdToEpRetFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsBdToEpRet": childMap})
		}
	} else {
		FvRsBdToEpRetObject, _ := types.ObjectValueFrom(ctx, FvRsBdToEpRetFvBDType, getEmptyFvRsBdToEpRetFvBDResourceModel())
		data.FvRsBdToEpRet = FvRsBdToEpRetObject
	}

	return childPayloads
}

func getFvBDFvRsCtxChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsCtxFvBDPlan, fvRsCtxFvBDState FvRsCtxFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsCtx.IsNull() && !data.FvRsCtx.IsUnknown() {
		FvRsCtxFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsCtx.Attributes()) {
			if !fvRsCtxFvBDPlan.Annotation.IsUnknown() && !fvRsCtxFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsCtxFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsCtxFvBDPlan.TnFvCtxName.IsUnknown() && !fvRsCtxFvBDPlan.TnFvCtxName.IsNull() {
				childMap.Attributes["tnFvCtxName"] = fvRsCtxFvBDPlan.TnFvCtxName.ValueString()
			}

			var tagAnnotationFvRsCtxFvBDPlan, tagAnnotationFvRsCtxFvBDState []TagAnnotationFvRsCtxFvBDResourceModel
			fvRsCtxFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsCtxFvBDPlan, false)
			if !fvRsCtxFvBDState.TagAnnotation.IsNull() {
				fvRsCtxFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsCtxFvBDState, false)
			}
			if !fvRsCtxFvBDPlan.TagAnnotation.IsNull() && !fvRsCtxFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsCtxFvBD := range tagAnnotationFvRsCtxFvBDPlan {
					tagAnnotationFvRsCtxFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsCtxFvBD.Key.IsNull() && !tagAnnotationFvRsCtxFvBD.Key.IsUnknown() {
						tagAnnotationFvRsCtxFvBDChildMap.Attributes["key"] = tagAnnotationFvRsCtxFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsCtxFvBD.Value.IsNull() && !tagAnnotationFvRsCtxFvBD.Value.IsUnknown() {
						tagAnnotationFvRsCtxFvBDChildMap.Attributes["value"] = tagAnnotationFvRsCtxFvBD.Value.ValueString()
					}
					FvRsCtxFvBDChildren = append(FvRsCtxFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsCtxFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsCtxFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsCtxFvBD := range tagAnnotationFvRsCtxFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsCtxFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsCtxFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsCtxFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsCtxFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsCtxFvBD.Key.ValueString()
						FvRsCtxFvBDChildren = append(FvRsCtxFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsCtxFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsCtxFvBDPlan, tagTagFvRsCtxFvBDState []TagTagFvRsCtxFvBDResourceModel
			fvRsCtxFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsCtxFvBDPlan, false)
			if !fvRsCtxFvBDState.TagTag.IsNull() {
				fvRsCtxFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsCtxFvBDState, false)
			}
			if !fvRsCtxFvBDPlan.TagTag.IsNull() && !fvRsCtxFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsCtxFvBD := range tagTagFvRsCtxFvBDPlan {
					tagTagFvRsCtxFvBDChildMap := NewAciObject()
					if !tagTagFvRsCtxFvBD.Key.IsNull() && !tagTagFvRsCtxFvBD.Key.IsUnknown() {
						tagTagFvRsCtxFvBDChildMap.Attributes["key"] = tagTagFvRsCtxFvBD.Key.ValueString()
					}
					if !tagTagFvRsCtxFvBD.Value.IsNull() && !tagTagFvRsCtxFvBD.Value.IsUnknown() {
						tagTagFvRsCtxFvBDChildMap.Attributes["value"] = tagTagFvRsCtxFvBD.Value.ValueString()
					}
					FvRsCtxFvBDChildren = append(FvRsCtxFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsCtxFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsCtxFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsCtxFvBD := range tagTagFvRsCtxFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsCtxFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsCtxFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsCtxFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsCtxFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsCtxFvBD.Key.ValueString()
						FvRsCtxFvBDChildren = append(FvRsCtxFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsCtxFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsCtxFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsCtx": childMap})
		}
	} else {
		FvRsCtxObject, _ := types.ObjectValueFrom(ctx, FvRsCtxFvBDType, getEmptyFvRsCtxFvBDResourceModel())
		data.FvRsCtx = FvRsCtxObject
	}

	return childPayloads
}

func getFvBDFvRsIgmpsnChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsIgmpsnFvBDPlan, fvRsIgmpsnFvBDState FvRsIgmpsnFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsIgmpsn.IsNull() && !data.FvRsIgmpsn.IsUnknown() {
		FvRsIgmpsnFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsIgmpsn.Attributes()) {
			if !fvRsIgmpsnFvBDPlan.Annotation.IsUnknown() && !fvRsIgmpsnFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsIgmpsnFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsIgmpsnFvBDPlan.TnIgmpSnoopPolName.IsUnknown() && !fvRsIgmpsnFvBDPlan.TnIgmpSnoopPolName.IsNull() {
				childMap.Attributes["tnIgmpSnoopPolName"] = fvRsIgmpsnFvBDPlan.TnIgmpSnoopPolName.ValueString()
			}

			var tagAnnotationFvRsIgmpsnFvBDPlan, tagAnnotationFvRsIgmpsnFvBDState []TagAnnotationFvRsIgmpsnFvBDResourceModel
			fvRsIgmpsnFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsIgmpsnFvBDPlan, false)
			if !fvRsIgmpsnFvBDState.TagAnnotation.IsNull() {
				fvRsIgmpsnFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsIgmpsnFvBDState, false)
			}
			if !fvRsIgmpsnFvBDPlan.TagAnnotation.IsNull() && !fvRsIgmpsnFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsIgmpsnFvBD := range tagAnnotationFvRsIgmpsnFvBDPlan {
					tagAnnotationFvRsIgmpsnFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsIgmpsnFvBD.Key.IsNull() && !tagAnnotationFvRsIgmpsnFvBD.Key.IsUnknown() {
						tagAnnotationFvRsIgmpsnFvBDChildMap.Attributes["key"] = tagAnnotationFvRsIgmpsnFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsIgmpsnFvBD.Value.IsNull() && !tagAnnotationFvRsIgmpsnFvBD.Value.IsUnknown() {
						tagAnnotationFvRsIgmpsnFvBDChildMap.Attributes["value"] = tagAnnotationFvRsIgmpsnFvBD.Value.ValueString()
					}
					FvRsIgmpsnFvBDChildren = append(FvRsIgmpsnFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsIgmpsnFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsIgmpsnFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsIgmpsnFvBD := range tagAnnotationFvRsIgmpsnFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsIgmpsnFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsIgmpsnFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsIgmpsnFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsIgmpsnFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsIgmpsnFvBD.Key.ValueString()
						FvRsIgmpsnFvBDChildren = append(FvRsIgmpsnFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsIgmpsnFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsIgmpsnFvBDPlan, tagTagFvRsIgmpsnFvBDState []TagTagFvRsIgmpsnFvBDResourceModel
			fvRsIgmpsnFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsIgmpsnFvBDPlan, false)
			if !fvRsIgmpsnFvBDState.TagTag.IsNull() {
				fvRsIgmpsnFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsIgmpsnFvBDState, false)
			}
			if !fvRsIgmpsnFvBDPlan.TagTag.IsNull() && !fvRsIgmpsnFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsIgmpsnFvBD := range tagTagFvRsIgmpsnFvBDPlan {
					tagTagFvRsIgmpsnFvBDChildMap := NewAciObject()
					if !tagTagFvRsIgmpsnFvBD.Key.IsNull() && !tagTagFvRsIgmpsnFvBD.Key.IsUnknown() {
						tagTagFvRsIgmpsnFvBDChildMap.Attributes["key"] = tagTagFvRsIgmpsnFvBD.Key.ValueString()
					}
					if !tagTagFvRsIgmpsnFvBD.Value.IsNull() && !tagTagFvRsIgmpsnFvBD.Value.IsUnknown() {
						tagTagFvRsIgmpsnFvBDChildMap.Attributes["value"] = tagTagFvRsIgmpsnFvBD.Value.ValueString()
					}
					FvRsIgmpsnFvBDChildren = append(FvRsIgmpsnFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsIgmpsnFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsIgmpsnFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsIgmpsnFvBD := range tagTagFvRsIgmpsnFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsIgmpsnFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsIgmpsnFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsIgmpsnFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsIgmpsnFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsIgmpsnFvBD.Key.ValueString()
						FvRsIgmpsnFvBDChildren = append(FvRsIgmpsnFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsIgmpsnFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsIgmpsnFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsIgmpsn": childMap})
		}
	} else {
		FvRsIgmpsnObject, _ := types.ObjectValueFrom(ctx, FvRsIgmpsnFvBDType, getEmptyFvRsIgmpsnFvBDResourceModel())
		data.FvRsIgmpsn = FvRsIgmpsnObject
	}

	return childPayloads
}

func getFvBDFvRsMldsnChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, fvRsMldsnFvBDPlan, fvRsMldsnFvBDState FvRsMldsnFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.FvRsMldsn.IsNull() && !data.FvRsMldsn.IsUnknown() {
		FvRsMldsnFvBDChildren := make([]map[string]interface{}, 0)
		childMap := NewAciObject()
		if !IsEmptySingleNestedAttribute(data.FvRsMldsn.Attributes()) {
			if !fvRsMldsnFvBDPlan.Annotation.IsUnknown() && !fvRsMldsnFvBDPlan.Annotation.IsNull() {
				childMap.Attributes["annotation"] = fvRsMldsnFvBDPlan.Annotation.ValueString()
			} else {
				childMap.Attributes["annotation"] = globalAnnotation
			}
			if !fvRsMldsnFvBDPlan.TnMldSnoopPolName.IsUnknown() && !fvRsMldsnFvBDPlan.TnMldSnoopPolName.IsNull() {
				childMap.Attributes["tnMldSnoopPolName"] = fvRsMldsnFvBDPlan.TnMldSnoopPolName.ValueString()
			}

			var tagAnnotationFvRsMldsnFvBDPlan, tagAnnotationFvRsMldsnFvBDState []TagAnnotationFvRsMldsnFvBDResourceModel
			fvRsMldsnFvBDPlan.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsMldsnFvBDPlan, false)
			if !fvRsMldsnFvBDState.TagAnnotation.IsNull() {
				fvRsMldsnFvBDState.TagAnnotation.ElementsAs(ctx, &tagAnnotationFvRsMldsnFvBDState, false)
			}
			if !fvRsMldsnFvBDPlan.TagAnnotation.IsNull() && !fvRsMldsnFvBDPlan.TagAnnotation.IsUnknown() {
				tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
				for _, tagAnnotationFvRsMldsnFvBD := range tagAnnotationFvRsMldsnFvBDPlan {
					tagAnnotationFvRsMldsnFvBDChildMap := NewAciObject()
					if !tagAnnotationFvRsMldsnFvBD.Key.IsNull() && !tagAnnotationFvRsMldsnFvBD.Key.IsUnknown() {
						tagAnnotationFvRsMldsnFvBDChildMap.Attributes["key"] = tagAnnotationFvRsMldsnFvBD.Key.ValueString()
					}
					if !tagAnnotationFvRsMldsnFvBD.Value.IsNull() && !tagAnnotationFvRsMldsnFvBD.Value.IsUnknown() {
						tagAnnotationFvRsMldsnFvBDChildMap.Attributes["value"] = tagAnnotationFvRsMldsnFvBD.Value.ValueString()
					}
					FvRsMldsnFvBDChildren = append(FvRsMldsnFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsMldsnFvBDChildMap})
					tagAnnotationIdentifier := TagAnnotationIdentifier{}
					tagAnnotationIdentifier.Key = tagAnnotationFvRsMldsnFvBD.Key
					tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
				}
				for _, tagAnnotationFvRsMldsnFvBD := range tagAnnotationFvRsMldsnFvBDState {
					delete := true
					for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
						if tagAnnotationIdentifier.Key == tagAnnotationFvRsMldsnFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagAnnotationFvRsMldsnFvBDChildMapForDelete := NewAciObject()
						tagAnnotationFvRsMldsnFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagAnnotationFvRsMldsnFvBDChildMapForDelete.Attributes["key"] = tagAnnotationFvRsMldsnFvBD.Key.ValueString()
						FvRsMldsnFvBDChildren = append(FvRsMldsnFvBDChildren, map[string]interface{}{"tagAnnotation": tagAnnotationFvRsMldsnFvBDChildMapForDelete})
					}
				}
			}

			var tagTagFvRsMldsnFvBDPlan, tagTagFvRsMldsnFvBDState []TagTagFvRsMldsnFvBDResourceModel
			fvRsMldsnFvBDPlan.TagTag.ElementsAs(ctx, &tagTagFvRsMldsnFvBDPlan, false)
			if !fvRsMldsnFvBDState.TagTag.IsNull() {
				fvRsMldsnFvBDState.TagTag.ElementsAs(ctx, &tagTagFvRsMldsnFvBDState, false)
			}
			if !fvRsMldsnFvBDPlan.TagTag.IsNull() && !fvRsMldsnFvBDPlan.TagTag.IsUnknown() {
				tagTagIdentifiers := []TagTagIdentifier{}
				for _, tagTagFvRsMldsnFvBD := range tagTagFvRsMldsnFvBDPlan {
					tagTagFvRsMldsnFvBDChildMap := NewAciObject()
					if !tagTagFvRsMldsnFvBD.Key.IsNull() && !tagTagFvRsMldsnFvBD.Key.IsUnknown() {
						tagTagFvRsMldsnFvBDChildMap.Attributes["key"] = tagTagFvRsMldsnFvBD.Key.ValueString()
					}
					if !tagTagFvRsMldsnFvBD.Value.IsNull() && !tagTagFvRsMldsnFvBD.Value.IsUnknown() {
						tagTagFvRsMldsnFvBDChildMap.Attributes["value"] = tagTagFvRsMldsnFvBD.Value.ValueString()
					}
					FvRsMldsnFvBDChildren = append(FvRsMldsnFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsMldsnFvBDChildMap})
					tagTagIdentifier := TagTagIdentifier{}
					tagTagIdentifier.Key = tagTagFvRsMldsnFvBD.Key
					tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
				}
				for _, tagTagFvRsMldsnFvBD := range tagTagFvRsMldsnFvBDState {
					delete := true
					for _, tagTagIdentifier := range tagTagIdentifiers {
						if tagTagIdentifier.Key == tagTagFvRsMldsnFvBD.Key {
							delete = false
							break
						}
					}
					if delete {
						tagTagFvRsMldsnFvBDChildMapForDelete := NewAciObject()
						tagTagFvRsMldsnFvBDChildMapForDelete.Attributes["status"] = "deleted"
						tagTagFvRsMldsnFvBDChildMapForDelete.Attributes["key"] = tagTagFvRsMldsnFvBD.Key.ValueString()
						FvRsMldsnFvBDChildren = append(FvRsMldsnFvBDChildren, map[string]interface{}{"tagTag": tagTagFvRsMldsnFvBDChildMapForDelete})
					}
				}
			}
			childMap.Children = FvRsMldsnFvBDChildren
			childPayloads = append(childPayloads, map[string]interface{}{"fvRsMldsn": childMap})
		}
	} else {
		FvRsMldsnObject, _ := types.ObjectValueFrom(ctx, FvRsMldsnFvBDType, getEmptyFvRsMldsnFvBDResourceModel())
		data.FvRsMldsn = FvRsMldsnObject
	}

	return childPayloads
}

func getFvBDTagAnnotationChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, tagAnnotationFvBDPlan, tagAnnotationFvBDState []TagAnnotationFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.TagAnnotation.IsNull() && !data.TagAnnotation.IsUnknown() {
		tagAnnotationIdentifiers := []TagAnnotationIdentifier{}
		for _, tagAnnotationFvBD := range tagAnnotationFvBDPlan {
			childMap := NewAciObject()
			if !tagAnnotationFvBD.Key.IsNull() && !tagAnnotationFvBD.Key.IsUnknown() {
				childMap.Attributes["key"] = tagAnnotationFvBD.Key.ValueString()
			}
			if !tagAnnotationFvBD.Value.IsNull() && !tagAnnotationFvBD.Value.IsUnknown() {
				childMap.Attributes["value"] = tagAnnotationFvBD.Value.ValueString()
			}
			childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": childMap})
			tagAnnotationIdentifier := TagAnnotationIdentifier{}
			tagAnnotationIdentifier.Key = tagAnnotationFvBD.Key
			tagAnnotationIdentifiers = append(tagAnnotationIdentifiers, tagAnnotationIdentifier)
		}
		for _, tagAnnotation := range tagAnnotationFvBDState {
			delete := true
			for _, tagAnnotationIdentifier := range tagAnnotationIdentifiers {
				if tagAnnotationIdentifier.Key == tagAnnotation.Key {
					delete = false
					break
				}
			}
			if delete {
				tagAnnotationChildMapForDelete := NewAciObject()
				tagAnnotationChildMapForDelete.Attributes["status"] = "deleted"
				tagAnnotationChildMapForDelete.Attributes["key"] = tagAnnotation.Key.ValueString()
				childPayloads = append(childPayloads, map[string]interface{}{"tagAnnotation": tagAnnotationChildMapForDelete})
			}
		}
	} else {
		data.TagAnnotation = types.SetNull(data.TagAnnotation.ElementType(ctx))
	}

	return childPayloads
}

func getFvBDTagTagChildPayloads(ctx context.Context, diags *diag.Diagnostics, data *FvBDResourceModel, tagTagFvBDPlan, tagTagFvBDState []TagTagFvBDResourceModel) []map[string]interface{} {
	childPayloads := []map[string]interface{}{}
	if !data.TagTag.IsNull() && !data.TagTag.IsUnknown() {
		tagTagIdentifiers := []TagTagIdentifier{}
		for _, tagTagFvBD := range tagTagFvBDPlan {
			childMap := NewAciObject()
			if !tagTagFvBD.Key.IsNull() && !tagTagFvBD.Key.IsUnknown() {
				childMap.Attributes["key"] = tagTagFvBD.Key.ValueString()
			}
			if !tagTagFvBD.Value.IsNull() && !tagTagFvBD.Value.IsUnknown() {
				childMap.Attributes["value"] = tagTagFvBD.Value.ValueString()
			}
			childPayloads = append(childPayloads, map[string]interface{}{"tagTag": childMap})
			tagTagIdentifier := TagTagIdentifier{}
			tagTagIdentifier.Key = tagTagFvBD.Key
			tagTagIdentifiers = append(tagTagIdentifiers, tagTagIdentifier)
		}
		for _, tagTag := range tagTagFvBDState {
			delete := true
			for _, tagTagIdentifier := range tagTagIdentifiers {
				if tagTagIdentifier.Key == tagTag.Key {
					delete = false
					break
				}
			}
			if delete {
				tagTagChildMapForDelete := NewAciObject()
				tagTagChildMapForDelete.Attributes["status"] = "deleted"
				tagTagChildMapForDelete.Attributes["key"] = tagTag.Key.ValueString()
				childPayloads = append(childPayloads, map[string]interface{}{"tagTag": tagTagChildMapForDelete})
			}
		}
	} else {
		data.TagTag = types.SetNull(data.TagTag.ElementType(ctx))
	}

	return childPayloads
}

func getFvBDCreateJsonPayload(ctx context.Context, diags *diag.Diagnostics, createType bool, data *FvBDResourceModel, fvAccPPlan, fvAccPState FvAccPFvBDResourceModel, fvRogueExceptionMacPlan, fvRogueExceptionMacState []FvRogueExceptionMacFvBDResourceModel, fvRsABDPolMonPolPlan, fvRsABDPolMonPolState FvRsABDPolMonPolFvBDResourceModel, fvRsBDToFhsPlan, fvRsBDToFhsState FvRsBDToFhsFvBDResourceModel, fvRsBDToNdPPlan, fvRsBDToNdPState FvRsBDToNdPFvBDResourceModel, fvRsBDToNetflowMonitorPolPlan, fvRsBDToNetflowMonitorPolState []FvRsBDToNetflowMonitorPolFvBDResourceModel, fvRsBDToOutPlan, fvRsBDToOutState []FvRsBDToOutFvBDResourceModel, fvRsBDToProfilePlan, fvRsBDToProfileState FvRsBDToProfileFvBDResourceModel, fvRsBDToRelayPPlan, fvRsBDToRelayPState FvRsBDToRelayPFvBDResourceModel, fvRsBdToEpRetPlan, fvRsBdToEpRetState FvRsBdToEpRetFvBDResourceModel, fvRsCtxPlan, fvRsCtxState FvRsCtxFvBDResourceModel, fvRsIgmpsnPlan, fvRsIgmpsnState FvRsIgmpsnFvBDResourceModel, fvRsMldsnPlan, fvRsMldsnState FvRsMldsnFvBDResourceModel, tagAnnotationPlan, tagAnnotationState []TagAnnotationFvBDResourceModel, tagTagPlan, tagTagState []TagTagFvBDResourceModel) *container.Container {
	payloadMap := map[string]interface{}{}
	payloadMap["attributes"] = map[string]string{}

	if createType && !globalAllowExistingOnCreate {
		payloadMap["attributes"].(map[string]string)["status"] = "created"
	}
	childPayloads := []map[string]interface{}{}

	FvAccPchildPayloads := getFvBDFvAccPChildPayloads(ctx, diags, data, fvAccPPlan, fvAccPState)
	if FvAccPchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvAccPchildPayloads...)

	FvRogueExceptionMacchildPayloads := getFvBDFvRogueExceptionMacChildPayloads(ctx, diags, data, fvRogueExceptionMacPlan, fvRogueExceptionMacState)
	if FvRogueExceptionMacchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRogueExceptionMacchildPayloads...)

	FvRsABDPolMonPolchildPayloads := getFvBDFvRsABDPolMonPolChildPayloads(ctx, diags, data, fvRsABDPolMonPolPlan, fvRsABDPolMonPolState)
	if FvRsABDPolMonPolchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsABDPolMonPolchildPayloads...)

	FvRsBDToFhschildPayloads := getFvBDFvRsBDToFhsChildPayloads(ctx, diags, data, fvRsBDToFhsPlan, fvRsBDToFhsState)
	if FvRsBDToFhschildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBDToFhschildPayloads...)

	FvRsBDToNdPchildPayloads := getFvBDFvRsBDToNdPChildPayloads(ctx, diags, data, fvRsBDToNdPPlan, fvRsBDToNdPState)
	if FvRsBDToNdPchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBDToNdPchildPayloads...)

	FvRsBDToNetflowMonitorPolchildPayloads := getFvBDFvRsBDToNetflowMonitorPolChildPayloads(ctx, diags, data, fvRsBDToNetflowMonitorPolPlan, fvRsBDToNetflowMonitorPolState)
	if FvRsBDToNetflowMonitorPolchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBDToNetflowMonitorPolchildPayloads...)

	FvRsBDToOutchildPayloads := getFvBDFvRsBDToOutChildPayloads(ctx, diags, data, fvRsBDToOutPlan, fvRsBDToOutState)
	if FvRsBDToOutchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBDToOutchildPayloads...)

	FvRsBDToProfilechildPayloads := getFvBDFvRsBDToProfileChildPayloads(ctx, diags, data, fvRsBDToProfilePlan, fvRsBDToProfileState)
	if FvRsBDToProfilechildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBDToProfilechildPayloads...)

	FvRsBDToRelayPchildPayloads := getFvBDFvRsBDToRelayPChildPayloads(ctx, diags, data, fvRsBDToRelayPPlan, fvRsBDToRelayPState)
	if FvRsBDToRelayPchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBDToRelayPchildPayloads...)

	FvRsBdToEpRetchildPayloads := getFvBDFvRsBdToEpRetChildPayloads(ctx, diags, data, fvRsBdToEpRetPlan, fvRsBdToEpRetState)
	if FvRsBdToEpRetchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsBdToEpRetchildPayloads...)

	FvRsCtxchildPayloads := getFvBDFvRsCtxChildPayloads(ctx, diags, data, fvRsCtxPlan, fvRsCtxState)
	if FvRsCtxchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsCtxchildPayloads...)

	FvRsIgmpsnchildPayloads := getFvBDFvRsIgmpsnChildPayloads(ctx, diags, data, fvRsIgmpsnPlan, fvRsIgmpsnState)
	if FvRsIgmpsnchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsIgmpsnchildPayloads...)

	FvRsMldsnchildPayloads := getFvBDFvRsMldsnChildPayloads(ctx, diags, data, fvRsMldsnPlan, fvRsMldsnState)
	if FvRsMldsnchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, FvRsMldsnchildPayloads...)

	TagAnnotationchildPayloads := getFvBDTagAnnotationChildPayloads(ctx, diags, data, tagAnnotationPlan, tagAnnotationState)
	if TagAnnotationchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, TagAnnotationchildPayloads...)

	TagTagchildPayloads := getFvBDTagTagChildPayloads(ctx, diags, data, tagTagPlan, tagTagState)
	if TagTagchildPayloads == nil {
		return nil
	}
	childPayloads = append(childPayloads, TagTagchildPayloads...)

	payloadMap["children"] = childPayloads
	if !data.OptimizeWanBandwidth.IsNull() && !data.OptimizeWanBandwidth.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["OptimizeWanBandwidth"] = data.OptimizeWanBandwidth.ValueString()
	}
	if !data.Annotation.IsNull() && !data.Annotation.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["annotation"] = data.Annotation.ValueString()
	}
	if !data.ArpFlood.IsNull() && !data.ArpFlood.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["arpFlood"] = data.ArpFlood.ValueString()
	}
	if !data.Descr.IsNull() && !data.Descr.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["descr"] = data.Descr.ValueString()
	}
	if !data.EnableRogueExceptMac.IsNull() && !data.EnableRogueExceptMac.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["enableRogueExceptMac"] = data.EnableRogueExceptMac.ValueString()
	}
	if !data.EpClear.IsNull() && !data.EpClear.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["epClear"] = data.EpClear.ValueString()
	}
	if !data.EpMoveDetectMode.IsNull() && !data.EpMoveDetectMode.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["epMoveDetectMode"] = data.EpMoveDetectMode.ValueString()
	}
	if !data.HostBasedRouting.IsNull() && !data.HostBasedRouting.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["hostBasedRouting"] = data.HostBasedRouting.ValueString()
	}
	if !data.IntersiteBumTrafficAllow.IsNull() && !data.IntersiteBumTrafficAllow.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["intersiteBumTrafficAllow"] = data.IntersiteBumTrafficAllow.ValueString()
	}
	if !data.IntersiteL2Stretch.IsNull() && !data.IntersiteL2Stretch.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["intersiteL2Stretch"] = data.IntersiteL2Stretch.ValueString()
	}
	if !data.IpLearning.IsNull() && !data.IpLearning.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["ipLearning"] = data.IpLearning.ValueString()
	}
	if !data.Ipv6McastAllow.IsNull() && !data.Ipv6McastAllow.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["ipv6McastAllow"] = data.Ipv6McastAllow.ValueString()
	}
	if !data.LimitIpLearnToSubnets.IsNull() && !data.LimitIpLearnToSubnets.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["limitIpLearnToSubnets"] = data.LimitIpLearnToSubnets.ValueString()
	}
	if !data.LlAddr.IsNull() && !data.LlAddr.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["llAddr"] = data.LlAddr.ValueString()
	}
	if !data.Mac.IsNull() && !data.Mac.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["mac"] = data.Mac.ValueString()
	}
	if !data.McastARPDrop.IsNull() && !data.McastARPDrop.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["mcastARPDrop"] = data.McastARPDrop.ValueString()
	}
	if !data.McastAllow.IsNull() && !data.McastAllow.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["mcastAllow"] = data.McastAllow.ValueString()
	}
	if !data.MultiDstPktAct.IsNull() && !data.MultiDstPktAct.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["multiDstPktAct"] = data.MultiDstPktAct.ValueString()
	}
	if !data.Name.IsNull() && !data.Name.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["name"] = data.Name.ValueString()
	}
	if !data.NameAlias.IsNull() && !data.NameAlias.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["nameAlias"] = data.NameAlias.ValueString()
	}
	if !data.OwnerKey.IsNull() && !data.OwnerKey.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["ownerKey"] = data.OwnerKey.ValueString()
	}
	if !data.OwnerTag.IsNull() && !data.OwnerTag.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["ownerTag"] = data.OwnerTag.ValueString()
	}
	if !data.ServiceBdRoutingDisable.IsNull() && !data.ServiceBdRoutingDisable.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["serviceBdRoutingDisable"] = data.ServiceBdRoutingDisable.ValueString()
	}
	if !data.Type.IsNull() && !data.Type.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["type"] = data.Type.ValueString()
	}
	if !data.UnicastRoute.IsNull() && !data.UnicastRoute.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["unicastRoute"] = data.UnicastRoute.ValueString()
	}
	if !data.UnkMacUcastAct.IsNull() && !data.UnkMacUcastAct.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["unkMacUcastAct"] = data.UnkMacUcastAct.ValueString()
	}
	if !data.UnkMcastAct.IsNull() && !data.UnkMcastAct.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["unkMcastAct"] = data.UnkMcastAct.ValueString()
	}
	if !data.V6unkMcastAct.IsNull() && !data.V6unkMcastAct.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["v6unkMcastAct"] = data.V6unkMcastAct.ValueString()
	}
	if !data.Vmac.IsNull() && !data.Vmac.IsUnknown() {
		payloadMap["attributes"].(map[string]string)["vmac"] = data.Vmac.ValueString()
	}
	payload, err := json.Marshal(map[string]interface{}{"fvBD": payloadMap})
	if err != nil {
		diags.AddError(
			"Marshalling of json payload failed",
			fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err),
		)
		return nil
	}

	jsonPayload, err := container.ParseJSON(payload)

	if err != nil {
		diags.AddError(
			"Construction of json payload failed",
			fmt.Sprintf("Err: %s. Please report this issue to the provider developers.", err),
		)
		return nil
	}
	return jsonPayload
}
