diff --git a/apps/aaa/app.xml b/apps/aaa/app.xml
index 167a419..9ad7681 100644
--- a/apps/aaa/app.xml
+++ b/apps/aaa/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.aaa" origin="ATT" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>ONOS authentication application.</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-xos-integration/${project.version}</artifact>
     <bundle>mvn:com.sun.jersey/jersey-client/1.19</bundle>
diff --git a/apps/aaa/pom.xml b/apps/aaa/pom.xml
index 1da6bc3..4693a56 100644
--- a/apps/aaa/pom.xml
+++ b/apps/aaa/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -19,7 +19,6 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-
     <parent>
         <groupId>org.onosproject</groupId>
         <artifactId>onos-apps</artifactId>
@@ -32,10 +31,6 @@
 
     <description>ONOS authentication application</description>
 
-    <properties>
-        <onos.app.name>org.onosproject.aaa</onos.app.name>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>org.osgi</groupId>
diff --git a/apps/acl/pom.xml b/apps/acl/pom.xml
index 2145e52..180b66f 100644
--- a/apps/acl/pom.xml
+++ b/apps/acl/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 Open Networking Laboratory
   ~ Originally created by Pengfei Lu, Network and Cloud Computing Laboratory, Dalian University of Technology, China
   ~ Advisers: Keqiu Li and Heng Qi
   ~ This work is supported by the State Key Program of National Natural Science of China(Grant No. 61432002)
@@ -40,6 +40,9 @@
     <properties>
         <onos.app.name>org.onosproject.acl</onos.app.name>
         <onos.app.origin>DLUT</onos.app.origin>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS ACL application.</onos.app.readme>
 
         <web.context>/onos/v1/acl</web.context>
         <api.version>1.0.0</api.version>
diff --git a/apps/bgprouter/app.xml b/apps/bgprouter/app.xml
index 2fc47be..6cbcb20 100644
--- a/apps/bgprouter/app.xml
+++ b/apps/bgprouter/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.bgprouter" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>BGP router application.</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-routing-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-routing/${project.version}</artifact>
diff --git a/apps/bgprouter/pom.xml b/apps/bgprouter/pom.xml
index 7bee742..964be8e 100644
--- a/apps/bgprouter/pom.xml
+++ b/apps/bgprouter/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
diff --git a/apps/cip/pom.xml b/apps/cip/pom.xml
index f60de80..687de60 100644
--- a/apps/cip/pom.xml
+++ b/apps/cip/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.cip</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Cluster IP alias application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/cordfabric/pom.xml b/apps/cordfabric/pom.xml
index 53e3e7f..fbd202c 100644
--- a/apps/cordfabric/pom.xml
+++ b/apps/cordfabric/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -32,6 +32,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.cordfabric</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Simple fabric application for CORD.</onos.app.readme>
         <web.context>/onos/cordfabric</web.context>
         <api.version>1.0.0</api.version>
         <api.title>ONOS CORD Fabric REST API</api.title>
diff --git a/apps/cordvtn/pom.xml b/apps/cordvtn/pom.xml
index 460efe1..a807de8 100644
--- a/apps/cordvtn/pom.xml
+++ b/apps/cordvtn/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.cordvtn</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Virtual tenant network service for CORD.</onos.app.readme>
         <web.context>/onos/cordvtn</web.context>
         <api.version>1.0.0</api.version>
         <api.title>CORD VTN REST API</api.title>
diff --git a/apps/cpman/pom.xml b/apps/cpman/pom.xml
index 7a89ab5..5b89e01 100644
--- a/apps/cpman/pom.xml
+++ b/apps/cpman/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -14,7 +14,8 @@
   ~ 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"
+<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>
@@ -29,6 +30,14 @@
 
     <description>Control Plane Management Application</description>
 
+    <properties>
+        <onos.app.name>org.onosproject.cpman</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Control plane management application.
+        </onos.app.readme>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/apps/demo/cord-gui/pom.xml b/apps/demo/cord-gui/pom.xml
index 8f2c1a6..56ec4a0 100644
--- a/apps/demo/cord-gui/pom.xml
+++ b/apps/demo/cord-gui/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
diff --git a/apps/dhcp/app/app.xml b/apps/dhcp/app/app.xml
index bf324b1..280fc1c 100644
--- a/apps/dhcp/app/app.xml
+++ b/apps/dhcp/app/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.dhcp" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>DHCP server application.</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-dhcp-api/${project.version}</artifact>
 </app>
diff --git a/apps/dhcp/app/pom.xml b/apps/dhcp/app/pom.xml
index e013894..42c31b7 100644
--- a/apps/dhcp/app/pom.xml
+++ b/apps/dhcp/app/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,7 +33,6 @@
     <description>DHCP Server application</description>
 
     <properties>
-        <onos.app.name>org.onosproject.dhcp</onos.app.name>
         <web.context>/onos/dhcp</web.context>
         <api.version>1.0.0</api.version>
         <api.title>DHCP Server REST API</api.title>
diff --git a/apps/dhcp/pom.xml b/apps/dhcp/pom.xml
index f4c64e4..924c0bf 100644
--- a/apps/dhcp/pom.xml
+++ b/apps/dhcp/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
diff --git a/apps/drivermatrix/pom.xml b/apps/drivermatrix/pom.xml
index 87d25c5..3e5db97 100644
--- a/apps/drivermatrix/pom.xml
+++ b/apps/drivermatrix/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -14,7 +14,9 @@
   ~ 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">
+<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>
@@ -27,10 +29,13 @@
     <artifactId>onos-app-drivermatrix</artifactId>
     <packaging>bundle</packaging>
 
-    <description>Driver behaviour support matric</description>
+    <description>Driver behaviour support matrix</description>
 
     <properties>
         <onos.app.name>org.onosproject.drivermatrix</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Driver behavior support matrix.</onos.app.readme>
     </properties>
 
 </project>
diff --git a/apps/events/pom.xml b/apps/events/pom.xml
index 8415e92..f5ab42d 100644
--- a/apps/events/pom.xml
+++ b/apps/events/pom.xml
@@ -34,6 +34,10 @@
     <properties>
         <onos.version>1.5.0-SNAPSHOT</onos.version>
         <onos.app.name>org.onosproject.events</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS event history display application.
+        </onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/faultmanagement/app/app.xml b/apps/faultmanagement/app/app.xml
index 5c2db0c..f4c20c9 100644
--- a/apps/faultmanagement/app/app.xml
+++ b/apps/faultmanagement/app/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,10 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.faultmanagement" origin="BTI Systems" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
-
+    <readme>ONOS fault management application.</readme>
     <artifact>mvn:${project.groupId}/onos-app-fm-mgr/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-fm-web/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-fm-gui/${project.version}</artifact>
diff --git a/apps/faultmanagement/app/pom.xml b/apps/faultmanagement/app/pom.xml
index 41c6d8c..fac04b4 100644
--- a/apps/faultmanagement/app/pom.xml
+++ b/apps/faultmanagement/app/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-~ Copyright 2015 Open Networking Laboratory
+~ Copyright 2015-2016 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.
diff --git a/apps/flowanalyzer/pom.xml b/apps/flowanalyzer/pom.xml
index 0221a68..8369087 100644
--- a/apps/flowanalyzer/pom.xml
+++ b/apps/flowanalyzer/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.flowanalyzer</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Simple flow space analyzer.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/fwd/pom.xml b/apps/fwd/pom.xml
index d6f7827..d902ace 100644
--- a/apps/fwd/pom.xml
+++ b/apps/fwd/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.fwd</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Reactive forwarding application using flow subsystem.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/icon.png b/apps/icon.png
new file mode 100644
index 0000000..01ea558
--- /dev/null
+++ b/apps/icon.png
Binary files differ
diff --git a/apps/igmp/pom.xml b/apps/igmp/pom.xml
index 4ef3c9f..a8f1298 100644
--- a/apps/igmp/pom.xml
+++ b/apps/igmp/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.igmp</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>IGMP implementation.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/iptopology-api/pom.xml b/apps/iptopology-api/pom.xml
index 0a8dfdc..b8cf442 100644
--- a/apps/iptopology-api/pom.xml
+++ b/apps/iptopology-api/pom.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -26,4 +27,11 @@
     <packaging>bundle</packaging>
 
     <description>IP Layer Topology API</description>
+
+    <properties>
+        <onos.app.name>org.onosproject.iptopology-api</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>IP layer topology API.</onos.app.readme>
+    </properties>
 </project>
diff --git a/apps/metrics/pom.xml b/apps/metrics/pom.xml
index 63a1770..f3cdd0d 100644
--- a/apps/metrics/pom.xml
+++ b/apps/metrics/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.metrics</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Performance metrics collection application.
+        </onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/mfwd/pom.xml b/apps/mfwd/pom.xml
index 2dc3a66..45d3cd5 100644
--- a/apps/mfwd/pom.xml
+++ b/apps/mfwd/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.mfwd</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Multicast forwarding application.
+        </onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/mlb/pom.xml b/apps/mlb/pom.xml
index d9dd5a6..a300b41 100644
--- a/apps/mlb/pom.xml
+++ b/apps/mlb/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -33,6 +33,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.mlb</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Application that balances mastership among nodes.
+        </onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/mobility/pom.xml b/apps/mobility/pom.xml
index 99499d3..0f2b39e 100644
--- a/apps/mobility/pom.xml
+++ b/apps/mobility/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.mobility</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Host mobility application.
+        </onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/olt/app/app.xml b/apps/olt/app/app.xml
index 8994bd6..b67486a 100644
--- a/apps/olt/app/app.xml
+++ b/apps/olt/app/app.xml
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.olt" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>OLT application for CORD.</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-olt-api/${project.version}</artifact>
 </app>
diff --git a/apps/olt/app/pom.xml b/apps/olt/app/pom.xml
index f4409cb..7ae11e3 100644
--- a/apps/olt/app/pom.xml
+++ b/apps/olt/app/pom.xml
@@ -31,7 +31,6 @@
     <description>OLT application for CORD</description>
 
     <properties>
-        <onos.app.name>org.onosproject.olt</onos.app.name>
         <web.context>/onos/olt</web.context>
         <api.version>1.0.0</api.version>
         <api.title>ONOS OLT REST API</api.title>
diff --git a/apps/openstackswitching/app/app.xml b/apps/openstackswitching/app/app.xml
index e982b90..afd6f86 100644
--- a/apps/openstackswitching/app/app.xml
+++ b/apps/openstackswitching/app/app.xml
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.openstackswitching" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>SONA Openstack Switching  application.</readme>
     <artifact>mvn:${project.groupId}/onos-app-openstackswitching/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-dhcp-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-dhcp/${project.version}</artifact>
diff --git a/apps/openstackswitching/app/pom.xml b/apps/openstackswitching/app/pom.xml
index 026beef..d0c04a4 100644
--- a/apps/openstackswitching/app/pom.xml
+++ b/apps/openstackswitching/app/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -31,7 +31,6 @@
 
     <description>SONA Openstack Switching  applications</description>
     <properties>
-        <onos.app.name>org.onosproject.openstackswitching</onos.app.name>
         <web.context>/onos/openstackswitching</web.context>
         <api.version>1.0.0</api.version>
         <api.title>ONOS OpenStack Switching REST API</api.title>
diff --git a/apps/optical/pom.xml b/apps/optical/pom.xml
index 4e001c7..0acae23 100644
--- a/apps/optical/pom.xml
+++ b/apps/optical/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.optical</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Packet/Optical use-case application.
+        </onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/pathpainter/pom.xml b/apps/pathpainter/pom.xml
index cb2161a..2673c54 100644
--- a/apps/pathpainter/pom.xml
+++ b/apps/pathpainter/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.pathpainter</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Path visualization application.</onos.app.readme>
     </properties>
 
 </project>
diff --git a/apps/pcep-api/pom.xml b/apps/pcep-api/pom.xml
index 24bad14..5d652cf 100644
--- a/apps/pcep-api/pom.xml
+++ b/apps/pcep-api/pom.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -26,4 +27,11 @@
     <packaging>bundle</packaging>
 
     <description>PCEP protocol API</description>
+
+    <properties>
+        <onos.app.name>org.onosproject.pcep-api</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>PCEP protocol API.</onos.app.readme>
+    </properties>
 </project>
\ No newline at end of file
diff --git a/apps/pim/pom.xml b/apps/pim/pom.xml
index 71f4a22..02013f7 100644
--- a/apps/pim/pom.xml
+++ b/apps/pim/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.pim</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Protocol independent multicast emulation.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/proxyarp/pom.xml b/apps/proxyarp/pom.xml
index eeca9f2..4dda8aa 100644
--- a/apps/proxyarp/pom.xml
+++ b/apps/proxyarp/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.proxyarp</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Proxy ARP/NDP application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/reactive-routing/pom.xml b/apps/reactive-routing/pom.xml
index 37527e6..ba43d94 100644
--- a/apps/reactive-routing/pom.xml
+++ b/apps/reactive-routing/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.reactive.routing</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>SDN-IP reactive routing application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/routing-api/pom.xml b/apps/routing-api/pom.xml
index f02ca94..a7f806a 100644
--- a/apps/routing-api/pom.xml
+++ b/apps/routing-api/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -30,6 +30,13 @@
     <packaging>bundle</packaging>
     <description>API for routing applications</description>
 
+    <properties>
+        <onos.app.name>org.onosproject.routing-api</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>API for routing applications.</onos.app.readme>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/apps/routing/pom.xml b/apps/routing/pom.xml
index 51bd396..b1de5f3 100644
--- a/apps/routing/pom.xml
+++ b/apps/routing/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -30,6 +30,13 @@
     <packaging>bundle</packaging>
     <description>Libraries for routing applications</description>
 
+    <properties>
+        <onos.app.name>org.onosproject.routing</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>SDN-IP reactive routing application.</onos.app.readme>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
diff --git a/apps/sdnip/app.xml b/apps/sdnip/app.xml
index 7aafa6a..54ddd40 100644
--- a/apps/sdnip/app.xml
+++ b/apps/sdnip/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.sdnip" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>SDN-IP peering application.</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-routing-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-routing/${project.version}</artifact>
diff --git a/apps/sdnip/pom.xml b/apps/sdnip/pom.xml
index ddfcdb7..506bc60 100644
--- a/apps/sdnip/pom.xml
+++ b/apps/sdnip/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
diff --git a/apps/segmentrouting/pom.xml b/apps/segmentrouting/pom.xml
index 1f73e2a..3f59618 100644
--- a/apps/segmentrouting/pom.xml
+++ b/apps/segmentrouting/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -32,6 +32,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.segmentrouting</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Segment routing application.</onos.app.readme>
         <web.context>/onos/segmentrouting</web.context>
         <api.version>1.0.0</api.version>
         <api.title>ONOS Segment Routing REST API</api.title>
diff --git a/apps/test/demo/pom.xml b/apps/test/demo/pom.xml
index 2110abc..a9ab016 100644
--- a/apps/test/demo/pom.xml
+++ b/apps/test/demo/pom.xml
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.demo</onos.app.name>
+        <onos.app.category>test</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Flow throughput test application.</onos.app.readme>
         <web.context>/onos/demo</web.context>
         <api.title>ONOS Flow Throughput Test App API</api.title>
         <api.description>
diff --git a/apps/test/distributed-primitives/pom.xml b/apps/test/distributed-primitives/pom.xml
index e4fe505..5ccf518 100644
--- a/apps/test/distributed-primitives/pom.xml
+++ b/apps/test/distributed-primitives/pom.xml
@@ -34,6 +34,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.distributedprimitives</onos.app.name>
+        <onos.app.category>test</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS app to test distributed primitives.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/test/election/pom.xml b/apps/test/election/pom.xml
index afc6a4f..cca0025 100644
--- a/apps/test/election/pom.xml
+++ b/apps/test/election/pom.xml
@@ -34,6 +34,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.election</onos.app.name>
+        <onos.app.category>test</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Master election test application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/test/intent-perf/pom.xml b/apps/test/intent-perf/pom.xml
index 4114aaa..1f85c02 100644
--- a/apps/test/intent-perf/pom.xml
+++ b/apps/test/intent-perf/pom.xml
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.intentperf</onos.app.name>
+        <onos.app.category>test</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>intent performance test application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/test/messaging-perf/pom.xml b/apps/test/messaging-perf/pom.xml
index dbe2a29..b8f3f08 100644
--- a/apps/test/messaging-perf/pom.xml
+++ b/apps/test/messaging-perf/pom.xml
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.messagingperf</onos.app.name>
+        <onos.app.category>test</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Messaging performance test application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/apps/virtualbng/pom.xml b/apps/virtualbng/pom.xml
index f3252e1..1588064 100644
--- a/apps/virtualbng/pom.xml
+++ b/apps/virtualbng/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.virtualbng</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Virtual broadband gateway application.</onos.app.readme>
         <web.context>/onos/virtualbng</web.context>
         <api.version>1.0.0</api.version>
         <api.title>ONOS Virtual BNG Gateway REST API</api.title>
diff --git a/apps/vrouter/app.xml b/apps/vrouter/app.xml
index 9dc3dc4..eeaa7d4 100644
--- a/apps/vrouter/app.xml
+++ b/apps/vrouter/app.xml
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.vrouter" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>Virtual router application.</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-routing-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-routing/${project.version}</artifact>
diff --git a/apps/vrouter/pom.xml b/apps/vrouter/pom.xml
index 8a58c84..8d7d556 100644
--- a/apps/vrouter/pom.xml
+++ b/apps/vrouter/pom.xml
@@ -34,8 +34,6 @@
 
     <properties>
         <onos.version>1.5.0-SNAPSHOT</onos.version>
-        <onos.app.name>org.onosproject.vrouter</onos.app.name>
-        <onos.app.origin>ON.Lab</onos.app.origin>
     </properties>
 
     <dependencies>
diff --git a/apps/vtn/app/app.xml b/apps/vtn/app/app.xml
index 37bba34..5834bb4 100644
--- a/apps/vtn/app/app.xml
+++ b/apps/vtn/app/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,10 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.vtn" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
-
+    <readme>Virtual tenant network application.</readme>
     <artifact>mvn:${project.groupId}/onos-app-vtn-mgr/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-sfc-mgr/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-app-vtn-web/${project.version}</artifact>
diff --git a/apps/vtn/app/pom.xml b/apps/vtn/app/pom.xml
index 7f209ed..f148df9 100644
--- a/apps/vtn/app/pom.xml
+++ b/apps/vtn/app/pom.xml
@@ -1,12 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- ~ Copyright 2014 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. -->
+<!--
+  ~ Copyright 2014-2016 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.
+  -->
 <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/maven-v4_0_0.xsd">
     <modelVersion>4.0.0</modelVersion>
diff --git a/apps/vtn/sfcmgr/pom.xml b/apps/vtn/sfcmgr/pom.xml
index 32e65a3..88dda53 100644
--- a/apps/vtn/sfcmgr/pom.xml
+++ b/apps/vtn/sfcmgr/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
diff --git a/apps/vtn/vtnmgr/pom.xml b/apps/vtn/vtnmgr/pom.xml
index b087f84..bc5b7ab 100644
--- a/apps/vtn/vtnmgr/pom.xml
+++ b/apps/vtn/vtnmgr/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
diff --git a/apps/vtn/vtnrsc/pom.xml b/apps/vtn/vtnrsc/pom.xml
index b134361..b2f1e6b 100644
--- a/apps/vtn/vtnrsc/pom.xml
+++ b/apps/vtn/vtnrsc/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
diff --git a/apps/vtn/vtnweb/pom.xml b/apps/vtn/vtnweb/pom.xml
index b448b35..fdbfe00 100644
--- a/apps/vtn/vtnweb/pom.xml
+++ b/apps/vtn/vtnweb/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   ~ Copyright 2015 Open Networking Laboratory
   ~
diff --git a/apps/xos-integration/pom.xml b/apps/xos-integration/pom.xml
index 07e1f7c..e9994c7 100644
--- a/apps/xos-integration/pom.xml
+++ b/apps/xos-integration/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -33,6 +33,9 @@
 
     <properties>
         <onos.app.name>org.onosproject.xosintegration</onos.app.name>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS XOS integration application.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java b/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java
index e8ff9ec..1528f35 100644
--- a/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java
+++ b/core/api/src/main/java/org/onosproject/app/ApplicationDescription.java
@@ -44,6 +44,13 @@
     Version version();
 
     /**
+     * Returns the name of the application origin, group or company.
+     *
+     * @return application origin
+     */
+    String origin();
+
+    /**
      * Returns description of the application.
      *
      * @return application description text
@@ -51,11 +58,32 @@
     String description();
 
     /**
-     * Returns the name of the application origin, group or company.
+     * Returns category of the application.
      *
-     * @return application origin
+     * @return application category text
      */
-    String origin();
+    String category();
+
+    /**
+     * Returns url of the application.
+     *
+     * @return application url
+     */
+    String url();
+
+    /**
+     * Returns readme of the application.
+     *
+     * @return application readme
+     */
+    String readme();
+
+    /**
+     * Returns icon of the application.
+     *
+     * @return application icon
+     */
+    byte[] icon();
 
     /**
      * Returns the role of the application.
diff --git a/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java b/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java
index 569183a..3e52001 100644
--- a/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java
+++ b/core/api/src/main/java/org/onosproject/app/DefaultApplicationDescription.java
@@ -37,6 +37,10 @@
     private final Version version;
     private final String description;
     private final String origin;
+    private final String category;
+    private final String url;
+    private final String readme;
+    private final byte[] icon;
     private final ApplicationRole role;
     private final Set<Permission> permissions;
     private final Optional<URI> featuresRepo;
@@ -50,6 +54,10 @@
      * @param version      application version
      * @param description  application description
      * @param origin       origin company
+     * @param category     application category
+     * @param url          application URL
+     * @param readme       application readme
+     * @param icon         application icon
      * @param role         application role
      * @param permissions  requested permissions
      * @param featuresRepo optional features repo URI
@@ -57,7 +65,8 @@
      * @param requiredApps list of required application names
      */
     public DefaultApplicationDescription(String name, Version version,
-                                         String description, String origin,
+                                         String description, String origin, String category,
+                                         String url, String readme, byte[] icon,
                                          ApplicationRole role, Set<Permission> permissions,
                                          URI featuresRepo, List<String> features,
                                          List<String> requiredApps) {
@@ -65,6 +74,10 @@
         this.version = checkNotNull(version, "Version cannot be null");
         this.description = checkNotNull(description, "Description cannot be null");
         this.origin = checkNotNull(origin, "Origin cannot be null");
+        this.category = checkNotNull(category, "Category cannot be null");
+        this.url = checkNotNull(url, "URL cannot be null");
+        this.readme = readme;
+        this.icon = icon;
         this.role = checkNotNull(role, "Role cannot be null");
         this.permissions = checkNotNull(permissions, "Permissions cannot be null");
         this.featuresRepo = Optional.ofNullable(featuresRepo);
@@ -89,6 +102,26 @@
     }
 
     @Override
+    public String category() {
+        return category;
+    }
+
+    @Override
+    public String url() {
+        return url;
+    }
+
+    @Override
+    public String readme() {
+        return readme;
+    }
+
+    @Override
+    public byte[] icon() {
+        return icon;
+    }
+
+    @Override
     public String origin() {
         return origin;
     }
@@ -125,6 +158,9 @@
                 .add("version", version)
                 .add("description", description)
                 .add("origin", origin)
+                .add("category", category)
+                .add("url", url)
+                .add("readme", readme)
                 .add("role", role)
                 .add("permissions", permissions)
                 .add("featuresRepo", featuresRepo)
diff --git a/core/api/src/main/java/org/onosproject/core/Application.java b/core/api/src/main/java/org/onosproject/core/Application.java
index ea2eab9..8700cad 100644
--- a/core/api/src/main/java/org/onosproject/core/Application.java
+++ b/core/api/src/main/java/org/onosproject/core/Application.java
@@ -49,6 +49,34 @@
     String description();
 
     /**
+     * Returns category of the application.
+     *
+     * @return application category text
+     */
+    String category();
+
+    /**
+     * Returns url of the application.
+     *
+     * @return application url
+     */
+    String url();
+
+    /**
+     * Returns readme of the application.
+     *
+     * @return application readme
+     */
+    String readme();
+
+    /**
+     * Returns icon of the application.
+     *
+     * @return application icon
+     */
+    byte[] icon();
+
+    /**
      * Returns the name of the application origin, group or company.
      *
      * @return application origin
diff --git a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
index c351563..8d63600 100644
--- a/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
+++ b/core/api/src/main/java/org/onosproject/core/DefaultApplication.java
@@ -35,6 +35,10 @@
     private final ApplicationId appId;
     private final Version version;
     private final String description;
+    private final String category;
+    private final String url;
+    private final String readme;
+    private final byte[] icon;
     private final String origin;
     private final ApplicationRole role;
     private final Set<Permission> permissions;
@@ -49,6 +53,10 @@
      * @param version      application version
      * @param description  application description
      * @param origin       origin company
+     * @param category     application category
+     * @param url          application URL
+     * @param readme       application readme
+     * @param icon         application icon
      * @param role         application role
      * @param permissions  requested permissions
      * @param featuresRepo optional features repo URI
@@ -56,7 +64,8 @@
      * @param requiredApps list of required application names
      */
     public DefaultApplication(ApplicationId appId, Version version,
-                              String description, String origin,
+                              String description, String origin, String category,
+                              String url, String readme, byte[] icon,
                               ApplicationRole role, Set<Permission> permissions,
                               Optional<URI> featuresRepo, List<String> features,
                               List<String> requiredApps) {
@@ -64,6 +73,10 @@
         this.version = checkNotNull(version, "Version cannot be null");
         this.description = checkNotNull(description, "Description cannot be null");
         this.origin = checkNotNull(origin, "Origin cannot be null");
+        this.category = checkNotNull(category, "Category cannot be null");
+        this.url = checkNotNull(url, "URL cannot be null");
+        this.readme = readme;
+        this.icon = icon;
         this.role = checkNotNull(role, "Role cannot be null");
         this.permissions = checkNotNull(permissions, "Permissions cannot be null");
         this.featuresRepo = checkNotNull(featuresRepo, "Features repo cannot be null");
@@ -88,6 +101,26 @@
     }
 
     @Override
+    public String category() {
+        return category;
+    }
+
+    @Override
+    public String url() {
+        return url;
+    }
+
+    @Override
+    public String readme() {
+        return readme;
+    }
+
+    @Override
+    public byte[] icon() {
+        return icon;
+    }
+
+    @Override
     public String origin() {
         return origin;
     }
@@ -119,8 +152,8 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(appId, version, description, origin, role, permissions,
-                            featuresRepo, features, requiredApps);
+        return Objects.hash(appId, version, description, origin, category, url,
+                            readme, role, permissions, featuresRepo, features, requiredApps);
     }
 
     @Override
@@ -136,6 +169,9 @@
                 Objects.equals(this.version, other.version) &&
                 Objects.equals(this.description, other.description) &&
                 Objects.equals(this.origin, other.origin) &&
+                Objects.equals(this.category, other.category) &&
+                Objects.equals(this.url, other.url) &&
+                Objects.equals(this.readme, other.readme) &&
                 Objects.equals(this.role, other.role) &&
                 Objects.equals(this.permissions, other.permissions) &&
                 Objects.equals(this.featuresRepo, other.featuresRepo) &&
@@ -150,6 +186,9 @@
                 .add("version", version)
                 .add("description", description)
                 .add("origin", origin)
+                .add("category", category)
+                .add("url", url)
+                .add("readme", readme)
                 .add("role", role)
                 .add("permissions", permissions)
                 .add("featuresRepo", featuresRepo)
diff --git a/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java b/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java
index 34c593c..0d4ae4c 100644
--- a/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java
+++ b/core/api/src/test/java/org/onosproject/app/ApplicationEventTest.java
@@ -32,8 +32,9 @@
 public class ApplicationEventTest extends AbstractEventTest {
 
     private Application createApp() {
-        return new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE,
-                                      PERMS, Optional.of(FURL), FEATURES, APPS);
+        return new DefaultApplication(APP_ID, VER, DESC, ORIGIN, CATEGORY,
+                                      URL, README, ICON, ROLE, PERMS,
+                                      Optional.of(FURL), FEATURES, APPS);
     }
 
     @Test
diff --git a/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java b/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java
index 0e93c1f..e01d4d8 100644
--- a/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java
+++ b/core/api/src/test/java/org/onosproject/app/DefaultApplicationDescriptionTest.java
@@ -40,6 +40,10 @@
     public static final Version VER = Version.version(1, 2, "a", null);
     public static final String DESC = "Awesome application from Circus, Inc.";
     public static final String ORIGIN = "Circus";
+    public static final String CATEGORY = "other";
+    public static final String URL = "http://www.onosproject.org";
+    public static final String README = "Awesome application from Circus, Inc.";
+    public static final byte[] ICON = new byte[] {};
     public static final ApplicationRole ROLE = ApplicationRole.ADMIN;
     public static final Set<Permission> PERMS = ImmutableSet.of(
                             new Permission(AppPermission.class.getName(), "FLOWRULE_WRITE"),
@@ -52,17 +56,20 @@
     public void basics() {
         ApplicationDescription app =
                 new DefaultApplicationDescription(APP_NAME, VER, DESC, ORIGIN,
+                                                  CATEGORY, URL, README, ICON,
                                                   ROLE, PERMS, FURL, FEATURES, APPS);
         assertEquals("incorrect id", APP_NAME, app.name());
         assertEquals("incorrect version", VER, app.version());
         assertEquals("incorrect description", DESC, app.description());
         assertEquals("incorrect origin", ORIGIN, app.origin());
-        assertEquals("incorect role", ROLE, app.role());
+        assertEquals("incorrect category", CATEGORY, app.category());
+        assertEquals("incorrect URL", URL, app.url());
+        assertEquals("incorrect readme", README, app.readme());
+        assertEquals("incorrect role", ROLE, app.role());
         assertEquals("incorrect permissions", PERMS, app.permissions());
         assertEquals("incorrect features repo", FURL, app.featuresRepo().get());
         assertEquals("incorrect features", FEATURES, app.features());
         assertEquals("incorrect apps", APPS, app.requiredApps());
         assertTrue("incorrect toString", app.toString().contains(APP_NAME));
     }
-
 }
\ No newline at end of file
diff --git a/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java b/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java
index 77b3812..6cb0d0c 100644
--- a/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java
+++ b/core/api/src/test/java/org/onosproject/core/DefaultApplicationTest.java
@@ -33,12 +33,17 @@
 
     @Test
     public void basics() {
-        Application app = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE,
+        Application app = new DefaultApplication(APP_ID, VER, DESC, ORIGIN,
+                                                 CATEGORY, URL, README, ICON, ROLE,
                                                  PERMS, Optional.of(FURL), FEATURES, APPS);
         assertEquals("incorrect id", APP_ID, app.id());
         assertEquals("incorrect version", VER, app.version());
         assertEquals("incorrect description", DESC, app.description());
         assertEquals("incorrect origin", ORIGIN, app.origin());
+        assertEquals("incorrect category", CATEGORY, app.category());
+        assertEquals("incorrect URL", URL, app.url());
+        assertEquals("incorrect readme", README, app.readme());
+        assertEquals("incorrect icon", ICON, app.icon());
         assertEquals("incorrect role", ROLE, app.role());
         assertEquals("incorrect permissions", PERMS, app.permissions());
         assertEquals("incorrect features repo", FURL, app.featuresRepo().get());
@@ -49,16 +54,19 @@
 
     @Test
     public void testEquality() {
-        Application a1 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE,
+        Application a1 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN,
+                                                CATEGORY, URL, README, ICON, ROLE,
                                                 PERMS, Optional.of(FURL), FEATURES, APPS);
-        Application a2 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE,
+        Application a2 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN,
+                                                CATEGORY, URL, README, ICON, ROLE,
                                                 PERMS, Optional.of(FURL), FEATURES, APPS);
-        Application a3 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE,
+        Application a3 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN,
+                                                CATEGORY, URL, README, ICON, ROLE,
                                                 PERMS, Optional.empty(), FEATURES, APPS);
-        Application a4 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN + "asd", ROLE,
+        Application a4 = new DefaultApplication(APP_ID, VER, DESC, ORIGIN + "asd",
+                                                CATEGORY, URL, README, ICON, ROLE,
                                                 PERMS, Optional.of(FURL), FEATURES, APPS);
         new EqualsTester().addEqualityGroup(a1, a2)
                 .addEqualityGroup(a3).addEqualityGroup(a4).testEquals();
     }
-
 }
\ No newline at end of file
diff --git a/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java b/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
index ab03ab2..42f8c9c 100644
--- a/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
+++ b/core/common/src/main/java/org/onosproject/common/app/ApplicationArchive.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Open Networking Laboratory
+ * Copyright 2015-2016 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.
@@ -23,6 +23,7 @@
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.lang.StringUtils;
 import org.onlab.util.Tools;
 import org.onosproject.app.ApplicationDescription;
 import org.onosproject.app.ApplicationEvent;
@@ -37,6 +38,10 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferByte;
+import java.awt.image.WritableRaster;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
@@ -81,6 +86,10 @@
     private static final String APPS = "[@apps]";
     private static final String DESCRIPTION = "description";
 
+    private static final String CATEGORY = "[@category]";
+    private static final String URL = "[@url]";
+    private static final String README = "readme";
+
     private static final String ROLE = "security.role";
     private static final String APP_PERMISSIONS = "security.permissions.app-perm";
     private static final String NET_PERMISSIONS = "security.permissions.net-perm";
@@ -88,6 +97,7 @@
 
     private static final String OAR = ".oar";
     private static final String APP_XML = "app.xml";
+    private static final String ICON_PNG = "icon.png";
     private static final String M2_PREFIX = "m2";
 
     private static final String ROOT = "../";
@@ -283,8 +293,10 @@
     private ApplicationDescription loadAppDescription(XMLConfiguration cfg) {
         String name = cfg.getString(NAME);
         Version version = Version.version(cfg.getString(VERSION));
-        String desc = cfg.getString(DESCRIPTION);
         String origin = cfg.getString(ORIGIN);
+        String category = cfg.getString(CATEGORY);
+        String url = cfg.getString(URL);
+        byte[] icon = getApplicationIcon(name);
         ApplicationRole role = getRole(cfg.getString(ROLE));
         Set<Permission> perms = getPermissions(cfg);
         String featRepo = cfg.getString(FEATURES_REPO);
@@ -295,7 +307,17 @@
         List<String> requiredApps = apps.isEmpty() ?
                 ImmutableList.of() : ImmutableList.copyOf(apps.split(","));
 
-        return new DefaultApplicationDescription(name, version, desc, origin, role,
+        String desc = cfg.getString(DESCRIPTION);
+        String readme = cfg.getString(README);
+
+        if (readme == null) {
+            readme = desc;
+        } else {
+            desc = compactDescription(readme);
+        }
+
+        return new DefaultApplicationDescription(name, version, desc, origin,
+                category, url, readme, icon, role,
                                                  perms, featuresRepo, features,
                                                  requiredApps);
     }
@@ -387,7 +409,6 @@
         return appFile(appName, "active").exists();
     }
 
-
     // Returns the name of the file located under the specified app directory.
     private File appFile(String appName, String fileName) {
         return new File(new File(appsDir, appName), fileName);
@@ -420,7 +441,33 @@
         return ImmutableSet.copyOf(permissionList);
     }
 
-    //
+    // Returns the byte stream from icon.png file in oar application archive.
+    private byte[] getApplicationIcon(String appName) {
+        // open image
+        File iconFile = appFile(appName, ICON_PNG);
+
+        if (!iconFile.exists()) {
+            iconFile = new File(appsDir, ICON_PNG);
+        }
+
+        if (!iconFile.exists()) {
+            return null;
+        }
+
+        BufferedImage bufferedImage = null;
+        try {
+            bufferedImage = ImageIO.read(iconFile);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        // get DataBufferBytes from Raster
+        WritableRaster raster = bufferedImage .getRaster();
+        DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
+
+        return data.getData();
+    }
+
     // Returns application role type
     public ApplicationRole getRole(String value) {
         if (value == null) {
@@ -434,4 +481,16 @@
             }
         }
     }
+
+    // Returns the first sentence of the given sentence
+    private String compactDescription(String sentence) {
+        if (StringUtils.isNotEmpty(sentence)) {
+            if (StringUtils.contains(sentence, ".")) {
+                return StringUtils.substringBefore(sentence, ".") + ".";
+            } else {
+                return sentence + ".";
+            }
+        }
+        return sentence;
+    }
 }
diff --git a/core/common/src/test/java/org/onosproject/common/app/ApplicationArchiveTest.java b/core/common/src/test/java/org/onosproject/common/app/ApplicationArchiveTest.java
index 97012c4..b8cda1c 100644
--- a/core/common/src/test/java/org/onosproject/common/app/ApplicationArchiveTest.java
+++ b/core/common/src/test/java/org/onosproject/common/app/ApplicationArchiveTest.java
@@ -60,6 +60,10 @@
         assertEquals("incorrect origin", ORIGIN, app.origin());
         assertEquals("incorrect role", ROLE, app.role());
 
+        assertEquals("incorrect category", CATEGORY, app.category());
+        assertEquals("incorrect url", URL, app.url());
+        assertEquals("incorrect readme", README, app.readme());
+
         assertEquals("incorrect description", DESC, app.description());
         assertEquals("incorrect features URI", FURL, app.featuresRepo().get());
         assertEquals("incorrect permissions", PERMS, app.permissions());
diff --git a/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationStore.java b/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationStore.java
index d9f5285..98c18b4 100644
--- a/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationStore.java
+++ b/core/common/src/test/java/org/onosproject/store/trivial/SimpleApplicationStore.java
@@ -74,6 +74,8 @@
             DefaultApplication app =
                     new DefaultApplication(appId, appDesc.version(),
                                            appDesc.description(), appDesc.origin(),
+                                           appDesc.category(), appDesc.url(),
+                                           appDesc.readme(), appDesc.icon(),
                                            appDesc.role(), appDesc.permissions(),
                                            appDesc.featuresRepo(), appDesc.features(),
                                            appDesc.requiredApps());
@@ -117,7 +119,9 @@
         ApplicationId appId = idStore.registerApplication(appDesc.name());
         DefaultApplication app =
                 new DefaultApplication(appId, appDesc.version(), appDesc.description(),
-                                       appDesc.origin(), appDesc.role(), appDesc.permissions(),
+                                       appDesc.origin(), appDesc.category(), appDesc.url(),
+                                       appDesc.readme(), appDesc.icon(),
+                                       appDesc.role(), appDesc.permissions(),
                                        appDesc.featuresRepo(), appDesc.features(),
                                        appDesc.requiredApps());
         apps.put(appId, app);
diff --git a/core/common/src/test/resources/org/onosproject/common/app/app.xml b/core/common/src/test/resources/org/onosproject/common/app/app.xml
index 0d91a73..6e58cb8 100644
--- a/core/common/src/test/resources/org/onosproject/common/app/app.xml
+++ b/core/common/src/test/resources/org/onosproject/common/app/app.xml
@@ -1,5 +1,5 @@
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -13,9 +13,9 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<app name="org.foo.app" origin="Circus" version="1.2.a"
-        featuresRepo="mvn:org.foo-features/1.2a/xml/features"
-        features="foo,bar">
+<app name="org.foo.app" origin="Circus" version="1.2.a" category="other"
+     url="http://www.onosproject.org" featuresRepo="mvn:org.foo-features/1.2a/xml/features"
+     readme="Awesome application from Circus, Inc." features="foo,bar">
     <description>Awesome application from Circus, Inc.</description>
     <security>
         <role>ADMIN</role>
@@ -23,7 +23,5 @@
             <app-perm>FLOWRULE_WRITE</app-perm>
             <app-perm>FLOWRULE_READ</app-perm>
         </permissions>
-
     </security>
-
 </app>
diff --git a/core/common/src/test/resources/org/onosproject/common/app/app.zip b/core/common/src/test/resources/org/onosproject/common/app/app.zip
index 436cd75..9d48b8f 100644
--- a/core/common/src/test/resources/org/onosproject/common/app/app.zip
+++ b/core/common/src/test/resources/org/onosproject/common/app/app.zip
Binary files differ
diff --git a/core/net/src/test/java/org/onosproject/app/impl/ApplicationManagerTest.java b/core/net/src/test/java/org/onosproject/app/impl/ApplicationManagerTest.java
index a99fd21..f66fb4d 100644
--- a/core/net/src/test/java/org/onosproject/app/impl/ApplicationManagerTest.java
+++ b/core/net/src/test/java/org/onosproject/app/impl/ApplicationManagerTest.java
@@ -138,7 +138,8 @@
 
         @Override
         public Application create(InputStream appDescStream) {
-            app = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, ROLE, PERMS,
+            app = new DefaultApplication(APP_ID, VER, DESC, ORIGIN, CATEGORY,
+                                         URL, README, ICON, ROLE, PERMS,
                                          Optional.of(FURL), FEATURES, ImmutableList.of());
             state = INSTALLED;
             delegate.notify(new ApplicationEvent(APP_INSTALLED, app));
diff --git a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
index 8ef0d5b..a762659 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/app/GossipApplicationStore.java
@@ -505,8 +505,9 @@
     private Application registerApp(ApplicationDescription appDesc) {
         ApplicationId appId = idStore.registerApplication(appDesc.name());
         return new DefaultApplication(appId, appDesc.version(), appDesc.description(),
-                                      appDesc.origin(), appDesc.role(), appDesc.permissions(),
-                                      appDesc.featuresRepo(), appDesc.features(),
-                                      appDesc.requiredApps());
+                                      appDesc.origin(), appDesc.category(), appDesc.url(),
+                                      appDesc.readme(), appDesc.icon(), appDesc.role(),
+                                      appDesc.permissions(), appDesc.featuresRepo(),
+                                      appDesc.features(), appDesc.requiredApps());
     }
 }
diff --git a/providers/bgp/app/app.xml b/providers/bgp/app/app.xml
index d59b81a..aa5ddd1 100755
--- a/providers/bgp/app/app.xml
+++ b/providers/bgp/app/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.bgp" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>BGP protocol southbound providers.</readme>
     <artifact>mvn:${project.groupId}/onos-bgpio/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-bgp-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-bgp-ctl/${project.version}</artifact>
diff --git a/providers/bgp/app/pom.xml b/providers/bgp/app/pom.xml
index 55451a9..b4b6b83 100755
--- a/providers/bgp/app/pom.xml
+++ b/providers/bgp/app/pom.xml
@@ -1,5 +1,5 @@
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -13,40 +13,41 @@
   ~ 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-bgp-providers</artifactId>
-                <version>1.5.0-SNAPSHOT</version>
-                <relativePath>../pom.xml</relativePath>
-        </parent>
+<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-bgp-providers</artifactId>
+        <version>1.5.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
 
-        <artifactId>onos-bgp-app</artifactId>
-        <packaging>pom</packaging>
-        <description>BGP protocol southbound providers</description>
+    <artifactId>onos-bgp-app</artifactId>
+    <packaging>pom</packaging>
+    <description>BGP protocol southbound providers</description>
 
-        <dependencies>
-                <dependency>
-                        <groupId>org.onosproject</groupId>
-                        <artifactId>onos-bgpio</artifactId>
-                        <version>${project.version}</version>
-                </dependency>
-                <dependency>
-                        <groupId>org.onosproject</groupId>
-                        <artifactId>onos-bgp-api</artifactId>
-                        <version>${project.version}</version>
-                </dependency>
-                <dependency>
-                        <groupId>org.onosproject</groupId>
-                        <artifactId>onos-bgp-ctl</artifactId>
-                        <version>${project.version}</version>
-                </dependency>
-                <dependency>
-                        <groupId>org.onosproject</groupId>
-                        <artifactId>onos-bgp-provider-topology</artifactId>
-                        <version>${project.version}</version>
-                </dependency>
-        </dependencies>
+    <dependencies>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-bgpio</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-bgp-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-bgp-ctl</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onosproject</groupId>
+            <artifactId>onos-bgp-provider-topology</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/providers/host/pom.xml b/providers/host/pom.xml
index 3debdd1..e32488a 100644
--- a/providers/host/pom.xml
+++ b/providers/host/pom.xml
@@ -31,6 +31,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.hostprovider</onos.app.name>
+        <onos.app.origin>ON.Lab</onos.app.origin>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS host location provider.</onos.app.readme>
     </properties>
 
     <description>ONOS host location provider</description>
diff --git a/providers/lldp/pom.xml b/providers/lldp/pom.xml
index 206e200..03f945d 100644
--- a/providers/lldp/pom.xml
+++ b/providers/lldp/pom.xml
@@ -32,6 +32,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.lldpprovider</onos.app.name>
+        <onos.app.origin>ON.Lab</onos.app.origin>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS LLDP link provider.</onos.app.readme>
     </properties>
 
     <description>ONOS LLDP link provider</description>
diff --git a/providers/netcfghost/pom.xml b/providers/netcfghost/pom.xml
index dadd6bf..340fb63 100644
--- a/providers/netcfghost/pom.xml
+++ b/providers/netcfghost/pom.xml
@@ -35,6 +35,10 @@
     <properties>
         <onos.app.name>org.onosproject.netcfghostprovider</onos.app.name>
         <onos.app.origin>ON.Lab</onos.app.origin>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>Host provider that uses network config
+            service to discover hosts.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/providers/netconf/app/app.xml b/providers/netconf/app/app.xml
index 288f0ab..d82268f 100644
--- a/providers/netconf/app/app.xml
+++ b/providers/netconf/app/app.xml
@@ -15,10 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.netconf" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
-
+    <readme>ONOS NetConf protocol southbound provider.</readme>
     <artifact>mvn:${project.groupId}/onos-netconf-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-netconf-ctl/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact>
diff --git a/providers/null/pom.xml b/providers/null/pom.xml
index 8a66301..241ce14 100644
--- a/providers/null/pom.xml
+++ b/providers/null/pom.xml
@@ -33,6 +33,10 @@
 
     <properties>
         <onos.app.name>org.onosproject.null</onos.app.name>
+        <onos.app.origin>ON.Lab</onos.app.origin>
+        <onos.app.category>default</onos.app.category>
+        <onos.app.url>http://onosproject.org</onos.app.url>
+        <onos.app.readme>ONOS null southbound provider.</onos.app.readme>
     </properties>
 
     <dependencies>
diff --git a/providers/openflow/base/app.xml b/providers/openflow/base/app.xml
index 34e6b15..0720567 100644
--- a/providers/openflow/base/app.xml
+++ b/providers/openflow/base/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014-2015 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
@@ -15,10 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.openflow-base" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
-
+    <readme>OpenFlow protocol southbound provider.</readme>
     <artifact>mvn:${project.groupId}/onos-of-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-of-ctl/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact>
diff --git a/providers/openflow/base/pom.xml b/providers/openflow/base/pom.xml
index 2fceba9..9716677 100644
--- a/providers/openflow/base/pom.xml
+++ b/providers/openflow/base/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2014-2015 Open Networking Laboratory
+  ~ Copyright 2014-2016 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.
diff --git a/providers/ovsdb/app/pom.xml b/providers/ovsdb/app/pom.xml
index 863415a..2f548e6 100644
--- a/providers/ovsdb/app/pom.xml
+++ b/providers/ovsdb/app/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
diff --git a/providers/ovsdb/base/app.xml b/providers/ovsdb/base/app.xml
index b6e3b3d..590059f 100644
--- a/providers/ovsdb/base/app.xml
+++ b/providers/ovsdb/base/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,10 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.ovsdb-base" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
-     <description>${project.description}</description>
-
+    <description>${project.description}</description>
+    <readme>OVSDB protocol southbound providers.</readme>
     <artifact>mvn:${project.groupId}/onos-ovsdb-rfc/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-ovsdb-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-ovsdb-ctl/${project.version}</artifact>
@@ -26,4 +27,4 @@
 
     <artifact>mvn:${project.groupId}/onos-ovsdb-provider-device/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-ovsdb-provider-tunnel/${project.version}</artifact>
-</app>
+</app>
\ No newline at end of file
diff --git a/providers/ovsdb/device/pom.xml b/providers/ovsdb/device/pom.xml
index 6a8b917..65db7f4 100644
--- a/providers/ovsdb/device/pom.xml
+++ b/providers/ovsdb/device/pom.xml
@@ -1,6 +1,6 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
diff --git a/providers/pcep/app/app.xml b/providers/pcep/app/app.xml
index ea3d1d1..7c59db7 100644
--- a/providers/pcep/app/app.xml
+++ b/providers/pcep/app/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.pcep" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>PCEP protocol southbound provider.</readme>
     <artifact>mvn:${project.groupId}/onos-app-pcep-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-pcepio/${project.version}</artifact>     
     <artifact>mvn:${project.groupId}/onos-pcep-controller-api/${project.version}</artifact>     
diff --git a/providers/pcep/app/pom.xml b/providers/pcep/app/pom.xml
index 291facc..34bf213 100644
--- a/providers/pcep/app/pom.xml
+++ b/providers/pcep/app/pom.xml
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -13,8 +14,9 @@
   ~ 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">
+<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>
@@ -25,24 +27,24 @@
 
     <artifactId>onos-pcep</artifactId>
     <packaging>pom</packaging>
-        <description>PCEP protocol southbound providers</description>
+    <description>PCEP protocol southbound providers</description>
 
-        <dependencies>
+    <dependencies>
         <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-app-pcep-api</artifactId>
         </dependency>
-                <dependency>
+        <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-pcepio</artifactId>
             <version>${project.version}</version>
         </dependency>
-                <dependency>
+        <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-pcep-controller-api</artifactId>
             <version>${project.version}</version>
         </dependency>
-                <dependency>
+        <dependency>
             <groupId>org.onosproject</groupId>
             <artifactId>onos-pcep-controller-impl</artifactId>
             <version>${project.version}</version>
diff --git a/providers/rest/app/app.xml b/providers/rest/app/app.xml
index 1b4d681..e7139af 100644
--- a/providers/rest/app/app.xml
+++ b/providers/rest/app/app.xml
@@ -15,10 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.restsb" origin="ON.Lab" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
-
+    <readme>REST protocol southbound provider.</readme>
     <artifact>mvn:${project.groupId}/onos-restsb-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-restsb-ctl/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact>
diff --git a/providers/snmp/app/app.xml b/providers/snmp/app/app.xml
index 758cce2..52e0152 100644
--- a/providers/snmp/app/app.xml
+++ b/providers/snmp/app/app.xml
@@ -15,9 +15,11 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.snmp" origin="BTI Systems" version="${project.version}"
+     category="default" url="http://onosproject.org"
      featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
      features="${project.artifactId}">
     <description>${project.description}</description>
+    <readme>SNMP protocol southbound provider.</readme>
     <artifact>mvn:${project.groupId}/onos-snmp-provider-device/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-snmp-provider-alarm/${project.version}</artifact>
 </app>
diff --git a/providers/snmp/app/pom.xml b/providers/snmp/app/pom.xml
index 9d680c8..5914e09 100644
--- a/providers/snmp/app/pom.xml
+++ b/providers/snmp/app/pom.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
diff --git a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java
index 09cf4dd..d52c3b7 100644
--- a/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java
+++ b/tools/package/maven-plugin/src/main/java/org/onosproject/maven/OnosAppMojo.java
@@ -18,6 +18,7 @@
 import com.google.common.collect.ImmutableList;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -28,6 +29,11 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectHelper;
 
+import javax.imageio.ImageIO;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBufferByte;
+import java.awt.image.WritableRaster;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -55,6 +61,7 @@
     private static final String ARTIFACT = "artifact";
 
     private static final String APP_XML = "app.xml";
+    private static final String ICON_PNG = "icon.png";
     private static final String FEATURES_XML = "features.xml";
 
     private static final String MVN_URL = "mvn:";
@@ -64,6 +71,10 @@
     private static final String ONOS_APP_ORIGIN = "onos.app.origin";
     private static final String ONOS_APP_REQUIRES = "onos.app.requires";
 
+    private static final String ONOS_APP_CATEGORY = "onos.app.category";
+    private static final String ONOS_APP_URL = "onos.app.url";
+    private static final String ONOS_APP_README = "onos.app.readme";
+
     private static final String JAR = "jar";
     private static final String XML = "xml";
     private static final String APP_ZIP = "oar";
@@ -72,6 +83,9 @@
     private static final String DEFAULT_ORIGIN = "ON.Lab";
     private static final String DEFAULT_VERSION = "${project.version}";
 
+    private static final String DEFAULT_CATEGORY = "Default";
+    private static final String DEFAULT_URL = "http://onosproject.org";
+
     private static final String DEFAULT_FEATURES_REPO =
             "mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features";
     private static final String DEFAULT_ARTIFACT =
@@ -82,6 +96,9 @@
     private String name;
     private String origin;
     private String requiredApps;
+    private String category;
+    private String url;
+    private String readme;
     private String version = DEFAULT_VERSION;
     private String featuresRepo = DEFAULT_FEATURES_REPO;
     private List<String> artifacts;
@@ -137,7 +154,6 @@
     @Component
     protected MavenProjectHelper projectHelper;
 
-
     private File m2Directory;
     protected File stageDirectory;
     protected String projectPath;
@@ -165,6 +181,16 @@
         requiredApps = (String) project.getProperties().get(ONOS_APP_REQUIRES);
         requiredApps = requiredApps == null ? "" : requiredApps.replaceAll("[\\s]", "");
 
+        category = (String) project.getProperties().get(ONOS_APP_CATEGORY);
+        category = category != null ? category : DEFAULT_CATEGORY;
+
+        url = (String) project.getProperties().get(ONOS_APP_URL);
+        url = url != null ? url : DEFAULT_URL;
+
+        // if readme does not exist, we simply fallback to use description
+        readme = (String) project.getProperties().get(ONOS_APP_README);
+        readme = readme != null ? readme : projectDescription;
+
         if (appFile.exists()) {
             loadAppFile(appFile);
         } else {
@@ -303,7 +329,7 @@
     // Generates the ONOS package ZIP file.
     private void generateAppPackage() throws MojoExecutionException {
         File appZip = new File(dstDirectory, artifactFile(projectArtifactId, projectVersion,
-                                                          APP_ZIP, null));
+                APP_ZIP, null));
         try (FileOutputStream fos = new FileOutputStream(appZip);
              ZipOutputStream zos = new ZipOutputStream(fos)) {
             zipDirectory("", stageDirectory, zos);
@@ -327,7 +353,7 @@
     private String artifactFile(String[] fields) {
         return fields.length < 5 ?
                 artifactFile(fields[1], fields[2],
-                             (fields.length < 4 ? JAR : fields[3]), null) :
+                        (fields.length < 4 ? JAR : fields[3]), null) :
                 artifactFile(fields[1], fields[2], fields[3], fields[4]);
     }
 
@@ -344,6 +370,9 @@
                 string.replaceAll("\\$\\{onos.app.name\\}", name)
                         .replaceAll("\\$\\{onos.app.origin\\}", origin)
                         .replaceAll("\\$\\{onos.app.requires\\}", requiredApps)
+                        .replaceAll("\\$\\{onos.app.category\\}", category)
+                        .replaceAll("\\$\\{onos.app.url\\}", url)
+                        .replaceAll("\\$\\{onos.app.readme\\}", readme)
                         .replaceAll("\\$\\{project.groupId\\}", projectGroupId)
                         .replaceAll("\\$\\{project.artifactId\\}", projectArtifactId)
                         .replaceAll("\\$\\{project.version\\}", projectVersion)
@@ -375,4 +404,4 @@
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/app.xml b/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/app.xml
index 8499880..2b209fe 100644
--- a/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/app.xml
+++ b/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/app.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-  ~ Copyright 2015 Open Networking Laboratory
+  ~ Copyright 2015-2016 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.
@@ -15,8 +15,10 @@
   ~ limitations under the License.
   -->
 <app name="${onos.app.name}" origin="${onos.app.origin}" version="${project.version}"
+        category="${onos.app.category}" url="${onos.app.url}"
         featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
         features="${project.artifactId}" apps="${onos.app.requires}">
     <description>${project.description}</description>
+    <readme>${onos.app.readme}</readme>
     <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
 </app>
diff --git a/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/icon.png b/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/icon.png
new file mode 100644
index 0000000..01ea558
--- /dev/null
+++ b/tools/package/maven-plugin/src/main/resources/org/onosproject/maven/icon.png
Binary files differ
diff --git a/web/api/src/test/java/org/onosproject/rest/ApplicationsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/ApplicationsResourceTest.java
index eeac886..3cb7c8d 100644
--- a/web/api/src/test/java/org/onosproject/rest/ApplicationsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/ApplicationsResourceTest.java
@@ -85,19 +85,27 @@
 
     private Application app1 =
             new DefaultApplication(id1, VER,
-                                   "app1", "origin1", ApplicationRole.ADMIN, ImmutableSet.of(), Optional.of(FURL),
+                                   "app1", "origin1", "category1", "url1",
+                                   "readme1", new byte[0], ApplicationRole.ADMIN,
+                                   ImmutableSet.of(), Optional.of(FURL),
                                    ImmutableList.of("My Feature"), ImmutableList.of());
     private Application app2 =
             new DefaultApplication(id2, VER,
-                                   "app2", "origin2", ApplicationRole.ADMIN, ImmutableSet.of(), Optional.of(FURL),
+                                   "app2", "origin2", "category2", "url2",
+                                   "readme2", new byte[0], ApplicationRole.ADMIN,
+                                   ImmutableSet.of(), Optional.of(FURL),
                                    ImmutableList.of("My Feature"), ImmutableList.of());
     private Application app3 =
             new DefaultApplication(id3, VER,
-                                   "app3", "origin3", ApplicationRole.ADMIN, ImmutableSet.of(), Optional.of(FURL),
+                                   "app3", "origin3", "category3", "url3",
+                                   "readme3", new byte[0], ApplicationRole.ADMIN,
+                                   ImmutableSet.of(), Optional.of(FURL),
                                    ImmutableList.of("My Feature"), ImmutableList.of());
     private Application app4 =
             new DefaultApplication(id4, VER,
-                                   "app4", "origin4", ApplicationRole.ADMIN, ImmutableSet.of(), Optional.of(FURL),
+                                   "app4", "origin4", "category4", "url4",
+                                   "readme4", new byte[0], ApplicationRole.ADMIN,
+                                   ImmutableSet.of(), Optional.of(FURL),
                                    ImmutableList.of("My Feature"), ImmutableList.of());
 
     /**
