[ONOS-3634] Enhance app to have a category, icon, URL and readme

This commmit enhances application to have category, icon, URL and
readme. The web GUI and CLI will be implemented in separate commits

Change-Id: Ib02716d7118cc617b24f196f2213ea1fe99a34be
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());
 
     /**