diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java
index 40ee18d..69d8da8 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/RouteUtils.java
@@ -342,7 +342,7 @@
         if (scope.equals(Constants.APPLICATION)) {
             accessDTO.setApplication(key);
         } else {
-            accessDTO.setService(key);
+            ConvertUtil.detachIdToService(key, accessDTO);
         }
         if (blackWhiteList != null) {
             for (String condition : blackWhiteList) {
@@ -363,7 +363,7 @@
 
     public static Route convertAccessDTOtoRoute(AccessDTO accessDTO) {
         Route route = new Route();
-        route.setService(accessDTO.getService());
+        route.setService(ConvertUtil.getIdFromDTO(accessDTO));
         route.setForce(true);
         route.setFilterRule("false");
         route.setEnabled(true);
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Route.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Route.java
index b80c61b..41f3513 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Route.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/model/domain/Route.java
@@ -19,7 +19,7 @@
 
 
 import org.apache.dubbo.admin.common.util.Constants;
-import org.apache.dubbo.admin.common.util.Tool;
+import org.apache.dubbo.admin.common.util.ConvertUtil;
 import org.apache.dubbo.common.URL;
 
 import java.util.List;
@@ -209,9 +209,16 @@
     }
 
     public URL toUrl() {
-        String group = Tool.getGroup(service);
-        String version = Tool.getVersion(service);
-        String interfaze = Tool.getInterface(service);
+        String[] detachResult = ConvertUtil.detachId(service);
+        String group = null;
+        String version = null;
+        String interfaze = detachResult[0];
+        if (detachResult.length > 1) {
+            version = detachResult[1];
+        }
+        if (detachResult.length > 2) {
+            group = detachResult[2];
+        }
         return URL.valueOf(Constants.ROUTE_PROTOCOL + "://" + Constants.ANYHOST_VALUE + "/" + interfaze
                 + "?" + Constants.CATEGORY_KEY + "=" + Constants.ROUTERS_CATEGORY
                 + "&router=condition&runtime=" + isRuntime() + "&enabled=" + isEnabled() + "&priority=" + getPriority() + "&force=" + (getMatchRule().contains("host") ? "true" : isForce()) + "&dynamic=" + isDynamic()
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
index a9d3b1b..ed28d64 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/service/impl/RouteServiceImpl.java
@@ -398,7 +398,7 @@
     	List<Route> oldList = new LinkedList<Route>();
     	for (String condition : route.getConditions()) {
 	        Route old = new Route();
-	        old.setService(route.getService());
+            old.setService(ConvertUtil.getIdFromDTO(route));
 	        old.setEnabled(route.isEnabled());
 	        old.setForce(route.isForce());
 	        old.setRuntime(route.isRuntime());
