new feature for 2.7 & bug fix
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
index b429ca6..6d54b0a 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
@@ -29,6 +29,8 @@
     public static final String PATH_SEPARATOR = "/";
     public static final String GROUP_KEY = "group";
     public static final String CONFIG_KEY = "config";
+    public static final String PROVIDER_SIDE = "provider";
+    public static final String CONSUMER_SIDE = "consumer";
     public static final String CATEGORY_KEY = "category";
     public static final String ROUTERS_CATEGORY = "routers";
     public static final String CONDITION_ROUTE = "condition_route";
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/OverrideUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/OverrideUtils.java
index dccf1b9..cdad836 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/OverrideUtils.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/OverrideUtils.java
@@ -60,11 +60,12 @@
 
     public static OverrideConfig weightDTOtoConfig(WeightDTO weightDTO) {
         OverrideConfig overrideConfig = new OverrideConfig();
-        overrideConfig.setType("weight");
+        overrideConfig.setType(Constants.WEIGHT);
         overrideConfig.setEnabled(true);
+        overrideConfig.setSide(Constants.PROVIDER_SIDE);
         overrideConfig.setAddresses(weightDTO.getAddresses());
         Map<String, Object> parameters = new HashMap<>();
-        parameters.put("weight", weightDTO.getWeight());
+        parameters.put(Constants.WEIGHT, weightDTO.getWeight());
         overrideConfig.setParameters(parameters);
         return overrideConfig;
     }
@@ -87,7 +88,6 @@
         } else {
             dynamicConfigDTO.setService(overrideDTO.getKey());
         }
-        dynamicConfigDTO.setRuntime(overrideDTO.isRuntime());
         dynamicConfigDTO.setEnabled(overrideDTO.isEnabled());
         return dynamicConfigDTO;
     }
@@ -109,6 +109,7 @@
         OverrideConfig overrideConfig = new OverrideConfig();
         overrideConfig.setType(Constants.BALANCING);
         overrideConfig.setEnabled(true);
+        overrideConfig.setSide(Constants.CONSUMER_SIDE);
         Map<String, Object> parameters = new HashMap<>();
         if (balancingDTO.getMethodName().equals("*")) {
             parameters.put("loadbalance", balancingDTO.getStrategy());
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java
index 6ff7b61..7c48e14 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/common/util/RouteRule.java
@@ -19,8 +19,10 @@
 import org.apache.dubbo.admin.model.domain.Route;
 import org.apache.dubbo.admin.model.dto.AccessDTO;
 import org.apache.dubbo.admin.model.dto.ConditionRouteDTO;
+import org.apache.dubbo.admin.model.dto.TagRouteDTO;
 import org.apache.dubbo.admin.model.store.BlackWhiteList;
-import org.apache.dubbo.admin.model.store.RoutingRuleDTO;
+import org.apache.dubbo.admin.model.store.RoutingRule;
+import org.apache.dubbo.admin.model.store.TagRoute;
 import org.apache.dubbo.common.utils.StringUtils;
 
 import java.text.ParseException;
@@ -193,9 +195,31 @@
         }
     }
 
-    public static RoutingRuleDTO insertConditionRule(RoutingRuleDTO existRule, ConditionRouteDTO conditionRoute) {
+    public static TagRoute convertTagroutetoStore(TagRouteDTO tagRoute) {
+        TagRoute store = new TagRoute();
+        store.setKey(tagRoute.getApplication());
+        store.setEnabled(tagRoute.isEnabled());
+        store.setForce(tagRoute.isForce());
+        store.setPriority(tagRoute.getPriority());
+        store.setRuntime(tagRoute.isRuntime());
+        store.setTags(tagRoute.getTags());
+        return store;
+    }
+
+    public static TagRouteDTO convertTagroutetoDisplay(TagRoute tagRoute) {
+        TagRouteDTO tagRouteDTO = new TagRouteDTO();
+        tagRouteDTO.setApplication(tagRoute.getKey());
+        tagRouteDTO.setRuntime(tagRoute.isRuntime());
+        tagRouteDTO.setPriority(tagRoute.getPriority());
+        tagRouteDTO.setTags(tagRoute.getTags());
+        tagRouteDTO.setForce(tagRoute.isForce());
+        tagRouteDTO.setEnabled(tagRoute.isEnabled());
+        return tagRouteDTO;
+    }
+
+    public static RoutingRule insertConditionRule(RoutingRule existRule, ConditionRouteDTO conditionRoute) {
         if (existRule == null) {
-            existRule = new RoutingRuleDTO();
+            existRule = new RoutingRule();
             if (StringUtils.isNotEmpty(conditionRoute.getApplication())) {
                 existRule.setKey(conditionRoute.getApplication());
                 existRule.setScope(Constants.APPLICATION);
@@ -299,18 +323,18 @@
         return route;
     }
 
-    public static ConditionRouteDTO createConditionRouteFromRule(RoutingRuleDTO routingRuleDTO) {
+    public static ConditionRouteDTO createConditionRouteFromRule(RoutingRule routingRule) {
         ConditionRouteDTO conditionRouteDTO = new ConditionRouteDTO();
-        if (routingRuleDTO.getScope().equals(Constants.SERVICE)) {
-            conditionRouteDTO.setService(routingRuleDTO.getKey());
+        if (routingRule.getScope().equals(Constants.SERVICE)) {
+            conditionRouteDTO.setService(routingRule.getKey());
         } else {
-            conditionRouteDTO.setApplication(routingRuleDTO.getKey());
+            conditionRouteDTO.setApplication(routingRule.getKey());
         }
-        conditionRouteDTO.setConditions(routingRuleDTO.getConditions());
-        conditionRouteDTO.setPriority(routingRuleDTO.getPriority());
-        conditionRouteDTO.setEnabled(routingRuleDTO.isEnabled());
-        conditionRouteDTO.setForce(routingRuleDTO.isForce());
-        conditionRouteDTO.setRuntime(routingRuleDTO.isRuntime());
+        conditionRouteDTO.setConditions(routingRule.getConditions());
+        conditionRouteDTO.setPriority(routingRule.getPriority());
+        conditionRouteDTO.setEnabled(routingRule.isEnabled());
+        conditionRouteDTO.setForce(routingRule.isForce());
+        conditionRouteDTO.setRuntime(routingRule.isRuntime());
         return conditionRouteDTO;
     }
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/LoadBalanceController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/LoadBalanceController.java
index 146b604..3d1221e 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/LoadBalanceController.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/LoadBalanceController.java
@@ -70,17 +70,7 @@
         if (balancing == null) {
             throw new ResourceNotFoundException("Unknown ID!");
         }
-//        Override override = overrideService.findById(id);
-//        if (override == null) {
-//            throw new ResourceNotFoundException("Unknown ID!");
-//        }
-//        LoadBalance old = overrideToLoadBalance(override);
-//        LoadBalance loadBalance = new LoadBalance();
-//        loadBalance.setStrategy(balancingDTO.getStrategy());
-//        loadBalance.setMethod(formatMethodName(balancingDTO.getMethodName()));
-//        loadBalance.setService(old.getService());
-//        loadBalance.setHash(id);
-//        overrideService.updateOverride(OverrideUtils.loadBalanceToOverride(loadBalance));
+
         overrideService.saveBalance(balancingDTO);
         return true;
     }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java
index 25522eb..40b81bf 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/TagRoutesController.java
@@ -93,7 +93,6 @@
             tagRoute = routeService.findTagRoute(application);
         }
         if (tagRoute != null) {
-            tagRoute = convertTagrouteToDisplay(tagRoute);
             result.add(tagRoute);
         }
         return result;
@@ -106,8 +105,7 @@
         if (tagRoute == null) {
             throw new ResourceNotFoundException("Unknown ID!");
         }
-        TagRouteDTO tagRouteDTO = convertTagrouteToDisplay(tagRoute);
-        return tagRouteDTO;
+        return tagRoute;
     }
 
     @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@@ -130,12 +128,5 @@
         routeService.disableTagRoute(id);
         return true;
     }
-
-    private TagRouteDTO convertTagrouteToDisplay(TagRouteDTO tagRouteDTO) {
-        tagRouteDTO.setApplication(tagRouteDTO.getKey());
-        tagRouteDTO.setScope(null);
-        tagRouteDTO.setKey(null);
-        return tagRouteDTO;
-    }
 }
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/DynamicConfigDTO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/DynamicConfigDTO.java
index 6bc0719..9b62e8e 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/DynamicConfigDTO.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/DynamicConfigDTO.java
@@ -24,7 +24,6 @@
 public class DynamicConfigDTO extends BaseDTO {
 
     private String configVersion;
-    private boolean runtime;
     private boolean enabled;
     private List<OverrideConfig> configs;
 
@@ -44,14 +43,6 @@
         this.configVersion = configVersion;
     }
 
-    public boolean isRuntime() {
-        return runtime;
-    }
-
-    public void setRuntime(boolean runtime) {
-        this.runtime = runtime;
-    }
-
     public boolean isEnabled() {
         return enabled;
     }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/TagRouteDTO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/TagRouteDTO.java
index 85c84f1..5595572 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/TagRouteDTO.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/dto/TagRouteDTO.java
@@ -22,26 +22,8 @@
 import java.util.List;
 
 public class TagRouteDTO extends RouteDTO{
-    private String scope;
-    private String key;
     private List<Tag> tags;
 
-    public String getScope() {
-        return scope;
-    }
-
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
-
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
     public List<Tag> getTags() {
         return tags;
     }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/OverrideDTO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/OverrideDTO.java
index a917815..c99854a 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/OverrideDTO.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/OverrideDTO.java
@@ -23,7 +23,6 @@
     private String key;
     private String scope;
     private String configVersion;
-    private boolean runtime;
     private boolean enabled;
     private List<OverrideConfig> configs;
 
@@ -51,14 +50,6 @@
         this.configVersion = configVersion;
     }
 
-    public boolean isRuntime() {
-        return runtime;
-    }
-
-    public void setRuntime(boolean runtime) {
-        this.runtime = runtime;
-    }
-
     public boolean isEnabled() {
         return enabled;
     }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRuleDTO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java
similarity index 98%
rename from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRuleDTO.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java
index 70ba2ac..46b012f 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRuleDTO.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRule.java
@@ -19,7 +19,7 @@
 
 import java.util.List;
 
-public class RoutingRuleDTO {
+public class RoutingRule {
 
     private String key;
     private String scope;
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRuleDTO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/TagRoute.java
similarity index 72%
copy from dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRuleDTO.java
copy to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/TagRoute.java
index 70ba2ac..968a518 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/RoutingRuleDTO.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/model/store/TagRoute.java
@@ -17,35 +17,17 @@
 
 package org.apache.dubbo.admin.model.store;
 
+import org.apache.dubbo.admin.model.domain.Tag;
+
 import java.util.List;
 
-public class RoutingRuleDTO {
-
-    private String key;
-    private String scope;
+public class TagRoute {
     private int priority;
     private boolean enabled;
     private boolean force;
     private boolean runtime;
-    private List<String> conditions;
-    private BlackWhiteList blackWhiteList;
-
-
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    public String getScope() {
-        return scope;
-    }
-
-    public void setScope(String scope) {
-        this.scope = scope;
-    }
+    private String key;
+    private List<Tag> tags;
 
     public int getPriority() {
         return priority;
@@ -79,19 +61,19 @@
         this.runtime = runtime;
     }
 
-    public List<String> getConditions() {
-        return conditions;
+    public String getKey() {
+        return key;
     }
 
-    public void setConditions(List<String> conditions) {
-        this.conditions = conditions;
+    public void setKey(String key) {
+        this.key = key;
     }
 
-    public BlackWhiteList getBlackWhiteList() {
-        return blackWhiteList;
+    public List<Tag> getTags() {
+        return tags;
     }
 
-    public void setBlackWhiteList(BlackWhiteList blackWhiteList) {
-        this.blackWhiteList = blackWhiteList;
+    public void setTags(List<Tag> tags) {
+        this.tags = tags;
     }
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RouteService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RouteService.java
index 6827103..4f5acb8 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RouteService.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/RouteService.java
@@ -61,7 +61,7 @@
     void disableTagRoute(String id);
 
 
-    TagRouteDTO findTagRoute(String serviceName);
+    TagRouteDTO findTagRoute(String id);
 
 
 }
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
index a7774a2..f69e7bb 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/OverrideServiceImpl.java
@@ -64,7 +64,6 @@
         }
         configs.addAll(override.getConfigs());
         existOverride.setEnabled(override.isEnabled());
-        existOverride.setRuntime(override.isRuntime());
         existOverride.setConfigs(configs);
         dynamicConfiguration.setConfig(path, YamlParser.dumpObject(existOverride));
 
@@ -98,7 +97,6 @@
         }
         configs.addAll(update.getConfigs());
         overrideDTO.setConfigs(configs);
-        overrideDTO.setRuntime(update.isRuntime());
         overrideDTO.setEnabled(update.isEnabled());
         dynamicConfiguration.setConfig(path, YamlParser.dumpObject(overrideDTO));
 
diff --git a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
index 346d01d..f888113 100644
--- a/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
+++ b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
@@ -26,13 +26,13 @@
 import org.apache.dubbo.admin.model.dto.ConditionRouteDTO;
 import org.apache.dubbo.admin.model.dto.TagRouteDTO;
 import org.apache.dubbo.admin.model.store.BlackWhiteList;
-import org.apache.dubbo.admin.model.store.RoutingRuleDTO;
+import org.apache.dubbo.admin.model.store.RoutingRule;
+import org.apache.dubbo.admin.model.store.TagRoute;
 import org.apache.dubbo.admin.service.RouteService;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.springframework.stereotype.Component;
 
-import java.time.YearMonth;
 import java.util.List;
 
 /**
@@ -49,9 +49,9 @@
         String id = ConvertUtil.getIdFromDTO(conditionRoute);
         String path = getPath(id, Constants.CONDITION_ROUTE);
         String existConfig = dynamicConfiguration.getConfig(path);
-        RoutingRuleDTO existRule = null;
+        RoutingRule existRule = null;
         if (existConfig != null) {
-            existRule = YamlParser.loadObject(existConfig, RoutingRuleDTO.class);
+            existRule = YamlParser.loadObject(existConfig, RoutingRule.class);
         }
         existRule = RouteRule.insertConditionRule(existRule, conditionRoute);
         //register2.7
@@ -73,10 +73,10 @@
         if (existConfig == null) {
             throw new ResourceNotFoundException("no existing condition route for path: " + path);
         }
-        RoutingRuleDTO routingRuleDTO = YamlParser.loadObject(existConfig, RoutingRuleDTO.class);
-        ConditionRouteDTO oldConditionRoute = RouteRule.createConditionRouteFromRule(routingRuleDTO);
-        routingRuleDTO = RouteRule.insertConditionRule(routingRuleDTO, newConditionRoute);
-        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(routingRuleDTO));
+        RoutingRule routingRule = YamlParser.loadObject(existConfig, RoutingRule.class);
+        ConditionRouteDTO oldConditionRoute = RouteRule.createConditionRouteFromRule(routingRule);
+        routingRule = RouteRule.insertConditionRule(routingRule, newConditionRoute);
+        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(routingRule));
 
         //for 2.6
         if (StringUtils.isNotEmpty(newConditionRoute.getService())) {
@@ -97,7 +97,7 @@
         if (config == null) {
             //throw exception
         }
-        RoutingRuleDTO route = YamlParser.loadObject(config, RoutingRuleDTO.class);
+        RoutingRule route = YamlParser.loadObject(config, RoutingRule.class);
         if (route.getBlackWhiteList() != null) {
            route.setConditions(null);
             dynamicConfiguration.setConfig(path, YamlParser.dumpObject(route));
@@ -107,7 +107,7 @@
 
         //for 2.6
         if (route.getScope().equals(Constants.SERVICE)) {
-            RoutingRuleDTO originRule = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            RoutingRule originRule = YamlParser.loadObject(config, RoutingRule.class);
             ConditionRouteDTO conditionRouteDTO = RouteRule.createConditionRouteFromRule(originRule);
             Route old = convertRouteToOldRoute(conditionRouteDTO);
             registry.unregister(old.toUrl().addParameter(Constants.COMPATIBLE_CONFIG, true));
@@ -119,7 +119,7 @@
         String path = getPath(id, Constants.CONDITION_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            RoutingRuleDTO ruleDTO = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
             BlackWhiteList old = ruleDTO.getBlackWhiteList();
             if (ruleDTO.getConditions() == null) {
                 dynamicConfiguration.deleteConfig(path);
@@ -141,9 +141,9 @@
         String path = getPath(id, Constants.CONDITION_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         BlackWhiteList blackWhiteList = RouteRule.convertToBlackWhiteList(accessDTO);
-        RoutingRuleDTO ruleDTO;
+        RoutingRule ruleDTO;
         if (config == null) {
-            ruleDTO = new RoutingRuleDTO();
+            ruleDTO = new RoutingRule();
             ruleDTO.setEnabled(true);
             if (StringUtils.isNoneEmpty(accessDTO.getApplication())) {
                 ruleDTO.setScope(Constants.APPLICATION);
@@ -153,7 +153,7 @@
             ruleDTO.setKey(id);
             ruleDTO.setBlackWhiteList(blackWhiteList);
         } else {
-            ruleDTO = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
             if (ruleDTO.getBlackWhiteList() != null) {
                 //todo throw exception
             }
@@ -174,7 +174,7 @@
         String path = getPath(id, Constants.CONDITION_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            RoutingRuleDTO ruleDTO = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
             BlackWhiteList blackWhiteList = ruleDTO.getBlackWhiteList();
             return RouteRule.convertToAccessDTO(blackWhiteList, ruleDTO.getScope(), ruleDTO.getKey());
         }
@@ -189,7 +189,7 @@
         BlackWhiteList old = null;
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            RoutingRuleDTO ruleDTO = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
             old = ruleDTO.getBlackWhiteList();
             ruleDTO.setBlackWhiteList(blackWhiteList);
             dynamicConfiguration.setConfig(path, YamlParser.dumpObject(ruleDTO));
@@ -209,7 +209,7 @@
         String path = getPath(id, Constants.CONDITION_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            RoutingRuleDTO ruleDTO = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            RoutingRule ruleDTO = YamlParser.loadObject(config, RoutingRule.class);
 
             if (ruleDTO.getScope().equals(Constants.SERVICE)) {
                 //for2.6
@@ -231,7 +231,7 @@
         String path = getPath(serviceName, Constants.CONDITION_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            RoutingRuleDTO routeRule = YamlParser.loadObject(config, RoutingRuleDTO.class);
+            RoutingRule routeRule = YamlParser.loadObject(config, RoutingRule.class);
 
             if (routeRule.getScope().equals(Constants.SERVICE)) {
                 //for 2.6
@@ -253,8 +253,8 @@
         String path = getPath(id, Constants.CONDITION_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            RoutingRuleDTO routingRuleDTO = YamlParser.loadObject(config, RoutingRuleDTO.class);
-            ConditionRouteDTO conditionRouteDTO = RouteRule.createConditionRouteFromRule(routingRuleDTO);
+            RoutingRule routingRule = YamlParser.loadObject(config, RoutingRule.class);
+            ConditionRouteDTO conditionRouteDTO = RouteRule.createConditionRouteFromRule(routingRule);
             return conditionRouteDTO;
         }
         return null;
@@ -264,7 +264,8 @@
     public void createTagRoute(TagRouteDTO tagRoute) {
         String id = ConvertUtil.getIdFromDTO(tagRoute);
         String path = getPath(id,Constants.TAG_ROUTE);
-        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(tagRoute));
+        TagRoute store = RouteRule.convertTagroutetoStore(tagRoute);
+        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(store));
     }
 
     @Override
@@ -275,7 +276,8 @@
             throw new ResourceNotFoundException("can not find tagroute: " + id);
             //throw exception
         }
-        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(tagRoute));
+        TagRoute store = RouteRule.convertTagroutetoStore(tagRoute);
+        dynamicConfiguration.setConfig(path, YamlParser.dumpObject(store));
 
     }
 
@@ -290,7 +292,7 @@
         String path = getPath(id, Constants.TAG_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            TagRouteDTO tagRoute = YamlParser.loadObject(config, TagRouteDTO.class);
+            TagRoute tagRoute = YamlParser.loadObject(config, TagRoute.class);
             tagRoute.setEnabled(true);
             dynamicConfiguration.setConfig(path, YamlParser.dumpObject(tagRoute));
         }
@@ -302,7 +304,7 @@
         String path = getPath(id, Constants.TAG_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            TagRouteDTO tagRoute = YamlParser.loadObject(config, TagRouteDTO.class);
+            TagRoute tagRoute = YamlParser.loadObject(config, TagRoute.class);
             tagRoute.setEnabled(false);
             dynamicConfiguration.setConfig(path, YamlParser.dumpObject(tagRoute));
         }
@@ -314,7 +316,8 @@
         String path = getPath(id, Constants.TAG_ROUTE);
         String config = dynamicConfiguration.getConfig(path);
         if (config != null) {
-            return YamlParser.loadObject(config, TagRouteDTO.class);
+            TagRoute tagRoute = YamlParser.loadObject(config, TagRoute.class);
+            return RouteRule.convertTagroutetoDisplay(tagRoute);
         }
         return null;
     }
diff --git a/dubbo-admin-frontend/src/components/governance/AccessControl.vue b/dubbo-admin-frontend/src/components/governance/AccessControl.vue
index 5e5397c..bfbb274 100644
--- a/dubbo-admin-frontend/src/components/governance/AccessControl.vue
+++ b/dubbo-admin-frontend/src/components/governance/AccessControl.vue
@@ -263,6 +263,7 @@
   }),
   methods: {
     search () {
+      this.filter = document.querySelector('#serviceSearch').value.trim()
       if (!this.filter) {
         return
       }
diff --git a/dubbo-admin-frontend/src/components/governance/LoadBalance.vue b/dubbo-admin-frontend/src/components/governance/LoadBalance.vue
index 4d62e77..650cc8f 100644
--- a/dubbo-admin-frontend/src/components/governance/LoadBalance.vue
+++ b/dubbo-admin-frontend/src/components/governance/LoadBalance.vue
@@ -188,7 +188,7 @@
       loadBalances: [
       ],
       template:
-        'methodName: sayHello  # * for all methods\n' +
+        'methodName: *  # * for all methods\n' +
         'strategy:  # leastactive, random, roundrobin',
       ruleText: '',
       readonly: false,
@@ -233,6 +233,7 @@
     }),
     methods: {
       submit: function () {
+        this.filter = document.querySelector('#serviceSearch').value.trim()
         this.search(this.filter, true)
       },
       search: function (filter, rewrite) {
diff --git a/dubbo-admin-frontend/src/components/governance/Overrides.vue b/dubbo-admin-frontend/src/components/governance/Overrides.vue
index 9da0b7f..89c9aa4 100644
--- a/dubbo-admin-frontend/src/components/governance/Overrides.vue
+++ b/dubbo-admin-frontend/src/components/governance/Overrides.vue
@@ -188,7 +188,6 @@
 
         'configVersion: v2.7\n' +
         'enabled: true\n' +
-        'runtime: true\n' +
         'configs: \n' +
         '  - addresses: [0.0.0.0]  # 0.0.0.0 for all addresses\n' +
         '    side: consumer        # effective side, consumer or addresses\n' +
@@ -225,6 +224,7 @@
     }),
     methods: {
       submit: function () {
+        this.filter = document.querySelector('#serviceSearch').value.trim()
         this.search(this.filter, true)
       },
       search: function (filter, rewrite) {
@@ -364,6 +364,9 @@
         delete config.service
         delete config.application
         delete config.id
+        for (let i = 0; i < config.configs.length; i++) {
+          delete config.configs[i].enabled
+        }
         this.removeEmpty(config)
         this.ruleText = yaml.safeDump(config)
         this.readonly = readonly
diff --git a/dubbo-admin-frontend/src/components/governance/RoutingRule.vue b/dubbo-admin-frontend/src/components/governance/RoutingRule.vue
index 9ca652a..d87ae45 100644
--- a/dubbo-admin-frontend/src/components/governance/RoutingRule.vue
+++ b/dubbo-admin-frontend/src/components/governance/RoutingRule.vue
@@ -72,7 +72,6 @@
             <template slot="items" slot-scope="props">
               <td class="text-xs-left">{{ props.item.service }}</td>
               <td class="text-xs-left">{{ props.item.group }}</td>
-              <td class="text-xs-left">{{ props.item.priority }}</td>
               <td class="text-xs-left">{{ props.item.enabled }}</td>
               <td class="text-xs-center px-0">
                 <v-tooltip bottom v-for="op in operations" :key="op.id">
@@ -94,7 +93,6 @@
           >
             <template slot="items" slot-scope="props">
               <td class="text-xs-left">{{ props.item.application }}</td>
-              <td class="text-xs-left">{{ props.item.priority }}</td>
               <td class="text-xs-left">{{ props.item.enabled }}</td>
               <td class="text-xs-center px-0">
                 <v-tooltip bottom v-for="op in operations" :key="op.id">
@@ -169,7 +167,7 @@
       ],
       selected: 0,
       dropdown_font: [ 'Service', 'App', 'IP' ],
-      ruleKeys: ['enabled', 'force', 'runtime', 'group', 'version', 'rule', 'priority'],
+      ruleKeys: ['enabled', 'force', 'runtime', 'group', 'version', 'rule'],
       pattern: 'Service',
       filter: '',
       dialog: false,
@@ -188,7 +186,6 @@
       ],
       template:
         'enabled: true\n' +
-        'priority: 100\n' +
         'runtime: false\n' +
         'force: true\n' +
         'conditions:\n' +
@@ -202,11 +199,6 @@
           align: 'left'
         },
         {
-          text: 'Priority',
-          value: 'priority',
-          sortable: false
-        },
-        {
           text: 'Enabled',
           value: 'enabled',
           sortable: false
@@ -231,11 +223,6 @@
 
         },
         {
-          text: 'Priority',
-          value: 'priority',
-          sortable: false
-        },
-        {
           text: 'Enabled',
           value: 'enabled',
           sortable: false
@@ -250,6 +237,7 @@
     }),
     methods: {
       submit: function () {
+        this.filter = document.querySelector('#serviceSearch').value.trim()
         this.search(this.filter, true)
       },
       search: function (filter, rewrite) {
@@ -396,6 +384,7 @@
         delete conditionRoute.app
         delete conditionRoute.group
         delete conditionRoute.application
+        delete conditionRoute.priority
         this.ruleText = yaml.safeDump(conditionRoute)
         this.readonly = readonly
         this.dialog = true
diff --git a/dubbo-admin-frontend/src/components/governance/TagRule.vue b/dubbo-admin-frontend/src/components/governance/TagRule.vue
index dce9724..17b3bb2 100644
--- a/dubbo-admin-frontend/src/components/governance/TagRule.vue
+++ b/dubbo-admin-frontend/src/components/governance/TagRule.vue
@@ -19,7 +19,7 @@
   <v-container grid-list-xl fluid >
     <v-layout row wrap>
       <v-flex xs12 >
-        <search v-model="filter" :submit="submit" label="Search Routing Rule by service name"></search>
+        <search id="serviceSearch" v-model="filter" :submit="submit" label="Search Routing Rule by application name"></search>
       </v-flex>
     </v-layout>
     <v-flex lg12>
@@ -39,7 +39,6 @@
           >
             <template slot="items" slot-scope="props">
               <td class="text-xs-left">{{ props.item.application }}</td>
-              <td class="text-xs-left">{{ props.item.priority }}</td>
               <td class="text-xs-left">{{ props.item.enabled }}</td>
               <td class="text-xs-center px-0">
                 <v-tooltip bottom v-for="op in operations" :key="op.id">
@@ -107,7 +106,7 @@
     },
     data: () => ({
       dropdown_font: [ 'Service', 'App', 'IP' ],
-      ruleKeys: ['enabled', 'force', 'dynamic', 'runtime', 'group', 'version', 'rule', 'priority'],
+      ruleKeys: ['enabled', 'force', 'dynamic', 'runtime', 'group', 'version', 'rule'],
       pattern: 'Service',
       filter: '',
       dialog: false,
@@ -125,7 +124,6 @@
         'force: false\n' +
         'enabled: true\n' +
         'runtime: false\n' +
-        'priority: 100\n' +
         'tags:\n' +
         ' - name: tag1\n' +
         '   addresses: [192.168.0.1:20881]\n' +
@@ -140,11 +138,6 @@
           align: 'left'
         },
         {
-          text: 'Priority',
-          value: 'priority',
-          sortable: false
-        },
-        {
           text: 'Enabled',
           value: 'enabled',
           sortable: false
@@ -159,6 +152,7 @@
     }),
     methods: {
       submit: function () {
+        this.filter = document.querySelector('#serviceSearch').value.trim()
         this.search(this.filter, true)
       },
       search: function (filter, rewrite) {
@@ -234,8 +228,8 @@
           case 'visibility':
             this.$axios.get('/rules/route/tag/' + itemId)
               .then(response => {
-                let conditionRoute = response.data
-                this.handleBalance(conditionRoute, true)
+                let tagRoute = response.data
+                this.handleBalance(tagRoute, true)
                 this.updateId = 'close'
               })
             break
@@ -271,6 +265,8 @@
         delete tagRoute.app
         delete tagRoute.group
         delete tagRoute.application
+        delete tagRoute.service
+        delete tagRoute.priority
         this.ruleText = yaml.safeDump(tagRoute)
         this.readonly = readonly
         this.dialog = true
diff --git a/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue b/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue
index 7cd057b..433ba02 100644
--- a/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue
+++ b/dubbo-admin-frontend/src/components/governance/WeightAdjust.vue
@@ -235,6 +235,7 @@
     }),
     methods: {
       submit: function () {
+        this.filter = document.querySelector('#serviceSearch').value.trim()
         this.search(this.filter, true)
       },
       search: function (filter, rewrite) {