diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java
new file mode 100644
index 0000000..77f483f
--- /dev/null
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/PortPairGroupService.java
@@ -0,0 +1,80 @@
+/*
+ * 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.vtnrsc.portpairgroup;
+
+import org.onosproject.vtnrsc.PortPairGroup;
+import org.onosproject.vtnrsc.PortPairGroupId;
+
+/**
+ * Service for interacting with the inventory of port pair groups.
+ */
+public interface PortPairGroupService {
+
+    /**
+     * Returns if the port pair group is existed.
+     *
+     * @param portPairGroupId port pair group identifier
+     * @return true or false if one with the given identifier exists.
+     */
+    boolean exists(PortPairGroupId portPairGroupId);
+
+    /**
+     * Returns the number of port pair groups known to the system.
+     *
+     * @return number of port pair groups.
+     */
+    int getPortPairGroupCount();
+
+    /**
+     * Returns an iterable collection of the currently known port pair groups.
+     *
+     * @return collection of port pair groups.
+     */
+    Iterable<PortPairGroup> getPortPairGroups();
+
+    /**
+     * Returns the portPairGroup with the given identifier.
+     *
+     * @param portPairGroupId port pair group identifier
+     * @return PortPairGroup or null if port pair group with the given identifier is not
+     *         known.
+     */
+    PortPairGroup getPortPairGroup(PortPairGroupId portPairGroupId);
+
+    /**
+     * Creates a PortPairGroup in the store.
+     *
+     * @param portPairGroup the port pair group to create
+     * @return true if given port pair group is created successfully.
+     */
+    boolean createPortPairGroup(PortPairGroup portPairGroup);
+
+    /**
+     * Updates the portPairGroup in the store.
+     *
+     * @param portPairGroup the port pair group to update
+     * @return true if given port pair group is updated successfully.
+     */
+    boolean updatePortPairGroup(PortPairGroup portPairGroup);
+
+    /**
+     * Deletes portPairGroup by given portPairGroupId.
+     *
+     * @param portPairGroupId id of port pair group to remove
+     * @return true if the give port pair group is deleted successfully.
+     */
+    boolean removePortPairGroup(PortPairGroupId portPairGroupId);
+}
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/package-info.java
new file mode 100644
index 0000000..8a79fe9
--- /dev/null
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/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.
+ */
+
+/**
+ * Service for interacting with the inventory of port pair groups.
+ */
+package org.onosproject.vtnrsc.portpairgroup;
