#######################################################################################
#######################################################################################
#NIDD_VER: MNL17_1610_008_01
#MNL: MNL_MNL17_1610_008
#Migration from SBTS16.10 to SBTS17
#15.11.2016/ v0.1 /first draft /L.Preuss
#19.06.2017/ v0.2 HAI:  PR248213: [OAM_SCT][SBTS17][RP1062] To small range for GNCEL in SBTS17 in comparison to LCELC in SBTS16
#######################################################################################

#######################################################################################
#######################################################################################
#If SCF version == 16.10 proceed with migration, else abort this ruleset

for_objects "SBTS"
	define "sbtsRoot" $current_dist_name
if ( objects_count "SBTS" ) == 0 abort_file
	
if not ( get_version sbtsRoot ) == "SBTS16.10" 
	begin
		abort_file
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create mrbtsRoot and apeqmPath for later usage

for_objects "MRBTS"
	begin
		define "mrbtsRoot" $current_dist_name
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create MNL object

add_object mrbtsRoot JOIN "/MNL-1"
set_operation mrbtsRoot JOIN "/MNL-1" "create"

#######################################################################################

#######################################################################################
#######################################################################################
#Create MNL mandatory params
for_objects "MRBTS/MNL"
	begin
		add_param $current_dist_name "validatePlanAgainstDetectedHW" "false"
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMNT/AMGR to MRBTS/MNL/AMGR

for_objects "SBTS/MGMNT/AMGR"
	begin
		copy_object $current_dist_name mrbtsRoot JOIN "/MNL-1/AMGR-" JOIN $current_AMGR
	end

#######################################################################################

#######################################################################################
#######################################################################################
#Fix MRBTS/MNL/AMGR params

for_objects "MRBTS/MNL/AMGR"
	begin
		if ( param_exist $current_dist_name "checkCnumPasswordPolicy" )
			begin
				add_param $current_dist_name "checkCnumPasswdExpiry" get_param $current_dist_name "checkCnumPasswordPolicy"
				del_param $current_dist_name "checkCnumPasswordPolicy"
			end
		else
			begin
				add_param $current_dist_name "checkCnumPasswdExpiry" "false"
			end
		if ( param_exist $current_dist_name "ldapConnectionType" ) del_param $current_dist_name "ldapConnectionType"
		if ( param_exist $current_dist_name "ldapPortPrimary" ) del_param $current_dist_name "ldapPortPrimary"
		if ( param_exist $current_dist_name "ldapServerPrimary" ) del_param $current_dist_name "ldapServerPrimary"

	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMNT/AMGR/LUAC to MRBTS/MNL/AMGR/LUAC

for_objects "SBTS/MGMNT/AMGR/LUAC"
	begin
		copy_object $current_dist_name mrbtsRoot JOIN "/MNL-1/AMGR-" JOIN $current_AMGR JOIN "/LUAC-" JOIN $current_LUAC
	end

#######################################################################################

#######################################################################################
#######################################################################################
#Fix MRBTS/MNL/AMGR/LUAC params

for_objects "MRBTS/MNL/AMGR/LUAC"
	begin
		if not ( param_exist $current_dist_name "btsAccountLockoutDuration" ) add_param $current_dist_name "btsAccountLockoutDuration" "15"
		if not ( param_exist $current_dist_name "btsFailedLoginCountingPeriod" ) add_param $current_dist_name "btsFailedLoginCountingPeriod" "5"
		if not ( param_exist $current_dist_name "btsMaxFailedLoginAttempts" ) add_param $current_dist_name "btsMaxFailedLoginAttempts" "5"
		if not ( param_exist $current_dist_name "btsSessionLoginDelay" ) add_param $current_dist_name "btsSessionLoginDelay" "1"
		
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Add MNL/MNLENT and MNL/MNLENT/BBADM objects

add_object mrbtsRoot JOIN "/MNL-1/MNLENT-1"
set_operation mrbtsRoot JOIN "/MNL-1/MNLENT-1" "create"

add_object mrbtsRoot JOIN "/MNL-1/MNLENT-1/BBADM-1"
set_operation mrbtsRoot JOIN "/MNL-1/MNLENT-1/BBADM-1" "create"

#######################################################################################

#######################################################################################
#######################################################################################
#Add MNL/MNLENT/CAPADM and MNL/MNLENT/CAPADM/CAPLIM objects

#add_object mrbtsRoot JOIN "/MNL-1/MNLENT-1/CAPADM-1"
#set_operation mrbtsRoot JOIN "/MNL-1/MNLENT-1/CAPADM-1" "create"

#add_object mrbtsRoot JOIN "/MNL-1/MNLENT-1/CAPADM-1/CAPLIM-1"
#set_operation mrbtsRoot JOIN "/MNL-1/MNLENT-1/CAPADM-1/CAPLIM-1" "create"
#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMMT/CAPLIM params to MRBTS/MNL/MNLENT/CAPADM/CAPLIM

define "caplimDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CAPADM-1/CAPLIM-1"

for_objects "SBTS/MGMNT/CAPLIM"
	begin
		if ( param_exist $current_dist_name "hsdpaUsers" ) add_param caplimDN "hsdpaUsers" get_param $current_dist_name "hsdpaUsers"
		if ( param_exist $current_dist_name "hsupaUsers" ) add_param caplimDN "hsupaUsers" get_param $current_dist_name "hsupaUsers"
		if ( param_exist $current_dist_name "ipTrafficCapacityLimitEnabled" )
			begin	
				add_param caplimDN "ipTrafficCapacityLimitEnabled" get_param $current_dist_name "ipTrafficCapacityLimitEnabled"
			end
		else
			begin
				add_param caplimDN "ipTrafficCapacityLimitEnabled" "false"
			end
		if ( param_exist $current_dist_name "lteUsers" ) add_param caplimDN "maxNumActUEBts" get_param $current_dist_name "lteUsers"
	end
	
#add deafults to MRBTS/MNL/MNLENT/CAPADM/CAPLIM if missing and fix ranges

if not ( param_exist caplimDN "ipTrafficCapacityLimitEnabled" ) add_param caplimDN "ipTrafficCapacityLimitEnabled" "false"

if ( param_exist caplimDN "maxNumActUEBts" )
	begin
		if ( get_param caplimDN "maxNumActUEBts" ) > 10000 add_param caplimDN "maxNumActUEBts" 10000
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create MRBTS/MNL/MNLENT/CERTH object

add_object mrbtsRoot JOIN "/MNL-1/MNLENT-1/CERTH-1"
set_operation mrbtsRoot JOIN "/MNL-1/MNLENT-1/CERTH-1" "create"
#######################################################################################

#######################################################################################
#######################################################################################
#Resolve CERTH mandatory parameters

define "certhDn" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CERTH-1"

for_objects "SBTS/MGMNT/CERTH"
	begin
		if ( param_exist $current_dist_name "srcIpForCmpCrl" )
			begin
				define "ipValue" get_param $current_dist_name "srcIpForCmpCrl"
				for_objects "MRBTS/TNLSVC/TNL/IPNO/IPIF/IPADDRESSV4"
					begin
						if ( get_param $current_dist_name "localIpAddr" ) == ipValue
							begin
								add_param certhDn "cmpCrlSrcIpAddressDN" $current_dist_name
							end
					end
			end
		else
			begin
				add_param certhDn "cmpCrlSrcIpAddressDN" ""
			end
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMNT/CERTH/CMP to MRBTS/MNL/MNLENT/CERTH/CMP or create with defaults if not exists

define "cmpDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CERTH-1/CMP-1"

for_objects "SBTS/MGMNT/CERTH/CMP"
	begin
		copy_object $current_dist_name cmpDN
	end

if ( objects_count "MRBTS/MNL/MNLENT/CERTH/CMP" ) == 0
	begin
		add_object cmpDN
		set_operation cmpDN "create"
	end

if not ( param_exist cmpDN "caCertificateUpdateTime" ) add_param cmpDN "caCertificateUpdateTime" "90"
if not ( param_exist cmpDN "neCertificateUpdateTime" ) add_param cmpDN "neCertificateUpdateTime" "30"
#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMNT/CERTH/CRLH to MRBTS/MNL/MNLENT/CERTH/CRLH or create with defaults if not exists

define "crlhDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CERTH-1/CRLH-1"

for_objects "SBTS/MGMNT/CERTH/CRLH"
	begin
		copy_object $current_dist_name crlhDN
	end

	if ( objects_count "MRBTS/MNL/MNLENT/CERTH/CRLH" ) == 0
		begin
			add_object crlhDN
			set_operation crlhDN "create"
		end

if not ( param_exist crlhDN "distributionPointSource" ) add_param crlhDN "distributionPointSource" "Certificate_extension"
if not ( param_exist crlhDN "updatePeriod" ) add_param crlhDN "updatePeriod" "24"
if not ( param_exist crlhDN "usageEnabled" ) add_param crlhDN "usageEnabled" "Enabled"

#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMNT/CERTH/CRLH/CRLDPCONFIG to MRBTS/MNL/MNLENT/CERTH/CRLH/CRLDPCONFIG

for_objects "SBTS/MGMNT/CERTH/CRLH/CRLDPCONFIG"
	begin
		copy_object $current_dist_name mrbtsRoot JOIN "/MNL-1/MNLENT-1/CERTH-1/CRLH-1/CRLDPCONFIG-" JOIN $current_CRLDPCONFIG
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy SBTS/MGMNT/DNS to MRBTS/MNL/MNLENT/DNS

define "dnsDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/DNS-1"

for_objects "SBTS/MGMNT/DNS"
	begin
        define "dnsMgmntDn" $current_dist_name

        # from: MNL18_1711_003 serverIpAddressPrimary is mandatory for MNL/MNLENT/DNS
        # if serverIpAddressPrimary is not defined in input SCF then there is no need to add DNS at all

        # The value for an IPv4 address must be outside the value range below:
        #	1.) IP address 0.0.0.0
        #	2.) IP addresses 0.0.0.1 - 0.255.255.255.
        #	3.) Multicast addresses 224.0.0.0 - 239.255.255.255. 
        #	4.) Class E addresses 240.0.0.0 - 255.255.255.254.
        #	5.) IP address 255.255.255.255.   ---   3-5 makes anything "> 224.0.0.0" invalid
        #	6.) Private addresses 192.168.253.0 - 192.168.255.255.
        #	7.) Loopback addresses 127.0.0.0 - 127.255.255.255.
        #	8.) Link Local 169.254.1.0 - 169.254.254.255


        if ( param_exist dnsMgmntDn "serverIpAddressPrimary" )
            begin
                define "serverIpAddressPrimary" get_param dnsMgmntDn "serverIpAddressPrimary"

                define "address1" replace serverIpAddressPrimary "(\d+)\.(\d+)\.(\d+)\.(\d+)" "$1" flags "g"
                define "address2" replace serverIpAddressPrimary "(\d+)\.(\d+)\.(\d+)\.(\d+)" "$2" flags "g"
                define "address3" replace serverIpAddressPrimary "(\d+)\.(\d+)\.(\d+)\.(\d+)" "$3" flags "g"
                define "address4" replace serverIpAddressPrimary "(\d+)\.(\d+)\.(\d+)\.(\d+)" "$4" flags "g"

                if not ( ( serverIpAddressPrimary == "0.0.0.0" ) ||
                	     ( address1 == "0" ) ||
                	     ( address1 >= 224 ) ||
                	     ( ( address1 == "192" ) && ( address2 == "168" ) && ( address3 >= 253 ) ) ||
                	     ( address1 == "127" ) ||
                	     ( ( address1 == "169" ) && ( address2 == "254" ) && ( address3 >= 1 ) && ( address3 <= 254 ) ) )

                    begin
                        copy_object $current_dist_name dnsDN
                    end
            end
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create FEATCADM object and populate with parameters

define "featcadmDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/FEATCADM-1"
add_object featcadmDN
set_operation featcadmDN "create"

add_param featcadmDN "actAldSwUpdate" "false"
add_param featcadmDN "actDtPim" "false"
add_param featcadmDN "actMhaAutoConfig" "false"
add_param featcadmDN "actPimTesting" "false"
for_objects "SBTS"
	begin
		if ( param_exist $current_dist_name "actPowerMeter" ) add_param featcadmDN "actPowerMeter" get_param $current_dist_name "actPowerMeter"
		else add_param featcadmDN "actPowerMeter" "false"
	end
add_param featcadmDN "actRemoteRfDiag" "false"
add_param featcadmDN "actRfiTesting" "false"
add_param featcadmDN "actRxMonitoring" "false"
add_param featcadmDN "actTransportConfigFallback" "false"
add_param featcadmDN "delayCompPerEnbEnabled" "false"
add_param featcadmDN "rfSharingEnabled" "false"
####################################################################################### 

#######################################################################################
#######################################################################################
#Create MPLANENW object and populate with parameters

define "mplanenwDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/MPLANENW-1"
add_object mplanenwDN
set_operation mplanenwDN "create"

define "sbtsMplaneDN" sbtsRoot JOIN "/MGMNT-1/MPLANE-1"

if ( param_exist sbtsMplaneDN "ingressTrafficShapingBandwidth" ) add_param mplanenwDN "ingressTrafficShapingBandwidth" get_param sbtsMplaneDN "ingressTrafficShapingBandwidth"
if ( param_exist sbtsMplaneDN "ingressTrafficShapingEnabled" ) add_param mplanenwDN "ingressTrafficShapingEnabled" get_param sbtsMplaneDN "ingressTrafficShapingEnabled"
if ( param_exist sbtsMplaneDN "mPlaneDscp" ) add_param mplanenwDN "mPlaneDscp" get_param sbtsMplaneDN "mPlaneDscp"

if ( objects_count "MRBTS/TNLSVC/TNL/IPNO/IPIF/IPADDRESSV4" ) > 0
	begin
		for_objects "MRBTS/TNLSVC/TNL/IPNO/IPIF/IPADDRESSV4"
			begin
				define "tempIp" get_param sbtsMplaneDN "mPlaneIpAddress"
				define "tempIp2" get_param $current_dist_name "localIpAddr"
				if tempIp == tempIp2
					begin
						add_param mplanenwDN "mPlaneIpAddressDN" mrbtsRoot JOIN "/TNLSVC-1/TNL-1/IPNO-1/IPIF-" JOIN $current_IPIF JOIN "/IPADDRESSV4-" JOIN $current_IPADDRESSV4
					end
			end
	end
else
	begin
		add_param mplanenwDN "mPlaneIpAddressDN" ""
	end

define "tmpDN" sbtsRoot JOIN "/MGMNT-1/DNS-1"
if ( param_exist tmpDN "serverIpAddressSecondary" ) 
	begin
		add_param mplanenwDN "oamPeerIpAddress" get_param tmpDN "serverIpAddressSecondary"
	end
else
	begin
		add_param mplanenwDN "oamPeerIpAddress" "0.0.0.0"
	end

if ( param_exist sbtsMplaneDN "oamTls" ) add_param mplanenwDN "oamTls" get_param sbtsMplaneDN "oamTls"
if ( param_exist sbtsMplaneDN "tlsRenegotiationInterval" )
	begin
		add_param mplanenwDN "tlsRenegotiationInterval" get_param sbtsMplaneDN "tlsRenegotiationInterval"
	end
else
	begin
		add_param mplanenwDN "tlsRenegotiationInterval" "86400" 
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create PMCADM MO and populate with parameters

define "pmcadmDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/PMCADM-1"
add_object pmcadmDN
set_operation pmcadmDN "create"

if ( param_exist sbtsRoot JOIN "/MGMNT-1/PMCADM-1" "reportingIntervalPm" )
	begin
		add_param pmcadmDN "reportingIntervalPm" get_param sbtsRoot JOIN "/MGMNT-1/PMCADM-1" "reportingIntervalPm"
	end
else
	begin
		add_param pmcadmDN "reportingIntervalPm" "60min"
	end
	
add_param pmcadmDN "sdlMaxUploadFileNumber" "1"
add_param pmcadmDN "sdlPrimaryDestIp" "1.1.1.1"

#######################################################################################

#######################################################################################
#######################################################################################
#Create PMMNL if needed and populate with parameters

define "sbtspmDN" sbtsRoot JOIN "/MGMNT-1/PM-1"
define "pmmnlDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/PMMNL-1"

if ( param_exist sbtspmDN "s1X2TacStatisticsInterval" ) 
	begin
		add_object pmmnlDN
		set_operation pmmnlDN "create"
		add_param pmmnlDN "s1X2TacStatisticsInterval" get_param sbtspmDN "s1X2TacStatisticsInterval"
	end
	
if ( param_exist sbtspmDN "topFreqSyncStatisticsInterval" ) 
	begin
		if ( objects_count pmmnlDN ) == 0
			begin
				add_object pmmnlDN
				set_operation pmmnlDN "create"
			end
		add_param pmmnlDN "topFreqSyncStatisticsInterval" get_param sbtspmDN "topFreqSyncStatisticsInterval"		
	end
	
if ( param_exist sbtspmDN "topPhaseSyncStatisticsInterval" ) 
	begin
		if ( objects_count pmmnlDN ) == 0
			begin
				add_object pmmnlDN
				set_operation pmmnlDN "create"
			end
		add_param pmmnlDN "topPhaseSyncStatisticsInterval" get_param sbtspmDN "topPhaseSyncStatisticsInterval"		
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create SECADM and populate with parameters

define "secadmDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SECADM-1"
define "sbtsSecadmDN" sbtsRoot JOIN "/MGMNT-1/SECADM-1"
add_object secadmDN 
set_operation secadmDN "create"

add_param secadmDN "actServiceAccountSsh" "false"
add_param secadmDN "actServicePortState" "false"
add_param secadmDN "ethernetPortSecurityEnabled" get_param sbtsSecadmDN "ethernetPortSecurityEnabled"
add_param secadmDN "sshClientAliveTimer" get_param sbtsSecadmDN "sshClientAliveTimer"
add_param secadmDN "sshSessionLoginDelayTimer" get_param sbtsSecadmDN "sshSessionLoginDelayTimer"

if ( param_exist sbtsSecadmDN "serviceUserPublicKeys" )
	begin
		add_list secadmDN "serviceUserPublicKeys"
		for_list sbtsSecadmDN "serviceUserPublicKeys"
			begin
				add_complex_param secadmDN "serviceUserPublicKeys." JOIN $current_index
				add_param secadmDN "serviceUserPublicKeys." JOIN $current_index JOIN ".keyValue" get_param sbtsSecadmDN "serviceUserPublicKeys." JOIN $current_index JOIN ".keyValue"
				if ( param_exist sbtsSecadmDN "serviceUserPublicKeys." JOIN $current_index JOIN ".keyDescription" )
					begin
						add_param secadmDN "serviceUserPublicKeys." JOIN $current_index JOIN ".keyDescription" get_param sbtsSecadmDN "serviceUserPublicKeys." JOIN $current_index JOIN ".keyDescription"
					end
			end
	end


#######################################################################################

#######################################################################################
#######################################################################################
#Create SYNC MO and populate with parameters

define "syncDn" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1"
define "sbtsSyncDN" sbtsRoot JOIN "/SYNC-1"
add_object syncDn
set_operation syncDn "create"

define "btsSyncMode" get_param sbtsSyncDN "btsSyncMode"
add_param syncDn "btsSyncMode" btsSyncMode
add_param syncDn "manualFrameTimingAdjustment" get_param sbtsSyncDN "manualFrameTimingAdjustment"
#######################################################################################

#######################################################################################
#######################################################################################
#Create CLOCK MO and populate with parameters

define "clockDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1"
define "sbtsClockDN" sbtsRoot JOIN "/SYNC-1/CLOCKOUTPUTS-1"

add_object clockDN
set_operation clockDN "create"

define "index" 0
for_list sbtsSyncDN "referenceSourceList"
    begin
        define "referenceSourceListPrefix" "referenceSourceList." JOIN $current_index JOIN "."
        if ( param_exist sbtsSyncDN referenceSourceListPrefix JOIN "inputReference" ) && ( param_exist sbtsSyncDN referenceSourceListPrefix JOIN "inputReferencePriority" )
            begin
                define "inputReference" get_param sbtsSyncDN referenceSourceListPrefix JOIN "inputReference"
                define "inputReferencePriority" get_param sbtsSyncDN referenceSourceListPrefix JOIN "inputReferencePriority"

                define "syncInputPrio" inputReferencePriority
                if ( syncInputPrio > 3 )
                    define "syncInputPrio" 3

                define "syncInputType" inputReference
                if ( inputReference ) == "SYNCHUBBTS-1"
                    define "syncInputType" "1pps/ToD from Sync Hub Master"

                else if ( inputReference ) == "GNSSE-1"
                    define "syncInputType" "1pps/ToD from external GNSS receiver"

                else if ( inputReference ) == "INTGNSS-1"
                    define "syncInputType" "internal GNSS receiver"

                else if ( inputReference ) == "EXT2M-1"
                    define "syncInputType" "2.048MHz input"

                else if ( inputReference ) == "TOPF-1"
                    define "syncInputType" "TOPF"

                else if ( inputReference ) == "TOPP-1"
                    define "syncInputType" "TOPP"

                if ( btsSyncMode == "PhaseSync" )
	                if ( ( inputReference == "SYNCE-1" ) || ( inputReference == "SYNCE-2" ) )
	                	add_param featcadmDN "actHybridSynch" "true"

                if not ( param_exist clockDN "syncInputList" )
                    begin
                        add_list clockDN "syncInputList"
                    end

                add_complex_param clockDN "syncInputList." JOIN index
                add_param clockDN "syncInputList." JOIN index JOIN ".syncInputPrio" syncInputPrio
                add_param clockDN "syncInputList." JOIN index JOIN ".syncInputType" syncInputType

                define "index" index + 1
            end
    end

add_param clockDN "holdOverModeUsed" "false"
if not ( objects_count sbtsClockDN ) == 0
	begin
		if ( param_exist sbtsClockDN "outputConfiguration1Pps" ) add_param clockDN "outputConfiguration1Pps" get_param sbtsClockDN "outputConfiguration1Pps"
		if ( get_param clockDN "outputConfiguration1Pps" ) == "Enabled" add_param clockDN "outputConfiguration1Pps" "EnabledWithBtsInputReference"
		
		if ( param_exist sbtsClockDN "outputConfiguration2M048" ) add_param clockDN "outputConfiguration2M048" get_param sbtsClockDN "outputConfiguration2M048"
		if ( get_param clockDN "outputConfiguration2M048" ) == "Enabled" add_param clockDN "outputConfiguration2M048" "EnabledWithBtsInputReference"
		
		if ( param_exist sbtsClockDN "outputConfigurationFCLK" ) add_param clockDN "outputConfigurationFCLK" get_param sbtsClockDN "outputConfigurationFCLK"
		if ( get_param clockDN "outputConfigurationFCLK" ) == "Enabled" add_param clockDN "outputConfigurationFCLK" "EnabledWithBtsInputReference"
		
		if ( param_exist sbtsClockDN "outputConfigurationPdh" ) add_param clockDN "outputConfigurationPdh" get_param sbtsClockDN "outputConfigurationPdh"
		if ( get_param clockDN "outputConfigurationPdh" ) == "Enabled" add_param clockDN "outputConfigurationPdh" "EnabledWithBtsInputReference"
	end
add_param clockDN "sModDN" mrbtsRoot JOIN "/EQM-1/APEQM-1/CABINET-1/SMOD-1"
#######################################################################################

#######################################################################################
#######################################################################################
#Create 2nd CLOCK MO in case FSMF + FSMF

if ( objects_count "MRBTS/EQM/APEQM/CABINET/SMOD" ) == 2
	begin
		copy_object mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-2"
		add_param mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-2" "sModDN" mrbtsRoot JOIN "/EQM-1/APEQM-1/CABINET-2/SMOD-1"
	end

#######################################################################################

#######################################################################################
#######################################################################################
#Create CLOCK_FDD 

		define "clockfddDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/CLOCK_FDD-1"
		add_object clockfddDN
		set_operation clockfddDN "create"
		add_param clockfddDN "syncMaster" "true" 

#######################################################################################


#######################################################################################
#######################################################################################
#clear 2nd CLOCK unnecessary params

for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK-2"
	begin
		if param_exist $current_dist_name "outputConfiguration1Pps" del_param $current_dist_name "outputConfiguration1Pps"
		if param_exist $current_dist_name "outputConfiguration2M048" del_param $current_dist_name "outputConfiguration2M048" 
		if param_exist $current_dist_name "outputConfigurationFCLK" del_param $current_dist_name "outputConfigurationFCLK" 
		if param_exist $current_dist_name "outputConfigurationPdh" del_param $current_dist_name "outputConfigurationPdh" 
		if param_exist $current_dist_name "syncInputList" del_param $current_dist_name "syncInputList" 
		
		add_object $current_dist_name JOIN "/CLOCK_FDD-1"
		set_operation $current_dist_name JOIN "/CLOCK_FDD-1" "create"
		add_param $current_dist_name JOIN "/CLOCK_FDD-1" "syncMaster" "false"
		
	end
	


#######################################################################################
#######################################################################################
#Copy CLOCK_FDD to second CLOCK if exists
#
#define "clockfddDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/CLOCK_FDD-1"
#if ( objects_count clockfddDN ) > 0
#	begin
#		if ( objects_count "MRBTS/MNL/MNLENT/SYNC/CLOCK" ) > 1
#			copy_object mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/CLOCK_FDD-1" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-2/CLOCK_FDD-1"
#	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create GNSSE if exists and populate with parameters

define "sbtsGnsseDN" sbtsRoot JOIN "/SYNC-1/GNSSE-1"

define "gnsseDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/GNSSE-1"

if ( objects_count sbtsGnsseDN ) > 0
	begin
		
		add_object gnsseDN
		set_operation gnsseDN "create"
		
		if ( param_exist sbtsGnsseDN "outputLnaPowerSupply" ) add_param gnsseDN "actGnssOutputLnaPowerSupply" get_param sbtsGnsseDN "outputLnaPowerSupply"
		add_param gnsseDN "gnssControlMode" "GPS-GLONASS"
		if ( param_exist sbtsGnsseDN "connectionSignalPropagationDelay" ) add_param gnsseDN "gnssLineDelay" get_param sbtsGnsseDN "connectionSignalPropagationDelay"
		if ( param_exist sbtsGnsseDN "holdOverModeConfig" ) add_param gnsseDN "gnssReceiverHoldoverMode" get_param sbtsGnsseDN "holdOverModeConfig"

			add_param gnsseDN "locationMode" "automatic"
	
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create NTP object and populate with parameters

define "ntpDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/NTP-1"
define "sbtsTimeDN" sbtsRoot JOIN "/SYNC-1/TIME-1"

add_object ntpDN
set_operation ntpDN "create"

if ( param_exist sbtsTimeDN "ntpAlarmingThreshold" ) add_param ntpDN "ntpAlarmingThreshold" get_param sbtsTimeDN "ntpAlarmingThreshold"
if ( param_exist sbtsTimeDN "ntpServersList" )
	begin
		add_list ntpDN "ntpServerIpAddrList"
		for_list sbtsTimeDN "ntpServersList"
			begin
				if ( param_exist sbtsTimeDN "ntpServersList." JOIN $current_index JOIN ".ntpServerIp" ) add_param ntpDN "ntpServerIpAddrList." JOIN $current_index get_param sbtsTimeDN "ntpServersList." JOIN $current_index JOIN ".ntpServerIp"
			end
	end
#######################################################################################

#######################################################################################
#######################################################################################
# No configuration for NTP client on secondary core is required

if ( objects_count "MRBTS/MNL/MNLENT/SYNC/CLOCK" ) == 2
    begin
        define "ntpOnSecondaryClockDn" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-2/NTP-1"
        add_object ntpOnSecondaryClockDn
        set_operation ntpOnSecondaryClockDn "create"
    end

#######################################################################################

#######################################################################################
#######################################################################################
#Copy PDH from SBTS and populate with parameters

for_objects "SBTS/SYNC/PDH"
	begin
		define "pdhDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/PDH-" JOIN $current_PDH
		copy_object $current_dist_name pdhDN
		if ( param_exist $current_dist_name "ppttId" )
			begin
				define "ppttparDN" get_param $current_dist_name "ppttId"
				define "ppttparDN" ppttparDN JOIN "A"
				define "ppttparDNtemp" replace ppttparDN "\D+" "" flags "g"
				add_param pdhDN "ppttDN" mrbtsRoot JOIN "/TNLSVC-1/TNL-1/PPTT-" JOIN ppttparDNtemp
				del_param pdhDN "ppttId"
			end
	end
#######################################################################################


#######################################################################################
#######################################################################################
#Copy SYNCE from SBTS and populate with parameters

for_objects "SBTS/SYNC/SYNCE"
	begin
		define "synceDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/SYNCE-" JOIN $current_SYNCE
		copy_object $current_dist_name synceDN
	
		if ( param_exist $current_dist_name "ethlkId" )
			begin
				define "synceEthlkId" get_param $current_dist_name "ethlkId"
				define "ethlnkparDN" get_param $current_dist_name "ethlkId"
				define "ethlnkparDN" ethlnkparDN JOIN "A"
				define "ethlnkparDN" replace ethlnkparDN "\D+" "" flags "g"
				add_param synceDN "ethlkDN" mrbtsRoot JOIN "/TNLSVC-1/TNL-1/ETHSVC-1/ETHLK-" JOIN ethlnkparDN
				del_param synceDN "ethlkId"
				
				for_objects "MRBTS/TNLSVC/TNL/ETHSVC/L2SWI/BRGPRT"
					begin
						if ( param_exist $current_dist_name "ethlkId" )
							begin
								define "ethlkIdVal"  get_param $current_dist_name "ethlkId"  
								if ( synceEthlkId == ethlkIdVal  ) add_param synceDN "ethlkDN" get_param $current_dist_name "ethlkDN"
								del_param $current_dist_name "ethlkId"
								
							end
						
					end
			end
		
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy TOP from SBTS and populate with parameters

for_objects "SBTS/SYNC/TOP"
	begin
		define "topDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/TOP-" JOIN $current_TOP
		copy_object $current_dist_name topDN
		
		if ( objects_count "MRBTS/TNLSVC/TNL/IPNO/IPIF/IPADDRESSV4" ) == 0
			begin
				add_param topDN "sPlaneIpAddressDN" ""
				del_param topDN "sPlaneIpAddress"
			end
		
		for_objects "MRBTS/TNLSVC/TNL/IPNO/IPIF/IPADDRESSV4"
			begin
				if ( param_exist $current_dist_name "localIpAddr" ) define "tempIp" get_param $current_dist_name "localIpAddr"
					else define "tempIp" "A"
				if ( param_exist topDN "sPlaneIpAddress" ) define "tempIp2" get_param topDN "sPlaneIpAddress"
					else define "tempIp2" "B"
				if tempIp == tempIp2
					begin
						add_param topDN "sPlaneIpAddressDN" $current_dist_name
						del_param topDN "sPlaneIpAddress"
					end
			end
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy TOPF from SBTS and populate with parameters

for_objects "SBTS/SYNC/TOP/TOPF"
	begin
		define "topfDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/TOP-1/TOPF-" JOIN $current_TOPF
		copy_object $current_dist_name topfDN
		
		if ( param_exist topfDN "acceptedClockQualityFreq" )
			begin
				add_list topfDN "acceptedClockClass"
				for_list topfDN "acceptedClockQualityFreq"
					begin
						add_param topfDN "acceptedClockClass." JOIN $current_index $current_value
					end
				del_param topfDN "acceptedClockQualityFreq"
			end
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Copy TOPP from SBTS and populate with parameters

for_objects "SBTS/SYNC/TOP/TOPP"
	begin
		define "toppDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/CLOCK-1/TOP-1/TOPP-" JOIN $current_TOPP

		copy_object $current_dist_name toppDN
		
		if ( param_exist toppDN "acceptedClockQualityPhase" )
			begin
				add_list toppDN "acceptedClockClass"
				for_list toppDN "acceptedClockQualityPhase"
					begin
						add_param toppDN "acceptedClockClass." JOIN $current_index $current_value
					end
				del_param toppDN "acceptedClockQualityPhase"
			end
		
		if ( param_exist toppDN "phaseErrorComp" )
			begin
				if ( param_exist toppDN "topMasters" )
					begin
						add_param toppDN "topMasters.0.phaseErrorComp" get_param toppDN "phaseErrorComp"
					end
				else
					begin
						add_list toppDN "topMasters"
						add_complex_param toppDN "topMasters.0"
						add_param toppDN "topMasters.0.phaseErrorComp" get_param toppDN "phaseErrorComp"
					end
				del_param toppDN "phaseErrorComp"
			end
			
        if ( param_exist toppDN "topEthMulticastAddress" )
            begin
                if ( param_exist toppDN "topMasters" )
                    begin
                        add_param toppDN "topMasters.0.topEthMulticastAddress" get_param toppDN "topEthMulticastAddress"
                    end
                else
                    begin
                        add_list toppDN "topMasters"
                        add_complex_param toppDN "topMasters.0"
                        add_param toppDN "topMasters.0.topEthMulticastAddress" get_param toppDN "topEthMulticastAddress"
                    end

                del_param toppDN "topEthMulticastAddress"
            end
	end

#######################################################################################

#######################################################################################
#######################################################################################
#Create TIME and populate with parameters

define "timeDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/SYNC-1/TIME-1"
add_object timeDN
set_operation timeDN "create"

for_objects "SBTS/SYNC/TIME"
	begin
		add_param timeDN "timeZone" get_param $current_dist_name "timeZone"
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create TAC and TAC/LTAC if needed and populate with parameters

define "tacDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/TAC-1"
define "create" "false" 

for_objects "SBTS/BTSSCL"
	begin
        define "btssclDn" $current_dist_name

        add_object tacDN
        set_operation tacDN "create"

        for_list btssclDn "tacList"
            begin
                define "ltacId" $current_index + 1

                if ( ltacId ) <= 2
                    begin
                        define "ltacDN" tacDN JOIN "/LTAC-" JOIN ltacId

                        add_object ltacDN
                        set_operation ltacDN "create"

                        if ( param_exist btssclDn "tacList." JOIN $current_index JOIN ".tacLimitGbrEmergency" )
                            begin
                                define "tacLimitGbrEmergency" get_param btssclDn "tacList." JOIN $current_index JOIN ".tacLimitGbrEmergency"

                                add_param ltacDN "tacLimitGbrEmergency" tacLimitGbrEmergency
                            end

                        if ( param_exist btssclDn "tacList." JOIN $current_index JOIN ".tacLimitGbrHandover" )
                            begin
                                define "tacLimitGbrHandover" get_param btssclDn "tacList." JOIN $current_index JOIN ".tacLimitGbrHandover"

                                add_param ltacDN "tacLimitGbrHandover" tacLimitGbrHandover
                            end 

                        if ( param_exist btssclDn "tacList." JOIN $current_index JOIN ".tacLimitGbrNormal" )
                            begin
                                define "tacLimitGbrNormal" get_param btssclDn "tacList." JOIN $current_index JOIN ".tacLimitGbrNormal"

                                add_param ltacDN "tacLimitGbrNormal" tacLimitGbrNormal
                            end 

                        if ( param_exist btssclDn "tacList." JOIN $current_index JOIN ".transportNwId" )
                            begin
                                define "transportNwId" get_param btssclDn "tacList." JOIN $current_index JOIN ".transportNwId"

                                add_param ltacDN "transportNwId" transportNwId
                            end
                    end
            end
            if ( objects_count "LTAC" ) == 0
            			begin
            				define "ltacDN" tacDN JOIN "/LTAC-1"
            				add_object ltacDN
            				set_operation ltacDN "create"
            			end
    end

#######################################################################################

#######################################################################################
#######################################################################################
#Create TRBLCADM (mandatory in SRAN16.x) and populate with parameters

define "trblcadmDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/TRBLCADM-1"
for_objects "SBTS/MGMNT/TRBLCADM"
	begin
		define "sbtstrblcadmDN" $current_dist_name  
	end
add_object trblcadmDN
set_operation trblcadmDN "create"

add_param trblcadmDN "actCoreDumpFileCollection" "true"
add_param trblcadmDN "actRemoteSyslogTransmission" get_param sbtstrblcadmDN "actRemoteSyslogTransmission"
if ( param_exist sbtstrblcadmDN "remoteSyslogConfig" )
	begin
		add_list trblcadmDN "remoteSyslogConfig"
		add_complex_param trblcadmDN "remoteSyslogConfig.0"
		if ( param_exist sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogDSCP" ) add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogDSCP" get_param sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogDSCP" 
		if ( param_exist sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogFormat" ) add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogFormat" get_param sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogFormat"
		if ( param_exist sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogServerIPaddress" ) add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogServerIPaddress" get_param sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogServerIPaddress" 
			else add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogServerIPaddress" "0.0.0.0"
		if ( param_exist sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogServerPortNo" ) add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogServerPortNo" get_param sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogServerPortNo"
		if ( param_exist sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogTransmitDuration" ) add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogTransmitDuration" get_param sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogTransmitDuration"
		if ( param_exist sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogTransportProtocol" ) add_param trblcadmDN "remoteSyslogConfig.0.remoteSyslogTransportProtocol" get_param sbtstrblcadmDN "remoteSyslogConfig.0.remoteSyslogTransportProtocol"   
	end

#######################################################################################

#######################################################################################
#######################################################################################
#Create CELLMAPPING

define "cellmappingDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CELLMAPPING-1"
add_object cellmappingDN
set_operation cellmappingDN "create"
#######################################################################################

#######################################################################################
#######################################################################################
#Create LCELC
# PR248213: [OAM_SCT][SBTS17][RP1062] To small range for GNCEL in SBTS17 in comparison to LCELC in SBTS16
define "lcelcid" 0
for_objects "SBTS/BTSSCC/LCELC"
	begin
		define "lcelcid" lcelcid + 1
		define "lcelcDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CELLMAPPING-1/LCELC-" JOIN lcelcid
		add_object lcelcDN
		set_operation lcelcDN "create"		
		
		# map old LCELC id to new one
		define "oldLcelcId" $current_LCELC
		for_objects "LCELC/CHANNELGROUP"
			begin
				if ( $current_LCELC == oldLcelcId ) add_param $current_dist_name "newLcelcId" lcelcid
			end
		for_objects "LCELC/CHANNELGROUP/CHANNEL"
			begin
				if ( $current_LCELC == oldLcelcId ) add_param $current_dist_name "newLcelcId" lcelcid
			end
	end

#######################################################################################

#######################################################################################
#######################################################################################
#Create LCELC/CHANNELGROUP MOs

for_objects "LCELC/CHANNELGROUP"
	begin
		if ( param_exist $current_dist_name "newLcelcId" )
			begin
				define "newLcelcId" get_param $current_dist_name "newLcelcId"
				define "channelgoupDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CELLMAPPING-1/LCELC-" JOIN newLcelcId JOIN "/CHANNELGROUP-" JOIN $current_CHANNELGROUP
				del_param $current_dist_name "newLcelcId"
				add_object channelgoupDN
				set_operation channelgoupDN "create"
			end
	end
#######################################################################################

#######################################################################################
#######################################################################################
#Create LCELC/CHANNELGROUP/CHANNEL MOs

for_objects "LCELC/CHANNELGROUP/CHANNEL"
	begin
		if ( param_exist $current_dist_name "newLcelcId" )
			begin
				define "newLcelcId" get_param $current_dist_name "newLcelcId"
				define "channelDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/CELLMAPPING-1/LCELC-" JOIN newLcelcId JOIN "/CHANNELGROUP-" JOIN $current_CHANNELGROUP JOIN "/CHANNEL-" JOIN $current_CHANNEL
				del_param $current_dist_name "newLcelcId"
				copy_object $current_dist_name channelDN
				set_operation channelDN "create"
			end
	end

#######################################################################################

#######################################################################################
#######################################################################################
#FIX LCELC/CHANNELGROUP/CHANNEL parameters

for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELC/CHANNELGROUP/CHANNEL"
	begin
		define "channelDN" $current_dist_name
		define "antlId" get_param channelDN "antlDn"
		define "antlId" replace antlId sbtsRoot ""
		define "antlId" replace antlId "\D+" "" flags "g"
		for_objects "MRBTS/EQM/APEQM/RMOD/ANTL"
			begin
				if antlId == $current_ANTL
					begin
						add_param channelDN "antlDN" $current_dist_name
						del_param channelDN "antlDn"
						add_param channelDN "phyAntUDN" mrbtsRoot JOIN "/EQM-1/APEQM-1/PHYANT-" JOIN antlId JOIN "/PHYANTU-1"
					end
			end
	end
#######################################################################################

#######################################################################################
#######################################################################################
#create LCELW/CHANNELGROUP/CHANNEL MOIs

for_objects "MRBTS/WNBTS/WNCEL"
	begin
		define "lcelwDn" get_param $current_dist_name "lCelwDN"    	
		add_object lcelwDn											
		set_operation lcelwDn "create"								
		define "chgrDn" lcelwDn JOIN "/CHANNELGROUP-1"				
		add_object chgrDn
		set_operation chgrDn "create"
		define "chId" 0
		for_list $current_dist_name "resourceList"
			begin
				define "chId" chId + 1
				define "chDn" chgrDn JOIN "/CHANNEL-" JOIN chId
				add_object chDn
				set_operation chDn "create"
				add_param chDn "antlId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".antlId"
				define "txRxUsage" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".txRxUsage"
				if txRxUsage == "TXRX"
					define "usage" "TX"
				else
					define "usage" txRxUsage
				add_param chDn "direction" usage
				if txRxUsage == "TXRX"
					begin
						define "chId" chId + 1
						define "chDn" chgrDn JOIN "/CHANNEL-" JOIN chId
						add_object chDn
						set_operation chDn "create"
						add_param chDn "antlId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".antlId"
						add_param chDn "direction" "RX"
					end
			end
		del_param $current_dist_name "resourceList"
	end
for_objects "LCELW/CHANNELGROUP/CHANNEL"
	begin
		define "chDn" $current_dist_name
		for_objects "RMOD/ANTL"
			if $current_ANTL == get_param chDn "antlId"
				add_param chDn "antlDN" $current_dist_name
				del_param chDn "antlId"
		for_objects "LOGLINK"
			if ( get_param chDn "antlDN" ) == ( get_param $current_dist_name "firstEndpointDN" ) && ( replace get_param $current_dist_name "secondEndpointDN" "MRBTS-\d+/EQM-\d+/APEQM-\d+/PHYANT-\d+/PHYANTU-\d+" "" flags "g" ) == ""
				add_param chDn "phyAntUDN" get_param $current_dist_name "secondEndpointDN"
	end
#######################################################################################

#######################################################################################
#######################################################################################
#create LCELL/CHANNELGROUP/CHANNEL MOIs

for_objects "SBTS/BTSSCL/LCELL"
	begin
		define "lcellDn" cellmappingDN JOIN "/LCELL-" JOIN $current_LCELL
		add_object lcellDn											
		set_operation lcellDn "create"
		define "chId" 0
		for_list $current_dist_name "resourceList"
			begin
				define "chgrId" 1
				if param_exist $current_dist_name "resourceList." JOIN $current_index JOIN ".subCellId"
					define "chgrId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".subCellId"
				define "chgrDn" lcellDn JOIN "/CHANNELGROUP-" JOIN chgrId
				define "chgrOn" objects_count chgrDn
				if chgrOn < 1
					begin
						add_object chgrDn
						set_operation chgrDn "create"
					end
				define "chOn" objects_count chgrDn JOIN "/CHANNEL"
				define "chId" chOn + 1
				define "chDn" chgrDn JOIN "/CHANNEL-" JOIN chId
				add_object chDn
				set_operation chDn "create"
				add_param chDn "antlId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".antlId"
				define "txRxUsage" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".txRxUsage"
				if txRxUsage == "TXRX"
					define "usage" "TX"
				else
					define "usage" txRxUsage
				add_param chDn "direction" usage
				if txRxUsage == "TXRX"
					begin
						define "chId" chId + 1
						define "chDn" chgrDn JOIN "/CHANNEL-" JOIN chId
						add_object chDn
						set_operation chDn "create"
						add_param chDn "antlId" get_param $current_dist_name "resourceList." JOIN $current_index JOIN ".antlId"
						add_param chDn "direction" "RX"
					end
			end
	end
for_objects "LCELL/CHANNELGROUP/CHANNEL"
	begin
		define "chDn" $current_dist_name
		for_objects "RMOD/ANTL"
			if $current_ANTL == get_param chDn "antlId"
				add_param chDn "antlDN" $current_dist_name
		del_param chDn "antlId"
		for_objects "LOGLINK"
			if ( get_param chDn "antlDN" ) == ( get_param $current_dist_name "firstEndpointDN" ) && ( replace get_param $current_dist_name "secondEndpointDN" "MRBTS-\d+/EQM-\d+/APEQM-\d+/PHYANT-\d+/PHYANTU-\d+" "" flags "g" ) == ""
				add_param chDn "phyAntUDN" get_param $current_dist_name "secondEndpointDN"
	end
#######################################################################################
### Workaround: If SBTS16 configuration is GSM C-type and LTE K-type, change GSM to C1-type

# For all GSM TRXs
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELC/CHANNELGROUP"
	begin
		# Check if RMOD is Rel2.2/2.3
		define "LCELC_CHANNELGROUP" $current_dist_name
		define "RMOD_REL_OK" "true"

		for_objects LCELC_CHANNELGROUP JOIN "/CHANNEL"
			begin
				define "LCELC_CHANNEL" $current_dist_name

				if ( param_exist LCELC_CHANNEL "antlDN" )
					begin
						define "CHANNEL_ANTL" get_param LCELC_CHANNEL "antlDN"
						define "CHANNEL_RMOD" replace CHANNEL_ANTL "(.*)/ANTL-(.*)" "$1"

						if ( param_exist CHANNEL_RMOD "prodCodePlanned" )
							begin
								define "RMOD_PRODCODE" get_param CHANNEL_RMOD "prodCodePlanned"
								# get only main product code
								define "RMOD_PRODCODE" replace RMOD_PRODCODE "(.*)\.(.*)" "$1"

								if not ( ( RMOD_PRODCODE == "472142A" ) ||
									 	 ( RMOD_PRODCODE == "472678A" ) ||
									 	 ( RMOD_PRODCODE == "472083A" ) ||
									 	 ( RMOD_PRODCODE == "472573A" ) ||
									 	 ( RMOD_PRODCODE == "472084A" ) ||
	 									 ( RMOD_PRODCODE == "472501A" ) ||
		 								 ( RMOD_PRODCODE == "472166A" ) ||
			 							 ( RMOD_PRODCODE == "472569A" ) ||
				 						 ( RMOD_PRODCODE == "472679A" ) ||
					 					 ( RMOD_PRODCODE == "472143A" ) ||
						 				 ( RMOD_PRODCODE == "472574A" ) )
						 				 	define "RMOD_REL_OK" "false"
							end
						else
							define "RMOD_REL_OK" "false"
					end
				else
					define "RMOD_REL_OK" "false"
			end

		if ( RMOD_REL_OK == "true" )
			begin

				# Check if GSM is C-type
				# e.g.
				# TRX1.TX: RF1, ant1
				# TRX1.RX1: RF1, ant1 
				# TRX1.RX2: RF2, ant1 

				define "GSM_ANTL_MAIN" ""
				define "GSM_ANTL_DIV" ""
				define "GSM_ANTL_MAIN_RX_OK" "false"
				define "GSM_CHANNEL_DIV" ""
				
				if ( objects_count LCELC_CHANNELGROUP JOIN "/CHANNEL" ) == 3
					begin
						# Get ANTL MAIN (TX)
						for_objects LCELC_CHANNELGROUP JOIN "/CHANNEL"
							begin
								if ( param_exist $current_dist_name "direction" )
									if ( "TX" == ( get_param $current_dist_name "direction" ) )
										if ( param_exist $current_dist_name "antlDN" )
											define "GSM_ANTL_MAIN" get_param $current_dist_name "antlDN"
							end

						# Check RX
						for_objects LCELC_CHANNELGROUP JOIN "/CHANNEL"
							begin
								if ( param_exist $current_dist_name "direction" )
									if ( "RX" == ( get_param $current_dist_name "direction" ) )
										begin
											if ( param_exist $current_dist_name "antlDN" )
												begin
													define "ANTL" get_param $current_dist_name "antlDN"

													# Check 1 RX with same ANTL as TX
													if ( ANTL == GSM_ANTL_MAIN )
														define "GSM_ANTL_MAIN_RX_OK" "true"
													else
														begin
															# Check 1 RX with different RMOD and same antPortId
															#checking C configuration

															define "RMOD_MAIN" replace GSM_ANTL_MAIN "(.*)/ANTL-(.*)" "$1"
															define "RMOD_DIV" replace ANTL "(.*)/ANTL-(.*)" "$1"
															
															define "ANTL_PORTID_MAIN" ""
															define "ANTL_PORTID_DIV" ""
															if ( param_exist GSM_ANTL_MAIN "antPortId" ) define "ANTL_PORTID_MAIN" get_param GSM_ANTL_MAIN "antPortId"
															if ( param_exist ANTL "antPortId" ) define "ANTL_PORTID_DIV" get_param ANTL "antPortId"

															if not ( RMOD_MAIN == RMOD_DIV )
																if ( ANTL_PORTID_MAIN == ANTL_PORTID_DIV )
																	begin
																		define "GSM_ANTL_DIV" ANTL
																		define "GSM_CHANNEL_DIV" $current_dist_name
																	end
															#checking B configuration
															if ( ( ANTL_PORTID_MAIN == ANTL_PORTID_DIV + 2 ) || ( ANTL_PORTID_MAIN == ANTL_PORTID_DIV - 2 ) )  &&  ( RMOD_MAIN == RMOD_DIV )
																	begin
																		define "GSM_ANTL_DIV" ANTL
																		define "GSM_CHANNEL_DIV" $current_dist_name
																	end
														end
														
												end
										end
							end
					end

				# If GSM is C-type or B-type
				if not ( ( GSM_ANTL_MAIN == "" ) || ( GSM_ANTL_DIV == "" ) || ( GSM_ANTL_MAIN_RX_OK == "false" ) )
					begin
						# Check if LTE is J/K-type
						# e.g.
						# LCR1.TX1: RF1, ant1
						# LCR1.RX1: RF1, ant1
						# LCR1.TX2: RF2, ant1
						# LCR1.RX2: RF2, ant1
						# LCR1.RX3: RF1, ant2
						# LCR1.RX4: RF2, ant2
						define "LTE_KTYPE" "false"

						# Check if LTE is J/K-type (this implementation covers both cases)
						for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELL"
							begin
								define "LTE_LCELL" $current_dist_name

								if ( objects_count LTE_LCELL JOIN "/CHANNELGROUP/CHANNEL" ) == 6
									begin
										# TX with GSM_ANTL_MAIN
										define "KTYPE_CHECK1" "false"
										# RX with GSM_ANTL_MAIN
										define "KTYPE_CHECK2" "false"
										# TX with GSM_ANTL_DIV
										define "KTYPE_CHECK3" "false"
										# RX with GSM_ANTL_DIV
										define "KTYPE_CHECK4" "false"
										# RX with GSM_ANTL_MAIN+1
										define "KTYPE_CHECK5" "false"
										# RX with GSM_ANTL_DIV+1
										define "KTYPE_CHECK6" "false"

										for_objects LTE_LCELL JOIN "/CHANNELGROUP/CHANNEL"
											begin
												if ( ( param_exist $current_dist_name "direction" ) && ( param_exist $current_dist_name "antlDN" ) )
													begin
														define "DIRECTION" get_param $current_dist_name "direction"
														define "ANTL" get_param $current_dist_name "antlDN"

														if ( DIRECTION == "TX" )
															begin
																if ( ANTL == GSM_ANTL_MAIN ) define "KTYPE_CHECK1" "true"
																if ( ANTL == GSM_ANTL_DIV ) define "KTYPE_CHECK3" "true"
															end

														if ( DIRECTION == "RX" )
															begin
																if ( ANTL == GSM_ANTL_MAIN ) define "KTYPE_CHECK2" "true"
																if ( ANTL == GSM_ANTL_DIV ) define "KTYPE_CHECK4" "true"

																define "ANTL_ID" replace GSM_ANTL_MAIN "(.*)-(.*)" "$2"
																define "ANTL_ID" ANTL_ID + 1
																define "GSM_ANTL_MAIN_PLUS1" replace GSM_ANTL_MAIN "(.*)-(.*)" "$1"
																define "GSM_ANTL_MAIN_PLUS1" GSM_ANTL_MAIN_PLUS1 JOIN "-" JOIN ANTL_ID
																if ( ANTL == GSM_ANTL_MAIN_PLUS1 ) define "KTYPE_CHECK5" "true"

																define "ANTL_ID" replace GSM_ANTL_DIV "(.*)-(.*)" "$2"
																define "ANTL_ID" ANTL_ID + 1
																define "GSM_ANTL_DIV_PLUS1" replace GSM_ANTL_DIV "(.*)-(.*)" "$1"
																define "GSM_ANTL_DIV_PLUS1" GSM_ANTL_DIV_PLUS1 JOIN "-" JOIN ANTL_ID
																if ( ANTL == GSM_ANTL_DIV_PLUS1 ) define "KTYPE_CHECK6" "true"
															end
													end
											end

										if ( ( KTYPE_CHECK1 == "true" ) && ( KTYPE_CHECK2 == "true" ) && ( KTYPE_CHECK3 == "true" ) &&
											 ( KTYPE_CHECK4 == "true" ) && ( KTYPE_CHECK5 == "true" ) && ( KTYPE_CHECK6 == "true" ) )
											 	define "LTE_KTYPE" "true"
									end

							end

						# Update GSM to B1 or C1-type (RX DIV to next ANTL, i.e. +1)
						if ( LTE_KTYPE == "true" )
							begin
								define "ANTL_ID" replace GSM_ANTL_DIV "(.*)-(.*)" "$2"
								define "ANTL_ID" ANTL_ID + 1
								define "GSM_ANTL_DIV_PLUS1" replace GSM_ANTL_DIV "(.*)-(.*)" "$1"
								define "GSM_ANTL_DIV_PLUS1" GSM_ANTL_DIV_PLUS1 JOIN "-" JOIN ANTL_ID
								add_param GSM_CHANNEL_DIV "antlDN" GSM_ANTL_DIV_PLUS1
							end
					end
			end
	end

#######################################################################################

for_objects "MRBTS/GNBTS/GNBCF/GNCEL"
    begin
        define "gncelDn" $current_dist_name

        if ( param_exist gncelDn "lcelcId" )
            begin
                define "lcelcId" get_param gncelDn "lcelcId"

                define "lcelcDn" "MRBTS-" JOIN $current_MRBTS JOIN "/MNL-1/MNLENT-1/CELLMAPPING-1/LCELC-" JOIN lcelcId
                define "channelGroupsDn" lcelcDn JOIN "/CHANNELGROUP"

                if ( objects_count channelGroupsDn ) == 0
                    begin
                        if ( objects_count lcelcDn ) == 1
                            del_object lcelcDn
                        
                        del_object gncelDn
                    end
            end
    end

#######################################################################################
#######################################################################################
#create FMCADM object MNL/MNLENT/FMCADM

define "fmcadmDN" mrbtsRoot JOIN "/MNL-1/MNLENT-1/FMCADM-1"
add_object fmcadmDN
set_operation fmcadmDN "create"

#######################################################################################
# copy parameters from SYNCHUBBTS

define "syncHubBtsDn" sbtsSyncDN JOIN "/SYNCHUBBTS-1"

if ( objects_count syncHubBtsDn ) == 1
    begin
        if ( param_exist syncHubBtsDn "connectionSignalPropagationDelay" )
            begin
                define "connectionSignalPropagationDelay" get_param syncHubBtsDn "connectionSignalPropagationDelay"

                add_param clockDN "totalDelayFromSHM" connectionSignalPropagationDelay
            end
    end

#######################################################################################
#Set proper versions and adaptations to MNL subtree

for_objects "MRBTS/MNL"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/AMGR"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/AMGR/LUAC"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/BBADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/CAPADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/CAPADM/CAPLIM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/CERTH"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/CERTH/CMP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/CERTH/CRLH"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/CERTH/CRLH/CRLDPCONFIG"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/DNS"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/FEATCADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end
	
for_objects "MRBTS/MNL/MNLENT/MPLANENW"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/PMCADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/PMMNL"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SECADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/CLOCK_FDD"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/GNSSE"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/NTP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/PDH"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/SYNCE"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/TOP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/TOP/TOPF"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	

for_objects "MRBTS/MNL/MNLENT/SYNC/CLOCK/TOP/TOPP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/SYNC/TIME"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	

for_objects "MRBTS/MNL/MNLENT/TAC"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end		
	
for_objects "MRBTS/MNL/MNLENT/TAC/LTAC"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/TRBLCADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELC"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELC/CHANNELGROUP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELC/CHANNELGROUP/CHANNEL"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELW"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELW/CHANNELGROUP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELW/CHANNELGROUP/CHANNEL"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	

for_objects "MRBTS/MNL/MNLENT/FMCADM"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELL"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELL/CHANNELGROUP"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	
	
for_objects "MRBTS/MNL/MNLENT/CELLMAPPING/LCELL/CHANNELGROUP/CHANNEL"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	

for_objects "MRBTS/MNL/NOTES"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end	

for_objects "MRBTS/MNL/NOTES/NOTE"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end		

for_objects "MRBTS/MNL/MNL_R"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end

for_objects "MRBTS/MNL/CMD"
	begin
		set_version $current_dist_name "MNL17_1610_008"
		set_adaptation $current_dist_name "com.nokia.srbts.mnl"
	end

for_objects "MRBTS/MNL/TRBLCADM_R"
	begin
		set_version $current_dist_name "MNL17_1610_008"
	end

#######################################################################################
