####################################
## SCFD file version: 0.15        ##
## PDDB version: LN7.0_1406_016   ##
####################################

#General checking for rule file execution
check_version minor LN8.0
check_version minor FLF15A
check_version minor LN9.0

# v0.15
check_version minor FLC15A
check_version minor FLC16
# v0.15 end

# v0.14 PR038972: Upgrade from FLF16 to FLF16 builds go RNW - Incorrect on FZM FDD trunk
check_version minor FLF16
# v0.14 end

check_version minor FLF16A

# v0.2 begin
##############################################################################################################################
# LTE2210 Multi-Vendor intra-frequency load balancing extension
##############################################################################################################################

dependence_add_param minor LNCEL actEicic true applyFeicicFunctionality true
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL applyFeicicFunctionality = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} cellType != CONST "large" && PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} actDLCAggr == CONST "true" ? CONST "false" :
# v0.8 PR 118175ESPE01: [RL70] - Upgrade failed due to invalid SCF file if actEicic is enabled: value changed from 1 ==> adaptive
dependence_add_param minor LNCEL actEicic true eIcicCioAdaptAlgo adaptive
# v0.8 PR 118175ESPE01: [RL70] - Upgrade failed due to invalid SCF file if actEicic is enabled END

#v0.13 PR 152411ESPE02: eICIC parameters wrongly added during SW upgrade on FZM
#dependence_add_param minor LNCEL actEicic true eIcicMaxCre 10
#dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL eIcicMaxCre = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} applyFeicicFunctionality == CONST "false" ? CONST 6 :
#dependence_add_param minor LNCEL actEicic true eIcicPartnerCacAbsTarget 10
#dependence_add_param minor LNCEL actEicic true eIcicPartnerCacTarget 20
#dependence_add_param minor LNCEL actEicic true multCioAdaptExecEicic 5
#v0.13 PR 152411ESPE02: eICIC parameters wrongly added during SW upgrade on FZM END

##############################################################################################################################
# LTE1113 eICIC  macro
##############################################################################################################################

del_param minor LNCEL eIcicAbsAdaptationThreshold1To0

##############################################################################################################################
# LTE1387 Intra eNB Inter-frequency load balancing
##############################################################################################################################

add_param minor LNHOIF tempFeatureOnFlag false
add_param minor LNHOIF tempParamExistsFlag false
add_param minor LNHOIF tempAddParamFlag false

dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL/LNHOIF tempFeatureOnFlag = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS} actInterFreqLB == CONST "true" || PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS} actAmle == CONST "true" ? CONST "true" :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL/LNHOIF tempParamExistsFlag = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL}/LNHOIF-${LNHOIF} thresholdRsrpIFLBFilter != CONST 999 ? CONST "true" :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL/LNHOIF tempAddParamFlag = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL}/LNHOIF-${LNHOIF} tempFeatureOnFlag == CONST "true" && PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL}/LNHOIF-${LNHOIF} tempParamExistsFlag == CONST "false" ? CONST "true" :
dependence_add_param minor LNHOIF tempAddParamFlag true thresholdRsrqIFLBFilter -120

del_param minor LNHOIF tempFeatureOnFlag
del_param minor LNHOIF tempParamExistsFlag
del_param minor LNHOIF tempAddParamFlag

# v0.2 end

# v0.4 begin
##############################################################################################################################
# LTE2054 Measurement Report addition with PDCP KPI counter subset
##############################################################################################################################
add_param minor PMCADM temprTPmCollEntityExists false
dependence_mod_param_if_list_param_is_found minor MRBTS/PMCADM rTPmCollEntity rTPmCollEntityIpAddr MRBTS/PMCADM temprTPmCollEntityExists true
dependence_mod_param_if_key_parameter_value_matches minor PMCADM temprTPmCollEntityExists false LNBTS actRtPerfMonitoring false
del_param minor PMCADM temprTPmCollEntityExists
# v0.4 end
##########
## FDD: ##
##########
add_param minor LNCEL allowPbIndexZero false

####################################################################################################################################
## PR 55773ESPE05: BTS SM SW Upgrade : Error during SW upgrade for special value LNCEL/blacklistHoL/phyCellIdRange== noRange (14)
####################################################################################################################################

#dependence_mod_param_conditional_expression_relative minor LISTPARAM MRBTS/LNBTS/LNCEL blacklistHoL * phyCellIdRange = LISTPARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} blacklistHoL ${blacklistHoL} phyCellIdRange == CONST "noRange" ? CONST "" : 

dependence_del_target_relative minor LISTPARAM MRBTS/LNBTS/LNCEL blacklistHoL * phyCellIdRange ? LISTPARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} blacklistHoL ${blacklistHoL} phyCellIdRange == CONST "noRange"


# v0.5
####################################################################################################################################
## PR 56326ESPE05: Missing migration rule for TD LTE RL45TD to RL55TD for parameter tPeriodicPhr
####################################################################################################################################
#LNCEL-tPeriodicPhr tPeriodicPhr cannot be configured to 'infinity' if ulsSchedMethod is set to 'channel aware' (public) 
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tPeriodicPhr = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tPeriodicPhr == CONST "infinity" && PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} ulsSchedMethod == CONST "channel aware" ? CONST "20sf" :
# v0.5 END
# v0.6
####################################################################################################################################
## PR 56147ESPE05: [LN7.0] LN6.0 - LN7.0 SCFC migration error - gpsInUse
####################################################################################################################################
# Parameters gpsInUse (External GPS as reference source) and gpsCtrlBlockForCoLocatedBts (SyncHub Master BTS as reference source) are mutually exclusive parameters and only one of them should be set to true.
# If gpsCtrlBlockForCoLocatedBts and gpsInUse is set to the value "true" then gpsInUse needs to be set to the value "false"
#v0.10 correction for pronto 124548ESPE04
#dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/BTSSCL gpsInUse = PARAM MRBTS-${MRBTS}/BTSSCL-${BTSSCL} gpsInUse == CONST "true" && PARAM MRBTS-${MRBTS}/BTSSCL-${BTSSCL} gpsCtrlBlockForCoLocatedBts == CONST "true" ? CONST "false" :
#dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/BTSSCL actExtGpsOutputLnaPowerSupply = PARAM MRBTS-${MRBTS}/BTSSCL-${BTSSCL} gpsInUse == CONST "false" ? CONST "false" :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/BTSSCL gpsInUse = PARAM MRBTS-${MRBTS}/BTSSCL-${BTSSCL} gpsInUse == CONST "true" && PARAM MRBTS-${MRBTS}/BTSSCL-${BTSSCL} gpsCtrlBlockForCoLocatedBts == CONST "true" ? CONST "false" :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/BTSSCL actExtGpsOutputLnaPowerSupply = PARAM MRBTS-${MRBTS}/BTSSCL-${BTSSCL} gpsInUse == CONST "false" ? CONST "false" :
#end of v0.10
# v0.6 END
#v0.11: correction for PR122996ESPE04 // Correction added with more adjustments
#v0.9: Correction for pronto:122996ESPE04 // correction reverted due to not suitable migration.
##############################################################################################################################
#v0.7: Correction for pronto:122996ESPE04
#maxNumActUE + max(addEmergencySessions, addAUeRrHo, addAUeTcHo) value should be lesser/equals to upper bandwidth limit;
#The condition is only checked during validation if actCompChecks is set to 'true'

# 1. Add temps
add_param minor LNCEL tempCalculation 0
add_param minor LNCEL tempActHighRrcMax 0
add_param minor LNCEL tempLimit 0
add_param minor LNCEL tempAdjust 0
# 2. Find out the maximum of (addEmergencySessions, addAUeRrHo, addAUeTcHo)
function_relative minor PARAM MRBTS/LNBTS/LNCEL tempActHighRrcMax = max "" ( PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} addEmergencySessions PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} addAUeRrHo PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} addAUeTcHo )
# 3. Calculate tempCalculation = [maxNumActUE +  tempActHighRrcMax] 
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempCalculation = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempCalculation == CONST 0 ? PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempActHighRrcMax + PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} maxNumActUE :
# 4. Adjust tempLimit according to dlshBw
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "1.4 MHz" ? CONST 40 :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "3 MHz" ? CONST 120 :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "5 MHz" ? CONST 480 :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "10 MHz" ? CONST 600 :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "15 MHz" ? CONST 720 :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "20 MHz" ? CONST 840 :
# if actFlexBbUsage set to 'true' and min(ulChBw,dlChBw) has value '5 MHz' or '10 MHz', maxNumActUE value range is restricted to 0...420
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS} actFlexBbUsage == CONST "true" && PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "5 MHz" ? CONST 420 :
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempLimit = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS} actFlexBbUsage == CONST "true" && PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} dlChBw == CONST "10 MHz" ? CONST 420 :
# 5. If tempCalculation > tempLimit, calcuate difference: tempAdjust = tempCalculation - tempLimit. 
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL tempAdjust = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempCalculation > PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempLimit ? PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempCalculation - PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempLimit :
# 6. If actCompChecks=true && acthihghRrc=false && tempAdjust is less than maxNumActUE (to ensure maxNumActUE will not be out of range), then adjust maxNumActUE = maxNumActUE - tempAdjust
dependence_mod_param_conditional_expression_relative minor PARAM MRBTS/LNBTS/LNCEL maxNumActUE = PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS} actCompChecks == CONST "true" && PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS} actHighRrc == CONST "false" &&  PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempAdjust < PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} maxNumActUE ? PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} maxNumActUE - PARAM MRBTS-${MRBTS}/LNBTS-${LNBTS}/LNCEL-${LNCEL} tempAdjust :
# 7. Delete temps
#v0.12 correction
del_param minor LNCEL tempCalculation
del_param minor LNCEL tempActHighRrcMax
del_param minor LNCEL tempLimit
del_param minor LNCEL tempAdjust
#v0.12 correction END
#end of v0.7 correction for pronto:122996ESPE04
##############################################################################################################################
#end of v0.9
#end of v0.11

#version
#FZM Replace# set_version major LN7.0
set_version major LNF7.0

#history:
#FZM Replace # add_log minor "Conversion from LN7.0 FB14.07 (009) to LN7.0 FB14.07 (010)"
add_log minor "Conversion from LNF7.0 FB14.07 (009) to LNF7.0 FB14.07 (010)"