diff --git a/apps/pom.xml b/apps/pom.xml
index 7b64a1c..1191205 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -54,6 +54,7 @@
         <module>olt</module>
         <module>flowanalyzer</module>
         <module>vtnrsc</module>
+        <module>vtn</module>
     </modules>
 
     <properties>
diff --git a/apps/vtn/pom.xml b/apps/vtn/pom.xml
new file mode 100644
index 0000000..aa92717
--- /dev/null
+++ b/apps/vtn/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<project
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-apps</artifactId>
+        <version>1.3.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-app-vtn</artifactId>
+    <packaging>bundle</packaging>
+
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <onos.app.name>org.onosproject.vtn</onos.app.name>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>jsr311-api</artifactId>
+            <version>1.1.1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-incubator-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-core-serializers</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/apps/vtn/src/main/java/org/onosproject/app/vtn/VTNService.java b/apps/vtn/src/main/java/org/onosproject/app/vtn/VTNService.java
new file mode 100644
index 0000000..880f2b9
--- /dev/null
+++ b/apps/vtn/src/main/java/org/onosproject/app/vtn/VTNService.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+package org.onosproject.app.vtn;
+
+import org.onosproject.net.Device;
+import org.onosproject.net.Host;
+
+/**
+ * VTN application that applies configuration and flows to the device.
+ */
+public interface VTNService {
+
+    /**
+     * Creates a vxlan tunnel and creates the ovs when a ovs controller node is detected.
+     *
+     * @param device controller-type device
+     */
+    void onServerDetected(Device device);
+
+    /**
+     * Drops a vxlan tunnel and drops the ovs when a ovs controller node is vanished.
+     *
+     * @param device controller-type device
+     */
+    void onServerVanished(Device device);
+
+    /**
+     * Applies default forwarding flows when a ovs is detected.
+     *
+     * @param device switch-type device
+     */
+    void onOvsDetected(Device device);
+
+    /**
+     * Remove default forwarding flows when a ovs is vanished.
+     *
+     * @param device switch-type device
+     */
+    void onOvsVanished(Device device);
+
+    /**
+     * Applies multicast flows and tunnel flows when a VM is detected.
+     *
+     * @param host a VM
+     */
+    void onHostDetected(Host host);
+
+    /**
+     * Remove multicast flows and tunnel flows when a VM is vanished.
+     *
+     * @param host a VM
+     */
+    void onHostVanished(Host host);
+
+}
diff --git a/apps/vtn/src/main/java/org/onosproject/app/vtn/package-info.java b/apps/vtn/src/main/java/org/onosproject/app/vtn/package-info.java
new file mode 100644
index 0000000..488adc5
--- /dev/null
+++ b/apps/vtn/src/main/java/org/onosproject/app/vtn/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * 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.
+ */
+
+/**
+ * VTN application that applies configuration and flows to the device.
+ */
+package org.onosproject.app.vtn;
