ONOS-6903 Move EVPN from incubator to apps

Change-Id: Id84c59e28f2591535b0726afbc1a2fa3caf07db5
diff --git a/apps/dhcprelay/pom.xml b/apps/dhcprelay/pom.xml
index 782e1b0..5e9d68e 100644
--- a/apps/dhcprelay/pom.xml
+++ b/apps/dhcprelay/pom.xml
@@ -81,13 +81,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.onosproject</groupId>
-            <artifactId>onos-incubator-api</artifactId>
-            <version>${project.version}</version>
-            <classifier>tests</classifier>
-        </dependency>
-
-        <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.scr.annotations</artifactId>
             <scope>provided</scope>
diff --git a/apps/evpn-route-service/BUCK b/apps/evpn-route-service/BUCK
new file mode 100644
index 0000000..5c8b037
--- /dev/null
+++ b/apps/evpn-route-service/BUCK
@@ -0,0 +1,11 @@
+BUNDLES = [
+    '//apps/evpn-route-service/api:onos-apps-evpn-route-service-api',
+    '//apps/evpn-route-service/app:onos-apps-evpn-route-service-app',
+]
+
+onos_app (
+    title = 'EVPN Routing App',
+    category = 'Utility',
+    url = 'http://onosproject.org',
+    included_bundles = BUNDLES,
+)
diff --git a/apps/evpn-route-service/api/BUCK b/apps/evpn-route-service/api/BUCK
new file mode 100644
index 0000000..68eeacf
--- /dev/null
+++ b/apps/evpn-route-service/api/BUCK
@@ -0,0 +1,13 @@
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+    '//core/api:onos-api-tests',
+]
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+)
diff --git a/apps/evpn-route-service/api/pom.xml b/apps/evpn-route-service/api/pom.xml
new file mode 100644
index 0000000..25113e7
--- /dev/null
+++ b/apps/evpn-route-service/api/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Foundation
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>onos-app-evpn-route-service</artifactId>
+        <groupId>org.onosproject</groupId>
+        <version>1.11.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>onos-app-evpn-route-service-api</artifactId>
+    <packaging>bundle</packaging>
+
+    <url>http://onosproject.org</url>
+
+    <description>EVPN Routing Application API</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onlab-junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-core-serializers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-incubator-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-api</artifactId>
+            <classifier>tests</classifier>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+
+</project>
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstance.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstance.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java
index 4201909..5288db7 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstance.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstance.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.List;
 import java.util.Objects;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceName.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceName.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java
index ee63cf4..f1ea22a 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceName.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceName.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceNextHop.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceNextHop.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java
index 4acd2b3..49ad2c5 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceNextHop.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceNextHop.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.onlab.packet.IpAddress;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 
+import org.onlab.packet.IpAddress;
+
 import static com.google.common.base.MoreObjects.toStringHelper;
 
 /**
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstancePrefix.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstancePrefix.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java
index 45c4c04..2f30538 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstancePrefix.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstancePrefix.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
+
+import java.util.Objects;
 
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 
-import java.util.Objects;
-
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceRoute.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceRoute.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java
index b7c2b5cc..3e98531 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInstanceRoute.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInstanceRoute.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.onlab.packet.IpAddress;
-import org.onlab.packet.IpPrefix;
+package org.onosproject.evpnrouteservice;
 
 import java.util.List;
 import java.util.Objects;
 
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInternalRouteEvent.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInternalRouteEvent.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java
index 046927b..7a71875 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnInternalRouteEvent.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnInternalRouteEvent.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import org.onosproject.event.AbstractEvent;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnNextHop.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnNextHop.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java
index 6aacabb..ac1e06b 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnNextHop.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnNextHop.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.onlab.packet.IpAddress;
+package org.onosproject.evpnrouteservice;
 
 import java.util.List;
 import java.util.Objects;
 
+import org.onlab.packet.IpAddress;
+
 import static com.google.common.base.MoreObjects.toStringHelper;
 
 /**
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnPrefix.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnPrefix.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java
index acea7d9..3f70ef5 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnPrefix.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnPrefix.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
+
+import java.util.Objects;
 
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 
-import java.util.Objects;
-
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRoute.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRoute.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java
index 555634e..9449093 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRoute.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRoute.java
@@ -14,15 +14,15 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
+
+import java.util.List;
+import java.util.Objects;
 
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 
-import java.util.List;
-import java.util.Objects;
-
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteAdminService.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java
similarity index 95%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteAdminService.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java
index 3a4ea8f..cc9e200 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteAdminService.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteAdminService.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Collection;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteEvent.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java
similarity index 98%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteEvent.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java
index 2d2db40..ae3d93a 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteEvent.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteEvent.java
@@ -14,15 +14,15 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.joda.time.LocalDateTime;
-import org.onosproject.event.AbstractEvent;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Objects;
 
+import org.joda.time.LocalDateTime;
+import org.onosproject.event.AbstractEvent;
+
 import static com.google.common.base.MoreObjects.toStringHelper;
 
 /**
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteListener.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java
similarity index 93%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteListener.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java
index 02779c0..32a35c2 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteListener.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteListener.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import org.onosproject.event.EventListener;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteService.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java
similarity index 95%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteService.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java
index 20e1fa7..ca9c031 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteService.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteService.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.onosproject.event.ListenerService;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Collection;
 
+import org.onosproject.event.ListenerService;
+
 /**
  * EVPN route service.
  */
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteSet.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteSet.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java
index adc8c1c..707df22 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteSet.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteSet.java
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import com.google.common.collect.ImmutableSet;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 import java.util.Set;
 
+import com.google.common.collect.ImmutableSet;
+
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteStore.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteStore.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java
index 5c6e2ef..c06704f 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteStore.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStore.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.onlab.packet.IpAddress;
-import org.onosproject.store.Store;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Collection;
 import java.util.Set;
 
+import org.onlab.packet.IpAddress;
+import org.onosproject.store.Store;
+
 /**
  * EVPN route store.
  */
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteStoreDelegate.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java
similarity index 94%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteStoreDelegate.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java
index 55818e1..d714adc 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteStoreDelegate.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteStoreDelegate.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import org.onosproject.store.StoreDelegate;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteTableId.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteTableId.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java
index 44af3cb..846a8d1 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnRouteTableId.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnRouteTableId.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnTable.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java
old mode 100644
new mode 100755
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnTable.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java
index 1b8fe78..0b3379f
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/EvpnTable.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/EvpnTable.java
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
-
-import org.onlab.packet.IpAddress;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Collection;
 
+import org.onlab.packet.IpAddress;
+
 /**
  * Represents a route table that stores routes.
  */
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/Label.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java
similarity index 96%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/Label.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java
index 0ce19af..8d90611 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/Label.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/Label.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteDistinguisher.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteDistinguisher.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java
index c0e5b10..ca217b6 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/RouteDistinguisher.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/RouteDistinguisher.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/VpnRouteTarget.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java
similarity index 97%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/VpnRouteTarget.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java
index d7aee60..51a9a59 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/VpnRouteTarget.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/VpnRouteTarget.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
 
 import java.util.Objects;
 
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/package-info.java b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java
similarity index 92%
rename from incubator/api/src/main/java/org/onosproject/incubator/net/routing/package-info.java
rename to apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java
index 3d3f01c..3514c80 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/routing/package-info.java
+++ b/apps/evpn-route-service/api/src/main/java/org/onosproject/evpnrouteservice/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Unicast routing service.
  */
-package org.onosproject.incubator.net.routing;
+package org.onosproject.evpnrouteservice;
diff --git a/apps/evpn-route-service/app/BUCK b/apps/evpn-route-service/app/BUCK
new file mode 100644
index 0000000..1231207
--- /dev/null
+++ b/apps/evpn-route-service/app/BUCK
@@ -0,0 +1,16 @@
+COMPILE_DEPS = [
+    '//lib:CORE_DEPS',
+    '//utils/misc:onlab-misc',
+    '//core/store/serializers:onos-core-serializers',
+    '//apps/evpn-route-service/api:onos-apps-evpn-route-service-api',
+]
+
+TEST_DEPS = [
+    '//lib:TEST',
+    '//core/api:onos-api-tests',
+]
+
+osgi_jar_with_tests (
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+)
diff --git a/apps/evpn-route-service/app/pom.xml b/apps/evpn-route-service/app/pom.xml
new file mode 100644
index 0000000..780a9db
--- /dev/null
+++ b/apps/evpn-route-service/app/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Foundation
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>onos-app-evpn-route-service</artifactId>
+        <groupId>org.onosproject</groupId>
+        <version>1.11.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>onos-app-evpn-route-service-app</artifactId>
+    <packaging>bundle</packaging>
+
+    <url>http://onosproject.org</url>
+
+    <description>EVPN Routing Application Implementation</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onlab-junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-core-serializers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-incubator-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-api</artifactId>
+            <classifier>tests</classifier>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-evpn-route-service-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+    </dependencies>
+
+
+</project>
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/EvpnListenerQueue.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java
similarity index 89%
rename from incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/EvpnListenerQueue.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java
index 77a57ca..ce3d012 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/EvpnListenerQueue.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnListenerQueue.java
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing.impl;
+package org.onosproject.evpnrouteservice.impl;
 
-import org.onosproject.incubator.net.routing.EvpnRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnRouteEvent;
 
 /**
  * Queues updates for a route listener to ensure they are received in the
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/EvpnRouteManager.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
similarity index 92%
rename from incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/EvpnRouteManager.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
index 6757353..19e6311 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/EvpnRouteManager.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/EvpnRouteManager.java
@@ -14,28 +14,8 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.net.routing.impl;
+package org.onosproject.evpnrouteservice.impl;
 
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
-import org.onosproject.incubator.net.routing.EvpnInternalRouteEvent;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRouteAdminService;
-import org.onosproject.incubator.net.routing.EvpnRouteEvent;
-import org.onosproject.incubator.net.routing.EvpnRouteListener;
-import org.onosproject.incubator.net.routing.EvpnRouteService;
-import org.onosproject.incubator.net.routing.EvpnRouteSet;
-import org.onosproject.incubator.net.routing.EvpnRouteStore;
-import org.onosproject.incubator.net.routing.EvpnRouteStoreDelegate;
-import org.onosproject.incubator.net.routing.EvpnRouteTableId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.annotation.concurrent.GuardedBy;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -44,6 +24,28 @@
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadFactory;
 
+import javax.annotation.concurrent.GuardedBy;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
+
+import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRouteAdminService;
+import org.onosproject.evpnrouteservice.EvpnRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnRouteListener;
+import org.onosproject.evpnrouteservice.EvpnRouteService;
+import org.onosproject.evpnrouteservice.EvpnRouteSet;
+import org.onosproject.evpnrouteservice.EvpnRouteStore;
+import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate;
+import org.onosproject.evpnrouteservice.EvpnRouteTableId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import static java.util.concurrent.Executors.newSingleThreadExecutor;
 import static org.onlab.util.Tools.groupedThreads;
 
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/package-info.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java
similarity index 92%
rename from incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/package-info.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java
index d352803..80892c9 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/routing/impl/package-info.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/impl/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Implementation of route service.
  */
-package org.onosproject.incubator.net.routing.impl;
+package org.onosproject.evpnrouteservice.impl;
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/DistributedEvpnRouteStore.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java
similarity index 92%
rename from incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/DistributedEvpnRouteStore.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java
index b4526e2..de1dbd6 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/DistributedEvpnRouteStore.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/DistributedEvpnRouteStore.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.store.routing.impl;
+package org.onosproject.evpnrouteservice.store;
 
 import com.google.common.collect.ImmutableSet;
 import org.apache.felix.scr.annotations.Activate;
@@ -25,13 +25,13 @@
 import org.apache.felix.scr.annotations.Service;
 import org.onlab.packet.IpAddress;
 import org.onlab.util.KryoNamespace;
-import org.onosproject.incubator.net.routing.EvpnInternalRouteEvent;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRouteSet;
-import org.onosproject.incubator.net.routing.EvpnRouteStore;
-import org.onosproject.incubator.net.routing.EvpnRouteStoreDelegate;
-import org.onosproject.incubator.net.routing.EvpnRouteTableId;
-import org.onosproject.incubator.net.routing.EvpnTable;
+import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRouteSet;
+import org.onosproject.evpnrouteservice.EvpnRouteStore;
+import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate;
+import org.onosproject.evpnrouteservice.EvpnRouteTableId;
+import org.onosproject.evpnrouteservice.EvpnTable;
 import org.onosproject.store.AbstractStore;
 import org.onosproject.store.service.DistributedSet;
 import org.onosproject.store.service.Serializer;
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/EmptyEvpnRouteTable.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java
similarity index 84%
rename from incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/EmptyEvpnRouteTable.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java
index aa56d71..f49a174 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/EmptyEvpnRouteTable.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EmptyEvpnRouteTable.java
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.store.routing.impl;
+package org.onosproject.evpnrouteservice.store;
 
 import org.onlab.packet.IpAddress;
-import org.onosproject.incubator.net.routing.EvpnPrefix;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRouteSet;
-import org.onosproject.incubator.net.routing.EvpnRouteTableId;
-import org.onosproject.incubator.net.routing.EvpnTable;
+import org.onosproject.evpnrouteservice.EvpnPrefix;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRouteSet;
+import org.onosproject.evpnrouteservice.EvpnRouteTableId;
+import org.onosproject.evpnrouteservice.EvpnTable;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/EvpnRouteTable.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java
similarity index 91%
rename from incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/EvpnRouteTable.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java
index 33c8f96..2c3e07b 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/EvpnRouteTable.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/EvpnRouteTable.java
@@ -14,22 +14,22 @@
  * limitations under the License.
  */
 
-package org.onosproject.incubator.store.routing.impl;
+package org.onosproject.evpnrouteservice.store;
 
 import org.onlab.packet.IpAddress;
 import org.onlab.packet.IpPrefix;
 import org.onlab.packet.MacAddress;
 import org.onlab.util.KryoNamespace;
-import org.onosproject.incubator.net.routing.EvpnInternalRouteEvent;
-import org.onosproject.incubator.net.routing.EvpnPrefix;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRouteSet;
-import org.onosproject.incubator.net.routing.EvpnRouteStoreDelegate;
-import org.onosproject.incubator.net.routing.EvpnRouteTableId;
-import org.onosproject.incubator.net.routing.EvpnTable;
-import org.onosproject.incubator.net.routing.Label;
-import org.onosproject.incubator.net.routing.RouteDistinguisher;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.EvpnInternalRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnPrefix;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRouteSet;
+import org.onosproject.evpnrouteservice.EvpnRouteStoreDelegate;
+import org.onosproject.evpnrouteservice.EvpnRouteTableId;
+import org.onosproject.evpnrouteservice.EvpnTable;
+import org.onosproject.evpnrouteservice.Label;
+import org.onosproject.evpnrouteservice.RouteDistinguisher;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.ConsistentMap;
 import org.onosproject.store.service.DistributedPrimitive;
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/package-info.java b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java
similarity index 92%
rename from incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/package-info.java
rename to apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java
index 38f82fb..52e9d6c 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/routing/impl/package-info.java
+++ b/apps/evpn-route-service/app/src/main/java/org/onosproject/evpnrouteservice/store/package-info.java
@@ -17,4 +17,4 @@
 /**
  * Implementation of the unicast routing service.
  */
-package org.onosproject.incubator.store.routing.impl;
+package org.onosproject.evpnrouteservice.store;
diff --git a/apps/evpn-route-service/pom.xml b/apps/evpn-route-service/pom.xml
new file mode 100644
index 0000000..a008f5f
--- /dev/null
+++ b/apps/evpn-route-service/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Foundation
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-apps</artifactId>
+        <version>1.11.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>onos-app-evpn-route-service</artifactId>
+    <packaging>pom</packaging>
+
+    <description>EVPN Routing Application</description>
+
+    <modules>
+        <module>api</module>
+        <module>app</module>
+    </modules>
+
+</project>
diff --git a/apps/evpnopenflow/BUCK b/apps/evpnopenflow/BUCK
index a244b1f..d3d92ee 100644
--- a/apps/evpnopenflow/BUCK
+++ b/apps/evpnopenflow/BUCK
@@ -7,6 +7,7 @@
   '//apps/gluon:onos-apps-gluon',
   '//apps/vtn/vtnrsc:onos-apps-vtn-vtnrsc',
   '//apps/route-service/api:onos-apps-route-service-api',
+  '//apps/evpn-route-service/api:onos-apps-evpn-route-service-api',
 ]
 
 TEST_DEPS = [
@@ -25,5 +26,6 @@
   url = 'http://onosproject.org',
   description = 'Ethernet VPN (EVPN) introduces a new model for Ethernet services delivery.' +
   'It enables integrated Layer 2 service over Ethernet with multihoming.',
-  required_apps = [ 'org.onosproject.route-service' ],
+  required_apps = [ 'org.onosproject.route-service', 'org.onosproject.evpnrouteservice',
+                    'org.onosproject.gluon', 'org.onosproject.vtn' ],
 )
diff --git a/apps/evpnopenflow/pom.xml b/apps/evpnopenflow/pom.xml
index 43cca85..a1ec1b8 100644
--- a/apps/evpnopenflow/pom.xml
+++ b/apps/evpnopenflow/pom.xml
@@ -110,5 +110,10 @@
             <artifactId>onos-apps-route-service-api</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-evpn-route-service-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java
index 560b96e..5a41454 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/EvpnService.java
@@ -17,7 +17,7 @@
 package org.onosproject.evpnopenflow.manager;
 
 import org.onosproject.evpnopenflow.rsc.VpnPort;
-import org.onosproject.incubator.net.routing.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRoute;
 import org.onosproject.net.Host;
 
 /**
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java
index 7f7314b..33d6924 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/manager/impl/EvpnManager.java
@@ -50,22 +50,22 @@
 import org.onosproject.incubator.net.resource.label.LabelResourceAdminService;
 import org.onosproject.incubator.net.resource.label.LabelResourceId;
 import org.onosproject.incubator.net.resource.label.LabelResourceService;
-import org.onosproject.incubator.net.routing.EvpnInstanceName;
-import org.onosproject.incubator.net.routing.EvpnInstanceNextHop;
-import org.onosproject.incubator.net.routing.EvpnInstancePrefix;
-import org.onosproject.incubator.net.routing.EvpnInstanceRoute;
-import org.onosproject.incubator.net.routing.EvpnNextHop;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRoute.Source;
-import org.onosproject.incubator.net.routing.EvpnRouteAdminService;
-import org.onosproject.incubator.net.routing.EvpnRouteEvent;
-import org.onosproject.incubator.net.routing.EvpnRouteListener;
-import org.onosproject.incubator.net.routing.EvpnRouteService;
-import org.onosproject.incubator.net.routing.EvpnRouteSet;
-import org.onosproject.incubator.net.routing.EvpnRouteStore;
-import org.onosproject.incubator.net.routing.Label;
-import org.onosproject.incubator.net.routing.RouteDistinguisher;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.EvpnInstanceName;
+import org.onosproject.evpnrouteservice.EvpnInstanceNextHop;
+import org.onosproject.evpnrouteservice.EvpnInstancePrefix;
+import org.onosproject.evpnrouteservice.EvpnInstanceRoute;
+import org.onosproject.evpnrouteservice.EvpnNextHop;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRoute.Source;
+import org.onosproject.evpnrouteservice.EvpnRouteAdminService;
+import org.onosproject.evpnrouteservice.EvpnRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnRouteListener;
+import org.onosproject.evpnrouteservice.EvpnRouteService;
+import org.onosproject.evpnrouteservice.EvpnRouteSet;
+import org.onosproject.evpnrouteservice.EvpnRouteStore;
+import org.onosproject.evpnrouteservice.Label;
+import org.onosproject.evpnrouteservice.RouteDistinguisher;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 import org.onosproject.mastership.MastershipService;
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.Device;
@@ -103,7 +103,6 @@
 import java.util.List;
 import java.util.Set;
 
-import static com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type.Reference;
 import static org.onosproject.evpnopenflow.rsc.EvpnConstants.APP_ID;
 import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ARP_PRIORITY;
 import static org.onosproject.evpnopenflow.rsc.EvpnConstants.ARP_RESPONSE;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java
index 2481830..afa32a0 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnAfConfig.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.evpnopenflow.rsc;
 
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java
index e7f9c5d..62b1a70 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/DefaultVpnInstance.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.evpnopenflow.rsc;
 
-import org.onosproject.incubator.net.routing.EvpnInstanceName;
-import org.onosproject.incubator.net.routing.RouteDistinguisher;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.EvpnInstanceName;
+import org.onosproject.evpnrouteservice.RouteDistinguisher;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 
 import java.util.Objects;
 import java.util.Set;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java
index e9bd068..83d5686 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnAfConfig.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.evpnopenflow.rsc;
 
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 
 /**
  * Representation of a VPN af configuration.
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java
index d49027b..3c2d062 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/VpnInstance.java
@@ -16,9 +16,9 @@
 
 package org.onosproject.evpnopenflow.rsc;
 
-import org.onosproject.incubator.net.routing.EvpnInstanceName;
-import org.onosproject.incubator.net.routing.RouteDistinguisher;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.EvpnInstanceName;
+import org.onosproject.evpnrouteservice.RouteDistinguisher;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 
 import java.util.Set;
 
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
index 2122320..f4ddf15 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPrivateRouteListCommand.java
@@ -20,7 +20,7 @@
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.evpnopenflow.manager.EvpnService;
 import org.onosproject.evpnopenflow.manager.impl.EvpnManager;
-import org.onosproject.incubator.net.routing.EvpnInstanceRoute;
+import org.onosproject.evpnrouteservice.EvpnInstanceRoute;
 
 import java.util.Collection;
 
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
index 3067257..2ce5fb8 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/cli/EvpnPublicRouteListCommand.java
@@ -18,9 +18,9 @@
 
 import org.apache.karaf.shell.commands.Command;
 import org.onosproject.cli.AbstractShellCommand;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRouteSet;
-import org.onosproject.incubator.net.routing.EvpnRouteStore;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRouteSet;
+import org.onosproject.evpnrouteservice.EvpnRouteStore;
 
 import java.util.Collection;
 
@@ -55,4 +55,4 @@
             }
         });
     }
-}
\ No newline at end of file
+}
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java
index 31714ad..ecde40d 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/VpnAfConfigService.java
@@ -18,7 +18,7 @@
 
 import com.fasterxml.jackson.databind.JsonNode;
 import org.onosproject.evpnopenflow.rsc.VpnAfConfig;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 
 import java.util.Collection;
 
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java
index fafd5d8..7645c2e 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpnafconfig/impl/VpnAfConfigManager.java
@@ -31,7 +31,7 @@
 import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigEvent;
 import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigListener;
 import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.EventuallyConsistentMap;
 import org.onosproject.store.service.StorageService;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java
index f233f29..a61a811 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/VpnInstanceService.java
@@ -19,7 +19,7 @@
 import com.fasterxml.jackson.databind.JsonNode;
 import org.onosproject.evpnopenflow.rsc.VpnInstance;
 import org.onosproject.evpnopenflow.rsc.VpnInstanceId;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 
 import java.util.Collection;
 import java.util.Set;
diff --git a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java
index e0ec5a9..20c6d15 100644
--- a/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java
+++ b/apps/evpnopenflow/src/main/java/org/onosproject/evpnopenflow/rsc/vpninstance/impl/VpnInstanceManager.java
@@ -33,10 +33,10 @@
 import org.onosproject.evpnopenflow.rsc.VpnInstanceId;
 import org.onosproject.evpnopenflow.rsc.vpnafconfig.VpnAfConfigService;
 import org.onosproject.evpnopenflow.rsc.vpninstance.VpnInstanceService;
-import org.onosproject.incubator.net.routing.EvpnInstanceName;
+import org.onosproject.evpnrouteservice.EvpnInstanceName;
 import org.onosproject.routeservice.RouteAdminService;
-import org.onosproject.incubator.net.routing.RouteDistinguisher;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.RouteDistinguisher;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.service.EventuallyConsistentMap;
 import org.onosproject.store.service.StorageService;
diff --git a/apps/pom.xml b/apps/pom.xml
index 0fd13fc..617daa6 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -92,6 +92,7 @@
 	    <module>gluon</module>
         <module>evpnopenflow</module>
         <module>route-service</module>
+        <module>evpn-route-service</module>
     </modules>
 
     <properties>
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/impl/package-info.java b/incubator/store/src/main/java/org/onosproject/incubator/store/impl/package-info.java
deleted file mode 100644
index 72a6bfc..0000000
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/impl/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Incubating distributed store implementations.
- */
-package org.onosproject.incubator.store.impl;
\ No newline at end of file
diff --git a/modules.defs b/modules.defs
index fa8cba2..6620431 100644
--- a/modules.defs
+++ b/modules.defs
@@ -211,6 +211,7 @@
     '//apps/gluon:onos-apps-gluon-oar',
     '//apps/evpnopenflow:onos-apps-evpnopenflow-oar',
     '//apps/route-service:onos-apps-route-service-oar',
+    '//apps/evpn-route-service:onos-apps-evpn-route-service-oar',
 ]
 
 PROTOCOL_APPS = [
diff --git a/providers/bgp/BUCK b/providers/bgp/BUCK
index c6560b9..93ab3f7 100644
--- a/providers/bgp/BUCK
+++ b/providers/bgp/BUCK
@@ -14,5 +14,6 @@
     url = 'http://onosproject.org',
     included_bundles = BUNDLES,
     description = 'BGP protocol southbound providers.',
+    required_apps = [ 'org.onosproject.evpnrouteservice' ],
 )
 
diff --git a/providers/bgp/route/BUCK b/providers/bgp/route/BUCK
index bf38465..5e94e85 100644
--- a/providers/bgp/route/BUCK
+++ b/providers/bgp/route/BUCK
@@ -1,16 +1,17 @@
 COMPILE_DEPS = [
-  '//lib:CORE_DEPS',
-  '//protocols/bgp/api:onos-protocols-bgp-api',
-  '//protocols/bgp/bgpio:onos-protocols-bgp-bgpio',
-  '//incubator/store:onos-incubator-store',
-  '//incubator/api:onos-incubator-api',
+    '//lib:CORE_DEPS',
+    '//protocols/bgp/api:onos-protocols-bgp-api',
+    '//protocols/bgp/bgpio:onos-protocols-bgp-bgpio',
+    '//incubator/store:onos-incubator-store',
+    '//incubator/api:onos-incubator-api',
+    '//apps/evpn-route-service/api:onos-apps-evpn-route-service-api',
 ]
 
 TEST_DEPS = [
-  '//lib:TEST_ADAPTERS',
+    '//lib:TEST_ADAPTERS',
 ]
 
 osgi_jar_with_tests(
-  deps = COMPILE_DEPS,
-  test_deps = TEST_DEPS,
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
 )
diff --git a/providers/bgp/route/pom.xml b/providers/bgp/route/pom.xml
index e3bffcd..e7c26a8 100644
--- a/providers/bgp/route/pom.xml
+++ b/providers/bgp/route/pom.xml
@@ -46,5 +46,10 @@
             <groupId>org.onosproject</groupId>
             <artifactId>onos-bgp-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-app-evpn-route-service-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
 </project>
diff --git a/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java b/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java
index 81bd1d5..c7a9b10 100644
--- a/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java
+++ b/providers/bgp/route/src/main/java/org/onosproject/provider/bgp/route/impl/BgpRouteProvider.java
@@ -40,12 +40,12 @@
 import org.onosproject.bgpio.types.MpUnReachNlri;
 import org.onosproject.bgpio.types.RouteDistinguisher;
 import org.onosproject.bgpio.types.RouteTarget;
-import org.onosproject.incubator.net.routing.EvpnRoute;
-import org.onosproject.incubator.net.routing.EvpnRoute.Source;
-import org.onosproject.incubator.net.routing.EvpnRouteAdminService;
-import org.onosproject.incubator.net.routing.EvpnRouteEvent;
-import org.onosproject.incubator.net.routing.EvpnRouteListener;
-import org.onosproject.incubator.net.routing.VpnRouteTarget;
+import org.onosproject.evpnrouteservice.EvpnRoute;
+import org.onosproject.evpnrouteservice.EvpnRoute.Source;
+import org.onosproject.evpnrouteservice.EvpnRouteAdminService;
+import org.onosproject.evpnrouteservice.EvpnRouteEvent;
+import org.onosproject.evpnrouteservice.EvpnRouteListener;
+import org.onosproject.evpnrouteservice.VpnRouteTarget;
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
 import org.slf4j.Logger;
@@ -391,4 +391,4 @@
                               labelInt);
         }
     }
-}
\ No newline at end of file
+}