found, datavizRules = dataviz.TryGetFilterRules()
conditionValue = createConditionalValue(jsonParam['rank']['type'],jsonParam['rank']['value'])
filterRule = None
if(found):
    for testedRule in datavizRules:
        ruleType = clr.GetClrType(type(testedRule.RuleCondition)).ToString()
        if(testedRule.DisplayName == jsonParam['displayName'] and ruleType == 'Spotfire.Dxp.Application.Visuals.TopBottomRuleCondition'):
            filterRule = testedRule
            break
    if(filterRule == None):
        if(jsonParam['isBottom']):
            filterRule = datavizRules.AddBottomNRule(jsonParam['expression'], conditionValue, jsonParam['hideMatchedItems'])
        else:
            filterRule = datavizRules.AddTopNRule(jsonParam['expression'], conditionValue, jsonParam['hideMatchedItems'])
        filterRule.ManualDisplayName = jsonParam['displayName']
    filterRule.Enabled = jsonParam['enabled']
    filterRule.EvaluatePerTrellis = jsonParam['evaluatePerTrellis']
    filterRule.Expression = jsonParam['expression']
    filterRule.RuleCondition.Rank = conditionValue
    filterRule.RuleCondition.IsBottom = jsonParam['isBottom']